Skip to content
No hardwareTurn the phones your people already carry into card machines. No terminal to buy or rent.Get started →
TapProofGet started

Product

One tap surface.
Several rails beneath it.

The agent presses one button. TapProof decides which rail can actually carry the amount, whether the device is fit to transact, and whether the visit is permitted at all.

Rails

Why the card rail matters

UPI reaches RuPay credit only. Visa and Mastercard credit — the bulk of India's card base — cannot pay over UPI at all. Wherever the customer is standing in front of you with a card, that gap is the whole reason a card rail exists.

Amount

₹2,000

3 of 4 rails available

₹100₹5,000 ceiling₹15,000
  • Card · tapno PIN required at this amount
  • UPI · intentavailable at any amount within UPI limits
  • UPI Lite · tappre-funded, works offline
  • Card · tap + PINphase two — PIN on glass is not certified yet

The ₹5,000 no-PIN contactless ceiling is unchanged since 1 January 2021 (RBI DPSS.CO.PD No.752/02). Phase one launches below it, which covers the great majority of doorstep, delivery and field-service transactions.

One surface, several rails

The operator presses one button.
We decide what can carry it.

Amount, merchant configuration and connectivity choose the rail. The app renders what it is told — it never invents policy of its own.

At the door

What happens in the twenty seconds that matter

Your operator is standing in front of a customer. Every decision below is made before the card is presented, so nothing fails in front of the person paying.

Before

Is this device fit?

Play Integrity verdict, hardware-keystore identity, root and tamper checks, security-patch age. No valid attestation, no session. It fails closed.
Before

Is this visit permitted?

Operator authorisation and, where a sector demands it, verification, prior notice and permitted contact hours — all checked server-side first.
Then

Which rail can carry it?

Amount, merchant configuration and connectivity decide. The app renders what it is told; it never invents policy of its own.

The twenty seconds that decide everything

At the door

Nothing fails in front of the customer

Every check that could refuse has already run by the time the card comes out. What is left is a tap.

A terminal that declines after the card is presented has already cost you the moment — and, often, the customer’s patience. TapProof front-loads every decision it can, so the only thing that can happen at the card is the payment.

Two shapes

Ships as an SDK and as an app, from one codebase

A fix in the standalone app is a fix for every embedding partner in the same release. There is deliberately one payment implementation, not two.

Embedded SDK

Drops into an app you already ship

An Android AAR for your collections or delivery app. You own authentication and hand TapProof a short-lived token — your agent never logs in twice.

val collect = rememberLauncherForActivityResult(TapProofContract()) {
    when (it) {
        is Approved  -> markCollected(it.rrn, it.amountPaise)
        is Declined  -> offerAnotherCard(it.reason)
        is Cancelled -> Unit
        is Failed    -> showError(it.message)
    }
}
collect.launch(CollectRequest(amountPaise = 250_000))
Standalone app

For a field force with no app of its own

Distributed through managed Google Play as a private app under Android Enterprise, which also gives the fleet MDM, forced updates and remote wipe.

That is deliberate. Play Integrity returns strong verdicts for Play-installed apps and weak ones for sideloads, and TapProof fails closed on a weak verdict. A rooted or tampered handset cannot open a payment session.

Device policy

Android 10+ with NFC. Enrolled against a hardware-backed keystore identity, re-attested on a four-hour heartbeat, hard-failed at twenty-four.