How do you integrate the PRA API?
Integrate once against the TaxBridge canonical invoice API and set X-Tax-Authority: PRA. TaxBridge applies the PRA format, credentials and success rules and returns one normalized result. The four steps are: register and get approved, store your PRA credentials, create an API key, and POST an invoice.
Step 1 — Store your PRA credentials
PRA issues its own credential set. In TaxBridge you enter it once on the Authorities / Credentials form, which renders exactly the fields PRA needs:
Your own numeric POS ID (required in both sandbox and production) plus a production Bearer token. The sandbox Bearer token is a shared public value TaxBridge already holds.
Credentials are AES-256-GCM encrypted at rest and never returned to your app. Don't have production credentials yet? Turn on Use simulator (sandbox) and build your whole integration first — see how to test tax APIs.
Step 2 — Create an API key
Generate a key scoped to the test environment (and optionally pinned to PRA). The full key — tbk_test_... — is shown once and stored only as a SHA-256 hash. Keep it as a secret; a lost key is regenerated, not recovered.
Step 3 — POST your first PRA invoice
Send your canonical invoice to POST /api/v1/invoices with the PRA header and an Idempotency-Key:
curl -X POST https://taxbridge.themetasum.com/api/v1/invoices \
-H "Authorization: Bearer tbk_test_9f3a21c7b4d6e8f0_..." \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 0b6d1c4e-7f9a-4a51-8d3c-2e5f7a91b204" \
-H "X-Tax-Authority: PRA" \
-d '{
"invoiceNumber": "INV-10001",
"invoiceDate": "2026-08-10T10:30:00",
"invoiceType": "Sale",
"currency": "PKR",
"paymentMode": "Cash",
"customer": { "name": "Walk-in Customer" },
"items": [{
"description": "Chicken Karahi Full", "hsCode": "11001010",
"quantity": 1, "unitPrice": 1500.00,
"taxRate": 16, "taxAmount": 240.00, "total": 1740.00
}],
"subTotal": 1500.00, "tax": 240.00, "total": 1740.00
}'Print the returned qrCode on the receipt and store the submissionId so you can query status later.
The PRA quirk TaxBridge handles for you
PRA has no shared sandbox POS ID — you generate your own on the PRA portal. A non-numeric POS ID is reported as a configuration error naming the exact field. Buyer PNTN is carried on the payload.
Step 4 — Go to production
Once your sandbox flow is verified, complete company and branch configuration, store your production credentials and generate a tbk_live_ key. Sandbox and production stay completely separate — a sandbox key never files a real PRA invoice. See production onboarding.
Frequently asked questions
What software needs PRA integration?
Can I test PRA before I have real credentials?
How long does PRA integration take?
Related
PRA API page · API documentation · POS integration · Sandbox