---
title: "Create a checkout"
method: POST
path: "/checkouts"
---

# Create a checkout

`POST /checkouts`

The first API call you will make in processing a Zip payment is a call to our /checkouts endpoint. This request is made once a customer chooses to use Zip as their payment method at checkout and will contain all order and customer information. The Zip API will then provide a response that includes a redirect url, allowing you to point the customer to the Zip checkout flow where they will complete their application or log in to their Zip account to confirm the payment.

## Headers

- `Authorization` string, required
- `Zip-Version` string, date, required

## Request body

- object
  - `shopper` object, required — Customer information object
    - `shopper.title` string — Title of shopper (Mr, Mrs, etc). Must be characters of alphabet only.
    - `shopper.first_name` string — First name of shopper. Required for BHD, SAR, and AED.
    - `shopper.last_name` string — Last name of shopper.
    - `shopper.middle_name` string — Middle name of shopper. Must be characters of alphabet only.
    - `shopper.phone` string — Phone number of shopper. Must only be numerals (no spaces, special characters or alphabet characters)s).
    - `shopper.email` string — Email address of shopper. Required for BHD, SAR, and AED
    - `shopper.gender` string — The shopper’s gender. Possible values: Male or Female
    - `shopper.birthdate` string, date — Birth date of buyer in format of yyyy-mm-dd.
  - `order` object, required — Order details object.
    - `order.reference` string, required — Unique order reference id. Can also be passed in to /charges call. If left out one will be automatically generated at this point.
    - `order.amount` string, required — Total amount of order. This is the amount that is charged to the customer’s zip account.
    - `order.currency` string, required — Transaction currency. Accepted values are AUD, NZD, GBP, USD, ZAR, SGD, and MXN.
    - `order.shipping` object, required — Shipping object.
    - `order.items` string, required — Order items object. Required for or USD, GBP, NZD,SGD, and MXN.
  - `features` object — Feature object for extra features required on this checkout
    - `features.tokenisation` object — Tokenisation object – required if you are requesting to tokenise the user’s account.
  - `config` object, required
    - `config.redirect_uri` string — Redirect URI – where the customer is redirected to following placement of order. This will be an intermediate page or endpoint that performs order finalization, including charging or tokenizing account.
  - `metadata` object — Object containing name value pairs of meta data to be returned whenever recalling this checkout object.

## Response `200`

200

- object
  - `shopper` object
    - `title` string
    - `first_name` string
    - `last_name` string
    - `email` string
    - `phone` string
    - `billing_address` object
      - `first_name` string
      - `last_name` string
      - `line1` string
      - `city` string
      - `state` string
      - `postal_code` string
      - `country` string
  - `order` object
    - `reference` string
    - `amount` integer
    - `currency` string
    - `items` object[]
      - `name` string
      - `amount` integer
      - `quantity` integer
      - `type` string
      - `reference` string
      - `image_uri` string
      - `item_uri` string
    - `shipping` object
      - `pickup` boolean
  - `config` object
    - `redirect_uri` string
  - `id` string
  - `uri` string
  - `type` string
  - `created` string
  - `state` string

---

[API](https://skmtc.dev/zip/apis/gateway-api.md) · [All operations](https://skmtc.dev/zip/apis/gateway-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/zip/gateway-api/revisions/4b1127fdca1e/schema)
