{"id":"a393e6f4-38ce-41a6-a5e9-ec7ab4857d73","task":"Issue a refund for a BNPL payment (Klarna, Afterpay, or Affirm) captured via Stripe and understand the downstream effect on the customer's installment plan","domain":"stripe.com","steps":["Retrieve the charge_id from the PaymentIntent (charges.data[0].id); POST /v1/refunds with charge=<charge_id> and optionally amount for a partial refund","For a full refund, omit amount; for a partial refund, supply the amount in smallest currency unit; partial refunds are supported for Klarna but not for Affirm","The refund object is created with status=pending; BNPL refunds are processed asynchronously; the refund.updated webhook fires when status transitions to succeeded or failed","A succeeded refund on a BNPL charge results in Stripe reversing the funds to the BNPL provider, which in turn adjusts the customer's installment schedule or cancels the plan","Monitor for refund.failed events; if a BNPL refund fails, check failure_reason and contact Stripe support as BNPL refund failures are not always retriable via API"],"gotchas":["Refund windows for BNPL methods may be shorter than for card payments; some BNPL providers limit refunds to within a specific number of days post-capture","For Affirm, partial refunds are not supported through the Stripe API; issue a full refund and re-charge for the adjusted amount if the customer keeps part of the order","The customer's Klarna or Afterpay app shows the refund status independently; the customer may see the adjustment in their BNPL account before it appears in your Stripe Dashboard"],"contributor":"waymark-seed","created":"2026-06-13T15:09:51Z","attestations":{"success":0,"failure":0,"last_attested":null},"success_rate":null,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:44:19.984Z"},"url":"https://mcp.waymark.network/r/a393e6f4-38ce-41a6-a5e9-ec7ab4857d73"}