Money in the Reevit API is always an integer in the currency’s minor
unit — the smallest indivisible unit of that currency. There are no decimal
points anywhere in the API, which makes floating-point rounding bugs
structurally impossible.
| Currency | Minor unit | 45000 means |
|---|
GHS | pesewa (1/100) | GHS 450.00 |
NGN | kobo (1/100) | NGN 450.00 |
KES | cent (1/100) | KES 450.00 |
USD | cent (1/100) | USD 450.00 |
{
"amount": 45000,
"currency": "GHS"
}
Rules
- Send integers.
45000, never 450.00. A request with a fractional
amount is rejected.
- Convert at the edge. Multiply by 100 exactly once — when the amount
enters your system (e.g. from a form) — and divide by 100 exactly once,
when you display it. Everywhere in between, keep the integer.
- Every money field follows the same rule.
amount, fee_amount,
net_amount, refund amounts, payout amounts, and settlement amounts are
all minor-unit integers in their stated currency field.
- Don’t do float math on display values.
45000 / 100 is safe to
render; summing display values is not. Sum the integers, then format.
const formatted = new Intl.NumberFormat("en-GH", {
style: "currency",
currency: "GHS",
}).format(amount / 100); // "GH₵450.00"
The SDKs keep you honest: their typed payment-intent builders take
minor-unit integers, and the docs’ code samples annotate them — e.g.
amount: 45000, // GHS 450.00, in pesewas.