SWIPA

Every kind of payment, on a platform that stays open

SWIPA runs collections and payouts across mobile money and bank rails, reconciles them automatically, and reverses what fails — for merchants running their own payments and for tenants running several merchants from one dashboard.

Open APIs and open configuration
Reconciled and reversed automatically
Licensed in Kenya, building across Africa
Who it's for

One platform, two ways to use it

Run payments for one business, or run several merchants from a single dashboard. Same rails, same ledger, same API — different shape of account.

Merchant

One business, collecting and paying

Take money from your customers, pay your staff, suppliers and bills, and read one set of books at the end of the month.

  • Your own accounts, balances and statements
  • Collections and payouts on every live rail
  • Team logins with per-person permissions
  • Your services, fees and pricing always visible
Tenant

Many merchants, one dashboard

A tenant is one business with sub-merchants under it — branches, subsidiaries, sellers or partners — operating in one or more markets and sharing a single SWIPA dashboard.

  • Every merchant you operate, in one dashboard
  • Merchants across one or more markets
  • Segregated balances and per-merchant statements
  • SWIPA sets services, fees and pricing — you and each merchant can see them
Services

Everything money does, in one account

Collect, pay out, and let the ledger reconcile itself. Four services on one integration — and one set of books at the end of the month.

Collections

Charge a customer's wallet or bank account, with your own invoice number on every payment.

M-PesaAirtel MoneyPesalink
Confirmed in seconds
0.5–1.5%, always capped

Payouts

Pay one supplier or a whole run — payroll, sellers, refunds — from the dashboard or the API.

M-PesaPesalinkRTGSEFT
Instant on wallets, same day on RTGS
KES 15–850 flat per payment

Auto-reconciliation

Provider statements are matched against your ledger as they arrive, line by line.

Per accountPer merchant
Matched, unmatched, and why
Included, no extra fee

Auto-reversals

Failed, timed-out and duplicate payments are put back without anyone raising a ticket.

FailuresTimeoutsDuplicates
Offsetting entries, full trail
Included, no extra fee
Coverage

Live in Kenya. Built for the continent.

Kenya is fully live on five rails. The rest of the footprint is in provider integration or regulatory review — and lands on the same API you already use.

Kenya

KES
M-PesaAirtel MoneyPesalinkRTGSEFT
Live · collections and payouts

Uganda

UGX
MTN MoMoAirtel Money
In provider integration

Tanzania

TZS
M-PesaAirtel Money
In provider integration

Nigeria

NGN
NIBSS instantBank transfer
In regulatory review

Ghana

GHS
MTN MoMoGhIPSS
In regulatory review

South Africa

ZAR
EFTPayShap
Planned

Pick the rail that fits the payment

M-Pesa

Getting paid by customers and paying individuals. The default for most Kenyan businesses.

KES 10 – 150,000Settles in seconds

Airtel Money

Collections, bill payments and airtime for customers on Airtel.

KES 50 – 300,000Settles in seconds

Pesalink

Bank to bank in the same minute — for customers and suppliers who prefer their bank.

KES 500 – 999,999Under a minute

RTGS

Large supplier and settlement payouts, cleared through the central bank.

KES 10,000 – 5,000,000Same business day

EFT

Payroll and scheduled supplier runs, batched into the clearing window.

KES 100 – 500,000Next clearing window

Your own provider

Bring a contract you already hold. Connections are open, so it plugs into the same request.

Open connectionsSame API

Ranges are the provider's limits; your own can be set tighter. We tell you before a payment is too large — not after.

Pricing

You only pay when money moves

Collections cost a percentage with a hard ceiling. Payouts cost a flat fee. Reconciliation and reversals are included.

When customers pay you
from 0.5%per collection, always capped

The bigger the payment, the smaller the rate — and the cap means a large collection never costs more than KES 1,000.

