Skip to main content

What this product does

A BOB virtual deposit account is a fixed receiving destination bound to one CBPay account. Your payer sends a normal bank transfer in bolivianos to that destination; CBPay detects the credit, reconciles the reported account and credits your account through the normal payin flow. The account is receive-only. It is not a wallet, it does not create a payment session and your payer does not need to include an announcement reference.

1. Confirm the corridor

Always use the live catalog before enabling a payment option in your application:
The relevant row is:
The catalog is the source of truth. An organization may have the corridor disabled even when the API contract exists.

2. Create or repair the receiving account

Accounts normally receive their default BOB deposit instrument during account provisioning. This endpoint is also available when an existing account needs to repair a missing instrument:
Response 201:
Share instrument with the payer as the receiving account number. The instrument_id is CBPay’s stable identifier; do not replace the receiving number with the UUID. There is one active deposit account per account/country/currency/method. A second create does not create another destination. A missing or ambiguous provider response remains visible for reconciliation instead of being silently retried.

3. List the account’s instruments

The list is paginated and hides provisioning claims that do not yet have a real receiving number:

4. Receive and reconcile a transfer

There is no POST /v1/payins announcement for this mode. The payer sends BOB to the account shown in instrument. The rail is polled using a bounded date window; completed credits are deduplicated by the bank transaction reference, ACH order or a deterministic fallback key. When the credit is matched, subscribe to payin_credited and use the payin resource for the final amount and status:
The regular payin fee and FX conversion rules apply. The BOB bank movement is not exposed as a provider-specific object in the public API.

BOB payouts

BOB payouts continue to use the provider-agnostic payout contract:
The organization controls which internal rail version is active. That choice is not a client-controlled public field, and the payout stores the selected version so later polling continues against the correct operation. The response and webhook remain the same provider-agnostic payout contract.

States and recovery

Never create a second account after a timeout without first reading the list. The provider may have accepted the first request even when the response was lost.

Errors

FAQ

No. The destination is bound to one CBPay account and one organization. Share only the instrument returned for that account.
No. The payer uses their own bank’s transfer flow. CBPay only needs the receiving account to be active and the bank to report the credit.
No. The instrument is immutable for its corridor. If the provider reports a problem, contact operations instead of creating a replacement blindly.
The rail is polled. The final timing depends on when the bank posts the movement; the webhook is emitted after reconciliation, not when the payer submits the transfer.
Last modified on September 9, 2026