Updated August 27, 2026 · 7 min read · Written by ProposalAI
Node.js Proposal Example (Webhooks and Duplicate Charges)
A client with duplicate payment webhooks does not need a Node tutorial. They need someone who talks about idempotency and a first diagnostic step.
Example job situation
An ecommerce backend on Node/Express occasionally double-charges. Logs show the payment provider retrying webhooks. They want a contractor who has handled retries, not a general “I can build APIs” pitch. They asked: have you used idempotency keys?
Weak / generic proposal
Hello, I am a Node.js developer. I can build REST APIs, GraphQL, microservices, and real-time apps with Socket.io. I have 6 years of experience and I write scalable code. I can fix your backend problems and add any features you need. Let’s get on a call today so I can start.
Why this is weak
- It never mentions webhooks, retries, or double charges.
- It offers GraphQL and Socket.io that the post did not ask for.
- It pushes an off-platform call in the first message.
Improved proposal
Hi — I would treat this as an idempotency problem on the webhook handler, not as a general API rewrite. I have used idempotency keys on a Node/Express order service: store the provider event id, return 200 on duplicates, and only create the charge side-effect once. First step I would take here is reproducing a retry in staging with the same event payload twice and showing you the second request is a no-op. Have you already persisted the provider’s event id anywhere, or is the handler still creating orders on every POST? And do you want failed events in a dead-letter collection we can replay, or only a unique index for now?
Why this is stronger
- It answers the idempotency question with a concrete habit, not a yes.
- The first step is diagnostic and visible to the client.
- Questions distinguish a one-line unique index from a fuller retry pipeline.
Personalization points
- Name Express, Fastify, or Nest only if they did.
- Do not promise “never double-charge again” — describe the mechanism.
- Ask which provider (Stripe, Adyen, etc.) if the post omitted it; the dashboard tools differ.
Questions you could ask
- Which payment provider is sending the webhooks?
- Is there already a unique order id from checkout?
- Staging available, or only production logs?
Advertisement