Skip to content
neo-pays

Mikaty · BCEAO instant payment · XOF · Senegal

One API to collect and pay out money across West Africa.

Orange Money, Wave, Yas, cards, dedicated-IBAN transfers and BCEAO instant payment — one integration, one webhook, one ledger. Your BCEAO screening and reporting obligations are handled by the platform that moves the money, and every decision stays attributable.

Dashboard overview: flows per operator, available and held funds, latest operations on every rail. Illustrative data.

Supervision & compliance

Every flow monitored, every franc traced, every decision attributable.

Supervision is held by the platform that executes the payments: no export to a second system, no reconciliation between two vendors.

on every operation

Real-time monitoring

Every collection and every payout is evaluated before it moves.

  • AML thresholds evaluated on every collection
  • Limits per business, per rail and per direction
  • Held with funds kept, reviewed by an operator
  • Kill switch per rail
0 entries edited

Full traceability

The ledger is never rewritten; it is appended to.

  • Double-entry ledger, corrections by compensating entry
  • SHA-256 hash chain per account
  • Insert-only audit logs
4 eyes

AML & KYC compliance

Sensitive decisions are taken by two people, and stay attributable.

  • Sanctions screening
  • Transaction reports with daily aggregates
  • Suspicious-activity report validated under four eyes
  • KYB with beneficial owners verified before approval
72 h

Regulatory reporting

The registers the regulator expects, produced by the system that executes.

  • Register of transaction and suspicious-activity reports
  • Watermarked, audited exports
  • Three-way reconciliation, CAMT statement import
  • 72 h incident register

Risk reduction

A flagged operation waits, funds kept; a payout can never exceed the balance.

Automation

Thresholds, limits and screening apply to every operation without intervention; people decide only the flagged cases.

Performance

BCEAO bench, Performance module: 0 deviations across 80 scenarios, no 5xx response.

Compliance

10-year regulatory retention, 72 h incident register, safeguarded funds recomputed daily.

Each audit log entry is hashed with the previous one: entry_hash = SHA-256(prev_hash ‖ payload). Illustrative data.
Read our security posture

Who it is for

Three ways to use the same platform.

From institutions centralising regulated flows to merchants collecting online: same rails, same ledger, same API.

Institutions & large collectors

Lotteries and betting, large collection networks: all your operators and all your rails on one platform, supervised where the money passes.

  • Each attached operator has its own sub-account, per rail, under your main account.
  • Limits and approvals per business and per operator, funds kept during review.
  • Mass payouts, executed row by row, with a result per row.
  • AML thresholds on every collection, watermarked and audited exports, 72 h incident register.

Marketplaces & platforms

Collect for your sellers, split, pay out — without ever splitting more than was collected.

  • Splits in the same transaction as the collection.
  • Seller sub-accounts, under your main account.
  • Payouts subject to approval, funds kept until the decision.
See the controls

Merchants & e-commerce

A hosted checkout in your colours, payment links, invoices, subscriptions — and refunds always capped at the collection.

  • Hosted checkout on pay.neo-pays.com, with your logo, your colour and a receipt.
  • Reusable or single-use payment links, with expiry.
  • Numbered PDF invoices; subscriptions by invoice then collection.
  • Refunds: impossible to refund more than was collected.

Centralisation

Your customers pay the way they already pay.

Mobile money, bank transfer, instant payment: every payment method lands in the same API, the same webhook and the same ledger.

  • WaveCollection and payout
  • Orange MoneyCollection and payout
  • YasCollection
  • CardsCollection
  • Bank transferInto a dedicated IBAN for your business — on request
  • BCEAO instant paymentParticipant in the system
  • XOF, Senegal to begin with.
  • Money never changes currency.
  • On Orange Money, your customer confirms on their handset; the PIN is encrypted and the platform never sees it.
  • No payment data passes through your servers: the hosted checkout takes care of it.
The hosted checkout on pay.neo-pays.com, in the merchant's colours: the payer picks a payment method. Illustrative data.

