Merchant API
Topup Intents

Create a top-up intent

Create a provider-backed top-up intent. Requires `Idempotency-Key`; the API key determines merchant and environment.

POST
/topup_intents

Create a provider-backed top-up intent. Requires Idempotency-Key; the API key determines merchant and environment.

AuthorizationBasic <token>

Merchant API key pair. Send as Authorization: Basic base64(publicKey:secretKey) — username is the public key (pk_live_… / pk_test_…), password is the secret key (sk_live_… / sk_test_…). The public key prefix determines the environment of every order created by the request — there is no body, query, or header override.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

destination_amount*string

Positive integer amount in the currency's minor units, encoded as a string to preserve precision (e.g. "10000" for MYR 100.00).

Match^[1-9]\d*$
destination_currency*string

ISO 4217 currency code (e.g. "MYR", "USD") or a 3–6 letter token symbol. Uppercase.

Match^[A-Z]{3,6}$
metadata?
source*

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/topup_intents" \  -H "Content-Type: application/json" \  -d '{    "destination_amount": "string",    "destination_currency": "string",    "source": {      "provider": "string",      "type": "provider_gateway"    }  }'
{  "created_at": "2026-06-07T10:20:00.000Z",  "destination": {    "amount": "100000",    "credited_amount": "100000",    "currency": "MYR",    "merchant_id": "team_01HZYABCDXYZ"  },  "environment": "test",  "expires_at": "2026-06-07T10:35:00.000Z",  "failure_code": null,  "failure_message": null,  "fx": {    "destination_currency": "MYR",    "rate": "4.670000",    "source_currency": "USDT",    "spread_amount": "0"  },  "id": "tuin_01HZYABCDXYZ",  "next_action": {    "address": "TExampleAddress",    "amount": "214123456",    "currency": "USDT",    "expires_at": "2026-06-07T10:35:00.000Z",    "network": "TRC20",    "type": "display_crypto_payment_instructions"  },  "object": "topup_intent",  "source": {    "amount": "214123456",    "currency": "USDT",    "expires_at": "2026-06-07T10:35:00.000Z",    "fee_amount": "0",    "fee_mode": "absorbed",    "provider": null,    "type": "provider_gateway"  },  "status": "requires_payment",  "updated_at": "2026-06-07T10:20:01.000Z"}