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

# Payroll

> Pay remote employees and contractors across Africa with stablecoin-to-bank payouts using the Breet API. Fast, low-cost, no bank wires.

Pay remote employees and contractors in Africa without the delays and fees of traditional wire transfers. Load stablecoins into your Breet account, then withdraw directly to employees' bank accounts in NGN or GHS, or send stablecoins to their crypto wallets. Breet handles the conversion and payout so you can run payroll on your own schedule.

## How it works

<Steps>
  <Step title="Fund your Breet account with stablecoins">
    Deposit USDT or USDC into your Breet wallet. You can generate a deposit address via the API or fund directly from your dashboard.
  </Step>

  <Step title="Add employee bank details">
    Collect each employee's bank account information (account number, bank name) or crypto wallet address. Store these in your payroll system.
  </Step>

  <Step title="Initiate withdrawals">
    Call the [withdraw-to-bank](/api-reference/withdrawals/withdrawal-ngn-|-ghs) endpoint for each employee. Breet converts the stablecoins to local currency and sends the payout to the employee's bank account.
  </Step>

  <Step title="Track payout status via webhooks">
    Breet sends [webhook](/webhooks) notifications as each withdrawal progresses: `withdrawal.pending`, `withdrawal.completed`, `withdrawal.reversed`, or `withdrawal.rejected`.
  </Step>
</Steps>

## Withdraw to an employee's bank account

```bash theme={null}
curl -X POST "https://api.breet.io/v1/payments/withdraw/bank/BANK_ACCOUNT_ID" \
  -H "x-app-id: YOUR_APP_ID" \
  -H "x-app-secret: YOUR_APP_SECRET" \
  -H "X-Breet-Env: production" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 500,
    "narration": "March 2026 salary - Jane Doe"
  }'
```

Replace `BANK_ACCOUNT_ID` with the ID of the employee's saved bank account. The `amount` is in USD, and Breet converts it to the employee's local currency (NGN or GHS) based on their country. The `narration` is optional (max 32 characters) and appears on the bank statement.

<Note>
  To pay an employee in stablecoins instead, use [`POST /payments/withdraw/address`](/api-reference/withdrawals/withdraw-stable-coins) with their wallet address and the token amount.
</Note>

## What Breet handles

* Converting stablecoins to NGN or GHS at current rates
* Processing bank payouts to employee accounts
* Sending webhook notifications for each withdrawal status change
* Processing crypto-to-wallet withdrawals for employees who prefer stablecoins

## What you handle

* Funding your Breet account with sufficient stablecoin balance
* Storing employee bank account details or wallet addresses
* Initiating individual withdrawal requests per employee
* Listening for and processing webhook events to confirm payout status
* Communicating payout confirmations to employees
* Scheduling and automating payroll runs on your preferred cadence

## Example user journey

1. A remote-first startup employs five contractors across Nigeria and Ghana.
2. On the last Friday of the month, the finance team triggers a payroll run from their internal tool.
3. The tool calls Breet's [withdraw-to-bank](/api-reference/withdrawals/withdrawal-ngn-|-ghs) endpoint for each contractor with their bank account ID, amount, and a narration like "March 2026 salary."
4. Breet converts the USDT to NGN or GHS and initiates bank transfers.
5. Each contractor receives a `withdrawal.completed` webhook, and the tool marks the payout as confirmed.
6. Contractors see the funds in their bank accounts within minutes.
7. The finance team reviews a summary of all payouts and statuses in their dashboard.

## FAQ

<AccordionGroup>
  <Accordion title="Can I pay multiple employees in one batch?">
    Breet processes withdrawals individually. To run payroll, make a separate withdrawal request for each employee. You can call the API programmatically in a loop or batch from your payroll system. All requests are processed concurrently on Breet's side.
  </Accordion>

  <Accordion title="Which currencies can employees receive?">
    Employees with bank accounts in Nigeria receive NGN. Employees in Ghana receive GHS. If an employee prefers stablecoins, use [`POST /payments/withdraw/address`](/api-reference/withdrawals/withdraw-stable-coins) to send USDT or USDC directly to their crypto wallet.
  </Accordion>

  <Accordion title="Can I automate payroll runs?">
    Yes. Since all payouts are made via API, you can call the withdrawal endpoints programmatically on any schedule (weekly, biweekly, or monthly). Integrate with your existing payroll system or build a simple cron job that triggers withdrawals on payday.
  </Accordion>

  <Accordion title="How do I track whether a payout was successful?">
    Breet sends [webhooks](/webhooks) for every withdrawal status change. Listen for `withdrawal.completed` to confirm a successful payout, `withdrawal.reversed` if the bank returned the funds, or `withdrawal.rejected` if it failed. You can also call [`GET /payments/withdrawal/{id}`](/api-reference/withdrawals/fetch-withdrawal-by-id) to check withdrawal status at any time.
  </Accordion>
</AccordionGroup>
