Zano example
Execute a Carbon card top-up from a Zano wallet through the Zebec Partner API.
Use this flow for a quote whose payment.chain is ZANO. Start with the shared top-up flow through preflight. The paying wallet's full Zano address is the buyerAddress for preflight and submission.
Request and inspect the quote
GET /partner/v1/topup/quote?amount=100¤cyCode=USD&sourceChain=ZANO&sourceTokenMint=<zano-asset-id>
Authorization: Bearer <accessToken>The response includes the quote-bound Zano values:
payment.network,payment.contractAddress,payment.tokenAmount, andpayment.tokenDecimals.receivingAddress— the integrated destination address.receivingPaymentId— the payment ID bound to the quote.
Send the exact base-unit amount and asset to receivingAddress using the exact receivingPaymentId. Do not create, replace, normalize, or omit either destination value. The currently supported FUSD token uses four decimals, but the quote remains authoritative.
Execute and confirm
The wallet/RPC interface is operator-specific; pass the quote fields directly to it and save the confirmed transaction ID.
const txHash = await zanoWallet.transfer({
network: quote.payment.network,
assetId: quote.payment.contractAddress,
amountAtomic: quote.payment.tokenAmount,
integratedAddress: quote.receivingAddress,
paymentId: quote.receivingPaymentId,
});
await zanoWallet.waitForConfirmation(txHash);Sign and submit
Sign the exact quote message with the Zano wallet. publicKey is the Zano public spend key, while buyerAddress remains the full sending wallet address; they are deliberately different identifiers.
The API obtains the payment ID from the quote. Do not add a client-supplied paymentId to the submit receipt.
Last updated