Versions at a glance
See Event Types for the full catalog and the v1 → v2 mapping.
The api_version field
Every v2 event carries an api_version field in the envelope so your consumer knows which schema it’s parsing:
data.object payload shape is otherwise identical to v1. api_version is the only additive field.
v1 events do not include
api_version. Branch on the presence of the field, or on the _v2 prefix in type, to route events to the correct handler.How versions are grouped
In the Dashboard App Portal, event types are grouped by the first segment of their name (the part before the first dot). This keeps each version in its own group:payment_v2— payments and refunds. A refund rides on the payment object, so refund events are nested here aspayment_v2.refund.*.subscription_v2— subscription lifecycle events.
payment, subscription, and refund groups remain available for existing v1 endpoints. An endpoint subscribed to v1 receives only legacy names; an endpoint subscribed to v2 receives only _v2 names.
Sunset
v1 and v2 run in parallel for a 90-day overlap, starting August 7, 2026. On November 5, 2026, the v1 event types (payment.*, subscription.*, refund.*) are archived: PayNext stops emitting them and existing endpoints stop receiving them.
Idempotency
Each transition emits exactly once, andevent.id is stable across delivery retries. When PayNext retries a delivery, it reuses the same event.id, so your consumer can safely de-duplicate.
Store processed event.id values and skip any you’ve already handled:
For refund events,
event.id is derived from the payment, the refund status, and the refund’s creation time—retries of the same refund transition carry the same id, while a different refund on the same payment gets its own.