> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fastcac.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get paid with Bachs

> We run our payments on Bachs. Use it to collect from your customers anywhere, and to fund your FastCAC wallet by API.

FastCAC runs its payments on [Bachs](https://app.bachs.io/signup?ref=DABODE). Your funding account,
the NGN account number you send money to, is a [Bachs](https://app.bachs.io/signup?ref=DABODE)
virtual account, and we move money through [Bachs](https://app.bachs.io/signup?ref=DABODE) every day.

We recommend it for collecting from your own customers too. Your customer pays you on
[Bachs](https://app.bachs.io/signup?ref=DABODE), you send the registration price to your FastCAC
funding account with one API call, and you submit. No spreadsheets, no manual transfers.

> **[Create your Bachs account](https://app.bachs.io/signup?ref=DABODE)**
>
> Free to start: no setup or monthly fees. Build in the sandbox today.

## Why Bachs

> **Get paid from anywhere**
>
> Cards from any country, settled in USD. NGN cards and bank transfer. Mobile money across Africa.
> USDT and USDC. All in one checkout.

> **No CAC certificate to start**
>
> Verify as an individual with your ID, a selfie and your bank account. Most reviews finish
> within 48 hours. Register the business later, with FastCAC.

> **A number your customers pay into**
>
> Permanent NGN virtual accounts: each transfer lands in your balance with the sender's details.

> **Built for developers**
>
> A sandbox that mirrors production, Node.js and Python SDKs, and a CLI that sends test webhooks
> to your laptop. Going live is a key swap.

### What your customers can pay with

| Method | Currencies |
| - | - |
| Card (Visa, Mastercard; Apple Pay and Google Pay where available) | USD from any country, or NGN |
| Bank transfer | NGN |
| Mobile money (M-Pesa, MTN MoMo, Airtel Money and more) | GHS, KES, MWK, RWF, TZS, UGX, XAF, XOF, ZMW |
| Stablecoins | USDT, USDC |

You settle in NGN or USD, and withdraw to bank accounts, mobile money or stablecoin wallets.

### What it costs

No setup fees and no monthly fees. You pay per payment:

| | Fee |
| - | - |
| NGN bank transfer at checkout | 1.5%, capped at ₦2,000 |
| NGN virtual account deposit | 1%, capped at ₦300 |
| Nigerian cards | 2% |
| Cards in USD | 5% + \$0.40, plus 1.5% for cards issued outside the US |
| Mobile money | 3.5% |
| USDT / USDC | 1.5% |
| NGN payout to a bank account | ₦50 flat |

These are [Bachs](https://app.bachs.io/signup?ref=DABODE)'s published rates; your dashboard shows
every fee before you confirm.

## How it fits with FastCAC

```mermaid theme={null}
sequenceDiagram
    participant C as Your customer
    participant B as Bachs
    participant Y as Your server
    participant F as FastCAC
    C->>B: Pays for the registration (card, transfer, mobile money)
    B-->>Y: Payment succeeded
    Y->>B: POST /v1/payouts to your FastCAC funding account
    B->>F: Bank transfer arrives
    F-->>Y: balance.funded
    Y->>F: POST /v1/businesses/registrations/{id}/submissions
```

1. Your customer pays you on [Bachs](https://app.bachs.io/signup?ref=DABODE), in whatever way suits
   them.
2. You send the registration price from your Bachs balance to your FastCAC funding account, by API
   (below). We credit it in full and send you `balance.funded`.
3. You [submit the registration](https://docs.fastcac.com/guides/registrations.md#submitting). Its price is charged from your
   wallet.

## Fund your FastCAC wallet by API

This is how FastCAC itself pays for every registration: a [Bachs](https://app.bachs.io/signup?ref=DABODE)
payout to a bank account. Yours goes to your funding account.

**1. Get your funding account**

Read `funding_account` from [`GET /v1/balance`](https://docs.fastcac.com/guides/balance#reading-your-balance), or copy
it from **Billing**. It appears once your funding account is approved.

**2. Save it on Bachs, once**

Find its bank's code in Bachs' bank list (`GET /v1/reference/banks?country=NG`), then save it
as a payout destination. Check `is_usable` before you use it.

```bash theme={null}
curl https://api.bachs.io/v1/payouts/destinations \
  -H "Authorization: Bearer $BACHS_SECRET_KEY" \
  -H "Idempotency-Key: fastcac-funding-account" \
  -H "Content-Type: application/json" \
  -d '{
    "currency": "NGN",
    "type": "bank_account",
    "account_number": "<your funding account number>",
    "bank_code": "<its bank code>"
  }'
```

**3. Pay in for each registration**

When your customer pays you, send the registration price. `amount` is what reaches your funding
account; Bachs' ₦50 fee is charged on top. Use one `reference` and `Idempotency-Key` per
registration, so a retry never pays twice.

```bash theme={null}
curl https://api.bachs.io/v1/payouts \
  -H "Authorization: Bearer $BACHS_SECRET_KEY" \
  -H "Idempotency-Key: fund-reg_8f3k2" \
  -H "Content-Type: application/json" \
  -d '{
    "destination": "<destination id from step 2>",
    "amount": "35000.00",
    "reference": "fund-reg_8f3k2"
  }'
```

**4. Submit when the money is in**

Wait for [`balance.funded`](https://docs.fastcac.com/webhooks/events#wallet) from FastCAC, then submit. A submit the
wallet can't cover answers `402 insufficient_balance` and stays a draft, so nothing is lost if a
payout is still on its way.

A payout's create response isn't "money delivered": it moves from `pending` to `completed` (or
`failed`). Track it with [Bachs](https://app.bachs.io/signup?ref=DABODE)'s webhooks, and rely on
`balance.funded` from us for when your FastCAC wallet has it.

## Start with Bachs

> **[Sign up for Bachs](https://app.bachs.io/signup?ref=DABODE)**
>
> Create your account, build in the sandbox, and go live once you're verified.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.