You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The built-in registry covers only a subset of African cash-using markets. Cash is a generic, non-automatable payment channel, and the package already exposes createCashPaymentChannel, but consumers in other African markets must create their own schemas.
This is the Africa cash-only companion to #20. That issue covers broader mobile-money, bank, card, and market expansion; this issue should not wait for provider-specific channel research. Cash-channel coverage outside Africa is tracked separately in #29.
Goal
Add a built-in cash_<country>_<currency> channel for every currently valid African country/territory and currency pairing in which physical cash is documented as circulating for ordinary payments.
Use the United Nations M49 Africa region as the geographic boundary. This includes Northern Africa and Sub-Saharan Africa, including countries and areas such as Western Sahara (EH) that have active ISO 3166-1 codes. Record disputed or otherwise ambiguous country/currency cases for maintainer review rather than silently omitting them.
“Every” means a source-backed African market matrix, not one guessed currency per country. Include:
all active ISO 3166-1 countries and territories in the UN M49 Africa region where physical cash is used;
each official/legal-tender currency that circulates there as physical cash;
officially documented parallel or shared legal tender where it is genuinely usable as cash; and
distinct country/currency pairs for shared currencies, such as every applicable XOF or XAF market.
ISO 4217 fund, precious-metal, test, and “no currency” codes;
obsolete currencies;
cryptocurrencies, account-only settlement units, and currencies with no physical cash form;
merely tolerated foreign notes without a reliable source showing ordinary circulation; and
assumptions based only on a country/currency lookup table when cash-circulation status is unclear.
Record ambiguous cases on this issue for maintainer review rather than inventing coverage.
Implementation guidance
First post or commit the proposed African country/currency matrix with authoritative sources and an “as of” date. Prefer ISO-maintained country/currency data plus central-bank, government, or similarly authoritative sources for multi-currency and exceptional markets.
Use the existing createCashPaymentChannel helper. Do not duplicate the shared cash definition or change its current schema version (2).
Follow the stable ID and file conventions exactly: cash_<country>_<currency> in src/channels/<country>/cash.ts when a country has one cash currency.
A country with multiple cash currencies needs one schema per country/currency pair. Because the repository requires one channel per source file, use unambiguous filenames such as cash_<currency>.ts where necessary and update the source-layout test deliberately.
Register and export every schema through the existing public entry points.
Keep cash declarative: no provider calls, ownership claims, limits, fees, exchange rates, or implication that cash settlement can be automated.
Split the work into reviewable African regional or alphabetical PRs. Each PR must state which rows of the agreed matrix it completes; the issue remains open until the matrix is exhausted.
Acceptance criteria
A reviewable, source-backed matrix defines all in-scope African country/territory and physical-currency pairs, its sources, exclusions, ambiguous cases, and verification date.
Every accepted matrix row has exactly one built-in, market-qualified cash schema.
Every schema uses createCashPaymentChannel, retains schema version 2, has automation: none, and has no collection fields.
Stable IDs, exports, registry entries, and country-grouped source files follow repository conventions, including a documented convention for multi-currency countries.
Tests prove the African cash registry matches the accepted matrix exactly, with no missing or duplicate country/currency pairs.
README.md describes the expanded cash coverage without implying provider integration or guaranteed local acceptance.
Existing IDs and behavior remain unchanged, including cash_ke_kes, cash_mw_mwk, and cash_za_zar.
npm run check, npm pack --dry-run, and npm run verify:pack pass.
Contributor notes
This is intentionally a large African coverage issue and should be completed through focused PRs. Before starting a batch, comment with the countries/territories you plan to cover to avoid duplicate work. Do not add speculative validation or automation: the schema describes in-person cash settlement only and does not prove that a particular merchant must accept that currency.
Problem
The built-in registry covers only a subset of African cash-using markets. Cash is a generic, non-automatable payment channel, and the package already exposes
createCashPaymentChannel, but consumers in other African markets must create their own schemas.This is the Africa cash-only companion to #20. That issue covers broader mobile-money, bank, card, and market expansion; this issue should not wait for provider-specific channel research. Cash-channel coverage outside Africa is tracked separately in #29.
Goal
Add a built-in
cash_<country>_<currency>channel for every currently valid African country/territory and currency pairing in which physical cash is documented as circulating for ordinary payments.Use the United Nations M49 Africa region as the geographic boundary. This includes Northern Africa and Sub-Saharan Africa, including countries and areas such as Western Sahara (
EH) that have active ISO 3166-1 codes. Record disputed or otherwise ambiguous country/currency cases for maintainer review rather than silently omitting them.“Every” means a source-backed African market matrix, not one guessed currency per country. Include:
Exclude:
Record ambiguous cases on this issue for maintainer review rather than inventing coverage.
Implementation guidance
createCashPaymentChannelhelper. Do not duplicate the shared cash definition or change its current schema version (2).cash_<country>_<currency>insrc/channels/<country>/cash.tswhen a country has one cash currency.cash_<currency>.tswhere necessary and update the source-layout test deliberately.Acceptance criteria
createCashPaymentChannel, retains schema version2, hasautomation: none, and has no collection fields.README.mddescribes the expanded cash coverage without implying provider integration or guaranteed local acceptance.cash_ke_kes,cash_mw_mwk, andcash_za_zar.npm run check,npm pack --dry-run, andnpm run verify:packpass.Contributor notes
This is intentionally a large African coverage issue and should be completed through focused PRs. Before starting a batch, comment with the countries/territories you plan to cover to avoid duplicate work. Do not add speculative validation or automation: the schema describes in-person cash settlement only and does not prove that a particular merchant must accept that currency.