Aller au contenu

Pack contents: UEMOA

Ce contenu n’est pas encore disponible dans votre langue.

Two packs follow the rules shared by the eight states of the West African Economic and Monetary Union (UEMOA: Benin, Burkina Faso, Côte d’Ivoire, Guinea-Bissau, Mali, Niger, Senegal and Togo), in francs CFA (XOF). A workspace whose jurisdiction is one of those states sees them first in the rule library:

  • uemoa-emi 1.1.0 (8 rules): e-money issuers and mobile money (Orange Money, Wave, MTN MoMo, Moov Money).
  • uemoa-bank 1.0.0 (8 rules): banks and microfinance institutions.

uemoa.cash_report (UE1) is in both, so there are 15 different rules. All are post-event except uemoa.sim_swap_payout, which runs in a real-time decision. Every rule arrives switched off, and every rule has a French name and description.

Several rules reuse a core, Ghana or Nigerian rule by reference with UEMOA amounts.

uemoa.emi_balance_cap needs the wallet’s balance after each transaction: send it as balance_after in the transaction’s attributes. Transactions without it are skipped. See Sending transactions.

Key Library Name Pack Mode · action Alert about Severity · score
uemoa.cash_report UE1 Cash transaction at or above the CENTIF reporting threshold uemoa-emi post-event · alert customer low · 20
uemoa.linked_cash_daily UE2 Several cash operations in a day above XOF 9 million together uemoa-emi post-event · alert customer medium · 50
uemoa.emi_monthly_topup UE3 E-money top-ups above the BCEAO monthly cap uemoa-emi post-event · alert customer medium · 45
uemoa.emi_balance_cap UE4 E-money balance above the BCEAO cap uemoa-emi post-event · alert account medium · 40
uemoa.split_cash_in_agents UE5 Cash-in split across many agents uemoa-emi post-event · alert customer high · 70
uemoa.cash_out_after_cash_in UE6 Cash-out right after cash-in uemoa-emi post-event · alert customer high · 60
uemoa.sim_swap_payout UE7 Payout soon after a SIM swap uemoa-emi real-time · block customer critical · 85
uemoa.wallet_outside_union UE8 Mobile money transfer outside the UEMOA uemoa-emi post-event · alert customer medium · 40
uemoa.cash_report UE1 Cash transaction at or above the CENTIF reporting threshold uemoa-bank post-event · alert customer low · 20
uemoab.linked_cash_daily UEB1 Several cash operations in a day above XOF 9 million together uemoa-bank post-event · alert customer medium · 50
uemoab.special_examination UEB2 Large operation by a new or high-risk customer uemoa-bank post-event · alert customer medium · 45
uemoab.cash_50m UEB3 Cash operation of XOF 50 million or more uemoa-bank post-event · alert customer high · 60
uemoab.cash_debt_payment UEB4 Debt paid in cash above XOF 5 million uemoa-bank post-event · alert customer high · 60
uemoab.deposit_structuring UEB5 Cash deposits just below the CENTIF threshold uemoa-bank post-event · alert customer high · 70
uemoab.transfer_outside_union UEB6 Large transfer outside the UEMOA uemoa-bank post-event · alert customer medium · 35
uemoab.pep_large UEB7 PEP transaction above XOF 10 million uemoa-bank post-event · alert customer high · 70

UEMOA e-money issuers and mobile money (in French: UEMOA : émetteurs de monnaie électronique et mobile money), version 1.1.0.

Typologies for e-money issuers (EME) and mobile money in the eight UEMOA states (Orange Money, Wave, MTN MoMo, Moov Money), in francs CFA: the CENTIF cash threshold, linked cash operations, the BCEAO e-money balance and monthly top-up caps, smurfing through agents, cash-out right after cash-in, SIM-swap payouts and wallet transfers outside the Union. Several rules reuse core and Ghana rules by reference. Values come from SpeculaPro’s research of BCEAO texts: confirm each with the BCEAO, the Commission Bancaire and your CENTIF before go-live.

