Payload envelope
All events share this structure:
{
"id": "evt_demo_abc123",
"type": "invoice.paid",
"createdAt": "2024-06-24T12:00:00.000Z",
"organizationId": "org_demo_uuid",
"storeId": "store_demo_uuid",
"storePublicId": "store_demo",
"data": {
"invoice_id": "inv_demo_123",
"integration_id": "int_demo_uuid",
"external_order_id": "order_demo_1048",
"amount": "100.00",
"expected_amount": "100.00",
"received_amount": "100.00",
"difference_amount": "0.00",
"paid_amount": "100.00",
"currency": "USD",
"output_asset": "usdc",
"tx_hash": "demo_tx_hash",
"paid_at": "2024-06-24T12:05:00.000Z",
"payment_url": "https://pay.meum.io/inv_demo_123",
"status": "paid"
},
"_platform": {
"webhookEndpointId": "endpoint_demo_uuid"
}
}
Standard merchant events
invoice.created
Sent immediately after invoice creation. data.status is typically awaiting_payment.
invoice.paid
Sent when full payment is validated. data.paid_at and data.tx_hash are populated.
invoice.underpaid
Sent when partial payment detected. Check difference_amount.
invoice.failed
Sent on payment failure.
invoice.expired
Sent when invoice expires.
invoice.cancelled
Sent when invoice is cancelled.
webhook.test
{
"id": "evt_demo_test",
"type": "webhook.test",
"data": { "message": "Test webhook from Stablecoin Checkout" }
}
invoice.refunded
Not a standard merchant integration event. Do not assume this event is subscribed or delivered by default.
When emitted: Platform status polling detects a refund on an open invoice. The invoice status becomes refunded and invoice.refunded is dispatched.
Not available: Merchant-initiated refund API. Default WooCommerce managed webhook subscriptions do not include this event.
WooCommerce behavior if received: Adds an order note only; does not change order status.
Expected HTTP response
Return HTTP 200 with JSON body acknowledging receipt.
Related pages