Receiving Accounts
List, add, update and remove a merchant's receiving (settlement) accounts. An account in use by routing cannot be deleted.
A merchant's receiving accounts are the bank accounts its EFT funds settle into. This API lets you manage them; which account a given bank routes to is configured separately in Payment routing.
Supported banks
GET /v1/merchants/{merchantId}/receiving-account-banks returns the banks available for a receiving
account, for the merchant's currency. Supply the bankcode when adding an account below. This list is
distinct from the payment-routing banks (GET /v1/merchants/{merchantId}/banks).
curl -s https://dev.boapi.ppgw.net/v1/merchants/10544/receiving-account-banks \
-H "Authorization: Bearer YOUR_TOKEN"{
"banks": [
{ "bankcode": "absa", "bankname": "ABSA", "currency": "ZAR" },
{ "bankcode": "capitec", "bankname": "Capitec", "currency": "ZAR" }
]
}List
GET /v1/merchants/{merchantId}/receiving-accounts:
{
"merchantid": 10544,
"accounts": [
{
"id": 88,
"bankcode": "fnb",
"bankname": "FNB",
"accountname": "Acme Online",
"accountnumber": "62000000000",
"branchcode": "250655",
"accounttype": "cheque",
"inuse": true
}
]
}inuseistruewhen the account is referenced by an active payment route. An in-use account cannot be deleted until it is removed from routing first.
Add
POST /v1/merchants/{merchantId}/receiving-accounts. The bank must match the merchant's currency.
curl -s -X POST https://dev.boapi.ppgw.net/v1/merchants/10544/receiving-accounts \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"bankcode": "fnb",
"accountname": "Acme Online",
"accountnumber": "62000000000",
"branchcode": "250655",
"accounttype": "cheque"
}'The response echoes the created account:
{
"id": 88,
"bankcode": "fnb",
"bankname": "FNB",
"accountname": "Acme Online",
"accountnumber": "62000000000",
"branchcode": "250655",
"accounttype": "cheque",
"inuse": false
}Account types
accounttype is one of "cheque", "savings", or "public". The bankcode, accountname,
accountnumber and branchcode are all required, for every account type. An account number
that is absent or contains no digits is rejected.
For "public" (Public Recipient), the account name is the primary lookup used for payment. It
must therefore be precisely what is registered at the bank(s) the receiving account will be used
for. The account number is still required and is retained as the fallback: it is used to settle
when no match is found on the name. Supply a valid account number, bank code and branch code as you
would for any other account.
{
"bankcode": "fnb",
"accountname": "ACME ONLINE PTY LTD",
"accountnumber": "62000000000",
"branchcode": "250655",
"accounttype": "public"
}Update
PUT /v1/merchants/{merchantId}/receiving-accounts/{accountId} with the same body shape as add.
Supply the full account number again if you are changing it.
Delete
DELETE /v1/merchants/{merchantId}/receiving-accounts/{accountId} soft-deletes the account (it is
disabled, not physically removed).
{ "merchantid": 10544, "updated": 1 }If the account is referenced by an active payment route, the delete is refused with
validation_failed. Remove it from routing first, then delete it.
This mirrors the backoffice guard and prevents a route from pointing at an account that no longer
exists.
Gateway Settings
Read and write a merchant's EFT gateway settings: the type model, the writable allowlist, compare-before-write, and copying from a sibling.
Payment Routing
Route each bank to a receiving account, with an optional failover. A bank with no primary account is unsupported for the merchant.