# Ask before you resend

[Retry a payment](https://devportal.qa.winkpg.io/docs/decide/retry-a-payment.md): Whether a payment that didn't go through is worth sending again, and the request that sends it again without charging the customer twice.

The payment may have gone through. Find out before you send anything that could charge the customer a second time.

**Your answers so far**

- What came back from the payment? Nothing. The request timed out or the connection dropped.

**What to build**

Look the payment up by the idempotency key you sent with it. If a transaction comes back, that's your answer. If none does, resend the original request with the same key: the platform runs it once however many times it arrives.

**Worth knowing**

- This only works if every create carries a key. Choose one per logical payment, store it before you send, and keep it for every attempt at that payment.
- Choose your own client timeout, and run the slow-processor scenario in the sandbox so the timeout path is code you've exercised.

**Where to go next**

- [Retry a payment without a double charge](https://devportal.qa.winkpg.io/docs/blueprints/retry-a-payment-safely.md)
- [Look up a transaction by idempotency key](https://devportal.qa.winkpg.io/docs/api/transactionsGetByIdempotencyKey.md)
- [Getting started with the API](https://devportal.qa.winkpg.io/docs/guides/api-getting-started.md)

- [Start over](https://devportal.qa.winkpg.io/docs/decide/retry-a-payment.md): go back to the first question.

## See also

- [All documentation](https://devportal.qa.winkpg.io/llms.txt): the machine-readable index of every public page on this site.
