API Introduction
Ignore Pay Payment Gateway enables merchants to receive money from customers by temporarily redirecting them to our secure gateway. The gateway connects card systems, mobile financial services, and local wallets. After payment, the customer is returned to your site with full transaction details.
Use HTTPS POST requests to the endpoints below. Your server must support cURL. Authentication uses only your API-KEY obtained from the Brands section of your dashboard.
yourdomain.com/success?transactionId=OVKPXW165414&transaction_id=OVKPXW165414&paymentMethod=bkash&amount=10.00&paymentAmount=10.00&paymentFee=0.00&status=COMPLETED&payment_status=completed&status_code=2 transactionId & transaction_id, status & payment_status, amount & paymentAmount) are sent for 100% plug-and-play compatibility with WHMCS, WordPress WooCommerce, and custom scripts.Integration
Integrate Ignore Pay into any platform โ PHP, Laravel, Node.js, Python, or any HTTP-capable environment.
POST to the create endpoint with your customer details, amount, and redirect URLs. Pass your API-KEY as a request header. On success you receive a payment_url โ redirect your customer there.
<?php $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => 'https://pay.ignorepay.com/api/payment/create', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS =>'{"success_url":"yourdomain.com/success","cancel_url":"yourdomain.com/cancel","webhook_url":"yourdomain.com/payment-webhook","metadata":{"phone":"016****"},"amount":"10"}', CURLOPT_HTTPHEADER => array( 'Content-Type: application/json', 'API-KEY: YourBrandKeyHere' ), )); $response = curl_exec($curl); curl_close($curl); echo $response; ?> <?php $client = new Client(); $headers = [ 'Content-Type' => 'application/json', 'API-KEY' => 'YourBrandKeyHere' ]; $body = '{ "success_url": "yourdomain.com/success", "cancel_url": "yourdomain.com/cancel", "webhook_url": "yourdomain.com/payment-webhook", "metadata": { "phone": "016****" }, "amount": "10" }'; $request = new Request('POST', 'https://pay.ignorepay.com/api/payment/create', $headers, $body); $res = $client->sendAsync($request)->wait(); echo $res->getBody(); ?> const axios = require('axios'); let data = JSON.stringify({ "success_url": "yourdomain.com/success", "cancel_url": "yourdomain.com/cancel", "webhook_url": "yourdomain.com/payment-webhook", "metadata": { "phone": "016****" }, "amount": "10" }); let config = { method: 'post', maxBodyLength: Infinity, url: 'https://pay.ignorepay.com/api/payment/create', headers: { 'Content-Type': 'application/json', 'API-KEY': 'YourBrandKeyHere' }, data : data }; axios.request(config) .then((response) => { console.log(JSON.stringify(response.data)); }) .catch((error) => { console.log(error); }); import requests import json url = "https://pay.ignorepay.com/api/payment/create" payload = json.dumps({ "success_url": "yourdomain.com/success", "cancel_url": "yourdomain.com/cancel", "webhook_url": "yourdomain.com/payment-webhook", "metadata": { "phone": "016****" }, "amount": "10" }) headers = { 'Content-Type': 'application/json', 'API-KEY': 'YourBrandKeyHere' } response = requests.request("POST", url, headers=headers, data=payload) print(response.text) package main import ( "fmt" "strings" "net/http" "io/ioutil" ) func main() { url := "https://pay.ignorepay.com/api/payment/create" method := "POST" payload := strings.NewReader(`{"success_url":"yourdomain.com/success","cancel_url":"yourdomain.com/cancel","webhook_url":"yourdomain.com/payment-webhook","metadata":{"phone":"01521412457"},"amount":"10"}`) client := &http.Client { } req, err := http.NewRequest(method, url, payload) if err != nil { fmt.Println(err) return } req.Header.Add("Content-Type", "application/json") req.Header.Add("API-KEY", "YourBrandKeyHere") res, err := client.Do(req) if err != nil { fmt.Println(err) return } defer res.Body.Close() body, err := ioutil.ReadAll(res.Body) if err != nil { fmt.Println(err) return } fmt.Println(string(body)) } Response Details
| Field Name | Type | Description |
|---|---|---|
| Success Response | ||
| status | bool | TRUE |
| message | String | Message for Status |
| payment_url | String | Payment Link (where customers will complete their payment) |
| transaction_id | String | Gateway transaction ID. Store this in your order table so webhook and late approval can update the same order later. |
| Error Response | ||
| status | bool | FALSE |
| message | String | Message associated with the error response |
| Completing Payment Page task you will be redirected to success or cancel page based on transaction status with the following Query Parameters: yourdomain.com/(success/cancel)?transactionId=******&transaction_id=******&paymentMethod=***&payment_method=***&paymentAmount=**.**&amount=**.**&paymentFee=**.**&status=COMPLETED (or PENDING/FAILED)&payment_status=completed (or pending/failed)&status_code=2 (or 1/0) | ||
After the customer returns to your success_url, use the transactionId query param to verify the transaction server-side.
<?php$curl = curl_init();curl_setopt_array($curl, array( CURLOPT_URL => 'https://pay.ignorepay.com/api/payment/verify', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS =>'{"transaction_id":"ABCDEFH"}', CURLOPT_HTTPHEADER => array( 'Content-Type: application/json', 'API-KEY: YourBrandKeyHere' ),));$response = curl_exec($curl);curl_close($curl);echo $response;?> <?php$client = new Client();$headers = [ 'Content-Type' => 'application/json', 'API-KEY' => 'YourBrandKeyHere'];$body = '{ "transaction_id": "ABCDEFH"}';$request = new Request('POST', 'https://pay.ignorepay.com/api/payment/verify', $headers, $body);$res = $client->sendAsync($request)->wait();echo $res->getBody();?> const axios = require('axios');let data = JSON.stringify({ "transaction_id": "ABCDEFH"});let config = { method: 'post', maxBodyLength: Infinity, url: 'https://pay.ignorepay.com/api/payment/verify', headers: { 'Content-Type': 'application/json', 'API-KEY': 'YourBrandKeyHere' }, data : data};axios.request(config).then((response) => { console.log(JSON.stringify(response.data));}).catch((error) => { console.log(error);}); import http.clientimport jsonconn = http.client.HTTPSConnection("local.pay.expensivepay.com")payload = json.dumps({ "transaction_id": "ABCDEFH"})headers = { 'Content-Type': 'application/json', 'API-KEY': 'YourBrandKeyHere'}conn.request("POST", "/api/payment/verify", payload, headers)res = conn.getresponse()data = res.read()print(data.decode("utf-8")) package mainimport ( "fmt" "strings" "net/http" "io/ioutil")func main() { url := "https://pay.ignorepay.com/api/payment/verify" method := "POST" payload := strings.NewReader(`{"transaction_id":"ABCDEFH"}`) client := &http.Client { } req, err := http.NewRequest(method, url, payload) if err != nil { fmt.Println(err) return } req.Header.Add("Content-Type", "application/json") req.Header.Add("API-KEY", "YourBrandKeyHere") res, err := client.Do(req) if err != nil { fmt.Println(err) return } defer res.Body.Close() body, err := ioutil.ReadAll(res.Body) if err != nil { fmt.Println(err) return } fmt.Println(string(body))} { "status": "COMPLETED", "payment_status": "completed", "status_code": 2, "transaction_id": "OVKPXW165414", "transactionId": "OVKPXW165414", "amount": "900.00", "payment_method": "bkash", "cus_name": "John Doe", "cus_email": "john@gmail.com", "metadata": { "phone": "015****" }, "mode": "live"} Response Details
| Field Name | Type | Description |
|---|---|---|
| Success Response | ||
| status | string | COMPLETED or PENDING or ERROR / CANCELLED |
| payment_status | string | completed or pending or cancelled |
| status_code | int | 2 (COMPLETED), 1 (PENDING), 0 (CANCELLED / ERROR) |
| transaction_id | string | Transaction id Generated by Gateway (Consistent with Create & Webhook) |
| transactionId | string | Alias of transaction_id |
| amount | string | Amount payable |
| payment_method | string | Payment Method used (bkash, nagad, rocket, etc.) |
| cus_name | string | Customer Name |
| cus_email | string | Customer Email |
| metadata | json / string | Metadata passed during Payment creation |
| Error Response | ||
| status | bool | FALSE |
| message | String | Message associated with the error response |
Mobile banking SMS can arrive late. When that happens the payment may stay PENDING. Your website should save the order as pending first, then mark it paid later when the gateway approves the payment.
Always send webhook_url in the create payment request. When the payment completes, the gateway will call that webhook URL with transaction details.
Test your integration seamlessly on localhost, staging, or any development domain without domain restrictions or real money. Anyone can test immediately without registration or buying a subscription plan.
sb_test_sandbox_api_key_ignorepay Create a test payment immediately right from your browser.
curl -X POST "https://pay.ignorepay.com/api/payment/create" \ -H "Content-Type: application/json" \ -H "API-KEY: sb_test_sandbox_api_key_ignorepay" \ -d '{ "amount": "500", "cus_name": "Test User", "cus_email": "test@example.com", "success_url": "http://localhost:3000/payment/success", "cancel_url": "http://localhost:3000/payment/cancel", "webhook_url": "http://localhost:3000/payment/webhook" }' Plugins & Modules
Official WordPress / WooCommerce payment gateway extension. Supports auto-confirm & pending webhook.
Download PluginAutomate web hosting billing with instant payment verification for WHMCS v8.x.
Download ModuleGateway Android sync application for SMS forwarder & automatic payment matching.
Download APK