A refund made at PayPal does not show up in Agora
A donation still "Received" or a sale still "Delivered" after a refund at PayPal: the PayPal webhook is not set up, or Agora refuses it.
Updated on Oct 5, 2026, 9:25 a.m.
On this page
In short. You refunded (or lost a dispute) at PayPal, but the donation stays Received or the sale stays Delivered in Agora. The cause is almost always the PayPal webhook: it is not set up, or Agora refuses what it receives.
The causes #
| What you see | Cause |
|---|---|
| Nothing moves, and the Webhook ID field is empty in Administration → Configuration → Payments | Without that ID, Agora answers "not configured" to everything arriving at /api/paypal/webhook |
| A red line under the field: "events refused, last refusal on …" | The ID is wrong (from another application) or from a different environment (Sandbox ≠ Live): PayPal does not recognize the signature. The error log keeps a line too |
| The Webhook ID field emptied itself after switching Sandbox ↔ Live | Normal: the ID belongs to one environment, Agora clears it and tells you. Paste the one from the new environment's webhook |
| A partial refund, and the donation stays Received or the sale stays Delivered | Normal: a partial refund does not take the donation out of the totals, it reduces the amount counted (the donation list shows Partly refunded: …). On a dealership sale, it records the amount given back on the row and warns administrators, but the vehicle stays with the player: the decision is yours (Refund returns the rest and takes the vehicle back). Refunding the full amount at PayPal amounts to the full refund |
| A "to check in PayPal" notification | The refund is signed but Agora cannot find the capture, or cannot read its state again at PayPal |
| Nothing after a series of failures | An address that piles up ten failures is paused for a few minutes |
Fix it #
- In Administration → Configuration → Payments, check the environment (Sandbox or Live) and the Webhook ID.
- On the PayPal side (
developer.paypal.com→ your application → Webhooks), check that the address ishttps://your-site/api/paypal/webhook(https) and that the events Payment capture refunded, reversed, denied, completed, Customer dispute created and resolved are ticked (completed delivers a payment that stayed "pending" automatically). - PayPal replays missed events for several days; you can also resend them from Webhooks → Events.
- For a sale already refunded whose vehicle stayed in the garage, use Take the vehicle back in Moderation → Dealership (see Redeliver, refund, take a vehicle back).
The full webhook setup is described in Donation campaigns, section "Refunds made at PayPal".
Was this article helpful?
Related articles
- Donation campaigns (PayPal)Connect PayPal, create a campaign with a goal and milestones, approve the sample campaign, follow and export donations received.
- Redeliver, refund, take a vehicle back: real-money salesDealership sales paid through direct PayPal or Tebex have their own actions: recheck the payment, redeliver, refund, take the vehicle back, mark refunded.
- Site settings and the home pageAdministration → Configuration applies everything live: name, logo, language, public address, theme, Discord, payments, security, map, portal, dealership and tablet.