1. Deposit Whitelist
BPN OpenAPI
  • Get started
    • Introduction to BPN
    • Introduction to API
    • Architecture Overview
    • Authentication
    • Environments
    • Response envelope
    • Idempotency
  • Guides
    • Virtual Account
      • Virtual Account Overview
      • VA · Payin
      • VA · Statuses
      • VA · Payout
      • VA · RFI
      • VA · Currencies & limits
      • VA Opening
        • VND VA Opening
        • BRL VA Opening
    • Wallet
      • Wallet · Transfer
      • Wallet · Assets & limits
      • Wallet · Deposit whitelist
      • Wallet · PaymentLink
      • Wallet Overview
      • Wallet · Deposit
      • Wallet · Statuses
      • Wallet · Withdraw
    • Convert
      • Convert Overview
      • Convert · Quote & submit
      • Convert · Business types
      • Convert · Pairs & limits
      • Convert · Statuses
  • API Reference
    • Virtual Account
      • Virtual Account field notes
      • Inquiry Master VA Balance
      • List Primary Virtual Accounts
      • Create Virtual Account
      • Get Virtual Account Detail
      • List Virtual Account
      • List Virtual Account Orders
      • Get Virtual Account Order Detail
      • Refund Virtual Account Order
      • List RFI Sub Virtual Account
      • Get Sub Virtual Account RFI Template Info
      • Sub Virtual Account Submit RFI
      • Add Bank Account
      • List Bank Account
      • List Banks
      • Payout via Virtual Account
      • Send Email Verify Code
    • Wallet
      • Wallet field notes
      • Deposit Whitelist
        • Get Deposit Whitelist Options
          GET
        • Register Deposit Source Address
          POST
        • List Deposit Source Addresses
          GET
        • Get Deposit Source Address
          GET
        • Disable Deposit Source Address
          POST
        • Submit Payer Details for a Received Deposit
          POST
        • Save Sub-wallet Payer Profile
          POST
        • Update Sub-wallet Payer Profile
          PUT
        • Get Sub-wallet Payer Profile
          GET
        • Get Deposit Whitelist Case
          GET
      • Get Asset Balance
        GET
      • Get Deposit Address
        GET
      • Add Deposit Sender
        POST
      • Add Withdraw Whitelist
        POST
      • Delete Withdraw Whiltelist
        POST
      • Request Withdraw
        POST
      • Query Wallet Internal Transfer Detail
        GET
      • List Wallet Internal Transfer order
        GET
      • Wallet Internal Transfer
        POST
      • Create Sub Account
        POST
      • Query Transaction History
        GET
      • List Wallets
        GET
      • List Sub Account
        GET
      • Get Transaction Detail
        GET
      • List Wallet Transactions
        GET
      • Get Wallet Transaction Detail
        GET
    • Payment Link
      • Abnormal fund
        • Abnormal funds
        • Matchable Payment links
        • Link Order(Abnormal fund)
        • Submit to platform
      • Create Payment Link
      • List Payment links
      • Get Curreny Network Config
      • Prepay Whitelist for One-Time Payment Link
      • Prepay Whitelist for Permanent Payment Link
    • Convert
      • Convert field notes
      • Inquery FX Rate
      • Get Stablecoin Quote
      • Create Stable Order
      • Get Order (Single) Detail
      • List Orders(Batch)
    • KYB
      • Share KYB/KYC Info For Sub User
      • Get KYB Sub User Status
    • Reconciliation
      • Get Reconciliation Order List By Page
    • External Provider
      • FE: Create stablecoin collection sub-account link
      • FE: Deposit Travel Rule
      • External Provider · Deposit whitelist
      • Create stablecoin collection sub-account link
      • Get sub wallet account
      • List sub wallet accounts
      • Change sub wallet status
      • Query stablecoin collection order list
      • Query stablecoin collection order status
      • Get quote
      • Accept stablecoin collection order
      • Reject stablecoin collection order
      • Query USD balance
      • USD Payout (withdrawal)
      • Query USD Payout order status
      • Query USD Payout order list
      • Create deposit Travel Rule link
      • Create deposit Travel Rule detail link
    • Mock
      • Mock Virtual account Payin Order
      • Mock wallet deposit transaction
      • Mock Payment Link deposit
      • Mock Payin Order Refund
      • Mock Payout Order Update Status
    • Pay Session
      • Request Pay Session
    • Files
      • Request File Upload URL
  • Webhooks
    • Webhooks Overview
    • KYB notifications
    • Event catalogue
    • Resend Fail Webhook
    • Open Virtual Account Status
    • Virtual Account Payment Status
    • Virtual Account Invoice update
    • Transaction Status Notification
    • KYB Status Notification
    • Deposit Sender Detail Required
    • Abnormal Fund Notification
    • WALLET_TRANSFER_ORDER_UPDATED
    • Sub Virtual Account RFI Required
    • Sub Wallet Update
    • wallet address whitelist Update
    • Crypto Deposit Order Notification
    • Collect Order Updated
    • Usd Payout Order Updated
    • onboard result
    • partner order status
    • PaymentLink Notification
    • Deposit Whitelist Notification
  • Partner Flow
    • Share KYB/KYC and open account directly
    • Get KYB/KYC submit + open account status
    • List Banks
    • Check Account
    • Add Account
    • Get Stablecoin Quote
    • Create Stable Order
    • Get Order (Single) Detail
    • List Orders(Batch)
    • Submit hash
    • Order Status Notification (STABLE_ORDER_UPDATED)
  • Appendix
    • Enums quick reference
    • Enum
    • Virtual Account(VA) Support List & KYB requirement
  • Release Notes & Changelog
  • Errors
    • Error codes catalogue
  • Change Log
    • 2026-09-21 Virtual Account independent refund orders
    • Wallet deposit source-address whitelist
  1. Deposit Whitelist

