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

# Amounts & Currencies

> Minor units, supported currencies, and payout rails

## Amounts are always in minor units

Every `amount` field on the API — in requests **and** responses — is an integer in the currency's **smallest unit**:

| Currency    | Smallest unit | Example              |
| ----------- | ------------- | -------------------- |
| NGN         | kobo          | `100000` = ₦1,000.00 |
| USD         | cent          | `100` = \$1.00       |
| USDC / USDT | cent          | `100` = 1.00         |

A fractional amount is rejected with `400 amount must be a whole number of smallest currency units (e.g. cents)`, and anything below `1` with `400 amount must be at least 1 in the smallest currency unit`. This keeps money arithmetic exact — no floating point.

<Note>
  A handful of currencies have no minor unit at all — JPY, KRW, XAF, and XOF among them. For those, the "smallest unit" is just the currency unit itself: `1000` XAF is 1,000 francs, not 10.
</Note>

<Warning>
  Double-check unit conversion before going live. Sending `1000` intending ₦1,000 actually sends ₦10 — and sending `100000` intending \$100 sends \$1,000.
</Warning>

<Note>
  **Changed 9 September 2026.** Some responses previously reported amounts in major units
  (`12.50` for \$12.50) while the webhooks reported the same amount as `1250`. Every response
  now uses minor units, so the two agree. The affected responses were the transaction
  listings and export, the statement lines, loans, broker commissions and referral stats,
  and the `withdraw` and `swap` responses. `GET /wallet/transaction/{id}` and
  `POST /wallet/transfer` were already correct but returned their amounts as JSON strings
  (`"4400"`); they now return numbers (`4400`).

  If your integration multiplied any of these by 100, or parsed them as strings, remove that
  handling. Request bodies, wallet balances, fee quotes, statement totals and every webhook
  payload are unchanged.
</Note>

## Currencies you can collect and hold in

Your wallets can hold a balance in, and be funded via virtual accounts or deposit instructions in:

**USD · NGN · BRL · USDC · USDT**

This is the set of currencies you can receive deposits in and carry a balance for. It's served by the API itself — treat [Get Supported Currencies](/api-reference/endpoint/wallet/supported-currencies) as the source of truth rather than hard-coding it, since it grows over time.

## Currencies you can pay out in

Payouts reach far beyond your wallet currencies. Fund a payout from any wallet balance you hold, and Rolla converts and delivers it to the beneficiary in **their** local currency — across local rails, SWIFT, and mobile money, worldwide. Currently supported destination currencies include:

**USD · EUR · GBP · CAD · AUD · NGN · GHS · XAF · XOF · JPY · CNY · KRW · THB · IDR** — and more are added regularly.

Which currencies and rails are available to a given beneficiary depends on their country and bank — see [Payout rails](#payout-rails) below, [Create Beneficiary](/api-reference/endpoint/beneficiaries/create) for the exact fields per method, and the [SWIFT payouts guide](/swift-payouts) for USD-over-SWIFT country coverage specifically. Not sure a corridor is supported? [Ask us](mailto:support@rolla.xyz) — we're adding new ones all the time.

## Payout rails

A payout's rail is chosen by the beneficiary's `withdrawal_method`:

| `withdrawal_method`           | What it is                                | Notes                                                                                                     |
| ----------------------------- | ----------------------------------------- | --------------------------------------------------------------------------------------------------------- |
| `local_transfer`              | Domestic bank transfer (e.g. NGN via NIP) | Bank code + account number; name auto-resolved via [lookup](/api-reference/endpoint/lookup)               |
| `domestic_wire`               | US domestic wire                          | Requires `routing_number`, bank and beneficiary country/address                                           |
| `ach`                         | US ACH                                    | Requires `routing_number`, bank and beneficiary country/address                                           |
| `international_wire`          | USD over SWIFT, worldwide                 | Requires `swift_code` and account number or IBAN — see the [SWIFT payouts guide](/swift-payouts)          |
| `mobile_money`                | Mobile money wallets                      | Available in select corridors, incl. XAF, XOF, and GHS; requires `mobile_money_provider` + `phone_number` |
| `crypto_usdc` / `crypto_usdt` | Stablecoin payout to an on-chain address  | Requires `wallet_address` + `wallet_chain`                                                                |
| `rolla_transfer`              | Another Rolla business                    | Instant, or use [Rolla Transfer](/api-reference/endpoint/wallet/transfer) directly                        |

The exact required fields per currency and method are listed on [Create Beneficiary](/api-reference/endpoint/beneficiaries/create) and [Withdraw Funds](/api-reference/endpoint/wallet/withdraw). To know what a payout will cost before sending it, quote it with [Get Transaction Fee](/api-reference/endpoint/wallet/fee).

## FX

Cross-currency rates come from [Get Exchange Rates](/api-reference/endpoint/wallet/rates), which returns a `rateToken` you can pass into [Swap Currency](/api-reference/endpoint/wallet/swap) to execute at the quoted rate. See [Convert currencies](/guides/convert-currencies).
