Payment
Overview
Base URLs: https://api.rumbapay.online/v1/
Data Format: JSON
HTTP Methods: POST, PUT, GET
Initialize payment
When creating a payment using the method https://api.rumbapay.online/v1/payment
you must inspect the challenge.challenge_type
field to determine the appropriate flow.
For this type of payment, you must set widget.method = upi
and use the currency INR
.
Otherwise, you may receive the following error: 273:Invalid adapter route configuration
Method: HTTP POST
URL: https://api.rumbapay.online/v1/payment
Request Body Type HPP:
{
"widget": { // required
"method": "upi", // required
"locale": "en" // optional
},
"reference": "334545", // required
"currency": "INR", // required
"amount": "200", // required
"description": "My order", // optional
"customer": { // required
"identifier": "12345", // required, may be used any unique value from system of merchant
"email": "user@example.com", // required
"phone": "913324627351", // required
"first_name": "Darth", // required
"last_name": "Vader", // required
"middle_name": "Skywalker", // optional
"country": "IN", // required, ISO 3166-1
"city": "Hansi", // required
"address": "Shri Syam Mandir Near", // required,
"state_code": "12", // required
"zip_code": "125042", // required
"itn": "22*******99", // optional
"birthday": "2006-01-02", // optional
"ip": "192.168.0.1", // optional
"gender": "female" // optional
},
"callback_url": "https://merchant.domain/callback", // conditional
"redirect_url": "https://google.com", // optional
"cancel_url": "cancel_url", // optional
"extra": [{"key_1":"value"},{"key_2":"value"},{"key_3":"value"},{"key_4":"value"}] // conditional
}
Request Body Type H2H:
{
"method": "upi", // required
"reference": "334545", // required
"currency": "INR", // required
"amount": "200", // required
"description": "My order", // optional
"customer": { // required
"identifier": "12345", // required, may be used any unique value from system of merchant
"email": "user@example.com", // required
"phone": "913324627351", // required
"first_name": "Darth", // required
"last_name": "Vader", // required
"middle_name": "Skywalker", // optional
"country": "IN", // required, ISO 3166-1
"city": "Hansi", // required
"address": "Shri Syam Mandir Near", // required,
"state_code": "12", // required
"zip_code": "125042", // required
"itn": "22*******99", // optional
"birthday": "2006-01-02", // optional
"ip": "192.168.0.1", // optional
"gender": "female" // optional
},
"callback_url": "https://merchant.domain/callback", // conditional
"redirect_url": "https://google.com", // optional
"cancel_url": "cancel_url", // optional
"extra": [{"key_1":"value"},{"key_2":"value"},{"key_3":"value"},{"key_4":"value"}] // conditional
}
Response (Success):
Response - 200 OK
First, you should check error_code field of response.
If error_code field is not equals to 0 - transaction is Failed.
Second, you should check status field.
The status field will always be set to created if there are no errors.
Make check request or wait for a callback to get final transaction status.
(HPP) Challenge type: redirect
{
"request_id": "00000000-0000-0000-0000-000000000000",
"reference": "334545",
"description": "My order",
"status": {
"name": "created",
"date": "2025-07-09T09:40:07.1651713Z"
},
"created_date": "0001-01-01T00:00:00",
"amount": 200,
"billing_amount": 185,
"currency": "INR",
"challenge": {
"challenge_type": "redirect",
"challenge_redirect": {
"url": "https://pamir.checkout.transactica.net/p/f34a9b6a-60b4-412e-81c0-564dae0a48f0"
}
},
"timestamp": "2025-07-09T09:40:07.5460702Z",
"error_code": 0,
"error_message": ""
}
(H2H) Challenge type: redirect
{
"request_id": "a98aefb2-d2a6-48de-ab48-b69989b56b32",
"reference": "cdc12073-3744-4c0a-b24f-7c8e159896c1",
"description": "My order",
"status": {
"name": "created",
"date": "2025-07-09T09:46:10.687258Z"
},
"created_date": "2025-07-09T09:45:52.851",
"amount": 200,
"billing_amount": 185,
"currency": "INR",
"challenge": {
"challenge_type": "redirect",
"challenge_redirect": {
"url": "upi://pay?mode=04&cu=INR&pa=sinauratek4@suryoday&pn=sinauratek_software_solutions_Pvt_Ltd_1&am=200&mam=200&tid=SUR61914517E3E84F5B900EE8D11BB29B29&tr=P2507091516031510800705062&mc=7399"
}
},
"timestamp": "2025-07-09T09:46:10.9131264Z",
"error_code": 0,
"error_message": ""
}
Customer can complete the payment by either scanning the barcode with their banking app or manually transferring the funds using the payment details — both the barcode and payment information are available on the page at challenge.challenge_redirect.url
.
Rumbapay sends a callback to the merchant's callback URL when the payment reaches a terminal state (success, error, etc.)
Response - 400 Bad request
{
"error_code": 30,
"error_reason": "Invalid params",
"request_id": "f4d30fac-7da9-4fa0-8918-46d56f7d38b0",
"error_fields": [
{
"field": "reference",
"message": "reference is a required field"
}
],
"timestamp": "2025-04-11T16:58:57.11Z"
}
If incorrect values are provided for widget.method
or currency
, you may receive the following response:
{
"error_code": 273,
"error_message": "Invalid adapter route configuration"
}
Callback
On every completed Payout we send a callback notification to the URL you passed in the request in the callback_url field.
We strongly recommend validating the callback signature to avoid suspicious activity. Follow the signature docs to prepare callback verification.
Callback flow
The callback flow follows these steps:
Rumbapay processes the payment request
When the payment status changes to a terminal state, Rumbapay sends an HTTP POST request to your callback URL
Your server should process the callback, validate the signature, and update your system
Your server should respond with HTTP 200 OK to acknowledge receipt
Example
{
"identifier": "P2C000000387",
"request_id": "c45bca03-1d39-4d27-b2e6-60b821544e4e",
"reference": "39d21d0a-1fe2-4f77-969e-be4894520f4f",
"description": "My order h2h",
"status": {
"name": "success",
"date": "2025-06-06T16:02:47.757"
},
"created_date": "2025-06-06T16:01:33.224",
"amount": 10800,
"billing_amount": 10800,
"currency": "INR",
"extra": [
{
"key": "key_1",
"value": "value"
},
{
"key": "key_2",
"value": "value"
},
{
"key": "key_3",
"value": "value"
},
{
"key": "key_4",
"value": "value"
}
],
"timestamp": "2025-06-06T16:02:48.7266448Z",
"error_code": 0,
"error_message": ""
}
Check Payment Status
Method: HTTP GET
URL: https://api.rumbapay.online/v1/transaction/{request_id}
Response (Success):
{
"identifier": "P2C000000386",
"request_id": "f290dd9a-def2-4f7c-81e0-11af7f20f37e",
"reference": "f40b236f-5abb-439c-b756-c27a8c0f645e",
"description": "My order h2h",
"status": {
"name": "created",
"date": "2025-06-06T15:47:54.045"
},
"created_date": "2025-06-06T15:47:44.552",
"amount": 10800.0000,
"billing_amount": 10800.0000,
"currency": "INR",
"extra": [
{
"key": "key_1",
"value": "value"
},
{
"key": "key_2",
"value": "value"
},
{
"key": "key_3",
"value": "value"
},
{
"key": "key_4",
"value": "value"
}
],
"timestamp": "2025-06-06T15:48:54.8840229Z",
"error_code": 0,
"error_message": "
}
Response (Not Found):
Transaction not found
{
"error_code": 101,
"error_reason": "Transaction not found",
"request_id": "16003088-037e-416c-9163-4e70e17d291b",
"timestamp": "2025-04-11T16:58:57.11Z"
}
Last updated