Once the Zip checkout flow has redirected the customer to your previously defined "redirect_uri," that page should consume the the state of the checkout to determine if it has been approved or declined. If the checkout has been approved, this page should then proceed to charge the customer.


Useful notes

  • Metadata set at the checkout will be returned in the response of this call.
  • If you don’t have server-side sessions you can use GET /checkouts/{checkoutId} to get the amount and currency to capture. The checkoutId should be in the query string.
  • You cannot charge more than the amount that was originally agreed upon within the checkout flow by the customer.
  • Remember that if you want to immediately transfer the funds from the customer to the merchant account, to set capture=true. If you want only to authorize the transaction (and ring-fence the funds in the customer account so that they cannot be used for other transactions) then set capture=false. If you set capture=false you will need to make a later call to /charges/{id}/capture or /charges/{id}/cancel to either capture (and transfer) the funds or to cancel the auth (This functionality is available for AU transactions only at present)
  • Regardless of whether you passed order.id in to checkout you can ensure the merchant order id is updated to the correct/latest order id by passing it in to this call. It will overwrite anything passed in to /checkouts
  • The "redirect_uri" must have been followed and the checkout approved before a charge can be authorized using a particular "checkout_id".
  • The reference number for each charge must be unique, be sure to modify the below example request with your merchant reference number in the request JSON under order.reference.
  • A successful charge request will return state="Approved", or state="Captured" or state="Authorised". This indicates that the payment has been completed.

Example Request

  "authority": {
    "type": "checkout_id",
    "value": "{{checkout_id}}"
  "amount": 100,
  "currency": "USD",
  "capture": false,