Skip to content

Webhooks & refunds

Webhook URL

Payments are confirmed by euPago calling back into pretix. Configure one URL in euPago's Backoffice (Channels → Channel Listing → "Receive notification for a URL"), for every channel you use:

https://<your-pretix-domain>/eupago/webhook/

This URL is global — not per event — and handles both euPago webhook formats:

Format Verified against
v1.0 (GET) your configured API key
v2.0 (POST) your webhook signature secret, if set; otherwise a weaker cross-check only

The optional "encrypt" webhook setting in Backoffice is supported too — the payload is decrypted with the same secret.

Warning

Without a webhook, payments are never confirmed and orders stay pending until they expire.

Cancellations and expiry

A v2.0 Cancel or Expired notification (e.g. the buyer rejected the MB WAY request, or a Multibanco reference expired) fails the pending payment. A stray notification arriving after the payment was confirmed is ignored.

Refunds

Refunds cannot be started from pretix — issue them in euPago's Backoffice. When euPago then sends a Refund/Refunded notification, the plugin records an external refund on the pretix payment.

euPago's notification carries no refund amount, so it's always recorded as a full refund, and only once per payment — webhook retries don't double-refund.

If you also use pt-invoicing, that full refund triggers a credit note automatically.