Sources the pack cites:

  • BCEAO Décision n°021 du 21 décembre 2023 fixant les montants seuils (loi uniforme LBC/FT/FP)
  • BCEAO: textes LBC/FT (instructions 001, 002 et 003-03-2025)
  • BCEAO Instruction n°020 du 8 octobre 2026 modifiant l’Instruction 008-05-2015 (plafonds de monnaie électronique)

Cash transaction at or above the CENTIF reporting threshold · library UE1 · Cash reporting threshold · alert about the customer · severity low, score 20

In French: Opération en espèces atteignant le seuil de déclaration à la CENTIF.

Cash transactions of XOF 15,000,000 or more must be reported to the CENTIF (BCEAO Décision n°021 of 21 December 2023, art. 8, under the uniform AML/CFT/PF law). Reuses the core cash rule with the UEMOA threshold. Confirm with your CENTIF.

Reuses the logic of core.large_cash (from core) with the parameters below; only the values differ.

Parameter Meaning Default
threshold Cash threshold (base currency) 15,000,000

Explanation shown to analysts: Cash transaction of {{txn.base_currency}} {{txn.amount}} at or above the {{txn.base_currency}} {{params.threshold}} CENTIF cash reporting threshold.

Several cash operations in a day above XOF 9 million together · library UE2 · Linked cash operations · alert about the customer · severity medium, score 50

In French: Plusieurs opérations en espèces dans la journée dépassant 9 millions FCFA au total.

Several cash operations by the same customer in one day that together exceed XOF 9,000,000, none of them alone: the customer must be identified (BCEAO Décision n°021, art. 3), and splitting cash this way is a structuring indicator.

Parameter Meaning Default
threshold Together above (base currency) 9,000,000
min_ops Operations in the day, at least 2

Explanation shown to analysts: {{= int(features.ops_a_24h + features.ops_b_24h) }} cash operations totalling {{txn.base_currency}} {{= features.sum_a_24h + features.sum_b_24h }} in 24 hours, above {{txn.base_currency}} {{params.threshold}} together.

Expression
txn.type in ['cash_in', 'cash_out'] && txn.channel in ['agent', 'cash', 'momo'] && txn.amount <= params.threshold && features.sum_a_24h + features.sum_b_24h > params.threshold && features.ops_a_24h + features.ops_b_24h >= double(params.min_ops)

E-money top-ups above the BCEAO monthly cap · library UE3 · E-money cap breach · alert about the customer · severity medium, score 45

In French: Rechargements de monnaie électronique au-dessus du plafond mensuel BCEAO.

Money loaded on a customer’s e-money accounts at one issuer over 30 days above the BCEAO cap: XOF 10,000,000 a month, and XOF 15,000,000 from 2 November 2026 (Instruction n°020 of 8 October 2026 amending Instruction 008-05-2015, art. 31). The rule applies the cap in force on the transaction’s date, so it switches by itself on 2 November. Distributors and merchants acting professionally are exempt: list their segments or account types.

Parameter Meaning Default
monthly_limit Monthly cap today (base currency) 10,000,000
monthly_limit_new Monthly cap from the date below (base currency) 15,000,000
new_limit_from New cap applies from (YYYY-MM-DD, by the transaction’s date; empty: never) 2026-11-02
exempt_segments Exempt customer segments ["agent", "distributor", "merchant"]
exempt_account_types Exempt account types ["agent", "merchant"]

Explanation shown to analysts: {{txn.base_currency}} {{features.in_30d}} loaded in 30 days, above the {{txn.base_currency}} {{= params.new_limit_from != ‘’ && txn.date >= params.new_limit_from ? params.monthly_limit_new : params.monthly_limit }} monthly e-money cap.

Expression
txn.direction == 'in' && !(customer.segment in params.exempt_segments) && !(account.type in params.exempt_account_types) && features.in_30d > (params.new_limit_from != '' && txn.date >= params.new_limit_from ? params.monthly_limit_new : params.monthly_limit)

E-money balance above the BCEAO cap · library UE4 · E-money cap breach · alert about the account · severity medium, score 40

