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 supported

Cards


Find all the information about the card supported capabilities.

Brands Capabilities Process Card Payments

Alternative 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 codecurrency codeamount decimalsdocument namedocument formatdocument required?
NGNGN2NIN11 digitsYes

Cards supported

payment_method_idBrand IDNamepayment_method_typeDetailsAllowed FlowsLogo
CARDVIVisaCARDCredit Card ​DIRECT REDIRECT
CARDVDVisa Debit ​CARDDebit Card ​DIRECT REDIRECT
CARDMCMastercardCARDCredit Card ​DIRECT REDIRECT
CARDMDMastercard Debit ​CARDDebit Card ​DIRECT REDIRECT
CARDVEVerve* ​CARDDebit 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_id as CARD.

Alternative Payment Method supported

payment_method_idNamepayment_method_typeDetailsAllowed FlowsLogo
OWOpay WalletWALLETWallet ​REDIRECT
GWPaga WalletWALLETWallet ​REDIRECT
IOBank TransferBANK_TRANSFERBank Transfer​DIRECT
REDIRECT
NGBank Transfer (Direct Debit)BANK_TRANSFERBank TransferREDIRECT


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 CreditMaster CreditVisa DebitMaster DebitVerve
Minimum amount51 NGN51 NGN51 NGN51 NGN51 NGN
RefundsYesYesYesYesYes
RecurringYesYesYesYesYes
Chargeback optionYesYesYesYesYes
Chargeback Dispute optionYesYesYesYesYes
DescriptorCan 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. amount51 NGN
Max. expiration time supported24 hours
Notification delayImmediate
RefundsYes
FlowREDIRECT

UX Flow

Request Parameters

PropertyTypeDescriptionMandatory?
amountNumberAmount to be charged.Yes
currencyStringTransaction currency in ISO 4217.Yes
countryStringNG

Transaction country in ISO 3166.
Yes
payment_method_idStringOW

ID of the selected payment method.
For OPay Wallet, yes.
payment_method_flowStringREDIRECTYes
payer.nameStringName of the payer.Yes
payer.emailStringEmail of the payer.Yes
payer.documentStringDocument of the payer.Yes
order_idStringID of the capture given by the merchant in their system. Think of it as an external ID of the capture.No
notification_urlStringNotifications 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. amount15000 NGN
Notification delayImmediate
RefundsYes
FlowREDIRECT

UX Flow

Request Parameters

PropertyTypeDescriptionMandatory?
amountNumberAmount to be charged.Yes
currencyStringTransaction currency in ISO 4217.Yes
countryStringNG

Transaction country in ISO 3166.
Yes
payment_method_idStringGW

ID of the selected payment method
For Paga Wallet, yes.
payment_method_flowStringREDIRECTYes
payer.nameStringName of the payer.Yes
payer.emailStringEmail of the payer.Yes
payer.documentStringDocument of the payer.Yes
wallet.nameStringName of the payer's wallet.No
wallet.saveBooleanDetermines if you want to receive a wallet token for future payments or not.No
wallet.captureBooleanDetermines if you want to capture the payment funds or not.No
wallet.usernameStringUsername of the payer's wallet account.No
wallet.emailStringEmail of the payer's wallet account.No
order_idStringID of the capture given by the merchant in their system. Think of it as an external ID of the capture.No
notification_urlStringNotifications 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
Expiration1 or 7 days, depending on the provider.
Notification delayImmediate
RefundsYes
FlowDIRECT REDIRECT

UX Flow

Example Bank Transfer UI

Example Bank Transfer UI

Request Parameters

PropertyTypeDescriptionMandatory?
amountNumberAmount to be charged.Yes
currencyStringTransaction currency in ISO 4217.Yes
countryStringNG

Transaction country in ISO 3166.
Yes
payment_method_idStringIO

ID of the selected payment method
For Bank Transfer, yes.
payment_method_flowStringDIRECT or REDIRECTYes
payer.nameStringName of the payer.Yes
payer.emailStringEmail of the payer.Yes
payer.documentStringDocument of the payer.Yes
order_idStringID of the capture given by the merchant in their system. Think of it as an external ID of the capture.No
notification_urlStringNotifications 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 supported15 Minutes
Notification delayEnrollment - 24 Hours
Recurring Payment - Immediate
Enrollment CancellationYes
FlowEnrollment: REDIRECT
Recurring 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

PropertyTypeDescriptionMandatory?
external_idStringAn identifier used by the merchant to identify the enrollment in their system.Yes
currencyStringNGN

Transaction currency in ISO 4217
Yes
countryStringNG

Transaction country in ISO 3166
Yes
typeStringMERCHANT_SUBSCRIPTION: For subscriptions with future recurring payments initiated by the merchant.Yes
descriptionStringEnrollment description.No
payment_method_idStringNGYes
payment_method_flowStringREDIRECTYes
payer.nameStringName of the payerYes
payer.emailStringEmail of the payerYes
payer.documentNumberBVN (Bank Verification Number) of the payerYes
subscription.start_dateString (YYYY-MM-DD)Subscription start date. The default is the current date. To be used only for subscriptions.No
subscription.end_dateString
(YYYY-MM-DD)
Subscription expiration date. If not provided, the subscription will not expire. To be used only for subscriptions.No
subscription.frequencyStringPossible values supported: , MONTHLY, SEMI_ANNUAL or ANNUAL.No
subscription.amount.typeStringPossible values depending on the subscription:
FIXED: For fixed amount subscription
Yes
subscription.amount.valueNumber (10,2)Fixed subscription amount in local currency. Required only for fixed amount subscriptions depending on the payment method.Conditional
notification_urlStringNotifications will be sent in every change of status of a payment to the notification_url specified by the merchant.Yes
callback_urlStringThe payer will be redirected to the merchant’s website after completing the payment via the callback_url specified by the merchantYes

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

PropertyTypeDescriptionMandatory?
external_idStringAn identifier used by the merchant to identify the enrollment in their system.Yes
currencyStringNGN

Transaction currency in ISO 4217
Yes
countryStringNG

Transaction country in ISO 3166
Yes
amountStringAmount to be chargedYes
descriptionStringEnrollment description.No
payment_method_idStringNGYes
payment_method_flowStringDIRECTYes
payer.nameStringName of the payerYes
payer.emailStringEmail of the payerYes
enrollment.idStringEnrollment id of the initial customer authorizationYes
notification_urlStringNotifications 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

PropertyTypeDescriptionMandatory?
idStringEnrollment id of the initial customer authorizationYes

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."
}