import { Address } from './address'; import { Customer } from './customer'; import { DiscountCode } from './discount_code'; import { LineItem } from './line_item'; import { NoteAttribute } from './note_attribute'; import { ShippingLine } from './shipping_line'; import { ShippingRate } from './shipping_rate'; import { TaxLine } from './tax_line'; /** * Represents an abandoned checkout. */ export interface Checkout { /** * A unique identifier for a particular checkout. */ token: string; /** * The discount metadata generated by applying a discount code. A custom discount can also be added by specifying values for amount, title, description, value, and value_type. */ applied_discount: { /** * The amount that is deducted from payment_due in presentment currency. */ amount: string; /** * The title to categorize the applied discount. */ title: string; /** * The description of the applied discount. */ description: string; /** * The value that was used to calculate the final applied discount amount. */ value: string; /** * The type of value that was used to calculate the final applied discount amount. Valid values: `fixed_amount` and `percentage`. */ value_type: 'fixed_amount' | 'percentage'; /** * The reason why the discount is not applicable, if the discount cannot be applied to the checkout. */ non_applicable_reason: string | null; /** * Whether this discount code can be applied to the checkout. */ applicable: boolean; }; /** * The recovery URL that's sent to a customer so they can recover their checkout. * @deprecated */ abandoned_checkout_url?: string; /** * The mailing address associated with the payment method. * @readonly */ billing_address: Address; /** * Whether the customer would like to receive email updates from the shop. * This is set by the "I want to receive occasional emails about new products, promotions and other news" checkbox during checkout. */ buyer_accepts_marketing: boolean; /** * The ID for the cart that's attached to the checkout. * @deprecated */ cart_token?: string | null; /** * The date and time (ISO 8601 format) when the checkout was closed. If the checkout was not closed, then this value is null. * @readonly */ closed_at: string | null; /** * The date and time (ISO 8601 format) when the checkout was completed. For abandoned checkouts, this value is always null. * @readonly */ completed_at: string | null; /** * The date and time (ISO 8601 format) when the checkout was created. * @readonly */ created_at: string; /** * The three-letter code (ISO 4217 format) of the shop's default currency at the time of checkout. * For the currency that the customer used at checkout, see presentment_currency. * @readonly */ currency: string; /** * Information about the customer. For more information, see the Customer resource. */ customer: Customer; /** * The two or three-letter language code, optionally followed by a region modifier. * Example values: en, en-CA. */ customer_locale: string | null; /** * The ID of the Shopify POS device that created the checkout. */ device_id: number | null; /** * Discount codes applied to the checkout. Returns an empty array when no codes are applied. */ discount_codes: DiscountCode[]; /** * The customer's email address. */ email: string | null; /** * The payment gateway used by the checkout. For abandoned checkouts, this value is always null for abandoned checkouts. */ gateway: string | null; /** * The URL for the page where the customer entered the shop. */ landing_site: string; /** * A list of line items, each containing information about an item in the checkout. */ line_items: LineItem[]; /** * The ID of the physical location where the checkout was processed. */ location_id: number | null; /** * The text of an optional note that a shop owner can attach to the order. */ note: string | null; /** * Extra information that is added to the order. */ note_attributes: NoteAttribute[]; /** * An object containing the ID, name, and status page URL of the associated order when the checkout is complete. * Default value: null. * @readonly */ order: { id: number; name: string; status_url: string; } | null; /** * The amount left to be paid in presentment currency. * This is equal to the sum of the checkout line prices, taxes, and shipping minus discounts and gift cards. * @readonly */ payment_due: string; /** * The URL that must be used to store credit cards in Shopify's card vault. * These URLs are subject to change, so you should always use the one supplied here. * The general pattern for the URLs is https://elb.deposit.shopifycs.com/sessions. * @readonly */ payment_url: string; /** * The customer's phone number. */ phone: string | null; /** * The three-letter code (ISO 4217 format) of the currency that the customer used at checkout. * For the shop's default currency, see currency. * */ presentment_currency: string; /** * Whether the checkout requires shipping. * If true, then `shipping_line` must be set before creating a payment. * @readonly */ requires_shipping: boolean; /** * The website that referred the customer to the shop. */ referring_site: string | null; /** * The mailing address where the order will be shipped to. */ shipping_address?: Address; /** * The selected shipping rate. * A new shipping rate can be selected by updating the value for `handle`. * A shipping line is required when `requires_shipping` is `true`. * Learn more about selecting shipping rates: https://shopify.dev/docs/admin-api/rest/reference/sales-channels/checkout#shipping_rates */ shipping_line: ShippingLine; /** * Information about the chosen shipping method. */ shipping_lines: ShippingLine[]; /** * The selected shipping rate. This property is not writable. * @readonly */ shipping_rate: ShippingRate; /** * undocumented; always null in test data */ source?: null | any; /** * undocumented string, which seems to be of the format `${location_id}-${POS_DEVICE_ID}-${POS_ORDER_NUMBER}` for POS orders, where `POS_DEVICE_ID` is an id associated with the device and `POS_ORDER_NUMBER` is counted up for each separate device */ source_identifier: string | null; /** * Where the checkout originated. * Valid values: web, pos, iphone, android. */ source_name: string; /** * undocumented; always null in test data */ source_url?: null | any; /** * The price of the checkout before shipping and taxes. * @readonly */ subtotal_price: string; /** * An array of tax line objects, each of which details a tax applicable to the checkout. */ tax_lines: TaxLine[]; /** * Whether taxes are included in the price. * @readonly */ taxes_included: boolean; /** * The total amount of discounts to be applied. * @deprecated */ total_discounts?: string; /** * The sum of the prices of all line items in the checkout. */ total_line_items_price: string; /** * The sum of the prices of all line items in the checkout, discounts, shipping costs, and taxes. * @readonly */ total_price: string; /** * The sum of all the taxes applied to the checkout. * @readonly */ total_tax: string; /** * The sum of all the weights in grams of the line items in the checkout. * @deprecated */ total_weight?: number; /** * The date and time (ISO 8601 format) when the checkout was last modified. * @readonly */ updated_at: string; /** * The ID of the user who created the checkout. This value is passed to the order. Default value: null. */ user_id: number | null; /** * The URL pointing to the checkout accessible from the web. * E.g. `"https://checkout.shopify.com/112233/checkouts/4207896aad57dfb159?key=123abc"` * @readonly */ web_url: string; }