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-25a4188b",
    "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-06-05T04:27:17.194Z",
    "status": "completed",
    "subtotalMinor": 6010,
    "taxMinor": 512,
    "tipMinor": 300,
    "discountMinor": 0,
    "totalMinor": 6822,
    "currency": "USD"
  },
  "payment": {
    "method": "card",
    "brand": "Mastercard",
    "network": "mastercard",
    "last4": "8888",
    "cardholderName": "Sam Chen",
    "authorizationCode": "AUTH623",
    "expiryMonth": "06",
    "expiryYear": "2027"
  },
  "lineItems": [
    {
      "description": "Matcha Latte",
      "quantity": 2,
      "unitPriceMinor": 680,
      "grossMinor": 1360,
      "taxMinor": 116,
      "totalMinor": 1476
    },
    {
      "description": "Blueberry Muffin",
      "quantity": 3,
      "unitPriceMinor": 450,
      "grossMinor": 1350,
      "taxMinor": 115,
      "totalMinor": 1465
    },
    {
      "description": "Avocado Toast",
      "quantity": 2,
      "unitPriceMinor": 1100,
      "grossMinor": 2200,
      "taxMinor": 187,
      "totalMinor": 2387
    },
    {
      "description": "Cold Brew",
      "quantity": 2,
      "unitPriceMinor": 550,
      "grossMinor": 1100,
      "taxMinor": 94,
      "totalMinor": 1194
    }
  ],
  "rawPayload": {
    "demoNonce": "25a4188b",
    "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