Managed telco integration · Nigeria

Launch on Nigerian mobile networks, without the telco work.

One platform for telco services: USSD, SMS and carrier billing from your website or app. Koridor handles the aggregators, telco approvals, short codes, charging and callbacks. You bring the product; we run the telco side.

workspaces/acme-promo.yamlset up by Koridor
tenant: acme-promo
services: [ussd, sms, carrier_billing]
ussd: { menu: hosted }       # or relay → your backend
billing: { from: web }      # charge from your site or app
products:
  - { code: DAILY, price_ngn: 100 }
credentials: secret://acme-promo/aggregator
mode: sandbox          # live after UAT sign-off

Live across every Nigerian network

  • MTN
  • Airtel
  • Glo
  • 9mobile

One integration reaches subscribers on all four networks, through our aggregator partners.

Why Koridor

The slow, technical, relationship-heavy part, done for you.

Launching on Nigerian networks usually means months of aggregator contracts, telco approvals and integration work. With Koridor you skip all of it.

Speed

Onboarding is a config change, not a new deployment. Once terms are agreed, you can go from setup to UAT in a day.

Relationships

We hold the aggregator and telco connections, so you don't have to negotiate, certify or maintain them.

Trust

Reliable uptime, clear numbers, and revenue figures reconciled against what actually settles.

Your own workspace

Traffic, menu funnel, charge success, revenue and uptime for your service only, plus a simulator and your own team.

Telco services

Three channels. One integration.

Use one service or all three. Each runs on the same workspace, connectors and portal.

USSD

Menus on a short code

Interactive sessions on any handset, with no data needed. We can host the menu, or relay each step to your backend.

*000*12#
SMS

Two-way messaging

Keywords, alerts, OTPs and subscription messages, with a delivery report for every send.

PLAY → 0000
Carrier billing

Charge to airtime

Let customers pay from your website or app with their mobile balance. Telco consent flows and callbacks are handled for you.

POST /v1/charges
Onboarding

From first call to live, in six steps.

Access is by invitation. We set your workspace up on our side, and you never touch the telco machinery.

01You

Request access

Tell us what you want to launch and on which networks. There's no self sign-up: every workspace starts with a conversation.

02Together

Agree terms

We review the fit and agree commercial terms with you. Nothing technical starts until this is done.

03Koridor

We set up your workspace

Your services, products, prices and connector go into config from our admin portal. Your credentials go into our secrets store.

workspace: acme-promo
04You

Your team gets access

Your owner account gets a one-time link to set a password, then invites your own admins. Every account belongs to one workspace.

05You

Test in sandbox

Run real session and charge flows with the simulator in your workspace. Sandbox never charges a subscriber.

mode: sandbox
06Koridor

UAT, then live

Your sandbox runs produce a UAT report. Once it's signed off, Koridor switches your service live and the workspace starts counting.

mode: live

Setup to UAT can take a day once terms are agreed. Telco approval times vary by network.

Under the hood

Every session, charge and callback, recorded.

An example of the events a tenant's service produces. Hover to pause.

