Webhook

Invoice status update delivery

​

JomeInvoice POSTs this event to every matching enabled destination. Verify the HMAC against the raw request bytes; do not parse and re-serialise the body before verification. A 2xx response acknowledges delivery. Every non-2xx response except 410 is retried after 60, 120, and 240 seconds; 410 is terminal. A delivery attempt times out after 30 seconds. Duplicate deliveries are possible, so consumers must be idempotent.

Headers

  • Hex HMAC-SHA256 of {timestamp}.{raw_body_bytes} using the destination client secret.

  • Unix timestamp in seconds. Reject stale timestamps to protect against replay.

  • Identifier of the destination credential used to sign this delivery.

Body·

required
application/json
  • The buyer_name value.

  • The invoice_number value.

  • Raw invoice processing status at the time the delivery was queued.

  • Total payable amount represented as a decimal string.

  • LHDN e-invoice type code; this is not the event name.

  • JomeInvoice invoice ULID.

  • The digital_signature value.

  • Invoice due date in YYYY-MM-DD format when supplied in a request.

  • The failure_reason value.

  • Invoice issue date in YYYY-MM-DD format when supplied in a request.

  • The lhdn_unique_id value.

  • The lhdn_verify_url value.

Responses

  • Delivery accepted.

  • Delivery accepted without a response body.

  • Stop delivery permanently for this destination.

Request Example for postinvoiceStatusUpdated
{
  "buyer_name": "Example Sdn Bhd",
  "digital_signature": "...",
  "due_date": "2026-09-09",
  "failure_reason": null,
  "invoice_number": "INV-0001",
  "issue_date": "2026-08-10",
  "lhdn_unique_id": "EXAMPLELONGID",
  "lhdn_verify_url": "https://myinvois.example/invoice/EXAMPLELONGID",
  "rejected_reason": null,
  "status": "valid",
  "total": "1060.00",
  "type": "01",
  "uuid": "01JEXAMPLEINVOICEULID0000"
}
No Body