Developers
REST API
GuidesErrorsLogin
Get API Keys
API Navigation
  • Overview
  • Quick start
  • Authentication
  • Collect a payment
  • Payment status
  • Refunds
  • Testing
  • Production
  • Security
API reference
  • Create API keys POST
  • List API keys GET
  • Get API key GET
  • Delete API key DEL
  • Collect with MTN POST
  • MTN payment status GET
  • Collect with Airtel POST
    Create and pay
  • Create order POST
  • Order fee POST
  • Pay order with card POST
  • Pay order with bank POST
  • Status and verify
  • Order status POST
  • Verify order POST
  • Cards and tokens
  • Save card POST
  • Tokenize charge GET
  • Refunds
  • Refund order POST
  • Lists and stats
  • List orders GET
  • Get order GET
  • List banks GET
  • Order stats GET
  • List transactions GET
  • Get transaction GET
  • Transaction statuses GET
Errors and limits
  1. Docs
  2. API reference
  3. Pay order with bank

Pay order with bank

Pay an existing order reference by bank transfer.

OpenAPI SpecRun in Postman
POST/payment/zibapay/bank/:referenceAPI
Authentication:Bearer token•Authorization: Bearer <token>(Bearer token for server-to-server API calls)
Security requirement: 403 CSRF Protection
Auth guide →

Direct server-to-server calls authenticated via Bearer tokens do not require CSRF headers. If you instead invoke mutation endpoints from a web browser using cookie-based sessions, you must include the following header:

X-Requested-With: XMLHttpRequest

Request Parameters

FieldTypeRequiredDescription
referencestringRequiredtransactionReferenceId from the collect response, or the order reference.
import axios from "axios";

const url = "https://payment-service-mh2d.onrender.com/api/payment/zibapay/bank/:reference";

const headers = {
    Authorization: `Bearer ${process.env.ZIBA_TOKEN}`,
    "Content-Type": "application/json",
};

const payload = {
  "paymentoption": "bank",
  "country": "NG",
  "BankTransfer": {
    "bankcode": "044"
  }
};

try {
  const response = await axios.post(url, payload, {
    headers,
    timeout: 15000,
  });
  console.log("Success:", response.status, response.data);
} catch (error) {
  console.error("Request failed:", error.response?.data || error.message);
}
Auth guide

Response fields

FieldTypePresenceDescription
statusstringAlways returnedPayment status: PENDING.
referencestringAlways returnedOrder reference identifier.
accountnumberstringAlways returnedDynamic virtual bank account number to transfer funds to.
banknamestringAlways returnedName of the beneficiary bank.
accountnamestringAlways returnedAccount beneficiary name.
amountnumberAlways returnedExact amount customer must transfer.
currencystringAlways returnedTransfer currency code.
expiresAtstringAlways returnedExpiration timestamp for this virtual bank account.

Status codes

HTTP StatusMeaning
200Virtual bank account generated.
401No merchant session.

Notes

  • HTTP 200 returns the provider payment instructions JSON.

Related

List banksCreate order
Was this page helpful?

Let us know how we can make our API documentation better.

PreviousPay order with card
NextOrder status