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.

Signed Receipt

The signed receipt will appear here

Submit a transaction to see the result