BCEAO instant payment

Participant in the BCEAO instant payment system.

Production-entry tests closed. The Union's instant payment, integrated into your flows — as a neo-pays merchant.

  • Alias directory: create, search, withdraw — one alias per account.
  • Transfers and requests to pay.
  • QR codes, static and dynamic.
  • Business API.
Searching an alias in the directory, sending a request to pay, following its status. Illustrative data.

Dedicated IBAN

Available on request

A dedicated IBAN for your business. Your customers pay by ordinary bank transfer.

A collection account in your name, with a partner bank of the marketplace. Each incoming transfer is detected by notification and reconciled automatically; outbound wires leave from the same IBAN.

  • One dedicated IBAN per business, for your collections.
  • Arrival detected by notification, automatic reconciliation as a backstop.
  • Outbound wire from the same IBAN.
  • Your collection account is never your settlement account.
The collection account: masked IBAN, incoming transfers reconciled or awaiting reconciliation. Illustrative data.

Controls

Real-time controls, with a human decision when it matters.

Every collection and every payout is evaluated before it moves: per-business and per-rail limits, amount thresholds, regulatory thresholds. A flagged operation is not silently refused — it is held, funds kept, and an operator decides. Thresholds can only be loosened under four-eyes approval.

  • Limits per business, per rail, per direction — changed without a deployment
  • Amount thresholds evaluated inline, before execution
  • Held with funds kept, reviewed by an operator
  • AML alerts: transaction reports with daily aggregates
  • Rate limiting by source, kill switch per rail
Review queue: a held operation, the rule that fired, the decision to release or reject. Illustrative data.

Scalability

Tested under the BCEAO bench's load; built to scale service by service.

Performance module 100% (0 deviations across 80 scenarios), no 5xx response. Every service scales horizontally, independently of the others.

  • Stateless services: sessions and rate-limit state held outside the instances, no leader election.
  • A warm floor on every customer-blocking path; automatic scale-out beyond it.
  • Asynchronous webhooks and projections, with redelivery.
Every service scales independently: instances, warm floor, read replica, asynchronous webhooks. Illustrative data.

Getting started

From sign-up to first payment, in four steps.

Test keys traverse the same code as production, with no money moving.

  1. Account

    Create your account. It stays inactive until your file is validated.

  2. KYB file

    RCCM or NINEA, legal representative, beneficial owners — verified before approval.

  3. API key

    sk_test_ or sk_live_, shown once; restricted to your IP addresses if you wish.

  4. First payment

    One call, one signed webhook: your first collection is in the ledger.

An API key is shown once, at creation. Illustrative data.

Developers

First payment in one call.

A REST API, amounts as strings, built-in idempotency, signed webhooks and a public OpenAPI specification.

  • Idempotency-Key: 201 on creation, 200 on replay, 409 on conflict.
  • GET /v1/corridors: routing is inspectable.
  • HMAC-signed, timestamped webhooks with a 300 s replay window.
  • Reference clients in more than ten languages — no published package; snippets generated from your dashboard.
A webhook delivery and its attempt ladder: 60 s, 5 min, 30 min, 2 h. Illustrative data.
Create a collection
curl https://api.neo-pays.com/v1/payments \
  -H "Authorization: Bearer $NEOPAYS_SECRET_KEY" \
  -H "Idempotency-Key: commande-1042" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": "10000",
    "currency": "XOF",
    "platform_id": "<platform_id>",
    "merchant_reference": "commande-1042"
  }'

HTTP/1.1 201 Created
Verify a webhook
POST /webhooks/neo-pays
X-NeoPays-Signature: t=1723651200,v1=9f2c…d41a
Content-Type: application/json

v1 == HMAC-SHA256(secret, t + "." + body)
|now − t| ≤ 300 s

Contact

Let's talk about your flows.

Pricing per business, by rails and volumes. Write to us, or open a test account under real conditions.

Ready to collect without one intermediary too many?

A test account under real conditions, or a conversation with the team.