Fiat Collection via Virtual Accounts & Local Collection Rails
Use BPN's fiat collection APIs to receive local-currency payments through Virtual Accounts, local payment instructions, or pooled collection accounts.The high-level integration lifecycle is standardized across markets, while the receiving instrument, required fields, limits, and operational rules vary by currency.
One integration model, market-specific capabilities
Integrate the common order, webhook, query, refund, and reconciliation model once. Before enabling a currency, review its supported collection instrument and market-specific requirements.
Provision or retrieve receiving details
↓
Payer sends local-currency funds
↓
Receive PayIn webhook notification
↓
Query and reconcile the collection order
↓
Refund or use the available balance
1.
Provision or retrieve the receiving details supported by the selected market.
2.
Present the bank account, payment key, QR code, or payment link to the payer.
3.
Receive a webhook when the incoming payment is confirmed.
4.
Use the returned orderId to query and reconcile the same PayIn order.
5.
Refund the payment when eligible, or use the available fiat balance in subsequent flows.
By default, ZAR payments are received through a Pool Account. BPN assigns a specific reference code to identify and attribute each incoming payment.If a customer requires a ZAR account in its own legal name, it may submit the required KYB documents and apply for a dedicated named account. Once approved, the account can be used for both receiving and sending funds.Payments that cannot be matched automatically are routed to manual review.
Use Create Virtual Account to provision a dedicated or dynamic receiving instrument where supported. For pooled collection markets such as ZAR, use the Pool Account receiving details available to the merchant.Receiving instruments fall into three categories:
The refund is returned through the supported original-route process.
REFUNDING means the PayIn refund is being processed.
The final refund status is REFUNDED or REFUND_FAIL.
Keep the refund associated with the original PayIn order for lifecycle tracing and reconciliation.
Merchant-initiated original-route refunds are supported for both GHS and ZAR, including ZAR Pool Account and dedicated named-account collections.System-initiated refunds may also occur when an incoming payment exceeds an applicable account or transaction limit.
Use Master VA Balance Inquiry to query the merchant's fiat balance by currency.GHS VA balances and ZAR Pool Account or dedicated named-account balances are included in the merchant's balance.Once the collected balance is available, it may be used in supported payout, transfer, or stablecoin conversion flows. All supported collection currencies can be converted to USDC or USDT.
Convert collected fiat
To convert an available fiat balance to USDC or USDT, see Convert Stablecoins.