UPI Gateway API Documentation
Zero-fee developer API for automated UPI payments. Generate dynamic Paytm Business QR codes, launch native deep-link intents (PhonePe, GPay, Paytm, BHIM), and receive cryptographically verified webhook notifications.
Production API Credentials & Webhooks
To view or regenerate your private production API Key, set your Webhook URL, and manage HMAC secrets, access your Developer Console.
https://www.bipinone.com/api
"key": "YOUR_KEY"
Direct Settlement
Zero merchant commission or gateway holds. Payments settle directly into your linked bank account via Paytm Business QR.
Multi-App Intent
Automatically opens installed UPI banking applications on mobile (Google Pay, PhonePe, Paytm, FamPay, BHIM) with pre-filled amounts.
HMAC-SHA256 Webhooks
Instant callback notifications delivered to your backend URL upon UTR settlement with tamper-proof cryptographic signatures.
Create Order & Generate QR Code
Call this endpoint from your backend server to initiate a payment transaction and receive dynamic QR URLs & intent strings.
| Field | Type | Required | Description |
|---|---|---|---|
| key | string | Required | Your production merchant API Key. Retrieve from Developer Console → |
| client_txn_id | string | Required | Unique transaction identifier generated by your application (e.g. ORD_100248). Max 50 chars. |
| amount | numeric | Required | Order amount in INR (minimum 1.00, up to 2 decimal places). |
| p_info | string | Required | Product or service description shown to the customer (e.g. Pro Membership). |
| customer_name | string | Required | Full name of the paying customer. |
| customer_email | string | Required | Customer email address for automated receipt generation. |
| customer_mobile | string | Required | 10-digit mobile number of customer. |
| redirect_url | string | Required | URL where customer is redirected after payment verification. |
| udf1, udf2, udf3 | string | Optional | Custom merchant metadata (e.g. user_id, cart_id) returned back in webhooks. |
curl -X POST https://www.bipinone.com/api/create_order \
-H "Content-Type: application/json" \
-d '{
"key": "YOUR_API_KEY",
"client_txn_id": "ORD_1793151603",
"amount": "100.00",
"p_info": "Premium Membership Plan",
"customer_name": "Developer Test",
"customer_email": "developer@bipinone.com",
"customer_mobile": "9876543210",
"redirect_url": "https://yourdomain.com/payment-complete",
"udf1": "user_id_42"
}'
{
"status": true,
"msg": "Order Created Successfully",
"data": {
"order_id": 1042,
"order_token": "bb0cbadc86a0117595f1095ec1372134",
"payment_url": "https://www.bipinone.com/upigateway/pay/bb0cbadc86a0117595f1095ec1372134",
"upi_id_hash": "8fcf91373767e1d82abb736c9f50c05892b32ac13aa7eaf36c460f33eab4757a",
"upi_url": "upi://pay?pa=paytmqr5tv1kn@ptys&pn=Paytm+Business+QR&am=100.00&cu=INR&tn=ORD_1719283748",
"client_txn_id": "ORD_1719283748",
"amount": "100.00"
}
}
Check Order Status
Poll or verify settlement status using your unique client_txn_id and transaction date.
| Field | Type | Required | Description |
|---|---|---|---|
| key | string | Required | Your production merchant API Key. |
| client_txn_id | string | Required | The order identifier sent during order creation. |
| txn_date | string | Required | Date of order creation in format DD-MM-YYYY (e.g. 28-10-2026). |
curl -X POST https://www.bipinone.com/api/check_order_status \
-H "Content-Type: application/json" \
-d '{
"key": "YOUR_API_KEY",
"client_txn_id": "ORD_1234567890",
"txn_date": "28-10-2026"
}'
{
"status": true,
"msg": "Transaction Details",
"data": {
"id": 1042,
"client_txn_id": "ORD_1234567890",
"customer_name": "Jon Doe",
"customer_email": "jondoe@gmail.com",
"customer_mobile": "9876543210",
"p_info": "Premium Plan",
"amount": "100.00",
"status": "success",
"remark": "UTR Verified",
"udf1": "user_id_45",
"udf2": "",
"udf3": "",
"redirect_url": "https://yourdomain.com/payment-complete",
"upi_txn_id": "928374829102",
"created_at": "2026-10-28 01:40:03"
}
}
Automated Webhooks & HMAC Verification
Instant callback POST dispatch when a customer completes payment. Verified via HMAC-SHA256 signature in headers.
Whenever a transaction settles, our server sends an HTTP POST request (application/x-www-form-urlencoded) to your Webhook URL configured in the merchant console.
Header X-Webhook-Signature contains the HMAC-SHA256 hash computed over the raw request payload using your secret key.
// BipinOne Native Webhook Verification (No SDK Needed)
$rawPayload = file_get_contents('php://input');
$signature = $_SERVER['HTTP_X_WEBHOOK_SIGNATURE'] ?? '';
$secret = 'YOUR_WEBHOOK_SECRET_KEY';
$expectedSignature = hash_hmac('sha256', $rawPayload, $secret);
if (hash_equals($expectedSignature, $signature)) {
$status = $_POST['status']; // 'success' / 'failure'
$clientTxnId = $_POST['client_txn_id'];
$utrNumber = $_POST['upi_txn_id']; // Bank settlement UTR
$amount = $_POST['amount'];
if ($status === 'success') {
// 1. Mark order paid in your database
// 2. Unlock digital product or subscription
}
http_response_code(200);
echo json_encode(['status' => 'success']);
exit;
} else {
http_response_code(401);
echo 'Invalid signature';
exit;
}
Official SDKs & Integration Kits
Plug-and-play packages for backend and mobile apps with ready-to-run helpers.
PHP & Laravel SDK (v1.0)
Zero-dependency PHP 7.4 - 8.3+ and Laravel 8-11 SDK. Includes automatic HTTP client, service provider, Facade, webhook verification, and example controllers.
Android UPI Intent Helper
Native Java / Kotlin helper that takes the upi_url from Create Order response and launches the installed UPI app chooser on customer phones.
// UpiCheckoutHelper.java - Trigger installed UPI apps
package com.bipinone.upigateway;
import android.content.Intent;
import android.net.Uri;
import androidx.appcompat.app.AppCompatActivity;
public class UpiCheckoutHelper {
public static void launchUpiIntent(AppCompatActivity activity, String upiUri, int requestCode) {
Uri uri = Uri.parse(upiUri);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(uri);
Intent chooser = Intent.createChooser(intent, "Pay using UPI");
if (chooser.resolveActivity(activity.getPackageManager()) != null) {
activity.startActivityForResult(chooser, requestCode);
}
}
}
Need Custom Gateway Integration or Support?
We offer end-to-end integration for your custom Node.js, Python/Django, WordPress, WooCommerce, or mobile applications.