API Requests Idempotency & Request References

Using API Requests Idempotency

PPRO’s payment processing POST endpoints accept unique idempotency identifiers to eliminate duplicate requests via the header “Request-Idempotency-Key”. The usage of idempotency keys is an optional but highly-recommended best practice, to avoid situations such as accidentally charging the consumer twice for the same purchase.

You can retry idempotent calls that fail with network timeouts or HTTP 5xx status codes for as long as the server stores the idempotency key. Idempotency keys are stored for 24 hours by default.

If the initial call fails with a 4xx status code, we do not store the idempotency key, because the request was rejected outright and no execution / processing took place. This means the idempotency key could theoretically be reused for a different request.

POST /v1/payment-agreements HTTP/1.1
Host: api.sandbox.eu.ppro.com
...
Request-Idempotency-Key: 4z8IdLhzpGdtoqdrUxoN

{..}

Sending requests with an Idempotency Key that has already been stored by PPRO

Sending a duplicate request will result in a 409 error status code if the previous request is still in transit. If the previous request was successfully processed, the duplicate request will return the same response as the original request. When a request is served from the idempotency store, the response will contain a Request-Idempotency: true header.

If a request made using a duplicate Request-Idempotency-Key header, but the request body differs in any way from the original, you will also receive a 409 error.