Appearance
Confirm (International)
Execute the international top-up.
Endpoint: POST /transaction/confirm
Request
Pass the transaction_id from the Check response. No additional fields are needed — the amount was already selected at check.
bash
curl -X POST https://API-ENDPOINT/transaction/confirm \
-H "Content-Type: application/json" \
-d '{
"auth": {
"id": 123,
"key": 1706360400001,
"hash": "b2c3d4e5f6a1..."
},
"transaction_id": "69d-7c9-5f1-098-494"
}'php
<?php
$url = 'https://API-ENDPOINT/transaction/confirm';
$key = time() * 1000;
$data = [
'auth' => [
'id' => 123,
'key' => $key,
'hash' => md5(123 . $token . $key)
],
'transaction_id' => '69d-7c9-5f1-098-494'
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$result = json_decode($response, true);
print_r($result);javascript
const key = Date.now();
const hash = md5(`123${token}${key}`);
const response = await fetch('https://API-ENDPOINT/transaction/confirm', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
auth: { id: 123, key, hash },
transaction_id: '69d-7c9-5f1-098-494'
})
});
const data = await response.json();
console.log(data);python
import requests
import hashlib
import time
url = 'https://API-ENDPOINT/transaction/confirm'
key = int(time.time() * 1000)
hash_value = hashlib.md5(f"123{token}{key}".encode()).hexdigest()
response = requests.post(url, json={
'auth': {
'id': 123,
'key': key,
'hash': hash_value
},
'transaction_id': '69d-7c9-5f1-098-494'
})
print(response.json())Request Fields
| Field | Type | Required | Description |
|---|---|---|---|
transaction_id | string | Yes | Paynet transaction ID from Check response |
Response
Success
json
{
"transaction": {
"id": "69d-7c9-5f1-098-494",
"state": 1,
"error": "",
"time": "2026-04-09 20:01:12",
"service": {
"id": "international-bridge",
"name": "International Bridge"
},
"account": "911234567890",
"amount": "100",
"amount_currency": "INR",
"price": "4.56",
"price_currency": "AED",
"country_id": "IND",
"country_name": "India",
"provider_id": "284",
"provider_name": "MTNL"
},
"info": [],
"receipt": {
"header": "International Recharge",
"subheader": "MTNL",
"info": "Country: India\nProvider: MTNL\nAccount: +911234567890\nAmount excluding local taxes: INR 100.00",
"instruction": "If you have any concern about the transaction please do inform us within 5 days.",
"promo": "",
"footer": "CUSTOMER SERVICE\nE-MAIL: [email protected]\n\nRECEIPT NUMBER: 69d-7c9-5f1-098-494\n\nThank you for using Paynet"
}
}Pending
json
{
"transaction": {
"id": "69d-7c9-5f1-098-494",
"state": 0,
"error": "",
"time": "2026-04-09 20:01:12",
"service": {
"id": "international-bridge",
"name": "International Bridge"
}
},
"info": [],
"receipt": {}
}Pending State
International transactions may take longer to process. If state is 0, call Find periodically until you receive a final state.
PIN-Based Products
For PIN-based products (e.g., vouchers), the info field contains the PIN code instead of an empty array:
json
{
"info": {
"number": "1234-5678-9012",
"serial": "SN-001234"
}
}| Field | Type | Description |
|---|---|---|
info.number | string | PIN code (optional) |
info.serial | string | Serial number of the PIN (optional) |
Response Fields
| Field | Type | Description |
|---|---|---|
transaction.state | integer | See Transaction States |
transaction.error | string | Error message (empty on success) |
transaction.account | string | Recipient phone number |
transaction.amount | string | Amount credited in local currency |
transaction.amount_currency | string | Local currency code (e.g., INR) |
transaction.price | string | Amount deducted from your wallet |
transaction.price_currency | string | Your wallet currency (e.g., AED) |
transaction.country_id | string | Country ISO code |
transaction.country_name | string | Country name |
transaction.provider_id | string | Operator ID |
transaction.provider_name | string | Operator name |
receipt | object | Receipt data for printing/display |
info | array/object | Empty array or PIN data (see above) |
Next Step
If state is not final, proceed to Find to poll for the result. See Transaction States for all possible values.