Pay with Bank

Pay with Bank is a payment method that enables customers to pay directly from their bank account without leaving your checkout experience.

Unlike a traditional bank transfer, where the customer copies a virtual account number, opens their banking app, and completes the transfer manually, Pay with Bank streamlines the process. The customer simply selects their bank, enters their account number, verifies the payment with a One-Time Password (OTP), and authorizes the transaction—all within a secure authentication flow.

Once the payment is successfully authorized, Monnify processes the transaction and notifies your application through the transaction verification and webhook flow.

Bank Transfer vs Pay with Bank

FeatureBank TransferPay with Bank
Customer copies a virtual account numberYesNo
Customer opens their banking appYesNo
Customer enters their account numberNoYes
Customer authorizes with an OTPNoYes
Real-time payment confirmationYesYes
Standard Monnify webhooksYesYes

How it works

Pay with Bank follows the same transaction lifecycle as every other Monnify payment method. The only difference is the customer authentication experience.

  1. Initialize a transaction.
  2. The customer selects Pay with Bank as their preferred payment method.
  3. The customer enters their account number.
  4. Their bank sends a One-Time Password (OTP).
  5. The customer enters the OTP to authorize the payment.
  6. Monnify processes the transaction.
  7. Your application receives the payment result through transaction verification or webhook notifications.

Integration Options

Pay with Bank supports two integration methods.

Integration MethodDescription
Hosted Checkout (Recommended)Add PAY_WITH_BANK to the paymentMethods array. Monnify handles the complete customer authentication experience.
Direct API IntegrationBuild your own payment experience by integrating directly with the Pay with Bank APIs.

Regardless of the integration method you choose, transaction verification and webhook notifications remain the same.

If you're already using the Monnify Checkout (Web SDK or Checkout URL), enabling Pay with Bank requires no additional API calls.


Simply include PAY_WITH_BANK in the paymentMethods array when initializing your transaction.

Example.json

When the checkout page is displayed, customers will see Pay with Bank as one of the available payment methods alongside any others you've enabled.


After selecting Pay with Bank, the customer:

  1. Enter their account number.
  2. Receives a One-Time Password (OTP) from their bank.
  3. Enter the OTP to authorize the payment.
  4. Completes the transaction.
  5. Is redirected back to your application.
  6. Monnify processes the transaction.

No additional backend integration is required when using the Monnify Checkout.

Option 2: Direct API Integration

Choose this option if you're building your own payment experience and are not using the Monnify hosted checkout.

Step 1: Initialize a Transaction

Initialize a Monnify transaction using the Transaction Initialization API. The response includes a transactionReference, which is required for the next step.

Step 2: Initialize Pay with Bank

Endpoint
Request Body
Response Body

Step 3: Redirect the Customer

The authorizationUrl contains the secure bank authentication page. Redirect your customer to this URL to complete authentication.


The customer will:

  1. Enter their account number.
  2. Receives a One-Time Password (OTP) from their bank.
  3. Enter the OTP to authorize the payment.
  4. Return to your application.

Verifying the Transaction

Returning from the authorization page does not indicate that the payment was successful. Always verify the final transaction status before fulfilling an order.


You can verify payments in one of two ways:

  1. Call the Verify Transaction API.
  2. Listen for Monnify webhook notifications.

You can also retrieve the latest Pay with Bank attempt for a transaction using the status endpoint.

Endpoint
Example

Supported Banks

Pay with Bank currently supports:

BankBank Code
Moniepoint50515

Support for additional banks will be added over time. Existing integrations will continue to work without modification as new banks become available.

Best Practices

  1. Always verify completed payments using the Verify Transaction API or webhook notifications.
  2. Do not rely on the customer's return to your application as proof of payment.
  3. Store the transactionReference for reconciliation and support.
  4. If you're using the hosted checkout, simply add PAY_WITH_BANK to thepaymentMethods array—no additional integration is required.
  5. If you're building a custom checkout, always redirect customers to the returned authorizationUrl to complete authentication.

Frequently Asked Questions

Copyright © 2026 Monnify
instagramfacebookicon