Skip to Content
Pesa VoucherDeveloper Documentation

Currencies

Supported currencies and how cross-currency deposits — like a PayPal payment in USD — are converted into your customer's local currency.


Currencies

PesaVoucher supports multiple currencies. Every user (your customer) has a preferred currency — the currency their wallet balance, deposits, and withdrawals are expressed in. This page covers which currencies are supported and how a deposit made in a different currency (most commonly a PayPal payment in USD) is converted into that specific user's local currency before it's credited to them.

Supported Currencies

CodeSymbolCountryLocal Payment Rail
KESKShKenyaM-Pesa
TZSTShTanzaniaAzamPay
UGXUShUgandaMTN Mobile Money
USD$Global (PayPal, cards)IntaSend

The "rail" is the underlying local settlement network for that currency — it doesn't limit which endpoint a customer can pay through. A Tanzanian user (preferred currency TZS) can still pay via PayPal in USD; PesaVoucher converts automatically into their TZS balance (see below).


How Cross-Currency Deposits Work (PayPal USD → User's Local Currency)

If a user's preferred currency is KES, TZS, or UGX and they pay via PayPal in USD:

  1. The user completes the PayPal payment in USD
  2. PesaVoucher captures the USD payment
  3. Before crediting the user, PesaVoucher converts the captured amount from USD into that user's preferred currency at the current exchange rate
  4. The user's wallet is credited in their preferred currency — not USD

Example: a user whose preferred currency is TZS pays via PayPal. The current USD → TZS rate applies at capture time, and their wallet is credited in TZS at that rate (illustratively, a KESTZS conversion today looks like 100.00 KES → TSh 3,508.77; the USD → TZS rate works the same way, just with a different pair).

This is per-user, not platform-wide — two users on the same merchant integration can have different preferred currencies, and each PayPal deposit converts into whichever currency that specific paying user is set to.

Exchange rates can change. The rate applied is the one in effect at capture time, not at order-creation time. If you need the exact rate used for a specific transaction, check the transaction record via Order Status or your webhook payload.


Currency Lock — Preferred Currency

Every user has a preferred currency set on their PesaVoucher account. Their wallet balance, deposits, and withdrawals are always expressed in it — this is a per-user setting, not a merchant-wide one.

  • PayPal deposits are the exception — they're accepted in USD from any user and auto-converted into that user's preferred currency, so a user doesn't need a USD-denominated account to pay via PayPal
  • Other rails require a currency match. If a deposit or withdrawal is initiated in a currency that doesn't match the user's preferred currency (and isn't an auto-converted case like PayPal), the request is rejected

Currency Mismatch Error

{
"success": false,
"error": "Currency mismatch: this user's account is configured for KES"
}

HTTP Status: 400

Contact support@pesavoucher.com if you need help with a user's preferred currency or want to discuss serving users across multiple currencies.


Amount Rules by Currency

CurrencyDecimal PlacesNotes
KES2M-Pesa STK Push: min 10.00, max 150,000.00 — see Deposits
USD2PayPal: min $1.00 — see PayPal
TZS2Min/max limits — contact support to confirm
UGX2Min/max limits — contact support to confirm

Best Practices

  • Always read the currency back from the API response — don't assume it matches what the user originally paid, especially on cross-currency deposits like PayPal
  • Show the user the converted amount and currency after a cross-currency deposit completes, not just the amount they originally paid in
  • Handle the 400 currency-mismatch error distinctly from other validation errors so you can show a clear, specific message per user
  • If you serve users across multiple countries/currencies, rely on PesaVoucher's conversion rather than converting currencies client-side — it's the authoritative rate and source of truth