ussd.session.started200
{
  "tenant": "acme-promo",
  "msisdn": "234803100****",
  "code": "*000*10#",
  "mode": "hosted",
  "at": "2026-10-28T14:10:00Z"
}
charge.failedFAIL
{
  "tenant": "lotto-ng",
  "product": "WEEKLY",
  "amount_ngn": 500,
  "result": "insufficient_balance",
  "at": "2026-10-28T14:17:01Z"
}
sms.delivered200
{
  "tenant": "quizbox",
  "msisdn": "234803101****",
  "dlr": "DELIVERED",
  "latency_ms": 1074,
  "at": "2026-10-28T14:24:02Z"
}
billing.charge.succeededOK
{
  "tenant": "naija-rewards",
  "source": "web",
  "msisdn": "234803102****",
  "amount_ngn": 200,
  "consent": "otp_confirmed",
  "at": "2026-10-28T14:31:03Z"
}
settlement.reconciledOK
{
  "tenant": "fanzone",
  "period": "2026-10-05",
  "recorded_ngn": 372844,
  "settled_ngn": 372844,
  "variance": 0
}
ussd.session.started200
{
  "tenant": "acme-promo",
  "msisdn": "234803103****",
  "code": "*000*15#",
  "mode": "relay",
  "at": "2026-10-28T14:45:05Z"
}
sms.delivered200
{
  "tenant": "quizbox",
  "msisdn": "234803105****",
  "dlr": "DELIVERED",
  "latency_ms": 1759,
  "at": "2026-10-28T14:59:07Z"
}
billing.charge.succeededOK
{
  "tenant": "naija-rewards",
  "source": "app",
  "msisdn": "234803106****",
  "amount_ngn": 300,
  "consent": "otp_confirmed",
  "at": "2026-10-28T14:16:08Z"
}
settlement.reconciledOK
{
  "tenant": "fanzone",
  "period": "2026-10-10",
  "recorded_ngn": 613899,
  "settled_ngn": 613899,
  "variance": 0
}
ussd.session.started200
{
  "tenant": "acme-promo",
  "msisdn": "234803107****",
  "code": "*000*20#",
  "mode": "hosted",
  "at": "2026-10-28T14:30:00Z"
}
charge.failedFAIL
{
  "tenant": "lotto-ng",
  "product": "ENTRY",
  "amount_ngn": 50,
  "result": "insufficient_balance",
  "at": "2026-10-28T14:37:01Z"
}
sms.delivered200
{
  "tenant": "quizbox",
  "msisdn": "234803109****",
  "dlr": "DELIVERED",
  "latency_ms": 1044,
  "at": "2026-10-28T14:44:02Z"
}
settlement.reconciledOK
{
  "tenant": "fanzone",
  "period": "2026-10-15",
  "recorded_ngn": 854954,
  "settled_ngn": 854954,
  "variance": 0
}
ussd.session.started200
{
  "tenant": "acme-promo",
  "msisdn": "234803111****",
  "code": "*000*25#",
  "mode": "relay",
  "at": "2026-10-28T14:15:05Z"
}
charge.failedFAIL
{
  "tenant": "lotto-ng",
  "product": "WEEKLY",
  "amount_ngn": 500,
  "result": "insufficient_balance",
  "at": "2026-10-28T14:22:06Z"
}
sms.delivered200
{
  "tenant": "quizbox",
  "msisdn": "234803113****",
  "dlr": "DELIVERED",
  "latency_ms": 1729,
  "at": "2026-10-28T14:29:07Z"
}
billing.charge.succeededOK
{
  "tenant": "naija-rewards",
  "source": "app",
  "msisdn": "234803114****",
  "amount_ngn": 200,
  "consent": "otp_confirmed",
  "at": "2026-10-28T14:36:08Z"
}
settlement.reconciledOK
{
  "tenant": "fanzone",
  "period": "2026-10-20",
  "recorded_ngn": 196009,
  "settled_ngn": 196009,
  "variance": 0
}
Client workspace

Numbers you can take to finance.

Each client sees their own traffic, funnel, charge success, revenue and uptime. Recorded revenue is reconciled against settlement, so the two figures agree.

acme-promo · all services · live
Sessions132,870USSD, SMS and web
Charge success79.5%of charge attempts
Revenue₦5,848,937recorded
Uptime99.70%service availability

Conversion funnel

Sessions
132,870100%
Engaged
108,95382%
Product chosen
61,12046%
Charge attempted
51,81939%
Charged
41,19031%

Reconciliation

Recorded by Koridor₦5,848,937
Confirmed at settlement₦5,848,937
Difference₦0
Reconciled
30 days agotoday

Sample data for a fictional tenant, shown to illustrate the client workspace.

Integration

We run the service, or plug into yours.

Pick the mode that fits your team. Both run on the same platform, workspace and connectors.

Hosted

Koridor runs it

USSD menus, SMS keywords and payment pages live in config. There's nothing for you to host.

Subscriber→Network→Koridor
  • Change menus, messages and prices without a deploy
  • Charging and subscriptions handled for you
Fits: brand promos, campaigns, new products
API

Your product calls Koridor

We relay USSD and SMS traffic to your backend, and your website or app calls our charging API to bill airtime.

Your site / app→Koridor→Network
  • Keep your existing logic, checkout and data
  • One integration for every network
Fits: gaming, content sites, fintech, existing platforms
Why it compounds

Built once. Shared by every tenant.

Each new aggregator connector becomes available to every client, and each problem we solve stays solved. An agency rebuilds for every project. Koridor builds once and adds tenants, so every launch is faster than the last.

Agency: work per clientKoridor: work per client
Get started

Have a mobile product in mind?

Tell us what you want to launch. We'll tell you which networks, how long it takes and what we need from you.

Request access

Questions first? hello@koridor.com