Skip to main content
All monetary amounts use a single object shape — never a bare number.
{ "amount": "5400.00", "currency": "MAD" }
  • amount — a decimal string with exactly two decimals (regex ^-?\d+\.\d{2}$). It is a string on purpose: never deserialize it into a binary float. Use a decimal type on your side.
  • currencyMAD only in v1. The field exists so future currencies are an additive, non-breaking change.

Sign convention

Amounts are positive except where a reduction is expressed: refund and negative adjustment lines in a settlement carry a negative amount. Settlement arithmetic is exact:
net_due = bookings_total − refunds_total + adjustments_total
Do not round or reformat amounts you receive, and send amounts back with the same two-decimal string form. A mismatch on payment_confirmation is rejected with payment.amount.mismatch.
The net amount in a quote is what you owe Safariat at the monthly settlement — not what you charge the traveler. Your customer-facing price (margin included) is yours to set.