Skip to main content

Handle purchase callbacks

Walley Checkout will send a GET request with TLS to the notification URI that was provided in the initialize Checkout step for the following events:

1. Completed Purchase. A purchase has been successfully completed by the end customer. When you acquire checkout information the state of the Checkout has transferred to PurchaseCompleted and the invoice status is one of the values described in data.purchase.result below.

2. Invoice Status update. An invoice has been approved or rejected by Walley's anti-fraud system (if that feature is configured on your account), or the Invoice required the end customer to digitally sign a credit agreement and this has been completed by the end customer. When you acquire checkout information the invoice status has transferred to one of the values described in data.purchase.result below. Please note that if the invoice was Cancelled before the notification callback arrived, the invoice is considered Cancelled regardless what the value of data.purchase.result is.

3. Pay Link is cancelled. If using the checkout as a Pay Link and a checkoutAbortedRedirectPageUri is provided at Initialize Checkout, a notification callback will be sent if the cancel button is called. The customer will be redirected to the redirect page and a notification will be triggered.

Idempotency and retries​

Please note the Checkout will attempt to notify the provided notification URI multiple times with increasing backoff time until a HTTP status code 200 is received in the response. Our retry mechanism is built in a way that we guarantee at-least-once-delivery and the notification URI endpoint must therefore support being called multiple times without side effects.

The notification callback is sent instantly and if the endpoint did not answer with a 200 OK status a retry will be made after:

  • 5 seconds
  • 10 seconds
  • 3 minutes
  • 1 hour
  • 4 hours
  • 8 hours
  • 16 hours
  • 24 hours

If the notification endpoint did not answer with a 200 OK status after the last retry (after about 80 hours), we will handle this manually and contact you before retrying again.