Skip to main content
Bachs enforces a maximum deposit amount per charge to manage risk. Limits are set per account and per currency, and apply to every payment collected through your integration, including checkout sessions. Virtual account deposits work differently, because a bank transfer cannot be refused once it is sent.

How limits work

Each currency has a maximum single-deposit amount. When a payment is initiated, Bachs checks the charge amount against the limit for that currency before processing. If the amount exceeds the cap, the request is rejected immediately with a DEPOSIT_LIMIT_EXCEEDED error, no charge is attempted. For checkout sessions with local pricing, limits are checked independently for each currency in the pricing configuration.

What your limit is

Limits are set per account and per currency. There is no single published figure: what you are allowed depends on your business type, what you sell, the customers you serve, and your risk profile, and it can change as your account builds history with us. Because of that, do not hardcode a limit in your integration. Read it from the API instead. When a charge exceeds the cap, the DEPOSIT_LIMIT_EXCEEDED error returns details.max_allowed_amount for the currency in question, which is the authoritative value for that account at that moment. See Handling limit errors. For non-USD currencies, a limit expressed in USD is converted using live exchange rates at the time of the request, so the local-currency cap moves with rates.

Request a limit increase

If you need a higher Bachs checkout limit, email support@bachs.io with the following:
  • Your Bachs account email
  • Your current checkout limit (from details.max_allowed_amount, or your dashboard)
  • The new limit you’re requesting
  • Why you need the increase
  • What you’re selling or the service you provide
  • The type of customers you serve
  • Your expected payment volume
This helps us understand your business and review your request. We’ll get back to you once your request has been reviewed.

Handling limit errors

When a deposit exceeds the limit, the API returns HTTP 400 with DEPOSIT_LIMIT_EXCEEDED:
The details object tells you exactly what was requested and what the cap is, so you can surface a clear message to your customer or split the payment into smaller charges.
Check details.max_allowed_amount and details.currency to show your customer the maximum they can pay in a single charge rather than a generic error.

Connected accounts

If your integration uses connected accounts, limits are resolved against the effective organization: typically the connected account itself, since each account carries its own limit. The effective_org_id field in the error response tells you which organization’s limit was applied.

Virtual account deposits

A deposit into a virtual account is a bank transfer the customer has already sent, so it is never rejected and never returns DEPOSIT_LIMIT_EXCEEDED. Instead:
  • Two limits apply: one on a single deposit, and one on all deposits into the account in a day, counted in UTC. By default both are NGN 5,000,000. Your account may have its own figures.
  • A deposit over either limit is held for manual review. You still receive collection.succeeded straight away, with nothing in it to say the deposit is held. The money reaches neither your pending nor your available balance until we release it, and no event is sent when we do.
If you expect large deposits, ask for higher limits before they arrive. Email support@bachs.io with the details listed under Request a limit increase, and say the limits are for virtual account deposits. If a large deposit has not reached your balance, send us its charge_id.