Skip to main content
Monnify is Moniepoint’s payment gateway for Nigerian businesses. A pay link opens Monnify’s own hosted checkout, where your client pays by card or by transferring to a one-time account number, and Monnify tells DMLY the money arrived. You share that link on WhatsApp like any other pay link. Monnify sits beside Paystack rather than replacing it. The main reasons to choose it: your money settles the same day (at 10 PM, with free express settlement), you may already bank with Moniepoint, and it gives you a second way to take payments if your Paystack account is still being activated. This page covers what’s specific to Monnify. The general rules (how pay links are minted, what each payment status means, what a missed webhook looks like) are the same for every gateway and live in Connect a payment gateway.

Connect it

Monnify is a tile under Configurations → Integrations → Payments. There’s no “sign in with Monnify” button: you copy three values out of your Monnify dashboard and paste them in.
1

Copy your keys and contract code

In your Monnify dashboard, open Developers → API Keys and copy your API key, secret key and contract code. The tile’s own setup steps point to the same page.There is no environment dropdown in DMLY. The API key’s prefix decides whether you are taking real money: MK_PROD_ is live and MK_TEST_ is test. Check it before you paste.
2

Paste them into the tile

Open the Monnify tile, paste all three into their fields and click Connect. DMLY signs in to Monnify with your API key and secret key straight away, so a typo in either fails now rather than at the first real payment. The contract code must be filled in, but Monnify only checks it when the first pay link is made, so copy it carefully. The webhook URL appears on the tile once you’re connected.
3

Add the webhook in Monnify

DMLY does not register the webhook for you. In Monnify, go to Developers → Webhook URLs and paste the URL from the tile into both Transaction Completion and Refund Completion.There is no separate webhook secret to copy back. Monnify signs its notifications with the secret key you already pasted.
4

Take one real payment end to end

Send yourself a small invoice, pay it, and confirm it flips to Paid on its own. If it doesn’t, the webhook isn’t reaching DMLY; fix that before a client pays.
Use your live keys in DMLY. Monnify does not sign the webhooks it sends from test mode, and DMLY refuses any webhook it cannot verify. With test keys a client can reach the checkout, but the payment will never be confirmed here. Test a live payment for a small amount instead.

Card or bank transfer

A Monnify pay link offers every method your Monnify account has switched on. In a payment step, set Payment method to Bank transfer only and the checkout opens on a one-time account number, as it does on Paystack. Card only restricts it to card. Let the customer choose works with Monnify too, and asks Card or Bank transfer even when Monnify is your only gateway, because the two answers really are different: a card page, or an account number right there in the chat (below). If you have also saved your own bank account under Finance → Settings → Gateways, Bank transfer sends that instead, because it has no fee. See Collect bank transfers in chat. If you have both Monnify and Paystack connected, the Default payment gateway under Finance → Settings → Gateways decides which one booking deposits, invoice pay links and any payment step without its own Gateway use.

Account number in the chat

This is the reason to pick Monnify for transfers. Set a payment step’s Payment method to Account number in chat (automatic) and the client gets the account number as the message itself: no link to tap, no page to load, nothing to copy out of a browser.
1

Monnify issues an account for this payment

A fresh account number for this exact amount, used for nothing else. DMLY gives Monnify your business name (your workspace name) as the account name, so the client can see who they are paying before they send anything. The client is never asked for their BVN or any other detail.
2

The number goes into the chat

Bank, account number (on a line of its own, so a long-press copies just the number), account name, and the exact amount. The account stays open for 24 hours.
3

The payment confirms itself

When the money arrives Monnify tells DMLY, the payment is marked Paid (and so is the invoice, if the step was paying one), and the client gets their receipt. There is no I’ve paid button and nobody on your team has to check a bank app.
If the step is retried in the same flow run, the client gets the same account again rather than a second one, as long as it has more than an hour left. A new run of the flow issues a new account.
When the client hasn’t messaged you in the last 24 hours, WhatsApp won’t let DMLY send the details in its own words. The client gets your approved dmly_payment_request template instead (unless the step names a template of its own), with a link to Monnify’s page for the same account. Install it from Templates → System → Available to install if you don’t have it.
The option only appears in the payment step when the chosen gateway (or your default gateway) is Monnify. Paystack’s Bank transfer only option is the nearest equivalent there: the same kind of account, but behind a link.

When the amount doesn’t match

Paystack refuses a bank transfer for the wrong amount and sends it back. Monnify can keep money that doesn’t match, so DMLY handles each case deliberately:
DMLY does not mark the payment as paid. A booking isn’t confirmed and the client isn’t sent a receipt for money that isn’t all there. Your team gets a Part payment received alert, and the details are in Reports → Logs. Talk to the client, then either record the payment yourself under Finance → Payments or refund it from your Monnify dashboard.
The payment is marked paid at the amount that actually arrived, and your team gets a Customer overpaid alert, because the client is owed the difference.
Nothing changes on the payment. Monnify is returning the money to the client, and your team gets a Transfer rejected alert so you can send a fresh link.
These alerts are the Payment needs review event on the In-app alerts tab of notification settings. It is on by default, and an admin can turn it off.

Refunds

The Refund button works for payments made by bank transfer. Monnify doesn’t refund card payments through its API, so for a card payment DMLY says so and doesn’t record anything; refund it in your Monnify dashboard and then record the refund in DMLY. The smallest refund Monnify accepts is ₦100. If Monnify refuses the refund request, nothing changes in DMLY and you see Monnify’s reason. If it accepts the request, DMLY marks the payment Refunded straight away, while Monnify finishes the refund in the background. Should Monnify later report that the refund failed, your team gets a Refund failed alert and the reason is in Reports → Logs. The payment still reads Refunded in DMLY at that point, so follow it up with Monnify: the client has not been paid back.

Current limitations

These are known behaviours of the Monnify integration today, not faults to report.
Saved-card charging on Monnify needs Monnify to switch it on for your account, and DMLY doesn’t use it yet. A subscription on Monnify is collected with a pay link each cycle. Use another gateway for automatic renewals (see Subscriptions).
Monnify collects NGN. USD is available on card payments only, and only for merchants Monnify has enabled for international collection. DMLY passes the currency straight to Monnify, so a pay link in a currency your Monnify account can’t take fails when it is made.

Payments and gateways

Pay links, payment statuses and what a failed webhook means.

Collect bank transfers in chat

Transfer-only links, your own account details, and letting the client choose.