Agora

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
  1. The causes
  2. Fix it

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 seeCause
Nothing moves, and the Webhook ID field is empty in Administration → Configuration → PaymentsWithout 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 ↔ LiveNormal: 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 DeliveredNormal: 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" notificationThe refund is signed but Agora cannot find the capture, or cannot read its state again at PayPal
Nothing after a series of failuresAn address that piles up ten failures is paused for a few minutes

Fix it #

  1. In Administration → Configuration → Payments, check the environment (Sandbox or Live) and the Webhook ID.
  2. On the PayPal side (developer.paypal.com → your application → Webhooks), check that the address is https://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).
  3. PayPal replays missed events for several days; you can also resend them from Webhooks → Events.
  4. 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?