Complete payment gateway integration guide for all services
All API requests require an API key. Include it in the request headers:
X-API-Key: YOUR_API_KEY_HERE
Content-Type: application/json
Get your API key from Account Settings → API Keys
Manual UTR Verification - Customer needs to enter 12-16 digit UTR number
POST/api/create_payment.php
| Parameter | Type | Required | Description |
|---|---|---|---|
| customer_id | string | Required | Unique customer identifier |
| customer_name | string | Optional | Customer name |
| amount | float | Required | Amount in INR (₹1 - ₹10,000) |
| product_name | string | Optional | Product name |
| service | string | Optional | Use "bharatpe" |
curl -X POST https://storepanel.royalflood.site/api/create_payment.php \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"customer_id": "CUST_001",
"customer_name": "John Doe",
"amount": 500,
"product_name": "Premium Service",
"service": "bharatpe"
}'
{
"success": true,
"service": "bharatpe",
"order_id": "ORDABC123XYZ",
"payment_link": "https://storepanel.royalflood.site/payment/pay.php?order=ORDABC123XYZ",
"qr_url": "https://quickchart.io/qr?text=...",
"qr_amount": 500.37,
"upi_id": "merchant@okhdfcbank",
"expires_at": "25-05-2026 04:00:00 PM",
"expires_in_minutes": 30
}
POST/api/verify_payment.php
Customer needs to enter the 12-16 digit UTR number from their bank statement.
| Parameter | Type | Required | Description |
|---|---|---|---|
| order_id | string | Required | Order ID from create response |
| utr | string | Required | 12-16 digit UTR number |
curl -X POST https://storepanel.royalflood.site/api/verify_payment.php \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"order_id": "ORDABC123XYZ",
"utr": "123456789012"
}'
{
"success": true,
"message": "✅ Payment verified successfully!",
"payment_id": "PAY12345678",
"order_id": "ORDABC123XYZ",
"amount": 500,
"utr": "123456789012"
}
{
"success": false,
"message": "❌ UTR not found in BharatPe records."
}
{
"success": false,
"message": "❌ This UTR has already been used!"
}
{
"success": false,
"message": "❌ Amount mismatch! Expected ₹500.37, Found ₹100.00"
}
Auto Verification - One click verify, no UTR number needed!
POST/api/create_payment.php
| Parameter | Type | Required | Description |
|---|---|---|---|
| customer_id | string | Required | Unique customer identifier |
| customer_name | string | Optional | Customer name |
| amount | float | Required | Amount in INR (₹1 - ₹10,000) |
| product_name | string | Optional | Product name |
| service | string | Optional | Use "paytm" |
curl -X POST https://storepanel.royalflood.site/api/create_payment.php \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"customer_id": "CUST_002",
"customer_name": "Jane Doe",
"amount": 1000,
"product_name": "Subscription",
"service": "paytm"
}'
{
"success": true,
"service": "paytm",
"order_id": "ORDABC123XYZ",
"payment_link": "https://storepanel.royalflood.site/payment/paytm_pay.php?order=ORDABC123XYZ",
"paytm_order_id": "PTM_ABC123XYZ",
"qr_url": "https://quickchart.io/qr?text=...",
"qr_amount": 1000.45,
"upi_id": "merchant@paytm",
"expires_at": "25-05-2026 04:00:00 PM",
"expires_in_minutes": 30
}
paytm_order_id - save this for verification.
POST/api/verify_paytm.php
No UTR number needed! Just click verify and our system automatically checks PayTM API.
| Parameter | Type | Required | Description |
|---|---|---|---|
| order_id | string | Required | Order ID from create response |
| paytm_order_id | string | Required | PayTM Order ID from create response |
curl -X POST https://storepanel.royalflood.site/api/verify_paytm.php \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"order_id": "ORDABC123XYZ",
"paytm_order_id": "PTM_ABC123XYZ"
}'
{
"success": true,
"message": "✅ Payment verified successfully!",
"payment_id": "PAY12345678",
"order_id": "ORDABC123XYZ",
"amount": 1000,
"utr": "PAYTM_169884605251"
}
{
"success": false,
"message": "⏳ Payment pending. Please complete the payment first."
}
Auto Verification - One click verify, 5 minutes expiry only!
POST/api/create_payment.php
| Parameter | Type | Required | Description |
|---|---|---|---|
| customer_id | string | Required | Unique customer identifier |
| customer_name | string | Optional | Customer name |
| amount | float | Required | Amount in INR (₹1 - ₹10,000) |
| product_name | string | Optional | Product name |
| service | string | Optional | Use "famapp" |
curl -X POST https://storepanel.royalflood.site/api/create_payment.php \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"customer_id": "CUST_003",
"customer_name": "Mike Smith",
"amount": 250,
"product_name": "Digital Product",
"service": "famapp"
}'
{
"success": true,
"service": "famapp",
"order_id": "ORDABC123XYZ",
"payment_link": "https://storepanel.royalflood.site/payment/famapp_pay.php?order=ORDABC123XYZ",
"qr_url": "https://quickchart.io/qr?text=...",
"qr_amount": 250.78,
"upi_id": "merchant@fam",
"merchant_name": "Your Business Name",
"expires_at": "25-05-2026 03:05:00 PM",
"expires_in_minutes": 5
}
POST/api/verify_famapp.php
No UTR number needed! Our system automatically checks FamApp API.
| Parameter | Type | Required | Description |
|---|---|---|---|
| order_id | string | Required | Order ID from create response |
curl -X POST https://storepanel.royalflood.site/api/verify_famapp.php \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"order_id": "ORDABC123XYZ"
}'
{
"success": true,
"message": "✅ Payment verified successfully!",
"payment_id": "PAY12345678",
"order_id": "ORDABC123XYZ",
"amount": 250,
"utr": "FAM_169884605251"
}
{
"success": false,
"message": "⚠️ Payment failed: Order ID matched but amount mismatch."
}
GET/api/check_status.php?order_id={order_id}
curl "https://storepanel.royalflood.site/api/check_status.php?order_id=ORDABC123XYZ" \
-H "X-API-Key: YOUR_API_KEY"
GET/api/get_stats.php
curl "https://storepanel.royalflood.site/api/get_stats.php" \
-H "X-API-Key: YOUR_API_KEY"
When payment is successful, we send a POST request to your configured webhook URL.
X-Webhook-Signature: {signature}
X-Webhook-Id: {unique_id}
Content-Type: application/json
{
"event": "payment_success",
"order_id": "ORDABC123XYZ",
"payment_id": "PAY12345678",
"customer_id": "CUST_001",
"customer_name": "John Doe",
"amount": 500,
"qr_amount": 500.37,
"utr": "123456789012",
"product_name": "Premium Service",
"service_used": "bharatpe",
"verified_at": "25-05-2026 03:35:00 PM"
}
service_used can be: bharatpe, paytm, or famapp
| HTTP Status | Error Message | Description |
|---|---|---|
| 401 | Missing security headers | Add X-Request-Timestamp, X-Request-Nonce, X-Request-Signature headers |
| 429 | Rate limit exceeded | Slow down your requests (max 100/minute) |
| 400 | FamApp not configured | Setup FamApp in dashboard and wait for admin approval |
| 400 | PayTM service not configured | Setup PayTM credentials in dashboard |
| 400 | BharatPe service not configured | Setup BharatPe credentials in dashboard |
| 400 | UTR already used | This UTR number has been used for another transaction |
| 400 | Payment link expired | 30 min for BharatPe/PayTM, 5 min for FamApp |
| Feature | BharatPe | PayTM | FamApp |
|---|---|---|---|
| Verification Method | Manual UTR Entry | Auto (One Click) | Auto (One Click) |
| UTR Required? | ✅ Yes (12-16 digits) | ❌ No | ❌ No |
| Expiry Time | 30 minutes | 30 minutes | 5 minutes only! |
| WhatsApp Notification | ✅ Yes | ✅ Yes | ❌ No |
| Admin Approval Required | ❌ No | ❌ No | ✅ Yes |