Money
Money is always an object with a string amount and a currency code. Never a float.
Every monetary value, in requests and responses, is an object with a string amount and a currency code.
"fee": { "amount": "10.00", "currencyCode": "NGN" }
- The amount is a decimal string in major units:
"5000.00"is five thousand naira. - Never parse it into a binary floating-point number. Use a decimal type (
BigDecimal,decimal.Decimal, a decimal library in JavaScript), or integer minor units (kobo) in your own storage. - Fees and taxes come back as separate money objects on quotes and receipts, so you can show each one before the customer confirms.
- Webhook payloads currently name the currency field
currencyrather thancurrencyCode. Read both until this is aligned.
Quote before you move money
POST /quotes prices a movement and returns the fee and the total debit before anything commits. Show the quote, get the customer’s confirmation, then send the movement.