☰Authorizations
Client-hosted APIs for Authorizations
Purpose
This guide defines what the Client endpoint (EHI - External Host Interface) must implement when integrating with Payblr for authorizations handling.
Payblr validates inbound traffic, resolves routing, signs outbound requests, and relays payloads to your endpoint. Your endpoint remains the owner of business decisions and transaction processing logic.
What You Receive
Your endpoint receives:
POSTrequest body with the raw JSON payload.Integration headers:
x-correlation-idx-ehi-signaturex-ehi-signature-algorithm(alwayshmac-sha256)x-ehi-signature-timestamp
Security Requirements for Client
Verify
x-ehi-signature-algorithm == hmac-sha256.Rebuild signing payload exactly as:
<timestamp>.<rawRequestBody>
Compute
HMAC-SHA256with the shared secret and compare withx-ehi-signature.Reject stale timestamps (recommended anti-replay window: 5 minutes).
If signature validation fails, return a controlled error (do not process the transaction).
Response Contract (Required)
Return valid JSON with values as strings/numbers (no null for numeric response fields).
1) Authorisation (MTID=0100, Txn_Type=A)
Required in decisional paths:
Acknowledgement="1"+Responsestatus.With this middleware,
ehiMode=1is treated as decisional even ifAuthorised_by_GPS=Y.Typical values:
Approve:
Responsestatus="00"Decline:
Responsestatus="05"Partial:
Responsestatus="10"(when applicable)
2) Reversal (MTID=0400/0420, Txn_Type=D)
Normal success:
Acknowledgement="1"+Responsestatus="00"
Retry requested (temporary failure):
Acknowledgement="0"+Responsestatusin91/92/96
3) Financial / Advice / Non-decisional
Acknowledgement="1"is valid.Responsestatusis optional for these flows.
4) Cut-off (CutOffId present)
Preferred:
Cut_OffResult="1"when processed successfullyCut_OffResult="0"when processing failed
Acknowledgement="1"is also accepted by middleware for compatibility.
Idempotency and Duplicate Handling
Your endpoint must be idempotent. Duplicates can happen due to retries/timeouts.
Recommended dedupe keys:
Txn_ID(or case variant in payload)CutOffIdfor cut-off trafficTraceid_Lifecyclefallback
If request is duplicate:
Do not apply business impact twice.
Return the same logical response as the original handling.
Business Responsibilities (ClientDomain)
These responsibilities must be implemented by Client systems as needed by your program and processing mode:
Authorisation decisioning rules (approve/decline/partial).
Balance and reserve handling.
Reversal and internal reconciliation logic.
3DS/SCA amount-currency-merchant consistency checks.
STIP/balance update business policies (where applicable).
Transaction matching and post-processing.
Performance Targets
Keep client systems processing low-latency (recommended p95 < 1s).
Always respond before timeout (
timeout_msrouting or global timeout).Avoid long blocking operations in the synchronous decision path.
Do/Do Not
Do:
Preserve JSON validity.
Return deterministic responses for retries/duplicates.
Implement structured logs with
x-correlation-id.
Do not:
Return malformed JSON.
Return
nullin numeric response fields.Ignore signature verification in production.
Minimal Response Examples
Authorisation approve:
{ "Acknowledgement": "1", "Responsestatus": "00" }Authorisation decline:
{ "Acknowledgement": "1", "Responsestatus": "05" }Reversal retry:
{ "Acknowledgement": "0", "Responsestatus": "96" }Cut-off success:
{ "Cut_OffResult": "1" }Go-Live Checklist for Client
HMAC signature verification implemented and tested.
Idempotency implemented for
Txn_ID/CutOffId.Response matrix implemented for authorisation/reversal/financial/cut-off.
Timeout budget validated under load.
Structured logs include
x-correlation-id, key transaction fields, and decision outcome.