OPENAPI 3.0 • REST v1.0 LIVE

Developer API & Webhook Reference

Directly integrate autonomous Easypaisa, JazzCash, and Bank payment reconciliation into custom Laravel, Node.js, Python, or PHP web checkouts.

Base URL https://tezverify.com/api/v1
Auth Header X-Api-Key: tz_live_...
Rate Limits 60 req/min (Burst 120)
Webhook Signing HMAC-SHA256 Signed
💻 Client SDK & Code Language:
POST /api/v1/payments/verify
API Key Required

Registers a customer checkout payment intent. Submit customer TID (Transaction ID) and amount. TezVerify matches against live inbound banking feeds and dispatches your webhook instantly.

📤 Request Payload (JSON)

application/json
{
  "gateway": "easypaisa",        // "easypaisa" | "jazzcash" | "bank"
  "transaction_reference": "10293847561", // Customer TID
  "amount": 1500.00,                  // PKR Expected amount
  "sender_source": "03001234567",      // optional sender mobile
  "callback_url": "https://my-store.com/webhook", // optional
  "client_metadata": { "order_id": "ORD-9941" } // optional
}

📥 200 OK Response (JSON)

200 SUCCESS
{
  "success": true,
  "message": "Payment submission registered successfully.",
  "data": {
    "uuid": "7c4731f8-9fa4-4d87-8df1-4a11b6973e21",
    "status": "pending",
    "gateway": "easypaisa",
    "transaction_reference": "10293847561",
    "amount_expected": 1500.00,
    "created_at": "2026-09-14T06:00:00Z"
  }
}

Client Implementation Snippet

cURL
curl -X POST https://tezverify.com/api/v1/payments/verify \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "gateway": "easypaisa",
    "transaction_reference": "10293847561",
    "amount": 1500.00,
    "sender_source": "03001234567",
    "client_metadata": { "order_id": "ORD-9941" }
  }'
GET /api/v1/payments/status/{uuid}
API Key Required

Poll verification status for a transaction UUID (recommended polling interval: every 3 seconds for 60 seconds).

curl -X GET https://tezverify.com/api/v1/payments/status/7c4731f8-9fa4-4d87-8df1-4a11b6973e21 \
  -H "X-Api-Key: YOUR_API_KEY"
POST /api/v1/sms/ingest
Gateway Secret / API Key

Push inbound SMS notifications directly to TezVerify from Android SMS forwarders (e.g. SMS Forwarder, Tasker, IFTTT).

curl -X POST https://tezverify.com/api/v1/sms/ingest \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "sender": "3737",
    "body": "You have received Rs. 1,500.00 from ALI KHAN. Trans ID 10293847561. Balance Rs. 25,000.00",
    "received_at": "2026-09-14T06:00:00Z"
  }'
GET /api/v1/system/health
Public Health Probe

Monitors database, cache, and processing health status. Used by UptimeRobot, Pingdom, and uptime monitors.

curl -X GET https://tezverify.com/api/v1/system/health

🔒 Verifying Inbound Webhook Signatures (HMAC-SHA256)

Every webhook event from TezVerify contains an X-TezVerify-Signature header. Verify it using your Webhook Signing Secret to prevent spoofing.

// PHP Webhook Signature Verification Example
$payload = file_get_contents('php://input');
$signature = $_SERVER['HTTP_X_TEZVERIFY_SIGNATURE'] ?? '';
$secret = 'YOUR_WEBHOOK_SECRET';

$calculated = hash_hmac('sha256', $payload, $secret);

if (hash_equals($calculated, $signature)) {
    // Signature verified! Mark order as Paid in your database
    $event = json_decode($payload, true);
    $orderId = $event['data']['client_metadata']['order_id'];
    http_response_code(200);
    echo json_encode(['status' => 'received']);
} else {
    http_response_code(403);
    echo json_encode(['error' => 'Invalid signature']);
}