Skip to content

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

FieldTypeRequiredDescription
transaction_idstringYesPaynet 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"
  }
}
FieldTypeDescription
info.numberstringPIN code (optional)
info.serialstringSerial number of the PIN (optional)

Response Fields

FieldTypeDescription
transaction.stateintegerSee Transaction States
transaction.errorstringError message (empty on success)
transaction.accountstringRecipient phone number
transaction.amountstringAmount credited in local currency
transaction.amount_currencystringLocal currency code (e.g., INR)
transaction.pricestringAmount deducted from your wallet
transaction.price_currencystringYour wallet currency (e.g., AED)
transaction.country_idstringCountry ISO code
transaction.country_namestringCountry name
transaction.provider_idstringOperator ID
transaction.provider_namestringOperator name
receiptobjectReceipt data for printing/display
infoarray/objectEmpty 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.

Paynet API Documentation