Nigeria
Learn about the dLocal supported payment methods in Nigeria.
Market specifications
Take a look of all the payment methods available.
Country reference Cards supported APM supportedCards
Find all the information about the card supported capabilities.
Brands Capabilities Process Card PaymentsAlternative Payments
Learn how to integrate cash, bank transfer or wallet payment.
OPay Wallet Paga Wallet Bank Transfer Bank Transfer (Direct Debit)Market specifications
Do you want to know more information about Nigeria's market? Go to the Nigeria’s economy and eCommerce market article.
Demerge Nigeria Limited is a limited company incorporated in Nigeria and licensed by the Central Bank of Nigeria as a Payment Solution Service Provider.
Country reference
country code | currency code | amount decimals | document name | document format | document required? |
|---|---|---|---|---|---|
NG | NGN | 2 | NIN | 11 digits | Yes |
Cards supported
payment_method_id | Brand ID | Name | payment_method_type | Details | Allowed Flows | Logo |
|---|---|---|---|---|---|---|
CARD | VI | Visa | CARD | Credit Card | DIRECT REDIRECT | |
CARD | VD | Visa Debit | CARD | Debit Card | DIRECT REDIRECT | |
CARD | MC | Mastercard | CARD | Credit Card | DIRECT REDIRECT | |
CARD | MD | Mastercard Debit | CARD | Debit Card | DIRECT REDIRECT | |
CARD | VE | Verve* | CARD | Debit Card | DIRECT REDIRECT |
* The card length of Verve can be 16, 18, or 19 digits.
To offer all the card options that may be available in your integration, send the
payment_method_idasCARD.
Alternative Payment Method supported
payment_method_id | Name | payment_method_type | Details | Allowed Flows | Logo |
|---|---|---|---|---|---|
OW | Opay Wallet | WALLET | Wallet | REDIRECT | ![]() |
GW | Paga Wallet | WALLET | Wallet | REDIRECT | ![]() |
IO | Bank Transfer | BANK_TRANSFER | Bank Transfer | DIRECTREDIRECT | ![]() |
NG | Bank Transfer (Direct Debit) | BANK_TRANSFER | Bank Transfer | REDIRECT | ![]() |
Cards
Brands
Visa and Mastercard
Credit cards are used among affluent Nigerians to make cross- border purchases for products they cannot get locally, but their use is negligible in the local market. Debit cards are massively more available than credit cards to the population overall.
Verve
It is mainly a local card, but also centralizes a set of payment channels under the same brand. Users can pay bills and subscriptions at ATMs, instore, via mobile phone, online, or at a kiosk, make money transfers to and from friends and family, use the mobile-based e-wallet and make cardless ATM withdrawals or payments at physical locations.
Capabilities
| Visa Credit | Master Credit | Visa Debit | Master Debit | Verve | |
|---|---|---|---|---|---|
| Minimum amount | 51 NGN | 51 NGN | 51 NGN | 51 NGN | 51 NGN |
| Refunds | Yes | Yes | Yes | Yes | Yes |
| Recurring | Yes | Yes | Yes | Yes | Yes |
| Chargeback option | Yes | Yes | Yes | Yes | Yes |
| Chargeback Dispute option | Yes | Yes | Yes | Yes | Yes |
| Descriptor | Can be personalized, depending on provider. | Can be personalized, depending on provider. | Can be personalized, depending on provider. | Can be personalized, depending on provider. | Can be personalized, depending on provider. |
How to process Card Payments?
Learn how to process payments with credit and debit cards with dLocal on our Card Payments section.
Alternative Payment Method
OPay Wallet
OPay Wallet is a one-stop mobile-based platform for bill payments, loans, savings, and other essential financial services.
Licensed by the CBN and insured by NDIC, Opay has established a mechanism in place to ensure customers' funds are secure.
Capabilities
| OPay Wallet | |
|---|---|
| Min. amount | 51 NGN |
| Max. expiration time supported | 24 hours |
| Notification delay | Immediate |
| Refunds | Yes |
| Flow | REDIRECT |
UX Flow
Request Parameters
| Property | Type | Description | Mandatory? |
|---|---|---|---|
amount | Number | Amount to be charged. | Yes |
currency | String | Transaction currency in ISO 4217. | Yes |
country | String | NG Transaction country in ISO 3166. | Yes |
payment_method_id | String | OW ID of the selected payment method. | For OPay Wallet, yes. |
payment_method_flow | String | REDIRECT | Yes |
payer.name | String | Name of the payer. | Yes |
payer.email | String | Email of the payer. | Yes |
payer.document | String | Document of the payer. | Yes |
order_id | String | ID of the capture given by the merchant in their system. Think of it as an external ID of the capture. | No |
notification_url | String | Notifications will be sent in every change of status of a payment to the notification_url specified by the merchant. | No |
Examples
{
"amount": 100,
"currency": "NGN",
"country": "NG",
"payment_method_id": "OW",
"payment_method_flow": "REDIRECT",
"payer": {
"name": "Jane Doe",
"email": "[email protected]",
"document": "12345678901",
"document_type": "CI",
"address": {
"country": "NG",
"state": "Imo",
"city": "Owerri",
"zip_code": "88058",
"street": "A street",
"number": "5940"
}
},
"order_id": "34545sk3483kqw0",
"description": "Tshirt",
"notification_url": "http://merchantsite.com/rest/generic/notification/new",
"callback_url": "http://merchantsite.com/success_page"
}
{
"id": "R-4-cf566191-19fe-4db8-a5bb-7330061ab4db",
"amount": 100,
"currency": "NGN",
"payment_method_id": "OW",
"payment_method_type": "BANK_TRANSFER",
"payment_method_flow": "REDIRECT",
"country": "NG",
"created_date": "2022-12-07T17:13:57.000+0000",
"status": "PENDING",
"status_detail": "The payment is pending.",
"status_code": "100",
"order_id": "98eadd84-f196-47d8-9144-452d735a2e7b",
"description": "Tshirt",
"notification_url": "http://merchant.com/rest/generic/notification/new",
"redirect_url": "https://pay.dlocal.com/gmf-apm/payments/M-97976112-f166-430f-97fd-146fb073ac45"
}
Paga Wallet
Paga Wallet is a leading Nigerian digital Transformation & E-Payments Platform. Its wallet has a feature that supports seamless recurring payments.
Paga offers a convenient and reliable way to pay bills and other services in multiple channels (online, mobile wallets, and cash).
Capabilities
| Paga Wallet | |
|---|---|
| Min. amount | 15000 NGN |
| Notification delay | Immediate |
| Refunds | Yes |
| Flow | REDIRECT |
UX Flow
Request Parameters
| Property | Type | Description | Mandatory? |
|---|---|---|---|
amount | Number | Amount to be charged. | Yes |
currency | String | Transaction currency in ISO 4217. | Yes |
country | String | NG Transaction country in ISO 3166. | Yes |
payment_method_id | String | GW ID of the selected payment method | For Paga Wallet, yes. |
payment_method_flow | String | REDIRECT | Yes |
payer.name | String | Name of the payer. | Yes |
payer.email | String | Email of the payer. | Yes |
payer.document | String | Document of the payer. | Yes |
wallet.name | String | Name of the payer's wallet. | No |
wallet.save | Boolean | Determines if you want to receive a wallet token for future payments or not. | No |
wallet.capture | Boolean | Determines if you want to capture the payment funds or not. | No |
wallet.username | String | Username of the payer's wallet account. | No |
wallet.email | String | Email of the payer's wallet account. | No |
order_id | String | ID of the capture given by the merchant in their system. Think of it as an external ID of the capture. | No |
notification_url | String | Notifications will be sent in every change of status of a payment to the notification_url specified by the merchant. | No |
Examples
{
"amount": 100,
"currency": "NGN",
"country": "NG",
"payment_method_id": "GW",
"payment_method_flow": "REDIRECT",
"payer": {
"name": "Jane Doe",
"email": "[email protected]",
"document": 12345678901,
"address": {
"country": "NG",
"state": "Imo",
"city": "Owerri",
"zip_code": "88058",
"street": "A street",
"number": "5940"
}
},
"wallet": {
"name": "Jane Doe",
"save": true,
"capture": true,
"verify": false,
"username": "Jane Doe",
"email": "[email protected]",
"expiration": 60,
"label": "label",
"state": "state"
},
"order_id": "345453483kqws0",
"description": "Tshirt",
"notification_url": "http://merchantsite.com/notification/new",
"callback_url": "http://merchantsite.com/success_page"
}
{
"id": "F-4-71569e6f-uj65-4ecd-b14e-983672935ba0",
"amount": 100,
"currency": "NGN",
"payment_method_id": "GW",
"payment_method_type": "WALLET",
"payment_method_flow": "REDIRECT",
"country": "NG",
"created_date": "2023-04-20T16:22:41.000+0000",
"status": "PENDING",
"status_detail": "The payment is pending.",
"status_code": "100",
"order_id": "345453483kqws0",
"description": "Tshirt",
"notification_url": "http://merchantsite.com/notification/new",
"redirect_url": "https://pay.dlocal.com/gmf-apm/payments-redirect/M-86893c39-990s-444c-ae50-a1ba3132d8e1"
}
Bank Transfer
Bank transfers in Nigeria allow a variety of solutions, such as Static Virtual Accounts (one account per merchant) and Dynamic Virtual Accounts (one account per transaction).
Capabilities
| Bank Transfer | |
|---|---|
| Min. Amount. | 51 NGN |
| Expiration | 1 or 7 days, depending on the provider. |
| Notification delay | Immediate |
| Refunds | Yes |
| Flow | DIRECT REDIRECT |
UX Flow