Submit Payer Details for a Received Deposit

Designing
POST
/v1/wallet/deposit-whitelist/transactions/{transactionId}/submit

Submit Payer Details for a Received Deposit#

POST /v1/wallet/deposit-whitelist/transactions/{transactionId}/submit
The payer's source address must be registered and reviewed before the deposit can reach the
available balance of the receiving wallet. See the guide: Guides · Wallet · Deposit whitelist.
Supplies payer details for a deposit that already arrived. Use it when you did not know the payer address in
advance.
Call it for transactions whose whiteListStatus is init (never submitted) or rejected (resubmit
required). Find them with GET /v1/wallet/transaction/list?whiteListStatus=init / ...=rejected.
Changed: GET /v1/wallet/deposit-whitelist/pending-list was removed. Use
GET /v1/wallet/transaction/list with the whiteListStatus filter instead.
Never send walletAddress, network, memo, symbol or txHash. Those come from the on-chain
transaction; supplying or altering them is rejected with 10000106.
Several pending deposits from the same source address can be covered in one call via transactionIds. The
path transactionId must appear in that array.

Reading the response#

status 200 means the submission was accepted, not that the whitelist passed — the channel may have
rejected it on the spot and still answer 200. Read whiteListStatus and failMessage; never the outer
status alone.
whiteListStatusWhat it meansWhat to do
pendingSubmitted, under reviewWait for the order webhook, or poll
approvedCleared. The funds enter the available balance of the receiving wallet; the order may still be PROCESSING while auto-collection runsNothing
rejectedRejected. The funds stay in the unavailable balanceFix what failMessage names, then submit again
initRare — the gate did not movePoll before resubmitting
failMessage carries a reason only when whiteListStatus is rejected; otherwise it is an empty string,
never null. A gateway rejection reads like G20011: Invalid IP address — the channel code and its message.
When the review is rejected without a reason the platform falls back to whitelist rejected.
When one call covers several transactions, whiteListStatus is pending unless one of them came back
rejected, in which case it is rejected and failMessage carries the first reason found. Read the
per-transaction outcome with GET /v1/wallet/deposit-whitelist/cases/{transactionId}.
A parameter or business failure is a different shape: status 500, an outer code and msg, and no
data at all — so there is no data.failMessage to read. Incomplete payer details give 10000102,
supplying the source address gives 10000106, an unknown transaction gives 10000100.
None of this is announced by a webhook of its own. The order webhook you already consume carries
whiteListStatus: COLLECT_ORDER_UPDATED for a collection order, DEPOSIT_ORDER_NOTIFICATION for a plain
wallet deposit. A fresh rejected there is your signal to submit again.
Send the Idempotency-Key header. Do not edit the payer details and immediately retry after 10000104;
poll GET /v1/wallet/transaction/detail first.

