A market is the unit of configuration: it decides the currency, the rails, the address style, the OTP channels, the timezone and the tax model. A customer in Luanda with an English phone still sees AOA, because the market decides and the device does not.
The six markets
| market | City | Currency | Cell | Address | Rails |
|---|---|---|---|---|---|
| pt-lis | Lisboa | EUR | eu-west | street | MB Way, card, cash |
| ao-lad | Luanda | AOA | af-south | landmark | Multicaixa Express, Unitel Money, cash |
| mz-mpm | Maputo | MZN | af-south | landmark | M-Pesa, e-Mola, cash |
| cv-rai | Praia | CVE | eu-west | mixed | Vinti4, cash |
| gw-oxb | Bissau | XOF | eu-west | landmark | Orange Money, cash |
| st-tms | São Tomé | STN | eu-west | landmark | cash |
Money is always two values
An amount is an integer in the minor unit plus a currency code. There is no float anywhere in the API, and no amount without a currency beside it.
[ { "id": "ao-lad", "currency": "AOA", "minor_exponent": 2, "symbol": "Kz", "symbol_position": "after" }, { "id": "cv-rai", "currency": "CVE", "minor_exponent": 2, "symbol": "$", "symbol_position": "cifrao" }, { "id": "gw-oxb", "currency": "XOF", "minor_exponent": 0, "symbol": "FCFA", "symbol_position": "after" }]- Praia writes the cifrão as the decimal separator: 99000 CVE is 990$00, not 990,00$.
- Bissau has no minor unit: minor_exponent is 0 and 3000 XOF is 3 000 FCFA.
- Angola, Mozambique, Bissau and São Tomé hide zero decimals; Lisboa and Praia keep them.
- Thousands are a narrow no-break space in every lusophone market, and the symbol is glued to the number.
Paying from one market, delivering in another
A diaspora order is paid in the payer's market and fulfilled in the recipient's. Both amounts travel, the payer's first, with the rate and the instant it was taken. The recipient never sees the payer's currency.
{ "currency": "CVE", "totals": { "total_minor": 99000 }, "cross_market": { "payer_market_id": "pt-lis", "payer_currency": "EUR", "charged_minor": 898, "fx_rate": 110.265, "fx_snapshot_at": "2026-10-06T18:02:15+01:00", "recipient_name": "Joana Mendes (mãe)" }}Address styles
| address_style | Markets | Required |
|---|---|---|
| landmark | Luanda, Maputo, Bissau, São Tomé | bairro + landmark + phone. A street is optional metadata. |
| mixed | Praia | bairro + phone; a landmark is strongly recommended. |
| street | Lisboa | street + number + postcode + phone. |
Cells
Markets are grouped into cells that fail independently. eu-west carries Lisboa, Praia, Bissau and São Tomé; af-south carries Luanda and Maputo. A cell in island mode keeps taking orders and reconciles afterwards, and the status page reports per cell, not per region.