In French: Solde de monnaie électronique au-dessus du plafond BCEAO.

A wallet whose balance after the transaction is above the BCEAO cap per identified customer and issuer: XOF 2,000,000, and XOF 4,000,000 from 2 November 2026 (Instruction n°020 of 8 October 2026). The rule applies the cap in force on the transaction’s date, so it switches by itself on 2 November. Needs the balance after the transaction in txn.attributes.balance_after; transactions without it are skipped. Distributors and merchants are exempt.

Parameter Meaning Default
max_balance Balance cap today (base currency) 2,000,000
max_balance_new Balance cap from the date below (base currency) 4,000,000
new_limit_from New cap applies from (YYYY-MM-DD, by the transaction’s date; empty: never) 2026-11-02
exempt_segments Exempt customer segments ["agent", "distributor", "merchant"]
exempt_account_types Exempt account types ["agent", "merchant"]

Explanation shown to analysts: Balance of {{txn.base_currency}} {{txn.attributes.balance_after}} after this transaction, above the {{txn.base_currency}} {{= params.new_limit_from != ‘’ && txn.date >= params.new_limit_from ? params.max_balance_new : params.max_balance }} e-money cap.

Expression
'balance_after' in txn.attributes && double(txn.attributes.balance_after) > (params.new_limit_from != '' && txn.date >= params.new_limit_from ? params.max_balance_new : params.max_balance) && !(customer.segment in params.exempt_segments) && !(account.type in params.exempt_account_types)

Cash-in split across many agents · library UE5 · Smurfing through agents · alert about the customer · severity high, score 70

In French: Dépôts d’espèces répartis entre de nombreux agents.

Cash-ins through several Orange Money, Wave, MTN or Moov agents in a day adding up to a large sum: smurfing through the distribution network. Reuses the Ghana rule with a franc CFA threshold.

Reuses the logic of gh.split_cash_in_agents (from gh-psp) with the parameters below; only the values differ.

Parameter Meaning Default
min_agents Distinct agents in 24h 3
min_total Total cash-in in 24h (base currency) 3,000,000

Explanation shown to analysts: Cash-ins via {{features.agents_24h}} different agents totalling {{txn.base_currency}} {{features.cash_in_24h}} in 24h.

Cash-out right after cash-in · library UE6 · Wallet used as pass-through · alert about the customer · severity high, score 60

In French: Retrait juste après un dépôt.

Cash deposited at one agent and withdrawn at another within two hours: a wallet used as a pass-through, typical of mule wallets and of moving cash across a border. Reuses the Ghana rule with a franc CFA threshold.

Reuses the logic of gh.cash_out_after_cash_in (from gh-psp) with the parameters below; only the values differ.

Parameter Meaning Default
min_amount Minimum cash-in (base currency) 500,000
ratio Cash-out as share of cash-in 0.8

Explanation shown to analysts: {{txn.base_currency}} {{features.cash_in_2h}} cashed in and {{txn.base_currency}} {{features.cash_out_2h}} cashed out within 2 hours.

Payout soon after a SIM swap · library UE7 · SIM swap · real-time, answers block · about the customer · severity critical, score 85

In French: Paiement peu après un changement de carte SIM.

SIM-swap fraud: the fraudster takes over the customer’s number, receives the codes and empties the wallet. Reuses the Ghana rule with a franc CFA threshold.

Reuses the logic of gh.sim_swap_payout (from gh-psp) with the parameters below; only the values differ.

Parameter Meaning Default
sim_change_hours Hours since the SIM swap 48
threshold Payout at or above (base currency) 100,000

Explanation shown to analysts: SIM swapped {{customer.hours_since.sim_swap}} hours before this payout of {{txn.base_currency}} {{txn.amount}} (rule window: {{params.sim_change_hours}} hours).

Mobile money transfer outside the UEMOA · library UE8 · Cross-border mobile money · alert about the customer · severity medium, score 40

In French: Transfert mobile money hors de l’UEMOA.

