Maly Maly Payments v1 Changelog Partners
Base URL Applied to every example. Stored only in this browser.
Core concepts

Amounts and currencies

Monetary values are minor units, as a string of digits.

Every amount in the API is expressed in the currency's minor unit and sent as a string of digits. How many decimals a currency has determines what that string means.

CurrencyDecimalsStringMeans
XAF0"11800"11,800 XAF
USD2"1200"12.00 USD
!

Never send a float. No numeric JSON types, no locale separators. Monetary values are always integer strings.

Which fields the rule covers#

The rule applies to every monetary value in the API, not only to amount.value.

FieldMinor units?
amount.valueYes
charge.items[].unit_price, charge.items[].totalYes
charge.subtotalYes
tax.amountYes
Wallet available, pending, total_inward, total_outwardYes
Ledger amount, balance_before, balance_afterYes
tax.rateNo, a percentage
!

One exception. tax.rate is a percentage, not money. It carries a decimal point, as in "18.00" for 18%. It is the only field on this page that does.

Why it works this way#

Floating point cannot represent most decimal money values exactly. Sending integer minor units as strings removes rounding differences between your system, ours and the provider's.

Currencies and wallets#

You hold one wallet per currency and balances are never mixed. See Wallets.

Maly Payments API v1 · Documentation 1.1 · July 2026
Maly Tech Ltd. This guide is provided for information. Where it differs from your signed agreement, the agreement applies.