Retry-safe webhook processing
Stable payment references and duplicate checks protect settlement processing during repeated webhook delivery
Source · Public GitHub repository
Project case study · APIs
NestJS integration service that validates Payone webhooks, reconciles payments, and updates ERPNext sales invoices through retry-safe processing.
Read this case as a
Outcome-focused delivery
Built a backend integration connecting an external payment provider with ERPNext accounting workflows, including validation, failure handling, and duplicate protection.
Evidence mode · on
Each outcome shows its source, related capability, and confidence level. Missing operational data stays visibly unavailable.
Stable payment references and duplicate checks protect settlement processing during repeated webhook delivery
Source · Public GitHub repository
Successful payment events are mapped to ERPNext sales-invoice operations
Source · Public GitHub repository
Valid payment notifications trigger the accounting update workflow without requiring the same manual entry process
Source · Operational workflow description
Skill → proof
01 / Problem
Manually recording Payone payments in ERPNext delayed invoice settlement and introduced a risk of missing or duplicated accounting updates. Webhook retries could also repeat the same financial operation if processing was not designed to be idempotent.
02 / Solution
I developed a NestJS integration service that validates Payone webhook requests, identifies the related ERPNext invoice, and applies the appropriate settlement update. Stable payment references and duplicate checks protect the accounting workflow during webhook retries.
Architecture replay
Select a layer to inspect its responsibility.
Payone payment gateway owns the user-facing workflow and consumes a stable contract.
03 / Challenges overcome
The integration needed to verify webhook authenticity, map external payment references to ERPNext records, and return acknowledgments without creating duplicate ledger changes. Failure and retry behavior had to be explicit because the workflow affected accounting records.
Next step
Share the context and we’ll find a useful first move.