Integrations
Built to sit
between things.
TapProof is a layer, not a destination. On one side, the acquiring partner who holds your contract. On the other, whatever system needs to know a payment happened.
Acquiring partners
Who can onboard you
Adapters are written and unit-tested against each provider's documented signature scheme — not aspirational integrations on a roadmap.

Rails
Several ways to carry a payment, one surface to take it
The operator never chooses a rail. The platform decides what the amount, the configuration and the connectivity allow.
Rails
What can carry a payment

Contactless tap

Intent and QR

Offline tap

PIN on glass

Two systems, one bridge
Why adapters, not integrations
Every acquirer signs differently
PayU reverses its user-defined field order on the response. Easebuzz carries ten of those fields where PayU carries five. PhonePe signs a base64 body with SHA-256 and counts in paise.
Each is implemented separately and unit-tested against its documented field order — because two of them produce byte-identical strings until someone uses the sixth field, and a copy-pasted integration would appear to work right up until it did not.
Downstream
Where the record goes
Anything that can verify an HMAC and accept an HTTP POST. There is no SDK to install on your server.
POST https://your-endpoint/tapproof
X-TapProof-Event: payment.collected
X-TapProof-Timestamp: 1804393800
X-TapProof-Signature: v1=<hex>
X-TapProof-Sequence: 42
{
"eventId": "evt_…",
"occurredAt": "2027-03-11T06:30:00.000Z",
"data": {
"amountPaise": 248000,
"rail": "card_contactless",
"scheme": "VISA",
"cardMask": "XXXX XXXX XXXX 4242",
"rrn": "742119003318",
"operator": "OP-DEL-0417",
"geo": { "lat": 28.6139, "lng": 77.2090 },
"totalCollected": 248000,
"outstandingAfter": 0
}
}