A founder once messaged me with a problem that sounded almost too simple to be real. Customers were saying they never received their refund. Support would check the payment provider's dashboard, see the refund clearly marked as processed, and tell the customer it was sent. The customer would insist it never showed up. Both sides were technically right, and that is exactly what made it so hard to track down.
The refund had genuinely gone through on the provider's side. What had not happened was anything on the backend's side. The internal record still showed the original payment as final, no refund entry existed anywhere in the ledger, and no email had gone out to tell the customer anything had changed. The money moved, but the system never found out.
Where this actually breaks
The refund flow looked simple on paper, call the provider's refund endpoint, and if it succeeds, mark the transaction as refunded.
@Injectable()






