OnLink API
Move money into and out of Kenya from inside your own product. Start with the plain-language overview, or go straight to a signed first call.
OnLink is a business-to-business API for moving money into and out of Kenya. Shillings arrive at an account we issue you, over the Kenyan rails your payers already use. Value leaves as shillings, or as USDT — a US-dollar stablecoin that moves over the Tron network — to a destination you registered with us beforehand. We lock a rate, take the funds in, pay the other side out, and send you a signed message when it is done.
These docs cover the stablecoin product. If you are moving US dollars, pounds or euros into Kenyan shillings and paying out on a local rail, that is a separate API with its own page at onlink.africa/api.
You do not need to know anything about blockchains or bank rails to follow these docs. The Overview explains the product in plain language, with no code. The technical sections begin at Get started.
Choose your path
I want to understand the product
What the API does, how a conversion works, what you can build with it, and a glossary of every term. Written for product, business and compliance readers.
I want to make my first call
Get sandbox credentials, sign a request and take a live quote, in curl, Node or Python. Then run a complete order end to end.
I am building with an AI agent
llms.txt, the whole corpus as one file, every page as Markdown and a read-only MCP server. Point your agent at the docs and let it read.
What you can build
Take shillings in on a Kenyan rail
Your payers fund a buy order by sending shillings to an account we issue you, by M-PESA or bank transfer.
Pay out Kenyan shillings from USDT
You send USDT; shillings land in a bank account you registered.
Take Kenyan shillings, deliver USDT
Your payer sends shillings to your collection account; USDT lands at an address you registered.
Know the moment an order finishes
We send a signed webhook when your funds are confirmed and when the order reaches its final state.
Control where value can go
Payout accounts and withdrawal addresses are registered ahead of time, so a credential can never invent a new destination.
Remittance operators, exchanges, treasury teams and platforms paying suppliers in Kenya combine these in different ways. See Use cases for how.
How a conversion works
Every order, in either direction, follows the same four steps:
- Lock a rate. You ask for a quote and we hold that rate for a short window.
- Create an order against the quote, with a reference of your own.
- Fund it. Send the USDT, or have your payer send the shillings.
- We settle and tell you. We confirm your funds, pay out the other side, and send you a webhook at each step.
Settlement is not immediate. The order is created first and completes later, the way a bank transfer does rather than a tap-to-pay. That one fact shapes how an integration is built, so it has its own page: How it works for the plain-language version and Asynchronous settlement for the version you build against.
Find your way around
Get started
Credentials, request signing, your first call, and how sandbox works.
Guides
Money in, money out, the four stages every order goes through, and a step-by-step guide for each direction.
Concepts
Settlement, money, quotes, idempotency, limits, and who does what.
Webhooks
The four events, delivery and retries, and how to verify a signature.
Rails
Every rail in the corridor, which of them the API reaches today, and what each does to your reference.
API reference
Every operation, generated from the running service, with a downloadable OpenAPI spec.
Errors
One error envelope, every code you can branch on, and what to retry.
Changelog
What changed, and what we count as a breaking change.
Environment
Every example in these docs uses the sandbox at
https://sandbox.onlink.africa. Sandbox is where you integrate and certify.
Production access is enabled per partner once your integration is ready, and
nothing in your code changes except the base URL and your credentials. Read
Sandbox for what it can and cannot do.
Getting help
Email info@onlink.africa with integration
questions, incidents and credential requests. It is a monitored inbox. Check
onlink.africa/status first if something looks
wrong, and quote the requestId from any error response when you write to us
— it is the one handle that finds your request in our logs. See
Status and support for what to include.