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.
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.
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.
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:The client paid less than asked
The client paid less than asked
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 client paid more than asked
The client paid more than asked
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.
Monnify rejected the transfer
Monnify rejected the transfer
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.
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.Subscriptions can't auto-charge a saved card yet
Subscriptions can't auto-charge a saved card yet
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).
Naira, with USD on card only
Naira, with USD on card only
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.
The smallest pay link is ₦20
The smallest pay link is ₦20
Monnify won’t open a checkout for less than ₦20, so DMLY refuses a smaller link rather than sending
one that fails.
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.