Up to KES 1,0001.5%max 30
KES 1,001 – 10,0001.2%max 200
KES 10,001 – 100,0000.8%max 500
Over KES 100,0000.5%max 1,000
When you pay someone
from KES 15flat, per payment

One price per instruction, whatever the amount. Settling money to your own bank account is free.

Payroll or supplier run · EFTKES 15
To a wallet · M-PesaKES 20
To a bank account · PesalinkKES 22
Large settlement · RTGSKES 850
Collect KES 500KES 7.501.5% · under the 30 cap
Collect KES 5,000KES 601.2% · under the 200 cap
Collect KES 250,000KES 1,0000.5% would be 1,250 — the cap applies
Payroll · 120 staff by EFTKES 1,800120 × KES 15 flat
No setup fee
No monthly fee
Free settlement to your bank
Free sandbox

SWIPA sets services, fees and pricing. High-volume businesses are priced per service, and the applicable rate card is readable in the dashboard by the tenant and by each merchant.

Open platform

Open by default

No hidden endpoints, no locked configuration, no forced provider. If the dashboard can do it, your code can do it too.

Open APIs

Every screen in the dashboard is a documented REST endpoint. Nothing is reserved for internal use.

POST /v1/requestsGET /v1/entriesGET /v1/statements
Idempotency keys on every write
Signed webhooks, retried for 24 hours

Open configuration

Accounts, rails, merchants and reconciliation rules are yours to read and change — no support ticket.

GET /v1/accountsGET /v1/merchantsGET /v1/services
SWIPA-set fees and pricing always readable
Same config in test and live

Open connections

Use our provider contracts or bring your own. A new rail is a new channel value, not a rewrite.

mpesapesalinkrtgsyour own
Every rail simulated in the sandbox
Switch provider without touching your code
CollectPOST /v1/requests
curl https://api.swipa.co/v1/requests \
  -H "Authorization: Bearer sk_test_4Qb8…" \
  -H "Idempotency-Key: inv-20451" \
  -d '{
    "service": "collect_money",
    "channel": "mpesa",
    "account": "PTS001-0001",
    "amount": 2487100,
    "currency": "KES",
    "counterparty": { "msisdn": "254712345678" },
    "reference": "INV-20451"
  }'
Pay outsame endpoint, one field different
curl https://api.swipa.co/v1/requests \
  -H "Authorization: Bearer sk_test_4Qb8…" \
  -H "Idempotency-Key: pay-3310" \
  -d '{
    "service": "send_money",
    "channel": "rtgs",
    "account": "PTS001-0002",
    "amount": 184000000,
    "currency": "KES",
    "counterparty": { "bank_code": "11", "account_number": "0140…" },
    "reference": "PAY-3310"
  }'

Test keys work the moment you register. The full reference is being written — ask us for the current spec and we'll send it over.

FAQ

Asked before signing up

Merchant or tenant — which am I?

Merchant, if the payments belong to one business: yours. Tenant, if you operate several merchants under one business — branches, subsidiaries, sellers or partners, in one or more markets — and want them in a single dashboard. You can start as a merchant and move to a tenancy later.

What do I need to open an account?

Your business registration, a tax number, and identification for the owners or directors. Register today and build against test keys immediately; verification usually finishes within two working days.

When does the money reach me?

Collections land in your SWIPA account as each payment clears, so you see them immediately. You choose how often we settle to your own bank, and those transfers are free.

What happens when a payment fails?

It's marked failed with the provider's reason, nothing is deducted, and the reversal writes its own ledger entries automatically. Your balance stays correct without anyone raising a ticket.

Do I need a developer?

No. You can collect payments and pay people from the dashboard alone. If you do have developers, every feature is available over the API — see the developer docs.

Who sets my fees?

SWIPA does. Services, fees and pricing are set by us and always visible to you — and, if you're a tenant, to each of your merchants too.

Open the account that fits how you operate

Merchant or tenant, it takes a few minutes to apply and about two days to verify.