Idempotency-Key header on writes. All amounts are strings.SUCCESS./v1/wallet/deposit-whitelist/** and walletACTIVE| When to use it | Entry point | |
|---|---|---|
| Path A — register the address up front | You know the payer's source address before they send | POST /v1/wallet/deposit-whitelist/addresses |
| Path B — submit after the deposit lands | You learn the address only from the incoming transaction | POST /v1/wallet/deposit-whitelist/transactions/{transactionId}/submit |
orderStatus = SUCCESS is not what tells you the money is spendable, and it is not what tells you the| Field | Question it answers |
|---|---|
orderStatus / order status | Has the whole order finished? |
whiteListStatus | Has the Travel Rule review cleared? |
creditStatus | Is the money in the receiving wallet's available balance? |
orderStatus = PROCESSING + whiteListStatus = approved +creditStatus = CREDITED: whitelisting is done and the funds are credited, while the order is still beingGET /v1/wallet/deposit-whitelist/options — fetch the VASP provider list.POST /v1/wallet/deposit-whitelist/addresses — submit the address plus the Travel Rule details.GET /v1/wallet/deposit-whitelist/addresses/{id}, or wait for WALLET_ADDRESS_UPDATED, until theACTIVE. If it comes back FAILED, disable it and register a new one.GET /v1/wallet/deposit-address.ACTIVE, the deposit skips the whitelist flow entirely andNo DEPOSIT_WHITELIST_*webhook fires on this path. NeitherDEPOSIT_WHITELIST_REQUIREDnorDEPOSIT_WHITELIST_CREDITED. Do not make booking conditional on receiving one — the order webhook is your
only signal.
PROCESSING and the funds in the unavailable balance.DEPOSIT_WHITELIST_REQUIRED (whiteListStatus = init).GET /v1/wallet/deposit-whitelist/options. UseGET /v1/wallet/history?whiteListStatus=init or GET /v1/wallet/transactions/{transactionId} to read thePOST /v1/wallet/deposit-whitelist/transactions/{transactionId}/submit with the Travel Rule details only.pending). If it is rejected you get DEPOSIT_WHITELIST_FAILED and submit again; if itDEPOSIT_WHITELIST_CREDITED.COLLECT_ORDER_UPDATED at orderStatus = SUCCESS.ACTIVE, so later deposits from it behave like Path A.| Path | What to do |
|---|---|
| A | The address is FAILED. Call POST /v1/wallet/deposit-whitelist/addresses/{id}/disable, then register a new address with corrected details. An address key cannot be edited in place. |
| B | Call POST /v1/wallet/deposit-whitelist/transactions/{transactionId}/submit again. The on-chain address fields still must not be sent. |
GET /v1/wallet/history?whiteListStatus=rejected.POST /v1/wallet/add-withdraw-whitelist for this — that is the withdrawal whitelist, astatus / orderStatus| Value | Meaning |
|---|---|
PROCESSING | In flight — awaiting details, under review, or credited but not yet finished |
SUCCESS | The whole order is complete |
FAIL | Failed |
REJECTED | Rejected; a refund state may follow |
REFUNDING | Refund in progress |
REFUNDED | Refunded |
whiteListStatus| Value | Meaning | What you do |
|---|---|---|
init | Travel Rule details not submitted | Path B: call submit. Path A: get the address to ACTIVE |
pending | Submitted, under review | Wait |
approved | Cleared | Wait for the order to reach SUCCESS |
rejected | Rejected | Resubmit — see 3.3 |
null for transactions and orders that are not gated by the whitelist.creditStatus| Value | Meaning |
|---|---|
PENDING | Not yet in the receiving wallet's available balance |
CREDITED | In the receiving wallet. A sweep may still follow |
BLOCKED | Could not be credited — contact support |
status (Path A only)| Value | Meaning |
|---|---|
PROCESSING | Submitted, under review |
ACTIVE | Approved. Later deposits from it skip the whitelist flow |
FAILED | Rejected. Disable it and register again |
eventId. Full catalogue: Event catalogue.eventType. The envelopedata shape are identical across all three.eventType | Meaning | Order status | What you do |
|---|---|---|---|
DEPOSIT_WHITELIST_REQUIRED | This deposit needs payer details; funds are in the unavailable balance | PROCESSING, whiteListStatus = init | Call submit with the Travel Rule details. Do not change the payer address, network or memo |
DEPOSIT_WHITELIST_FAILED | Details were rejected; funds still unavailable | PROCESSING, whiteListStatus = rejected | Read data.failMessage, correct it, submit again |
DEPOSIT_WHITELIST_CREDITED | Review passed; funds are now in the receiving wallet's available balance | usually still PROCESSING, whiteListStatus = approved, creditStatus = CREDITED | Update the balance you show. Not the end of the order |
ACTIVE emits none of them.WALLET_ADDRESS_UPDATEDstatus:ACTIVE means you can keep collecting from it, FAILED means disable and re-register.COLLECT_ORDER_UPDATEDorderStatus (see 4.1);data.whiteListStatus is carried alongside it.COLLECT_ORDER_UPDATED with orderStatus = SUCCESS. WhitelistDEPOSIT_ORDER_NOTIFICATION, which also carries whiteListStatus.DEPOSIT_WHITELIST_REQUIRED → you submitDEPOSIT_WHITELIST_FAILED → you submit againDEPOSIT_WHITELIST_CREDITED → funds credited to the receiving walletCOLLECT_ORDER_UPDATED → final one at orderStatus = SUCCESSCOLLECT_ORDER_UPDATED → final one at orderStatus = SUCCESS| Method | Path | Path A / B | Purpose |
|---|---|---|---|
GET | /v1/wallet/deposit-whitelist/options | A / B | VASP provider list. Countries use ISO two-letter codes |
POST | /v1/wallet/deposit-whitelist/addresses | A | Register an address with Travel Rule details |
GET | /v1/wallet/deposit-whitelist/addresses | A | Paginated address book |
GET | /v1/wallet/deposit-whitelist/addresses/{id} | A | One address and its deposits |
POST | /v1/wallet/deposit-whitelist/addresses/{id}/disable | A | Disable, then register again |
POST | /v1/wallet/deposit-whitelist/transactions/{transactionId}/submit | B | Submit Travel Rule details for a received deposit |
| Method | Path | Purpose |
|---|---|---|
POST | /v1/wallet/create/sub | Create a receiving sub-wallet |
GET | /v1/wallet/deposit-address | Deposit address |
GET | /v1/wallet/asset-balance | Available / unavailable balance |
GET | /v1/wallet/history | Supports whiteListStatus=init|pending|approved|rejected as a filter |
GET | /v1/wallet/transactions/{transactionId} | One transaction: status, whiteListStatus, creditStatus |
GET | /v1/wallet/list, /v1/wallet/sub-account/list | Wallet lists |
| Method | Path | Note |
|---|---|---|
POST | /v1/wallet/transfer | Available balance only |
GET | /v1/wallet/transfer-order/detail, /v1/wallet/transfer-order/list | Transfer queries |
POST | /v1/wallet/withdraw | Withdrawal |
POST | /v1/wallet/add-withdraw-whitelist | Withdrawal whitelist — not deposit source whitelisting |
POST | /v1/wallet/delete-withdraw-whitelist | Remove a withdrawal whitelist entry |
whiteListStatus now sits next to orderStatus in the order payload.| Item | Why |
|---|---|
POST /v1/wallet/add-deposit-sender | Not wired up for this flow. Use /v1/wallet/deposit-whitelist/** |
/v1/wallet/deposit-whitelist/pending-list | Removed. Use GET /v1/wallet/history with whiteListStatus |
/v1/wallet/deposit-whitelist/cases/{transactionId} | Removed. Use GET /v1/wallet/transactions/{transactionId} |
GET /v1/wallet/deposit-whitelist/options{
"providers": [
{ "name": "Binance" },
{ "name": "Coinbase" }
]
}POST /v1/wallet/deposit-whitelist/addresses, header Idempotency-Key{
"requestId": "uuid",
"walletLabel": "Payport Limited",
"network": "BSC",
"walletAddress": "0x…",
"memo": "",
"symbol": "USDC",
"addressType": "STANDARD",
"walletType": "VASP",
"provider": "Binance",
"correspondentType": "ENTITY",
"fullName": "Payport Limited",
"countryCode": "SG",
"companyAddress": "Tampines Blk67, Singapore"
}countryCode is ISO 3166-1 alpha-2, for example SG. Do not send countryInfo.ENTITY requires fullName, countryCode, companyAddress.INDIVIDUAL requires firstName, lastName, birthday (yyyy-MM-dd), countryCode,residentialAddress, and no fullName.data:{
"id": "10001",
"status": "PROCESSING"
}POST /v1/wallet/deposit-whitelist/transactions/{transactionId}/submit, header Idempotency-Key{
"requestId": "uuid",
"correspondentType": "ENTITY",
"fullName": "Payport Limited",
"countryCode": "SG",
"companyAddress": "Tampines Blk67, Singapore",
"walletLabel": "Payport Limited",
"addressType": "STANDARD",
"walletType": "VASP",
"provider": "Binance"
}walletAddress, network, memo, symbol or txHash. The on-chain transaction is the sourcedata:{
"status": "PROCESSING",
"whiteListStatus": "pending",
"transactionIds": ["20573580428712136704"]
}GET /v1/wallet/transactions/{transactionId} → data{
"transactionId": "20573580428712136704",
"status": "PROCESSING",
"whiteListStatus": "init",
"creditStatus": "PENDING",
"failMessage": "",
"fromAddress": "0x…",
"network": "BSC",
"amount": "100.00",
"currency": "USDC"
}status is 200 on success. On failure it is 500 and code carries one of these. Full list:code | Meaning |
|---|---|
10000100 | Transaction does not exist, or does not belong to this account |
10000101 | Payer details for this deposit have already been reviewed |
10000102 | Payer details incomplete |
10000103 | Invalid field value, including an unknown countryCode or provider |
10000104 | Cannot submit right now. Poll the status — do not edit the details and retry immediately |
10000105 | Duplicate request |
10000106 | The payer address cannot be supplied or changed when submitting for a received deposit |
COLLECT_ORDER_UPDATED; on Path A alsoWALLET_ADDRESS_UPDATEDDEPOSIT_WHITELIST_* event — an already whitelistedDEPOSIT_WHITELIST_FAILED) and an order rejection (COLLECT_ORDER_UPDATED withorderStatus = REJECTED) are handled as different thingsDEPOSIT_WHITELIST_CREDITED updates the balance but does not close the order; completion isCOLLECT_ORDER_UPDATED at orderStatus = SUCCESSGET /v1/wallet/history?whiteListStatus=init|rejectedIdempotency-Key — see Idempotency