API REFERENCE

REST. JSON. Bearer auth.

Stable, versioned and small. Every endpoint takes well-formed JSON and returns a predictable shape — including the errors.

BASE URLhttps://api.tapreceipt.com
POST
/v1/receipts
GET
/v1/receipts/:id
DELETE
/v1/receipts/:id
GET
/v1/receipts
POST
/v1/terminals
GET
/v1/terminals/:id
POST
/v1/pucks/provision
POST
/v1/webhooks
POST
/v1/refunds
POST /v1/receipts

Create a receipt

The most-called endpoint. Everything in lines is optional — a total alone is a valid receipt for many tax regimes.

Request
POST /v1/receipts
Content-Type: application/json

{
  "merchant_id": "mer_018E7Q",
  "terminal_id": "trm_NL_AMS_03",
  "currency":    "EUR",
  "total_minor": 940,
  "tax_minor":   164,
  "lines": [
    { "name": "Filterkoffie", "qty": 1, "price_minor": 380, "tax_rate": 0.21 },
    { "name": "Kaneelbroodje","qty": 1, "price_minor": 350, "tax_rate": 0.09 }
  ],
  "metadata": { "order_ref": "POS-44812" }
}
200 OK
{
  "id":           "rcp_018E7Q4N...",
  "object":       "receipt",
  "url":          "https://r.tapreceipt.com/8q3hv2",
  "wallet_pass":  "https://r.tapreceipt.com/8q3hv2/pass",
  "created":      1746200400,
  "currency":     "EUR",
  "total_minor":  940,
  "tax_minor":    164,
  "lines":        [ /* … */ ],
  "merchant_id":  "mer_018E7Q",
  "terminal_id":  "trm_NL_AMS_03"
}
GET /v1/receipts/:id

Retrieve a receipt

GET /v1/receipts/rcp_018E7Q4N...
Authorization: Bearer sk_live_********

200 OK
{
  "id":         "rcp_018E7Q4N...",
  "object":     "receipt",
  "status":     "tapped",
  "tapped_at":  1746200401,
  "url":        "https://r.tapreceipt.com/8q3hv2",
  /* … */
}
WEBHOOKS

Event types

receipt.createdA receipt was created via the API.
receipt.tappedA customer tapped the puck and opened the receipt.
receipt.wallet_savedThe receipt was saved to Apple/Google Wallet.
receipt.deletedA customer deleted their copy from the wallet.
puck.tamperA puck's tamper seal was broken.
terminal.offlineA terminal stopped reporting heartbeats.