Orchestration
When a connection goes down, your payments keep going.
Connect several providers to the same mobile money operator. For each payment, Wajub picks the connection by your priorities, your rules and the health of each one, and goes through another if it fails.
Included in every plan. You never name a provider in a payment.
Routing
For every payment, the right connection.
You create a payment without naming a provider. Wajub keeps the connections able to carry it and ranks them by your priorities, your rules and their current health. Every decision can be reviewed in Konsole.
Your priorities
In the Dashboard, you choose which connections to favour.
Your rules
Country, operator, currency, amount range: a rule sends these payments to the connection you choose, with a fallback.
Their live health
Recent success counts. A connection that fails repeatedly is set aside until it works again.
Failover
One provider down, another takes the payment.
If the chosen connection fails during a mobile money payment, another of your connections takes over. Your customer sees nothing and you get a single result.
Set aside
A connection that fails repeatedly is set aside, then takes its place back as soon as it works again.
Each operator on its own
An outage on MTN does not set the same connection aside on Orange.
What happened
2 attemptsPayment created14:02:10
MTN MoMo, FCFA 25,000

CinetPay14:02:11
Unreachable: the request moves to the next connection

Flutterwave14:02:11
Request accepted
Prompt sent14:02:12
To the customer's phone
Payment succeeded14:02:31
Confirmed by the customer
What never fails over, on purpose
A request already received
If the provider has already received the request, the payment waits for its answer. Sending it elsewhere could charge the customer twice.
A customer refusal
Insufficient balance, PIN rejected, prompt ignored: the payment stops. Your customer never gets two prompts for the same purchase.
A card
A card is never retried with another provider: it stays with the one where it was entered. Failover is for mobile money.
Coverage
Several routes to every operator.
An operator can be reached through several providers. Connect two or more on the same channel and none of them carries your collections alone. You keep your contracts and your rates.
Every route, country by countryProviders that reach MTN MoMo
Wajub, Campay, CinetPay, Fapshi, Flutterwave, InTouch, Maviance, Monetbil, MTN MoMo API, MyCoolPay, Neero, Nokash, Notch Pay, pawaPay, Taramoney.
The Wajub rail does not count toward the number of connections in your plan.
Routing rules
Your rules, without a line of code.
A rule says where to send certain payments: by country, operator, currency or amount range. It names a connection and, if you want, a fallback.
- Conditions: country, operator, currency, amount range
- Route to a connection, with a fallback
- Reorder your rules by drag and drop
- Preview the impact before saving
Before you save, the preview shows how many payments from the last 7 days would have changed route, and where they were going.
Read the docs(opens in a new tab)Routing rules
Rule order
MTN Cameroon
- Route to
CinetPay- Fallback
Flutterwave
Conditions
CM
cm.mtnXAF10,000 - 500,000
412 matches in 30 days96% success
7-day impact preview
Computing over the last 7 days
318 of 2,940 transactions affected
- from
Flutterwave to
CinetPay241 - from
pawaPay to
CinetPay77
- Orange Côte d'IvoireRoute to
pawaPay - Wave SenegalRoute to
CinetPay
Monitoring
Every decision on the record.
The Dashboard tells you whether your routes are healthy and how much orchestration has saved. Every payment keeps its routing decision, to review in Konsole.
Set aside
Operator or provider
The matrix crosses operators and connections, live. A whole red row: the operator is down. A single cell: it is the provider.
MTN MoMo Cameroon: Provider issue
An alert before your customers notice
Success rate, errors, volume: you set the threshold, the alert goes out by email, Slack or to your URL.
Triggered: 76% over 15 minutes
Protected value
Payments picked up by another route after an outage, and their amount, over 7, 30 or 90 days.
Recovered transactions: 1,284
Every payment's log
In Konsole, the routing decision and its attempts, payment by payment.
14:08:30, Flutterwave: Accepted
Developers
One payment, no provider name.
You send the operator and the phone number. Wajub picks the route, fails over if needed and returns a single result, in the response and then by webhook.
No provider in the request
Adding or removing a connection does not change your code.
channelNo double charge
The same key charges only once. Sent again with a different body, it is rejected.
Idempotency-Key422Routing in production
The sandbox simulates one provider. Routing across your connections is checked live, on small amounts.
sandboxYour connections keep you posted
A webhook fires when a connection or one of its channels is turned on or off.
provider.activatedprovider.channel_deactivated
RequestPOST /payments/{id}
Idempotency-Key: charge-order-4172-1{"channel": "cm.mtn","data": { "phone": "+237670000000" }}
Response202 Accepted
{"code": 202,"status": "Accepted","message": "Confirm the transaction on your phone.","transaction": {"id": "trx_4Rm8Qx2LkV7nTc9WbZp3","reference": "order-4172","amount": 25000,"currency": "XAF","status": "processing","channel": "cm.mtn"}}
Plans
Orchestration is in every plan.
What changes from one plan to the next: the number of connections and routing rules. The Wajub rail comes on top and does not count.
| Pay as you go | Growth | Scale | Enterprise | |
|---|---|---|---|---|
| Connections | 2 | 6 | Unlimited | Unlimited |
| Ranking, failover, failing connections set aside | Included | Included | Included | Included |
| Routing rules | Not included | Included | Included | Included |
Frequently asked questions
Another question? Talk to the team
- What is payment orchestration?
- It is a layer between your application and your payment providers. You no longer call a provider: you create a payment, and Wajub decides which connection carries it, in what order to try the others, and when to stop. Every decision is recorded.
- How many providers can I connect?
- As many as your plan allows: 2 on Pay as you go, 6 on Growth, no limit on Scale and Enterprise. The Wajub rail does not count toward that number. The providers you can connect are listed on the Payment methods page; every connection uses your own credentials, except the Wajub rail.
- What happens if the customer does not confirm on their phone?
- As soon as the operator has sent the confirmation prompt, the payment counts as accepted by that connection. If the customer does not approve, the payment fails without calling another connection: your customer never gets two prompts for the same purchase.
- Does failover protect against an operator outage?
- It protects against a provider outage: if one of them is down, your mobile money payments go through another of your connections to the same operator, if you have connected more than one. If the operator itself is down, every route to it is affected; every attempt remains visible in the routing log.
- Can I test routing in sandbox?
- The sandbox validates your integration against a simulated provider. Routing across your connections runs in production: check it on small amounts, every decision shows up in the routing log.
- Where can I see which connection carried a payment?
- In the Konsole routing log, payment by payment. Rules and priorities are managed in the Dashboard.
Add a second connection to your main operator.
That is all a payment needs to have a backup route. The rest is set in the Dashboard, without touching your code.