Ingest Transaction
Submit a provider-agnostic POS payload. Hazel normalizes, signs with ES256, and stores the receipt.
Payload
JSON{
"source": {
"provider": "generic-toast-demo",
"providerTransactionId": "ts-demo-cdb302fa",
"providerLocationId": "ts-loc-sanfrancisco"
},
"merchant": {
"merchantId": "merchant_luna_cafe",
"name": "Luna Cafe",
"category": "Cafe",
"location": {
"address1": "100 Market Street",
"city": "San Francisco",
"region": "CA",
"postalCode": "94105",
"country": "US"
}
},
"transaction": {
"occurredAt": "2026-08-06T05:57:59.537Z",
"status": "completed",
"subtotalMinor": 3150,
"taxMinor": 267,
"tipMinor": 200,
"discountMinor": 100,
"totalMinor": 3517,
"currency": "USD"
},
"payment": {
"method": "card",
"brand": "Amex",
"network": "amex",
"last4": "0005",
"cardholderName": "Morgan Blake",
"authorizationCode": "AUTH173",
"expiryMonth": "01",
"expiryYear": "2028"
},
"lineItems": [
{
"description": "Croissant",
"quantity": 2,
"unitPriceMinor": 420,
"grossMinor": 840,
"taxMinor": 71,
"totalMinor": 911
},
{
"description": "Blueberry Muffin",
"quantity": 1,
"unitPriceMinor": 450,
"grossMinor": 450,
"taxMinor": 38,
"totalMinor": 488
},
{
"description": "Oat Milk Latte",
"quantity": 3,
"unitPriceMinor": 620,
"grossMinor": 1860,
"taxMinor": 158,
"totalMinor": 2018
}
],
"rawPayload": {
"demoNonce": "cdb302fa",
"payloadVersion": "demo-1"
}
}Each sample randomizes the merchant, line items, card, and provider. Every payload gets a unique providerTransactionId.