Selling
Connecting Monnify
Take bank transfers, cards and USSD through your own Monnify merchant account.
Monnify is a Nigerian payment gateway. It takes bank transfers, cards, USSD and phone-number payments, and it is particularly good at the first of those — a customer paying by transfer gets a bank account number generated for that one order, so the payment matches itself without anybody reading a reference off a screenshot.
It is your account, not ours
You open the Monnify account. You supply the keys. Money settles into your Monnify wallet and is paid out to your bank account on your own settlement schedule. WeSelling never holds it and never sees it.
The same applies to what it costs. Monnify's transaction fees are charged to you under whatever agreement you have with them — we do not add a margin, and we cannot change or discount their pricing. If you want a better rate, that is a conversation with Monnify.
Opening a Monnify account
Sign up at monnify.com
You register as a business. Have your CAC registration and a bank account in the business's name ready — Monnify verifies both before it will let you go live.
Complete verification
Until this is done you can use test keys and nothing else. That is fine — set the whole thing up and test it while verification is in progress.
Add your settlement account
The bank account Monnify pays your money out to. This is between you and Monnify; WeSelling never sees it.
Where to find the three credentials
In the Monnify dashboard, open Settings → API Keys & Webhooks. You need three things:
| What | Looks like | What it is for |
|---|---|---|
| API key | MK_TEST_… or MK_PROD_… | Identifies your account |
| Secret key | A long random string | Signs your requests and your webhooks |
| Contract code | A number | Which of your contracts to bill against |
Test keys first
Monnify gives you two sets of keys and two separate environments. Test keys move no money; live keys move real money.
They are not interchangeable, and this is the single most common thing to get wrong: a live key sent to the test environment is rejected as though it were invalid. If you are certain your keys are right and Monnify says they are not, check this setting before you check anything else.
Connecting it here
Open Settings → Integrations
Settings → Integrations, then scroll to the Monnify card.
Paste the API key, secret key and contract code
All three. Monnify cannot start a transaction without the contract code, so two out of three leaves it not working.
Choose Test or Live
Match the keys you pasted.
Save
Press Test connection
This signs in to Monnify with the keys you just saved. It takes no payment and moves no money — it only proves the three credentials work together. Save before testing: it checks what is stored, not what is on screen.
The webhook — do not skip this
In the Monnify dashboard, on that same API Keys & Webhooks page, add this address as your webhook URL:
https://<your-shop-address>/api/webhooks/monnifySo a shop at kafadona.weselling.store uses https://kafadona.weselling.store/api/webhooks/monnify. If you are on your own domain, use that instead.
This is what confirms a payment when the customer does not come back — they paid by transfer from their banking app and never returned to the browser tab, or their signal dropped on the way. Monnify tells us directly, and the order is confirmed regardless.
How a Monnify payment is confirmed
Never by the customer's browser. Coming back to the shop after paying only proves a browser followed a redirect — that page can be reloaded, shared, or reached by pressing Back. Marking orders paid on that basis is how shops give goods away.
What actually happens:
| Step | What it proves |
|---|---|
| The customer returns, or Monnify's webhook fires | Something happened worth checking |
| We ask Monnify directly about that transaction | Whether it was paid, and how much |
| The amount is checked against what was owed | That the order was paid in full |
| One confirmed payment is written against the sale | The order is paid |
Going live
Finish Monnify's verification
Live keys are not issued until it is done.
Copy the live API key, secret key and contract code
Paste them here and switch Environment to Live
Save, then press Test connection again
Check the webhook
Monnify keeps separate webhook settings for test and live. Setting one does not set the other, and a live shop with only the test webhook configured is the exact failure this page warns about above.
When something is wrong
| What you see | What it usually is |
|---|---|
| Monnify does not appear at checkout | One of the three credentials is blank. All three are required. |
| “Refused these credentials” | Live keys on Test, or test keys on Live. Check Environment first. |
| Payments taken but orders stay unpaid | The webhook is not set, or is set on the other environment. |
| “Monnify status: PARTIALLY_PAID” | The customer transferred less than the total. The order stays unpaid on purpose. |
What we have not built
Monnify also offers payouts, reserved accounts, wallets and verification services. None of them are connected here. This integration collects payment for orders and nothing else — if you use those products, you use them in Monnify's own dashboard.