A wallet transfer to or from a country outside the eight UEMOA states at or above the amount: cross-border mobile money corridors outside the BCEAO’s area are a placement and cash-courier risk, and fall under the exchange regulations.

Parameter Meaning Default
member_countries UEMOA member countries (ISO codes) ["BJ", "BF", "CI", "GW", "ML", "NE", "SN", "TG"]
min_amount Amount at or above (base currency) 500,000

Explanation shown to analysts: {{txn.base_currency}} {{txn.amount}} by mobile money to/from {{txn.counterparty_country}}, outside the UEMOA.

Expression
txn.channel == 'momo' && txn.amount >= params.min_amount && txn.counterparty_country != '' && !(txn.counterparty_country in params.member_countries)

UEMOA banks (in French: UEMOA : banques), version 1.0.0.

Typologies for banks and microfinance institutions in the eight UEMOA states, in francs CFA, from the uniform AML/CFT/PF law and BCEAO Décision n°021 of 2023: the CENTIF cash threshold, linked cash operations, special examination of large operations, very large cash payments, cash payment of debts, structuring below the cash threshold, transfers outside the Union and PEP activity. Several rules reuse core and Nigeria rules by reference. Values come from SpeculaPro’s research: confirm each with the BCEAO, the Commission Bancaire and your CENTIF before go-live.

Sources the pack cites:

  • BCEAO Décision n°021 du 21 décembre 2023 fixant les montants seuils (loi uniforme LBC/FT/FP)
  • BCEAO: textes LBC/FT (instructions 001, 002 et 003-03-2025)
  • BCEAO Instructions 231/07/2024 and 233/07/2024 (cash declarations, cash payment of debts)

Several cash operations in a day above XOF 9 million together · library UEB1 · Linked cash operations · alert about the customer · severity medium, score 50

In French: Plusieurs opérations en espèces dans la journée dépassant 9 millions FCFA au total.

Several cash operations by the same customer in one day that together exceed XOF 9,000,000, none of them alone: the customer must be identified (BCEAO Décision n°021, art. 3), and splitting cash this way is a structuring indicator.

Parameter Meaning Default
threshold Together above (base currency) 9,000,000
min_ops Operations in the day, at least 2

Explanation shown to analysts: {{= int(features.ops_a_24h + features.ops_b_24h) }} cash operations totalling {{txn.base_currency}} {{= features.sum_a_24h + features.sum_b_24h }} in 24 hours, above {{txn.base_currency}} {{params.threshold}} together.

Expression
txn.type in ['deposit', 'withdrawal'] && txn.channel in ['cash', 'branch', 'atm', 'agent'] && txn.amount <= params.threshold && features.sum_a_24h + features.sum_b_24h > params.threshold && features.ops_a_24h + features.ops_b_24h >= double(params.min_ops)

Large operation by a new or high-risk customer · library UEB2 · Special examination (unusual large operation) · alert about the customer · severity medium, score 45

In French: Opération importante d’un client récent ou à risque élevé.

Operations of XOF 10,000,000 or more that are unusually complex or have no apparent economic purpose need a special examination (BCEAO Décision n°021, art. 4). Software can’t judge purpose: this flags such amounts by high-risk customers, customers onboarded recently, or paid to a new counterparty, for the analyst to examine.

Parameter Meaning Default
threshold Amount at or above (base currency) 10,000,000
new_customer_days Customer for at most (days) 90
ratings High-risk ratings ["high", "unacceptable"]

Explanation shown to analysts: {{txn.base_currency}} {{txn.amount}} by a customer rated {{customer.risk_rating}}, onboarded {{customer.age_days}} days ago: at or above {{txn.base_currency}} {{params.threshold}}, to examine.

Expression
txn.amount >= params.threshold && (customer.risk_rating in params.ratings || customer.is_high_risk || (customer.age_days >= 0 && customer.age_days <= params.new_customer_days) || (txn.has_counterparty && counterparty.is_new_for_customer))

Cash operation of XOF 50 million or more · library UEB3 · Cash reporting threshold · alert about the customer · severity high, score 60

