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 currency rather than currencyCode. 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.