Skip to content

International Bridge ​

This flow applies only when service.id is international-bridge (International Bridge API).

Mobile recharge for 50+ countries.

How It Works ​

  1. Get categories using POST /international-bridge/categories
  2. Get available countries using POST /international-bridge/countries
  3. Get operators for a country using POST /international-bridge/providers
  4. Get amounts for an operator using POST /international-bridge/provider
  5. Check validates the phone number and locks the selected amount
  6. Confirm executes the recharge
  7. Find polls for the final transaction state

Transaction Flow ​

Steps ​

1. Get Categories ​

Fetch product categories to group amounts for display.

View Categories endpoint →

2. Get Countries ​

Fetch all available countries.

View Countries endpoint →

3. Get Providers ​

Fetch operators available in a country.

View Providers endpoint →

4. Get Provider (Amounts) ​

Fetch available amounts for a specific operator.

View Provider endpoint →

5. Check Transaction ​

Validate the phone number and lock the selected amount.

View Check details →

6. Confirm Transaction ​

Execute the recharge.

View Confirm details →

7. Find Transaction ​

Get the final transaction status.

View Find details →

Example Flow ​

javascript
// 1. Get categories (optional, for UI grouping)
const categories = await api.post('/international-bridge/categories', { auth });
// Returns: { categories: [{ id: "mobile-airtime", parent_id: "mobile", name: "Airtime / Calls" }, ...] }

// 2. Get countries
const countries = await api.post('/international-bridge/countries', { auth });
// Returns: { countries: [{ id: "IND", name: "India", currency: "INR", ... }, ...] }

// 3. Get operators for India
const operators = await api.post('/international-bridge/providers', {
  auth,
  country_id: 'IND'
});
// Returns: { country: {...}, providers: [{ id: 56, name: "Airtel" }, ...] }

// 4. Get amounts for Airtel
const amounts = await api.post('/international-bridge/provider', {
  auth,
  provider_id: 56
});
// Returns: { amounts: [{ id: "16a6...", category_id: "mobile-airtime", amount: "10", currency: "INR", ... }, ...] }

// 5. Check transaction (product: "international-bridge")
const check = await api.post('/transaction/check', {
  auth,
  product: 'international-bridge',
  fields: {
    amount_id: '16a6e7cc7319a2f36c110d6a3af98aff',
    account: '911234567890'
  }
});
// Returns: { transaction: { id: "69d-...", state: -1, amount: "10", amount_currency: "INR", ... } }

// 6. Confirm
const confirm = await api.post('/transaction/confirm', {
  auth,
  transaction_id: check.transaction.id
});
// Returns: { transaction: { state: 1, ... }, receipt: {...} }

// 7. Poll for result if state is not final
const result = await api.post('/transaction/find', {
  auth,
  transaction_id: check.transaction.id
});

Key Differences ​

AspectInternationalDirect Recharge
Product ID"international-bridge"Specific ID (e.g., et-mc)
Discovery endpointsRequired (countries → providers → provider)Not needed
Check requestamount_id + accountaccount + amount
Confirm requesttransaction_id onlytransaction_id + fields

Paynet API Documentation