Ingest Transaction
Submit a provider-agnostic POS payload. Hazel normalizes, signs with ES256, and stores the receipt.
Payload
JSON{
"source": {
"provider": "generic-square-demo",
"providerTransactionId": "sq-demo-981c927b",
"providerLocationId": "sq-loc-losangeles"
},
"merchant": {
"merchantId": "merchant_salt_ramen",
"name": "Salt Ramen",
"category": "Restaurant",
"location": {
"address1": "330 E 1st Street",
"city": "Los Angeles",
"region": "CA",
"postalCode": "90012",
"country": "US"
}
},
"transaction": {
"occurredAt": "2026-10-07T10:15:18.303Z",
"status": "completed",
"subtotalMinor": 4300,
"taxMinor": 366,
"tipMinor": 500,
"discountMinor": 200,
"totalMinor": 4966,
"currency": "USD"
},
"payment": {
"method": "card",
"brand": "Amex",
"network": "amex",
"last4": "0005",
"cardholderName": "Morgan Blake",
"authorizationCode": "AUTH920",
"expiryMonth": "01",
"expiryYear": "2028"
},
"lineItems": [
{
"description": "Iced Tea",
"quantity": 2,
"unitPriceMinor": 450,
"grossMinor": 900,
"taxMinor": 77,
"totalMinor": 977
},
{
"description": "Citrus Spritz",
"quantity": 3,
"unitPriceMinor": 850,
"grossMinor": 2550,
"taxMinor": 217,
"totalMinor": 2767
},
{
"description": "Citrus Spritz",
"quantity": 1,
"unitPriceMinor": 850,
"grossMinor": 850,
"taxMinor": 72,
"totalMinor": 922
}
],
"rawPayload": {
"demoNonce": "981c927b",
"payloadVersion": "demo-1"
}
}Each sample randomizes the merchant, line items, card, and provider. Every payload gets a unique providerTransactionId.