Konsole
See everything your integration does.
A stuck payment nobody can explain costs a day of development. Konsole brings together every API call, every event, every webhook delivery and every routing decision, so you go from symptom to cause in a few clicks.
Konsole
- Overview
- API logs
- Webhooks
- Routing logs
Your API
ProductionIn the last 24 hours you handled 12,480 API requests (+8% on the day before). 14 returned an error. 3 webhook deliveries failed.
- Requests
- 12,480
- Errors
- 14
- Error rate
- 0.11%
- P95 latency
- 182 ms
- Failed webhooks
- 3 / 1,204
Requests and errors
Diagnostics
13 webhook deliveries failed in the last hour
The endpoint https://api.nkolo.cm/webhooks/wajub is rejecting our deliveries. Retries are scheduled.
- Endpoint enabled
- URL well-formed
- Signing secret configured
- Endpoint reachableHEAD https://api.nkolo.cm/webhooks/wajub returned 500.
- Recent failure rate3 failed deliveries in the last hour.
- 1 test failed: fix the items above before retrying.
Routing log
Which connection took this payment, and why?
For every production payment, Konsole keeps Wajub's decision: the connections set aside, the ranking of the ones left, then each attempt up to the result.
Connections set aside
A connection that fails repeatedly is set aside, then takes its place back as soon as it works again. The log names it, so you know why it was not tried.
How the candidates rank
Every eligible connection, with its rank. A badge shows what weighed in: one of your rules or the connection's recent health.
Every attempt
The connection tried, the time and the result. If it fails during a mobile money payment, the next attempt goes to the next connection.
Routing decision
How the orchestrator selected a provider for this payment.
trx_7Kq2mWv9XcR4tLp8BnZd
Orange Money, FCFA 15,000
- Channel
- Orange Money
- Selected
- Campay

MavianceSet aside after failures
1Campay
Rule#1Oct 6, 14:32:07Unreachable
2Notch Pay
Recent health#2Oct 6, 14:32:09
3pawaPay
Filter the payments that failed over, the ones that set a connection aside, or the ones with no eligible connection.
Production only: in sandbox, a simulated provider answers every payment, with no routing across connections.
The routing log(opens in a new tab)Webhooks
What your endpoint received, and its answer.
Konsole follows every event on your account all the way to your server: the delivery, the code returned, the duration. A missed delivery can be resent in one click.
- Failed500payment.succeeded14:18
- Succeeded200payment.succeeded14:19
- Succeeded200payment.succeeded14:20
- Succeeded200payment.processing14:21
- Failed500payment.succeeded14:22
- Succeeded200payment.succeeded14:23
- Succeeded200payment.succeeded14:24
- Succeeded200payment.processing14:25
- Failed500payment.succeeded14:26
- Succeeded200payment.succeeded14:27
- Succeeded200payment.succeeded14:28
- Succeeded200payment.processing14:29
- Failed500payment.succeeded14:30
- Succeeded200payment.succeeded14:31
- Succeeded200payment.succeeded14:32
Delivery details
- Endpoint
- https://api.nkolo.cm/webhooks/wajub
- Event type
- payment.succeeded
- Event ID
- evt_3Fh8KqN2vXc7RmT9pLw4Bz6Y
Events
The stream of your account's events, each with its deliveries.
payment.succeededpayment.processingpayment.failedDeliveries
The status, the code your endpoint returned, the duration and the attempt number. Resend one delivery, or retry up to 100 failed deliveries at once. Automatic retries run for 72 hours.
Endpoints
The events to receive, a test send, the success rate and the average response time. The signing secret is shown once you enter your password.
Locally
The CLI forwards signed events to your machine, and the session shows up in Konsole.
wajub listen
API logs
What did you send, and what came back?
Every call to the Wajub API, with the full request and response. When a call fails, the error message shows at the top of the details.
- Method, path, status and duration: green under 200 ms, amber under 500 ms, red above.
- The body and headers of the request and the response.
- The request ID, the idempotency key, the API version and the API key used.
- Filters by period, status, method and response time, and export to CSV or JSON.
Today
- 200 OKGET/payments/trx_7Kq2mWv9XcR4tLp8BnZd14:18
- 422 ERRORPOST/payments14:19
- 200 OKPOST/payments/trx_2Vb6NcQ8wLx3KpR7tHm514:20
- 200 OKGET/payments/trx_2Vb6NcQ8wLx3KpR7tHm514:21
- 201 OKPOST/payments14:22
- 200 OKGET/payments/trx_7Kq2mWv9XcR4tLp8BnZd14:23
- 422 ERRORPOST/payments14:24
- 200 OKPOST/payments/trx_2Vb6NcQ8wLx3KpR7tHm514:25
- 200 OKGET/payments/trx_2Vb6NcQ8wLx3KpR7tHm514:26
- 201 OKPOST/payments14:27
- 200 OKGET/payments/trx_7Kq2mWv9XcR4tLp8BnZd14:28
- 422 ERRORPOST/payments14:29
- 200 OKPOST/payments/trx_2Vb6NcQ8wLx3KpR7tHm514:30
- 200 OKGET/payments/trx_2Vb6NcQ8wLx3KpR7tHm514:31
- 201 OKPOST/payments14:32
/paymentsCopy as cURLError analysis
The currency field must be 3 characters.
Request
{"amount": 15000,"currency": "FCFA","phone": "+237670000000","reference": "order-4172"}
Response
{"code": 422,"status": "Unprocessable Content","message": "The currency field must be 3 characters.","errors": { ... }}
- Idempotency key
- ORDER-4172
- API version
- 2026-09-01
- X-Request-ID
- 9f1c0f2a-3f5e-4f1b-9a1e-2c8d6b0e7a41
- API key used
- sk_live_...
Diagnosis
From symptom to cause, without guessing.
Each common problem has its own view. No more digging through your own logs or opening a ticket to understand what happened.
Is something wrong right now?
Alerts computed from your traffic, and the state of each endpoint: healthy, struggling below 80% success, or disabled. For a first call, snippets in cURL, Node.js, PHP and Python.
Overview
A call returns an error you can't make sense of
The request sent, the response received and the error message.
API logs
A payment stays pending
Was the payment picked up, or did it fail? The events tell you.
Events
payment.processingpayment.failedYour server received nothing
The code your endpoint returned, or the missing delivery.
Webhooks
A payment went through the wrong connection
The candidates, their ranking, and why a connection was set aside or failed.
Routing log
Environments and team
Sandbox and production, never mixed.
- One environment at a time: your sandbox tests never mix with your production logs, which are kept in separate databases.
- Two levels of access: view Konsole, or manage webhooks (resend, export, edit endpoints). The account owner has full access.
- Webhook replays on every plan, with no monthly allowance; exports included depending on your plan.
Frequently asked questions
Another question? Talk to the team
- Can I test webhooks locally?
- Yes. wajub listen forwards your account's real events to a local URL, signed as in production, with no tunnel to set up.
- Are sandbox and production mixed in Konsole?
- No. Konsole shows one environment at a time: your sandbox tests never clutter your production logs.
- Where is the routing log?
- In Konsole, for every production payment. In sandbox, payments are resolved by a simulated provider, with no routing across connections.
- Are exports and webhook replays unlimited?
- Webhook replays are not counted on any plan: the same event can be resent to the same endpoint once every 5 minutes. Exports are unlimited from Growth, and the Pay as you go plan includes 10 per month. Details are on the Pricing page.
Review your first payment.
Create an account, make a call in sandbox and open Konsole: everything is already there.