Example Bank Transfer UI
Request Parameters
| Property | Type | Description | Mandatory? |
|---|---|---|---|
amount | Number | Amount to be charged. | Yes |
currency | String | Transaction currency in ISO 4217. | Yes |
country | String | NG Transaction country in ISO 3166. | Yes |
payment_method_id | String | IO ID of the selected payment method | For Bank Transfer, yes. |
payment_method_flow | String | DIRECT or REDIRECT | Yes |
payer.name | String | Name of the payer. | Yes |
payer.email | String | Email of the payer. | Yes |
payer.document | String | Document of the payer. | Yes |
order_id | String | ID of the capture given by the merchant in their system. Think of it as an external ID of the capture. | No |
notification_url | String | Notifications will be sent in every change of status of a payment to the notification_url specified by the merchant. | No |
Examples
{
"amount": 15000,
"currency": "NGN",
"country": "NG",
"payment_method_id": "IO",
"payment_method_flow": "REDIRECT",
"payer": {
"name": "Jane Doe",
"email": "[email protected]",
"document": "12345678901",
"document_type": "CI",
"address": {
"country": "NG",
"state": "Imo",
"city": "Owerri",
"zip_code": "88058",
"street": "A street",
"number": "5940"
}
},
"order_id": "34545sk3483kqw0",
"description": "Tshirt",
"notification_url": "http://merchantsite.com/rest/generic/notification/new",
"callback_url": "http://merchantsite.com/success_page"
}
{
"id": "R-4-cf566191-19fe-4db8-a5bb-7330061ab4db",
"amount": 100,
"currency": "NGN",
"payment_method_id": "IO",
"payment_method_type": "BANK_TRANSFER",
"payment_method_flow": "REDIRECT",
"country": "NG",
"created_date": "2022-12-07T17:13:57.000+0000",
"status": "PENDING",
"status_detail": "The payment is pending.",
"status_code": "100",
"order_id": "98eadd84-f196-47d8-9144-452d735a2e7b",
"description": "Tshirt",
"notification_url": "http://merchant.com/rest/generic/notification/new",
"redirect_url": "https://pay.dlocal.com/gmf-apm/payments/M-97976045-f166-430f-97cc-146fb073ac85"
}
Bank Transfer (Direct Debit)
Bank Transfer (Direct Debit) is designed to support scheduled payments with weekly, monthly, semi-annual (six-month) or annual frequency. It also allows setting a fixed amount to be charged for each payment, based on the merchant’s specific use case.
Capabilities
| Bank Transfer (Direct Debit) | |
|---|---|
| Min. Amount. | 200 NGN |
| Maximum enrollment expiration time supported | 15 Minutes |
| Notification delay | Enrollment - 24 Hours Recurring Payment - Immediate |
| Enrollment Cancellation | Yes |
| Flow | Enrollment: REDIRECTRecurring Payment: DIRECT |
One-Time User Enrollment
This is the API request that is used to create the recurring payment mandate for Bank Transfer (Direct Debit). It takes 24 hours for the recurring payment made setup to be completed so the asynchronous response (webhook) will be sent after 24 hours notifying that the recurring payment mandate has been setup successfully.
Request Parameters
| Property | Type | Description | Mandatory? |
|---|---|---|---|
external_id | String | An identifier used by the merchant to identify the enrollment in their system. | Yes |
currency | String | NGN Transaction currency in ISO 4217 | Yes |
country | String | NG Transaction country in ISO 3166 | Yes |
type | String | MERCHANT_SUBSCRIPTION: For subscriptions with future recurring payments initiated by the merchant. | Yes |
description | String | Enrollment description. | No |
payment_method_id | String | NG | Yes |
payment_method_flow | String | REDIRECT | Yes |
payer.name | String | Name of the payer | Yes |
payer.email | String | Email of the payer | Yes |
payer.document | Number | BVN (Bank Verification Number) of the payer | Yes |
subscription.start_date | String (YYYY-MM-DD) | Subscription start date. The default is the current date. To be used only for subscriptions. | No |
subscription.end_date | String (YYYY-MM-DD) | Subscription expiration date. If not provided, the subscription will not expire. To be used only for subscriptions. | No |
subscription.frequency | String | Possible values supported: , MONTHLY, SEMI_ANNUAL or ANNUAL. | No |
subscription.amount.type | String | Possible values depending on the subscription:FIXED: For fixed amount subscription | Yes |
subscription.amount.value | Number (10,2) | Fixed subscription amount in local currency. Required only for fixed amount subscriptions depending on the payment method. | Conditional |
notification_url | String | Notifications will be sent in every change of status of a payment to the notification_url specified by the merchant. | Yes |
callback_url | String | The payer will be redirected to the merchant’s website after completing the payment via the callback_url specified by the merchant | Yes |
Examples
Sandbox URL: https://sandbox.dlocal.com//enrollments
Production URL: https://api.dlocal.com/enrollments
{
"external_id": "3a39633d-e6fc-4bc2-96d1-51613b13858a",
"currency": "NGN",
"country": "NG",
"type": "MERCHANT_SUBSCRIPTION",
"description": "Mono - Annual",
"payment_method_id": "NG",
"payment_method_flow": "REDIRECT",
"payer": {
"name": "Juan Alberto",
"document": "79531117993",
"documentType": "bvn",
"email": "[email protected]"
},
"subscription": {
"start_date": "2025-12-01",
"end_date": "2026-08-12",
"frequency": "MONTHLY",
"amount": {
"type": "FIXED",
"value": 250
}
},
"notification_url": "http://merchantsite.com/notifications",
"callback_url": "http://merchantsite.com/callback"
}
{
"id": "E-4-a6418560-42c0-44bb-9a6f-da77730bcb6b",
"external_id": "3a39633d-e6fc-4bc2-96d1-51613b13858a",
"description": "Mono - Annual",
"status": "PENDING",
"status_code": "100",
"status_details": "The enrollment is pending.",
"redirect_url": "https://pay.dlocal.com/gmf-apm/payments-redirect/N-ec90b256-c2b7-4cd4-af36-265499ae3ca9",
"payment_method_id": "NG",
"payment_method_flow": "REDIRECT",
"payment_method_type": "BANK_TRANSFER"
}
{
"id": "E-4-a6418560-42c0-44bb-9a6f-da77730bcb6b",
"external_id": "fwbExmQQ7",
"currency": "NGN",
"country": "NG",
"type": "Mono - Annual",
"payment_method_id": "NG",
"payment_method_flow": "REDIRECT",
"created_date": "2025-09-10 T20:37:20.000+0000",
"status": "ACTIVE",
"status_detail": "The enrollment is active.",
"status_code": "200",
"notification_url": "https://merchant.com/enrollment_notifications"
}
Recurring Payment
After the subscription is set up, a payment request must be sent within the enrollment period. Payments cannot be scheduled in advance; the merchant must send the request on the actual due date.
Request Parameters
| Property | Type | Description | Mandatory? |
|---|---|---|---|
external_id | String | An identifier used by the merchant to identify the enrollment in their system. | Yes |
currency | String | NGN Transaction currency in ISO 4217 | Yes |
country | String | NG Transaction country in ISO 3166 | Yes |
amount | String | Amount to be charged | Yes |
description | String | Enrollment description. | No |
payment_method_id | String | NG | Yes |
payment_method_flow | String | DIRECT | Yes |
payer.name | String | Name of the payer | Yes |
payer.email | String | Email of the payer | Yes |
enrollment.id | String | Enrollment id of the initial customer authorization | Yes |
notification_url | String | Notifications will be sent in every change of status of a payment to the notification_url specified by the merchant. | Yes |
Examples
Sandbox URL: https://sandbox.dlocal.com/payments
Production URL: https://api.dlocal.com/payments
{
"external_id": "1089e9de-0959-4ca7-bf0a-14da32d18451",
"amount": 250,
"currency": "NGN",
"country": "NG",
"payment_method_id": "NG",
"payment_method_flow": "DIRECT",
"payer": {
"name": "Juan Alberto",
"email": "[email protected]"
},
"enrollment": {
"id": "E-4-a6418560-42c0-44bb-9a6f-da77730bcb6b"
},
"order_id": "1089e9de-0959-4ca7-bf0a-14da32d18451",
"notification_url": "http://www.merchantsite.com/notifications"
}
{
"id": "D-4-x1kj5e7i-hh7ver365l35h6-bg7h5snqee44",
"amount": 250,
"currency": "NGN",
"payment_method_id": "NG",
"payment_method_type": "BANK_TRANSFER",
"payment_method_flow": "DIRECT",
"country": "NG",
"bank_transfer": {},
"ticket": {},
"created_date": "2025-12-05T10:50:26.000+0000",
"status": "PENDING",
"status_detail": "The payment is pending.",
"status_code": "100",
"order_id": "1089e9de-0959-4ca7-bf0a-14da32d18451",
"notification_url": "http://www.merchantsite.com/notifications"
}
{
"id": "E-4-a6418560-42c0-44bb-9a6f-da77730bcb6b",
"amount": 250,
"status": "PAID",
"status_detail": "The payment is paid",
"status_code": "200",
"currency": "NGN",
"country": "NG",
"payment_method_id": "NG",
"payment_method_flow": "REDIRECT",
"payer": {
"name": "Juan Alberto",
"email": "[email protected]"
},
"notification_url": "http://merchantsite.com/notifications",
"callback_url": "http://merchantsite.com/callback",
"created_date": "2024-09-10 T20:37:20.000+0000"
}
Enrollment Cancellation
This is the API that is used to cancel an active enrollment.
Request Parameters
| Property | Type | Description | Mandatory? |
|---|---|---|---|
id | String | Enrollment id of the initial customer authorization | Yes |
Examples
https://api.dlocal.com/enrollments/E-4-a6418560-42c0-44bb-9a6f-da77730bcb6b/cancel
{
"id": "E-4-a6418560-42c0-44bb-9a6f-da77730bcb6b",
"external_id": "3a39633d-e6fc-4bc2-96d1-51613b13858a",
"status": "CANCELLED",
"status_code": "400",
"status_details": "The enrollment is cancelled."
}
Updated 2 days ago



