{
  "id": 2381365,
  "title": "You issued the refund. They kept the money.",
  "url": "https://urgent.news/2026/08/21/you-issued-the-refund-they-kept-the-money",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-08-21T13:24:35.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/veristria/you-issued-the-refund-they-kept-the-money-4e7f"
  },
  "original_language": "en",
  "account": "A customer requests a refund for a charge, and the platform promptly issues the refund, crediting the customer's account. However, the funds are not immediately returned to the platform's balance. Instead, the refund process involves three separate movements: the initial charge, the application fee, and the transfer to the connected account. When a refund is issued, these movements are reversed only if explicitly requested. By default, the platform keeps the application fee and the transfer, resulting in financial losses for the platform. This issue arises due to missing flags in the refund process, which defaults to false, leaving the platform fully responsible for the refunded amount. The consequences of this error are subtle, as the API calls return a 200 status, and there are no error alerts or logs to flag the issue. To identify these losses, one must manually cross-reference refunds with transfers and application fees, ensuring that the reversal amounts align with the terms of service. This oversight can lead to significant financial losses, especially when dealing with partial refunds over an extended period.",
  "summary": "You issued the refund. They kept the money. Originally published on feeguard.dev . Syndicated here with a canonical link back to the original. A customer asks for their money back. You refund the charge. Stripe returns the funds, the customer is satisfied, the support ticket closes. The connected account keeps the transfer. Nothing in that sequence is a bug. Stripe did exactly what it was asked…",
  "key_points": [],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}