One event per delivery, but the envelope is ambiguous in the official
material: the webhooks page's example body is an ARRAY while the platform's
own webhooks helper JSON-parses a single object. Both single-event shapes are
accepted (a one-element array is unwrapped); a multi-event array is rejected
(invalid_request) rather than partially processed — silently dropping
trailing events is never acceptable.
Event id: worldline:<type>:<payment.id> (or refund.id without a payment),
the pair Worldline documents as identical across duplicates: two events of
one type on one payment id share an id. payment.test, payment-link events
and deliveries without the pair keep the envelope id, else a body hash.
One event per delivery, but the envelope is ambiguous in the official material: the webhooks page's example body is an ARRAY while the platform's own webhooks helper JSON-parses a single object. Both single-event shapes are accepted (a one-element array is unwrapped); a multi-event array is rejected (invalid_request) rather than partially processed — silently dropping trailing events is never acceptable.
Event id:
worldline:<type>:<payment.id>(orrefund.idwithout a payment), the pair Worldline documents as identical across duplicates: two events of one type on one payment id share an id.payment.test, payment-link events and deliveries without the pair keep the envelopeid, else a body hash.