In French: Opération en espèces de 50 millions FCFA ou plus.

Cash or bearer payments of XOF 50,000,000 or more get a special examination even in normal conditions (BCEAO Décision n°021, art. 4). Reuses the core cash rule.

Reuses the logic of core.large_cash (from core) with the parameters below; only the values differ.

Parameter Meaning Default
threshold Cash threshold (base currency) 50,000,000

Explanation shown to analysts: Cash transaction of {{txn.base_currency}} {{txn.amount}}: at or above {{txn.base_currency}} {{params.threshold}}, special examination required.

Debt paid in cash above XOF 5 million · library UEB4 · Prohibited cash payment · alert about the customer · severity high, score 60

In French: Dette payée en espèces au-delà de 5 millions FCFA.

Paying a debt in cash above XOF 5,000,000, in one or several linked operations, is prohibited (BCEAO Instruction 233/07/2024; payments between private individuals acting outside a profession are exempt).

Parameter Meaning Default
threshold Above (base currency) 5,000,000
types Transaction types that settle a debt ["loan_repayment", "bill_payment", "payment"]

Explanation shown to analysts: {{txn.type}} of {{txn.base_currency}} {{txn.amount}} paid in cash, above the {{txn.base_currency}} {{params.threshold}} limit for paying debts in cash.

Expression
txn.type in params.types && txn.channel in ['cash', 'branch', 'agent'] && txn.amount > params.threshold

Cash deposits just below the CENTIF threshold · library UEB5 · Structuring / smurfing · alert about the customer · severity high, score 70

In French: Dépôts en espèces juste sous le seuil CENTIF.

Cash deposits just below XOF 15,000,000, repeated within 48 hours and together above it: structuring to avoid the CENTIF cash report. Reuses the Nigerian deposit-structuring rule with the UEMOA threshold.

Reuses the logic of ngb.deposit_structuring (from ng-bank) with the parameters below; only the values differ.

Parameter Meaning Default
threshold Threshold being avoided (base currency) 15,000,000
margin Just below = within (0.1 = 10%) 0.1
min_count Deposits in 48 hours, at least 3

Explanation shown to analysts: {{features.deposits_48h}} cash deposits totalling {{txn.base_currency}} {{features.deposit_sum_48h}} in 48 hours; this one ({{txn.base_currency}} {{txn.amount}}) is just below the {{txn.base_currency}} {{params.threshold}} threshold.

Large transfer outside the UEMOA · library UEB6 · Cross-border value · alert about the customer · severity medium, score 35

In French: Transfert important hors de l’UEMOA.

A transfer to or from a country outside the eight UEMOA states at or above the amount: transfers outside the Union fall under the UEMOA exchange regulations and are a layering channel. The default amount is a starting point, not a regulatory value.

Parameter Meaning Default
member_countries UEMOA member countries (ISO codes) ["BJ", "BF", "CI", "GW", "ML", "NE", "SN", "TG"]
min_amount Amount at or above (base currency) 10,000,000

Explanation shown to analysts: {{txn.base_currency}} {{txn.amount}} to/from {{txn.counterparty_country}}, outside the UEMOA.

Expression
txn.amount >= params.min_amount && txn.counterparty_country != '' && !(txn.counterparty_country in params.member_countries)

PEP transaction above XOF 10 million · library UEB7 · Politically exposed person · alert about the customer · severity high, score 70

In French: Opération d’une PPE au-delà de 10 millions FCFA.

A politically exposed person’s transaction at or above the threshold: the uniform law requires enhanced due diligence for PEPs, national and foreign. Reuses the core PEP rule.

Reuses the logic of core.pep_threshold (from core) with the parameters below; only the values differ.

Parameter Meaning Default
threshold Threshold (base currency) 10,000,000

Explanation shown to analysts: Customer is a PEP; transaction of {{txn.base_currency}} {{txn.amount}} is at or above {{txn.base_currency}} {{params.threshold}}.

Also in this pack, described above:

Key Library Name
uemoa.cash_report UE1 Cash transaction at or above the CENTIF reporting threshold