Inspiration In Australia, a bounced direct debit costs roughly 20 dollars to both the business and the customer, and most billing systems respond by blindly retrying the same payment on the same day, which fails again. We wanted a smarter recovery layer that reads why a payment failed and does the right thing about it.

What it does Recoupe is a failed-payment recovery layer that sits on top of the Pinch Payments API for Australian direct debits and cards. When a payment dishonours, Recoupe reads Pinch's bank result, maps the dishonour reason to a tailored rescue plan instead of a blind retry, and reaches out to the customer with the right message and timing. It also runs a pre-debit nudge that asks the customer about their payday so a debit lands when money is actually in the account, preventing the dishonour before it happens.

The business case Every recovered debit is real money saved for the merchant and a fee avoided for the customer. The buyer is any Australian subscription or services business on Pinch that loses revenue to bounced direct debits. It is a drop-in layer on an existing payments stack, so the path to a paying customer is short.

How we built it Full-stack TypeScript: a Vite and React client, a Node server. Pinch Payments API integration: a typed client, a results poller, and webhook handling with HMAC signature verification and SQLite event de-duplication so nothing is processed twice. A reason-aware decision engine that maps the seven dishonour codes to distinct recovery actions. Personalized customer outreach, with pitch narration generated by ElevenLabs. Deployed live on the real Pinch sandbox.

Challenges we ran into Payment webhooks are noisy and can arrive more than once, so idempotency and signature verification had to be right before any recovery action fired. Mapping each dishonour reason to a genuinely useful next step, rather than a one-size retry, was the core design work.

What we learned The value is not in retrying harder, it is in reading the reason and matching the response. A small, correct decision layer on top of an existing payments API can recover revenue that would otherwise be written off.

What's next

Broaden beyond Pinch to other Australian payment rails, add outcome analytics per dishonour reason, and turn the payday nudge into an opt-in prevention product for merchants.

Built With

Share this project:

Updates