Skip to content

Guide

Country packs

A country pack is data, not code: it sets the currency, the offline limits, the KYC ladder, the local rails and the data-protection context for one market.

Packs

This table is generated from the countryPacks export of @payvault/countries, so it always matches the code. Amounts are shown in major units.

Country packs
CodeCountryCurrencyPer paymentAllowance capTTLDomestic railsData lawStatus
BJBeninXOFF CFA 7,500F CFA 25,00072 hPI-SPI, STAR-UEMOA, SICA-UEMOA, GIM-UEMOA, MTN MoMo, Moov MoneyLoi n° 2017-20 du 20 avril 2018 portant code du numérique en République du Bénin (residency: none)concept
CMCameroonXAFFCFA 7,500FCFA 25,00072 hSYGMA, SYSTAC, GIMAC, MTN MoMo, Orange MoneyLaw No. 2010/012 on Cybersecurity and Cybercriminality (personal data provisions) (residency: preferred)concept
CICôte d'IvoireXOFF CFA 7,500F CFA 25,00072 hPI-SPI, STAR-UEMOA, SICA-UEMOA, GIM-UEMOA, Orange Money, MTN MoMo, Moov Money, WaveLoi n° 2013-450 du 19 juin 2013 relative à la protection des données à caractère personnel (residency: none)concept
EGEgyptEGPEGP 600.00EGP 2,000.0072 hInstaPay (IPN), CBE RTGS, Egyptian ACH, Meeza, Vodafone CashPersonal Data Protection Law No. 151 of 2020 (residency: preferred)concept
ETEthiopiaETBETB 1,500.00ETB 5,000.0072 hEATS, EthSwitch, telebirr, M-PesaPersonal Data Protection Proclamation No. 1321/2024 (residency: preferred)concept
GHGhanaGHSGHS 150.00GHS 500.0072 hGhIPSS Instant Pay (GIP), GhIPSS RTGS, GhIPSS ACH, gh-link, MTN MoMo, Telecel CashData Protection Act, 2012 (Act 843) (residency: none)concept
KEKenyaKESKES 1,500.00KES 5,000.0072 hPesaLink, KEPSS, Kenya EFT, M-Pesa, Airtel MoneyData Protection Act, 2019 (residency: preferred)concept
MAMoroccoMADMAD 120.00MAD 400.0072 hSRBM, SIMT, CMI, inwi money, Orange MoneyLaw No. 09-08 on the protection of individuals with regard to the processing of personal data (residency: preferred)concept
NGNigeriaNGNNGN 15,000.00NGN 50,000.0072 hNIBSS Instant Payment (NIP), CBN RTGS, VerveNigeria Data Protection Act 2023 (residency: preferred)concept
RWRwandaRWFRWF 15,000RWF 50,00072 hRSwitch, RIPPS, MTN MoMo, Airtel MoneyLaw No. 058/2021 of 13/10/2021 relating to the protection of personal data and privacy (residency: required)concept
SNSenegalXOFF CFA 7,500F CFA 25,00072 hPI-SPI, STAR-UEMOA, SICA-UEMOA, GIM-UEMOA, Orange Money, WaveLoi n° 2008-12 du 25 janvier 2008 sur la protection des données à caractère personnel (residency: none)concept
ZASouth AfricaZARZAR 200.00ZAR 700.0072 hPayShap, SAMOS, BankservAfrica EFTProtection of Personal Information Act, 2013 (POPIA) (residency: none)concept
TZTanzaniaTZSTZS 30,000.00TZS 100,000.0072 hTIPS, TISS, TACH, M-Pesa, Mixx by Yas, Airtel MoneyPersonal Data Protection Act, 2022 (residency: preferred)concept
TGTogoXOFF CFA 7,500F CFA 25,00072 hPI-SPI, STAR-UEMOA, SICA-UEMOA, GIM-UEMOA, T-Money, FloozLoi n° 2019-014 du 29 octobre 2019 relative à la protection des données à caractère personnel (residency: none)concept
UGUgandaUGXUGX 40,000UGX 150,00072 hUNISS, Uganda EFT, MTN MoMo, Airtel MoneyData Protection and Privacy Act, 2019 (residency: none)concept

What a pack sets

  • offlineLimits: perTransaction, allowanceCap (the most that can be locked, plus credit, in one allowance), allowanceTtlHours, maxPaymentsPerAllowance and releaseGraceHours. All amounts are integers in minor units.
  • kyc: the tier ladder, each tier with an allowanceCapMultiplier between 0 and 1, and the national ID systems accepted.
  • rails: domestic rails by type (instant, RTGS, mobile money, card, ACH) and cross-border options.
  • dataProtection: the data-protection law, the authority, and whether residency is none, preferred or required.
  • currency, languages, phone, centralBank and a bilingual notes field.

How packs are used

Issuing an allowance copies its currency, per-payment limit, maximum payment count and expiry from the pack into the signed certificate, so merchants enforce the limits offline without asking anyone. External-ledger issuance also rejects funded + credit above the pack's cap. Adding a market is a data change validated by a schema at load time, not new code.

A pack's releaseGraceHours is part of the schema. The current sweep that returns unspent vault value waits a fixed 30 days after expiry for a phone that never checks in; a returning phone is refunded at once from its signed close statement.