Skip to main content
Payfonte expects amount values in the smallest denomination of the currency (minor unit). Use this rule: amount_to_send = major_amount * 100 Example: 100.50 NGN becomes 10050.
Do not send decimal values in API requests. Always send integer amounts.

Why This Format?

Precision

Prevents floating-point rounding issues in financial calculations.

Consistency

Same amount format across collections, disbursements, and wallets.

Provider Alignment

Matches how payment providers process transaction values internally.

Quick Conversion Table

CurrencyMajor UnitMinor UnitExample
NGNNairaKobo100.00 NGN -> 10000
GHSCediPesewa50.00 GHS -> 5000
KESShillingCent100.00 KES -> 10000
XOFCFA FrancMinor unit10.00 XOF -> 1000
USDDollarCent25.99 USD -> 2599

API Examples

The examples below show the same rule in real requests:
  • 1250.75 NGN is sent as 125075 (amount in kobo)
  • 10000.00 NGN is sent as 1000000 (amount in kobo)
{
  "currency": "NGN",
  "amount": 125075,
  "reference": "ORDER-1001"
}

Common Mistakes

Sending decimal amounts

  • Incorrect: "amount": 1250.75
  • Correct: "amount": 125075
Do not send some requests in major units and others in minor units. Standardize conversion in one shared utility.
Conversion logic should run on your backend so it stays controlled and consistent.
1

Store business amounts as decimals or strings in your app

Keep your display and business logic readable (for example 1250.75).
2

Convert right before API request

Convert to minor unit integer (125075) at your service boundary.
3

Log both values for debugging

Log displayAmount and apiAmount so reconciliation is easier.

Authorization

Add required auth headers to your requests.

Wallets

Understand wallet balances and wallet states.

API Reference

Explore request/response schemas.