> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sibipro.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Checkout links

Checkout links unlock one-click ordering on Sibi from anywhere in the web. Can be configured using URL params.

## Example

Most use-cases for our API can be abstracted to "I have picked some items to purchase and would like to place the order". We have found that many of those can have their ordering API needs met with a URL configurable checkout page.

For example, the following Checkout link will allow a user to purchase a specific GE model dishwasher and ice making machine:

[https://checkout.sibipro.com/?manufacturer=ge\&sku=CDD420P3TD1\&sku=CDD420P2TS1](https://checkout.sibipro.com/?manufacturer=ge\&sku=CDD420P2TS1\&sku=UNC15NPRII)

Most other information from the checkout page can be pre-configured via URL query parameters. For example, the checkout URL can specify a specific property address that order should be associated with, or a specific delivery date to request when placing the order.

## General Order Query Parameters

### `manufacturer`

`string` - Name of the manufacturer who makes the product.

***

### `distribution`

`string` - Optional parameter to specify which distribution center to order from. If not specified, it will automatically select the distribution center with all products available that is closest to the property associated with the order.

***

### `requestedDeliveryDate`

`string` - An ISO8601 date string representing when the order should be delivered. If the requested delivery date is not available, the page will show an error message and allow the user to switch to the earliest available delivery date. If a requested delivery date is not present in URL, the UI will automatically choose the earliest available delivery date.

### `poNumber`

`string` - An optional parameter that can be used to pre-fill the po number input field.

***

## Line Item Order Query Parameters

Each line item must be prefixed with with a unique `<index>` value, eg. `1.sku=CDD420P2TS1&2.sku=ZJB069BR4P`. At least one line item must be provided.

### `<index>.sku`

`string` - SKU is required for each line item. The SKU must belong to the specified `manufacturer` or the page will return an error explaining that the product(s) can't be found.

***

### `<index>.quantity`

`integer` - Adjusts the quantity of that line item to purchase. Defaults to 1 when not provided. For example, when you want to order 2 of SKU CDD420P2TS1, you would provide `?1.sku=CDD420P2TS1&1.quantity=2`.

***

### `<index>.unit`

`integer` - Adjusts the unit that the line item is purchased in. Defaults to "Each" when not provided. For example, when you want to order a "Box" of SKU CDD420P2TS1, you would provide `?1.sku=CDD420P2TS1&1.unit=Box`.

***

### `<index>.addonId`

`string` - Specifies an addon to be purchased for a given line itme. It can be specified more than once to represent more than one addon for a given sku.

***

### `<index>.options`

`string` - Specifies a comma separated list of option key/value pairs to be purchased for a given line item. For example, when you want to order SKU CDD420P2TS1 with a red color option, you would provide `?1.sku=CDD420P2TS1&1.options=color,red`.

***

## Extended Warranty Parameters

Extended warranty coverage is offered per-product but applies at the order level: all line items belonging to the same order (same shop, distribution center, and fulfillment method) share a single warranty selection. When two or more line items are grouped into the same order, set the warranty parameters on each of those line items to the same value — the checkout UI enforces this for any state changes the user makes after page load.

Warranty parameters are only honored when the user's organization has warranty purchases enabled and at least one line item in the order has an eligible warranty. When neither is the case, the parameters are silently ignored and no warranty UI is rendered.

### `<index>.warranty`

`boolean` - When `true`, the "Add extended warranty coverage" checkbox on this line item is pre-selected, and an extended warranty line item is added to the order's pricing summary for this product. Defaults to `false`. Example: `?1.sku=CDD420P2TS1&1.warranty=true`.

***

### `<index>.warrantySku`

`string` - Optional. Pre-selects a specific warranty SKU for this line item instead of relying on the default auto-pick triggered by `<index>.warranty=true`. The supplied SKU must be one of the warranty options the backend offers for this product; otherwise the checkout page returns an error. When both `<index>.warrantySku` and `<index>.warranty=true` are provided, the explicit `warrantySku` takes precedence. The combination `<index>.warrantySku` with `<index>.warranty=false` is rejected as a conflicting input.

***

### `<index>.warrantyPaymentMethodId`

`string` - Optional. Overrides the payment method used to charge the warranty sub-order. If not provided, the warranty sub-order defaults to the first available warranty payment method for the order. Only honored when `<index>.warranty=true` and when the supplied id is present in the order's available warranty payment methods; otherwise it is discarded and the default is used.

***

### `<index>.offeredWarranty`

`boolean` - Signals that the link generator already offered extended warranty coverage to the user upstream (for example, on a redirect from a warranty enforcement flow). Suppresses re-prompting the user to opt in. Defaults to `false`. Typically set together with `<index>.warranty=true` by the redirect that performs the enforcement.

***

## Address Parameters

The address must provide enough information to unambiguously identify a single address of an existing property in Sibi. If no address information is provided in the URL, the checkout UI will show the user a property picker they can use to select the address they wish to associate with the order. If we find multiple properties that match the address provided, the checkout UI will show the user the property picker with the search term pre-filled with the address provided. The address can either be passed in all at once using the `address` query param, or in pieces using `line1`, `line2`, `city`, `stateOrProvince`, `postalCode` params. If both `address` and the individual pieces are present, the `address` parameter will take precedence. *The pieces API is deprecated and may be removed in the near future.*

### `addressSearch`

`string` The complete address as a query param. If a partial address is provided, the UI will attempt to find a single address that matches it. If it can find only one address, it will use it. If it finds multiple, it will show the address picker with the search bar pre-populated with the search term from the query param.

### `line1` *(deprecated)*

`string` - The first line of the address. Generally indicates the house number & street it is located on. Example value: "123 Main Street"

### `line2` *(deprecated)*

`string | undefined` - The second line of the address (optional). Generally used to indicate a unit number. Example value: "Apartment 4B"

### `city` *(deprecated)*

`string` - The city of the address. Example value: "New York City"

### `stateOrProvince` *(deprecated)*

`string` - The state or province of the address. Example value: "New York"

### `postalCode` *(deprecated)*

`string` - The postal code of the address. Example value: "10001"
