200) or be accepted for asynchronous processing (202) — check status in the response, or poll GET /api/v1/funding/topup/{topupId} for the final result.| Field | Type | Description | Constraints |
|---|---|---|---|
amount | number | The amount to load | Min: 20.00 · Max: 1000000000 |
coin | string | Currency to load in — normally a crypto ticker (USDC, USDT) | Min length: 1 |
| Status | Meaning |
|---|---|
completed | Funds have been credited to the card |
processing | Top-up accepted and being processed |
failed | Top-up could not be completed |
| Field | Type | Description |
|---|---|---|
cardId | string (uuid) | Card the funds were loaded onto |
amount | number | Amount loaded |
coin | string | Currency loaded |
status | string | completed, processing, or failed |
newBalance | number | Card balance after the top-up (when status is completed) |
createdAt | string (date-time) | Timestamp the top-up was created |
curl --location '/api/v1/funding/6f1c9a2e-4b3d-4e7a-9c5f-1a2b3c4d5e6f/topup' \
--header 'X-API-Key;' \
--header 'X-Signature;' \
--header 'X-Timestamp;' \
--header 'X-Nonce;' \
--header 'X-Body-Hash;' \
--header 'Content-Type: application/json' \
--data '{
"amount": 250,
"coin": "USDT"
}'{
"cardId": "6f1c9a2e-4b3d-4e7a-9c5f-1a2b3c4d5e6f",
"amount": 250,
"coin": "USDT",
"status": "completed",
"newBalance": 750,
"createdAt": "2026-01-15T11:35:00Z"
}