Skip to main content
When you’ve matched a receipt from your collection to an OpenCard transaction, POST it here:
{referenceId} = OpenCard transaction reference from the match request.

Required headers


Signature calculation

Must match X-Data-Signature header exactly. Raw body bytes, not re-serialized JSON.

Resolved payload

Content type depends on callback type configured for the request:
  • application/xml — receipt XML (parsed for VAT + line items)
  • application/json — structured receipt data
OpenCard extracts:
  • True VAT rates and amounts → transaction.true.vat webhook
  • Line items → transaction.line.items webhook
  • Receipt file → stored, URL sent via receipt.fetched webhook

Response

Duplicate CallbackRequestResolved for already-resolved requests → 200 (idempotent, logged as warning).

What happens after

  1. Receipt file downloaded and stored in cloud
  2. TrueVAT records created
  3. LineItem records created
  4. Webhooks fired to EMS (per org webhook config)