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
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"
}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",
/* … */
}