{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/cash-app/main/json-schema/cash-app-get-checkout-response-200-schema.json", "title": "get-checkout_Response_200", "x-generated": "2026-10-12", "x-method": "derived", "x-generator": "derive-json-schema.py", "x-source": "openapi/cash-app-checkouts-api-openapi.yml#/components/schemas/get-checkout_Response_200", "type": "object", "properties": { "token": { "type": "string", "description": "Checkout token to be used to complete payment." }, "expires": { "type": "string", "description": "The UTC timestamp of when the checkout token will expire, in ISO 8601 format." }, "redirectCheckoutUrl": { "type": "string", "description": "A URL that can be used to redirect the customer to the Afterpay screenflow directly from the merchant backend." }, "amount": { "$ref": "#/$defs/Money" }, "consumer": { "$ref": "#/$defs/Consumer" }, "merchantReference": { "type": "string" }, "billing": { "$ref": "#/$defs/Contact" }, "shipping": { "$ref": "#/$defs/Contact" }, "merchant": { "$ref": "#/$defs/CheckoutRequestMerchant" }, "items": { "type": "array", "items": { "$ref": "#/$defs/Item" } }, "courier": { "$ref": "#/$defs/Shipping-Courier" }, "taxAmount": { "$ref": "#/$defs/Money" }, "shippingAmount": { "$ref": "#/$defs/Money" }, "discounts": { "type": "array", "items": { "$ref": "#/$defs/Discount" } }, "description": { "type": "string" }, "mode": { "type": "string", "default": "standard", "description": "Must be set to `express` to enable express checkout.\nAllowed values: `express` `standard`" } }, "required": [ "amount", "consumer" ], "$defs": { "CheckoutRequestMerchant": { "type": "object", "properties": { "redirectConfirmUrl": { "type": "string" }, "redirectCancelUrl": { "type": "string" }, "popupOriginUrl": { "type": "string", "description": "The URL location from which Afterpay is initiated (required for express checkout). Optional for standard checkout when a `redirectConfirmURL` is provided." }, "name": { "type": "string", "description": "The merchant name displayed in the Afterpay checkout flow, confirmation & refund emails, and the consumer portal" } }, "required": [ "redirectConfirmUrl", "redirectCancelUrl" ], "title": "CheckoutRequestMerchant" }, "Consumer": { "type": "object", "properties": { "email": { "type": "string", "format": "email" }, "givenNames": { "type": "string", "description": "The consumer's first name" }, "surname": { "type": "string", "description": "The consumer's last name" }, "phoneNumber": { "type": "string" } }, "required": [ "email" ], "description": "The consumer data model is used for gathering essential user information. It captures details such as the individual's first name, represented by `givenNames`, and their last name, captured under `surname`. In addition, it stores the user's contact number under `phoneNumber` and their email address under `email`. These fields collectively provide contact and identification details for a user.", "title": "Consumer" }, "Contact": { "type": "object", "properties": { "name": { "type": "string" }, "line1": { "type": "string", "description": "First line of the address" }, "line2": { "type": "string", "description": "Second line of the address " }, "area1": { "type": "string", "description": "- AU: Suburb\n- NZ: Town or City\n- UK: Postal Town\n- US: City\n- Canada: City" }, "area2": { "type": "string", "description": "- NZ: suburb\n- UK: village or local area." }, "region": { "type": "string", "description": "- AU: State \n- NZ: Region\n- UK: County\n- US: State\n- CA: Province or Territory" }, "postcode": { "type": "string" }, "countryCode": { "$ref": "#/$defs/ContactCountryCode" }, "phoneNumber": { "type": "string", "description": "The phone number, in [E.123](https://en.wikipedia.org/wiki/E.123) format." } }, "required": [ "name", "line1", "area1", "region", "postcode", "countryCode" ], "description": "This data model is used for storing an individual's contact information. Mandatory fields such as **name**, **line1**, **area1**, **region**, **postcode**, and **countryCode** help in capturing vital information about a user's location. \n\nThe `line2` and `area2` fields provide additional space for extended addresses, while `phoneNumber` can be used to store the user's contact number.\n\n\n\n The `area1`, `area2` and `region` properties feature localized terminology based on country. Refer to the property descriptions for insights on each country's specific usage \n\n", "title": "Contact" }, "ContactCountryCode": { "type": "string", "enum": [ "AU", "NZ", "US", "CA", "GB" ], "title": "ContactCountryCode" }, "Discount": { "type": "object", "properties": { "displayName": { "type": "string" }, "amount": { "$ref": "#/$defs/Money" } }, "description": "Discount applied to an order", "title": "Discount" }, "Item": { "type": "object", "properties": { "name": { "type": "string" }, "sku": { "type": "string" }, "pageUrl": { "type": "string" }, "imageUrl": { "type": "string" }, "quantity": { "type": "integer" }, "price": { "$ref": "#/$defs/Money" }, "categories": { "type": "array", "items": { "type": "array", "items": { "type": "string" } } }, "estimatedShipmentDate": { "type": "string", "format": "date" }, "preorder": { "type": "boolean", "default": false } }, "required": [ "name", "quantity", "price" ], "description": "This data model is used to store crucial product details. The `price.amount` field represents the unit price of the individual item. The `quantity` field shows the number of units of the item. The `name` field denotes the name of the product, while `sku` holds the Stock Keeping Unit identifier. 100 is the maximum number of item objects in the items array.\n\n It is crucial that the `price.amount` represents the unit price of the individual item.\n **Never** populate the `price.amount` by multiplying the quantity by the unit cost. Always enter the price for a single unit to maintain data accuracy.\n\n", "title": "Item" }, "Money": { "type": "object", "properties": { "amount": { "type": "string", "description": "The amount as a string representation of a decimal number, rounded to 2 decimal places." }, "currency": { "$ref": "#/$defs/MoneyCurrency" } }, "required": [ "amount", "currency" ], "description": "Object containing amount and currency", "title": "Money" }, "MoneyCurrency": { "type": "string", "enum": [ "AUD", "NZD", "USD", "CAD", "GBP" ], "title": "MoneyCurrency" }, "Shipping-Courier": { "type": "object", "properties": { "shippedAt": { "type": "string", "format": "date-time" }, "name": { "type": "string" }, "tracking": { "type": "string" }, "priority": { "$ref": "#/$defs/ShippingCourierPriority" } }, "description": "Essential information for tracking a shipment. The `shippedAt` key represents the date and time when the item was shipped. This value follows the [ISO 8601 standard format](https://www.iso.org/iso-8601-date-and-time-format.html) for date and time representations.\n\nThe `name` field indicates the courier service employed to handle the shipment (e.g. FEDEX, UPS). For orders that are picked up in-store (also known as Buy-Online-Pickup-Instore), please use \"INSTORE_PICKUP\" as the `name` field value.\n\nThe `tracking` key represents a unique tracking number provided by the courier service to monitor the shipment's progress. It's a valuable tool for customers and businesses to track and trace their packages.\n\nThe `priority` field tracks the shipping speed or service level associated with the delivery. ", "title": "Shipping-Courier" }, "ShippingCourierPriority": { "type": "string", "enum": [ "STANDARD", "EXPRESS" ], "title": "ShippingCourierPriority" } } }