Payer field rules#

correspondentTypeMandatory fieldsMust NOT be sent
ENTITYfullName, countryCode, companyAddressfirstName, lastName, birthday, residentialAddress
INDIVIDUALfirstName, lastName, birthday (yyyy-MM-dd), countryCode, residentialAddressfullName
walletTypeAlso mandatory
VASPprovider — value must come from GET /v1/wallet/deposit-whitelist/options
OTHERSothersPleaseSpecify (max 255 characters)
SELF_HOSTED—
countryCode is an ISO 3166-1 alpha-2 code such as SG. countryInfo was withdrawn — the platform derives
the country name server-side. Sending it is unnecessary.

Error codes#

Business failures return status 500 and an 8-digit code (WalletErrorCode).
codeMeaning
10000100Transaction not found, or it does not belong to the caller
10000101Deposit-whitelist review already completed for this deposit
10000102Payer details incomplete
10000103Field value not accepted, including an invalid countryCode or an unknown provider
10000104Cannot submit right now — poll the status instead of editing and retrying immediately
10000105Duplicate request
10000106Source address cannot be supplied or changed when submitting for a received deposit

Request

Authorization
API Key
Add parameter in header
API-KEY
Example:
API-KEY: ********************
API Key
Add parameter in header
API-SIGNATURE
Example:
API-SIGNATURE: ********************
API Key
Add parameter in header
API-TIMESTAMP
Example:
API-TIMESTAMP: ********************
or
Path Params

Header Params

Body Params application/json

Example
{
    "requestId": "b0f4c6a2-7d51-4c0e-9a2f-6f7c1e2d3b40",
    "transactionIds": [
        "20573580428712136704"
    ],
    "walletLabel": "Payport Limited",
    "addressType": "STANDARD",
    "walletType": "VASP",
    "provider": "Binance",
    "othersPleaseSpecify": "",
    "correspondentType": "ENTITY",
    "fullName": "Payport Limited",
    "firstName": "Alex",
    "lastName": "Tan",
    "birthday": "1990-01-31",
    "countryCode": "SG",
    "companyAddress": "Tampines Blk67, Singapore",
    "residentialAddress": "12 Bedok North Ave 4, Singapore"
}

Request Code Samples

Shell
JavaScript
Java
Swift
Go
PHP
Python
HTTP
C
C#
Objective-C
Ruby
OCaml
Dart
R
Request Request Example
Shell
JavaScript
Java
Swift
curl --location '/v1/wallet/deposit-whitelist/transactions/20573580428712136704/submit' \
--header 'Idempotency-Key: a3f1c2de-6f0b-4a1e-9e3b-2b7c5f0d1a44' \
--header 'API-KEY: <api-key>' \
--header 'API-SIGNATURE: <api-key>' \
--header 'API-TIMESTAMP: <api-key>' \
--header 'Content-Type: application/json' \
--data '{
    "requestId": "b0f4c6a2-7d51-4c0e-9a2f-6f7c1e2d3b40",
    "transactionIds": [
        "20573580428712136704"
    ],
    "walletLabel": "Payport Limited",
    "addressType": "STANDARD",
    "walletType": "VASP",
    "provider": "Binance",
    "othersPleaseSpecify": "",
    "correspondentType": "ENTITY",
    "fullName": "Payport Limited",
    "firstName": "Alex",
    "lastName": "Tan",
    "birthday": "1990-01-31",
    "countryCode": "SG",
    "companyAddress": "Tampines Blk67, Singapore",
    "residentialAddress": "12 Bedok North Ave 4, Singapore"
}'

Responses

🟢200OK
application/json
Bodyapplication/json

Examples
{
  "status": 200,
  "code": null,
  "msg": "OK",
  "traceId": "Auto:bf288b9af2e04dff88e943f2dcaf2b03",
  "data": {
    "requestNo": "b0f4c6a2-7d51-4c0e-9a2f-6f7c1e2d3b40",
    "status": "PROCESSING",
    "whiteListStatus": "pending",
    "failMessage": "",
    "transactionIds": [
      "20573580428712136704"
    ]
  }
}
Previous
Disable Deposit Source Address
Next
Save Sub-wallet Payer Profile
Built with