How limits work
Every payment method has a maximum single payment. When a payment is initiated, Bachs checks the amount against the limit for the method it is collected on before processing. If the amount exceeds the cap, the request is rejected immediately with aDEPOSIT_LIMIT_EXCEEDED error, and no charge is attempted.
Some accounts also have an account maximum for a currency. It applies on top of the method limits: a payment has to be within both.
For checkout sessions with local pricing, limits are checked independently for each currency in the pricing configuration.
What your limit is
New accounts start with these limits for a single payment:
The USD card limit is the lowest because card issuers cap single authorizations lower than other methods. If a customer needs to pay more than USD 500, offer them another payment method with a higher limit, or ask us to raise yours.
Mobile money and crypto limits are held in USD and converted at live exchange rates when the payment is made, so the cap in the local currency moves with rates.
Your account may have different figures. Limits are reviewed per account, based on your business type, what you sell, the customers you serve, and your risk profile, and they can change as your account builds history with us. To see the limits that apply to you right now, open Settings → Business → Account limits in your dashboard.
Do not hardcode a limit in your integration. When a payment exceeds the cap, the
DEPOSIT_LIMIT_EXCEEDED error returns details.max_allowed_amount, which is the authoritative value for that account at that moment. See Handling limit errors.
Request a limit increase
If you need a higher limit, email support@bachs.io with the following:- Your Bachs account email
- Your current limit and the payment method it applies to (from Settings → Business → Account limits, or
details.max_allowed_amount) - 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
Handling limit errors
When a deposit exceeds the limit, the API returns HTTP400 with DEPOSIT_LIMIT_EXCEEDED:
details object tells you exactly what was requested and what the cap is, so you can surface a clear message to your customer, offer a payment method with a higher limit, or split the payment into smaller charges.
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. Theeffective_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 returnsDEPOSIT_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.succeededstraight 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.
charge_id.
