---
title: "Checkout"
canonical: "https://red-ant-documentation.refined.site/space/RET/509771855/Checkout"
format: markdown
---
> Macro (toc)

## Overview

Once the basket has been finalised the sales associate can select the “Checkout” button at the bottom of the basket.

If there is no customer associated with the basket, the app will take the sales associate to the customer list screen where they can:

- Associate the basket with a customer from their followed list
- Search for a customer to associate with the basket
- Register a new customer and associate them to the basket
- Place an anonymous order
- Create a backwall sale

> ℹ️ If a customer is already associated with the basket, at the point of selecting “Checkout” the customer list screen will be automatically bypassed and the sales associate will be navigated into the checkout.

## **Anonymous Sale**

RetailOS provides the option to process an anonymous sale, most commonly used when a customer doesn’t want to register themselves as a customer.

When placing an anonymous sale the sales associate will be prompted to select a reason why the customer chooses to remain anonymous from a dropdown list

> ℹ️ By default RetailOS supports the following anonymous reasons:
> ℹ️ 
> ℹ️ - Customer Privacy
> ℹ️ - Tourist / Non UK Resident
> ℹ️ - Client pressed for time
> ℹ️ - Gifting
> ℹ️ 
> ℹ️ The list of reasons can be configured based on the needs of the retailer.

## **Backwall Sale**

RetailOS provides the option to process a “Backwall Sale”, most commonly used in department or concession stores where a sale can occur outside of the retail unit’s POS system but should still be associated with the retail unit.

When placing a backwall sale the sales associate has the option to backdate the order by setting an order date during checkout.

> ℹ️ - By default, the order date is set to the current date
> ℹ️ - You cannot set a date in the future
> ℹ️ - You cannot set a date more than a 1 year in the past (this is configurable)

## **Manual Discounts**

Sales associates can manually apply a fixed percentage or fixed value discount to the entire order, or to specific items within the order.

When a discount is applied, the value of the discount is detailed as a line item within the order summary, either as an ‘Item Discount’ or ‘Order Discount’.

If a discount is added incorrectly the sales associate can remove these at both order and item levels.

> ⚠️ If you have applied any price adjustments to the products within the order, these will be overridden by the applied discount.

### Percentage Discount

- Sales associates can apply up to 100% discount
- Percentage discounts to two decimal places are supported

> ℹ️ Order-level, percentage discounts are automatically distributed across all items within an order, with each item's discount calculated based on its original price. The discounted amount for each product is rounded to the nearest penny to ensure precision.
> ℹ️ 
> ℹ️ #### How It Works
> ℹ️ 
> ℹ️ - **Total Order Discount**: The specified fixed value discount is divided among all items in the order according to their proportion of the total order value.
> ℹ️ - **Precision**: The discount applied to each item is rounded to the nearest penny to maintain pricing accuracy.
> ℹ️ 
> ℹ️ In cases where rounding creates discrepancies, we adjust the final product price by rounding up to ensure the total discount applied matches the intended discount amount.

<details>
<summary>Example Scenario - Order-Level Fixed Percentage Discounts </summary>

Consider an order with the following items:

- **Product 1**: £100
- **Product 2**: £50

**Percentage Order-Level Discount Applied**: 10%

The discount is applied as follows:

- **Product 1**:
  - Original Price: £100
  - Discount: 10% of £100 = £10
  - New Price: £100 - £10 = £90
- **Product 2**:
  - Original Price: £50
  - Discount: 10% of £50 = £5
  - New Price: £50 - £5 = £45

This approach ensures that the 10% discount is proportionately applied to each product in the order, resulting in new prices of £90 for Product 1 and £45 for Product 2.
</details>

### Fixed Value Discount

If a sales associate applies a fixed value discount to a product (or the entire order) that is greater than the value of the product (or order) then the product (or order) will be set to zero value.

![image](media://cf2fa8ab-194a-4c18-82b8-59fb6d75c426)

> ℹ️ Order-level, fixed value discounts are distributed proportionally across all items in the order based on their original prices. This method ensures that each product receives an appropriate share of the total discount.
> ℹ️ 
> ℹ️ #### How It Works
> ℹ️ 
> ℹ️ - **Total Order Discount**: The specified fixed value discount is divided among all items in the order according to their proportion of the total order value.
> ℹ️ - **Rounding**: The discount applied to each item is rounded to the nearest penny to maintain precision and accuracy in pricing.
> ℹ️ 
> ℹ️ In cases where rounding creates discrepancies, we adjust the final product price by rounding up to ensure the total discount applied matches the intended discount amount.

<details>
<summary>Example Scenario - Order-Level Fixed Value Discounts </summary>

Consider an order with the following items:

- **Product 1**: £100
- **Product 2**: £50

**Fixed Value Order-Level Discount Applied**: £100

The discount is distributed as follows:

- **Total Order Value**: £150 (Product 1 + Product 2)
- **Product 1**:
  - Original Price: £100
  - Proportion of Total Order: £100 / £150 = 2/3
  - Discount: (2/3) × £100 = £66.67
  - New Price: £100 - £66.67 = £33.33 (rounded to the nearest penny)
- **Product 2**:
  - Original Price: £50
  - Proportion of Total Order: £50 / £150 = 1/3
  - Discount: (1/3) × £100 = £33.33
  - New Price: £50 - £33.33 = £16.67 (rounded to the nearest penny)

In this example, the fixed value discount of £100 is allocated between Product 1 and Product 2 based on their relative prices, with the resulting amounts rounded to the nearest penny. This results in final prices of £33.33 for Product 1 and £16.67 for Product 2.
</details>

<details>
<summary>Example Scenario - Order-Level Fixed Value Discounts with Rounding Discrepencies</summary>

Consider an order with three products, each priced at £50:

- **Product 1**: £50
- **Product 2**: £50
- **Product 3**: £50

**Total Order Value**: £50 + £50 + £50 = £150

**Fixed Value Order-Level Discount Applied**: £100

### Calculations

1. **Determine the Proportional Discount**:
  Each product should receive a proportional share of the discount based on its contribution to the total order value. Since all products are priced equally, the discount is split evenly.
  - **Proportionate Share**: Each product is 1/3 of the total order value.
2. **Calculate the Discount per Product**:
  - **Total Discount per Product**: (£100 / 3) = £33.33 (rounded to two decimal places).
3. **Adjust for Rounding Discrepancy**:
  Due to rounding, applying £33.33 to each product results in a total discount of £99.99, slightly short of the intended £100 discount. To correct this discrepancy:
  - **Product 1**: £50 - £33.33 = £16.67
  - **Product 2**: £50 - £33.33 = £16.67
  - **Product 3**: £50 - £33.34 = £16.66 (rounded up by £0.01 to account for rounding)

### Final Prices

- **Product 1**: £16.67
- **Product 2**: £16.67
- **Product 3**: £16.66

In this example, the rounding discrepancy is addressed by rounding up the discount for the last product, ensuring that the total applied discount is exactly £100. This method maintains accuracy in accounting and ensures consistent pricing practices across all products.
</details>

### **Automatic Discounts**

Retailers can define product discounts in their catalog data using the* *`discount`* *field. This will display the original price alongside and the newly discounted price.

![image](media://c38647e8-54eb-44c8-b311-f21ca95180b8)

## Edit Unit Price

Sales associates have the option to edit the unit price of a product within the customer's order. This can be useful in the event a product needs to be marked down due to it being damaged. An override may also be necessary if the displayed price of an item does not match the price shown at the till.

> ⚠️ - You are not able to set the price to be greater than the original value or less than zero (this is configurable)
> ⚠️ - You cannot edit the price of a product and then apply a manual discount - applying the discount will override the edited price
> ⚠️   - If a manual discount has already been applied to the product, the option to edit the unit price will be removed

## Product Notes

The Product Notes functionality within checkout allows sales associates to provide specific details or instructions related to individual products within an order. This ensures product-level requests are accurately documented and can be acted upon during order fulfillment or processing.

**Common Use Cases for Product Notes:**

- **Product Customisation**: Document specific customisation requests, such as engraving, monogramming, or resizing, directly against the relevant product in the basket.
- **Product-Specific Instructions**: Record detailed handling or packaging instructions, such as "Pack this item in a separate gift box" or "Include authentication certificate with this product."
- **Known Product Issues**: Note any issues or exceptions related to a specific product, such as "Customer is aware of a small defect in the packaging for this item."

> ℹ️ Product notes are editable within the [order details](https://redantdigital.atlassian.net/wiki/spaces/RET/pages/34045953/Order+Management#Order-Details) after the order has been placed, allowing for updates if further customisations or changes are required. This flexibility ensures accuracy throughout the order lifecycle.

## Product Customization

The Product Customization feature allows retailers to offer value-added services such as **engraving, stamping, and bespoke customizations**. Customizations can be linked to individual products during checkout, providing a flexible way to personalise customer purchases.

**Key Features**

1. **Adding Customizations to Products**
  - Customizations are selected and linked to specific products in the order at the checkout stage.
  - Sales associates can link **one or multiple customizations** to a single product.
2. **Customization Selection Workflow**
  - When adding a customization, a modal appears displaying all available customization options.
  - Customizations are set up as products in the catalog and assigned to the ‘**Customizations’** category.
  - The modal includes a **search function** to help locate specific customization options efficiently.
3. **Customization Details**
  - After selecting a customization, the sales associate can:
    - **View and adjust the price** (either higher or lower than the catalog price).
    - **Add an optional note**, which could capture specific customization details, such as the engraving text or other customer preferences.
4. **Order Integration**
  - Once added, the customization appears as a separate product in the order, referencing the linked product and any customization notes.
  - In the **order details**, the system records the relationship between the customization and the product it is linked to.

> 📝 Similar to standard products, customization products require an associated **variant** in the catalog.

## Boarding Pass Capture

This feature allows sales associates in airport-based stores to efficiently capture a customer’s Bar-Coded Boarding Pass (BCBP) during checkout. This ensures seamless compliance with airport retail requirements and simplifies data entry.

The feature supports 2D barcode scanning for the following symbologies, as outlined in the [IATA](https://www.iata.org/contentassets/1dccc9ed041b4f3bbdcf8ee8682e75c4/2021_03_02-bcbp-implementation-guide-version-7-.pdf) Bar Coded Boarding Pass (BCBP) specification:

- PDF417
- Aztec
- Datamatrix
- QR Code

**Mobile Scanning**

When accessing the platform on a mobile device, the sales associate can select the ‘Scan' Boarding Pass option. This will:

1. Invoke the device’s native camera.
2. Allow the associate to scan the boarding pass barcode.
3. Automatically populate the encoded boarding pass data into the relevant field.

**Desktop Scanning**

On desktop, while the ‘Scan’ option is not available, the system still supports barcode capture via:

- USB-connected scanners
- Bluetooth-paired scanners

If the scanner is capable of reading PDF417, Aztec, Datamatrix, or QR codes, the sales associate can:

1. Focus on the boarding pass field.
2. Scan the boarding pass using the connected scanner.
3. The scanner will input the boarding pass data as a keyboard entry into the field.

**Storing & Viewing the Boarding Pass Data**

Once scanned, the boarding pass information is stored against the order and remains accessible within Order Details for future reference.

## Promo Codes

If a customer has a promotional / coupon code that they wish to apply to their order, the Sales associates can apply this on behalf of the customer during checkout. There are many different types of promotions that can be supported, for example:

- A percentage % or fixed value discount off the total order value
- Free delivery

> ℹ️ Promotional codes are typically managed by the retailer and validated as part of a request to the retailers basket API to syncronise the contents of the order.

## Order Notes

The Order Notes functionality within checkout allows sales associates to provide additional information or instructions relating to the overall customer's order. 

> ℹ️ The order notes field has a 1,000-character limitation, however this can be configured based on the needs of the retailer.

These notes are stored against the order details in Order Management and are accessible for reference during order fulfillment and support processes.

**Common Use Cases for Order Notes:**

- **Special Instructions**: Capture overarching instructions for the order, such as customer delivery preferences (e.g., "Leave package with the concierge") or general handling requests (e.g., "Ensure order is packaged discreetly").
- **Internal Communication**: Use order notes to communicate important information to internal teams, such as issues that affect the entire order (e.g., "Customer requires expedited handling due to an urgent event").
- **Communication History**: Summarise significant customer interactions or overarching requests relevant to the order as a whole (e.g., "Customer confirmed this order replaces a previous return").

> ℹ️ Order notes are editable within the order details after the order has been placed, allowing for updates if further customisations or changes are required. This flexibility ensures accuracy throughout the order lifecycle.

## Tax-free Orders

Our platform supports processing tax-free orders for retailers who offer this service. At the checkout stage, sales associates can mark an order as tax-free using a dedicated option. The system automatically calculates and removes applicable taxes from the order, either at the product level (if a product-specific tax is defined) or based on the regional tax rate associated with the store. This functionality ensures accurate pricing for customers who qualify for tax-free purchases, even when discounts or price adjustments have been applied.

> ⚠️ Marking an order as *Tax Free* should only be done **after** you've finished making any price edits, applying discounts, and adding all products to the basket.
> ⚠️ 
> ⚠️ - If you select the *Tax Free* option first, the platform will **disable the ability to edit prices or apply discounts.** This is intentional, to guide users through a logical order of operations and ensure totals are calculated accurately and consistently.
> ⚠️ - If you mark an order as *Tax Free* and then exit the checkout to add more products, you will receive a **warning **that the order has already been marked as *Tax Free*. To add additional products, you must first return to the checkout and remove *Tax Free* status.
> ⚠️ 
> ⚠️ For best results, always apply *Tax Free* as the **final step** once your basket is complete.

**Tax-Free Calculation Workflow**

1. **Determine Product-Level Tax**

- For each product in the order, the system checks the `vatPercent` value in the product table to identify if product-level tax is applied.
- If a `vatPercent` is defined for the product, the tax-free amount is calculated by dividing the product price (inclusive of tax) by `(1 + vatPercent / 100)`. The resulting tax amount is subtracted from the product price to determine the tax-free price.

> ℹ️ We’re also able to configure the feature to work for tax-exclusive pricing, in which case the tax calculation is `price x (vatPercent / 100)`

2. **Fallback to Regional Tax**

- If no product-level `vatPercent` is defined, the system checks for a `vatPercent` defined for the store's associated region.

**Handling Discounts or Price Adjustments**

- Tax-free calculations are applied to the adjusted product prices after any discounts or price edits have been made at either the product or order level.
- This ensures the tax-free amount is accurately based on the final sale prices.

> 📝 Tax-free orders can be identified via the `taxFreeOrder` flag stored against the order details.

## Delivery Method

The delivery methods offered to customers can vary depending on the type of order that is being placed.

Below are some of the most common delivery methods:

1. Store Sale: This option is available for in-person purchases where customers can buy products from a physical store. Customers can choose to take their purchase with them at the time of sale or have it delivered to their address.
2. Home Delivery: This option is available for both in-person and virtual consultations. Customers can have their purchase delivered to their home or another address of their choice. Delivery times and fees may vary depending on the location and the products being ordered.
3. Collect from Store: This option is available for virtual consultations, where customers can choose a nearby store where they can collect their order.

> ℹ️ **Store Sale**: Orders placed using the ‘Store Sale’ delivery method will automatically attributed to the store that the sales associate was logged into at the time of processing the order
> ℹ️ 
> ℹ️ **Home Delivery:** Selecting ‘Home Delivery’ will reveal the ‘Delivery Address’ fields to capture the address where the customer wishes the order to be shipped to. 
> ℹ️ 
> ℹ️ **Collect from Store: **Selecting ‘Collect from Store’ will reveal a store selector (defaulted to the store the sales associate is logged into), which can be used to choose a nearby store where they can collect the order.

### Delivery Address

Selecting ‘Home Delivery’ as the customer's desired delivery method will reveal the ‘Delivery Address' fields. If the customer associated with the order has an address on file this information will be pre-populated into the form.

By default, the delivery address is made up of the following fields:

- First name*
- Last name*
- Address Line 1*
- Address Line 2*
- Town/City*
- Country*
- Postcode/Zip Code*

There is an option to search for an address or to enter it manually.

> ℹ️ We are pre-integrated with [Loqate](https://www.loqate.com/en-gb/) real-time address verification tool. This tool can be configured so that sales associates can only search over specific countries.

## Delivery Options

The delivery options offered to customers can vary depending on the selected delivery method. 

For example, for ‘Home Delivery’ orders you may wish to offer a free ‘standard delivery’ option and a paid-for ‘express delivery’ option.

Any delivery option with an associated price will be added to the order total and called out as a line item within the order summary.

> ℹ️ Delivery options can be configured based on the needs of the retailer.

![image](media://1319b49d-73cb-4b4e-9974-35a4dfeab748)


<details>
<summary>Delivery Options - Data Structure</summary>

| **Field** | **Definition** | **Format / Additional Info** |
| --- | --- | --- |
| `name` | The name of the delivery option |  |
| `deliveryType` | This is used to define whether the delivery option is associated with home or store delivery methods | Delivery type can be set to `home` or `store`<br>Delivery options set to `home` will show when 'Home Delivery is selected as the delivery method<br>Delivery options set to `store` will show when either 'Store Sale' or 'Collect from Store' is selected as the delivery method |
| `active` | Defines whether the delivery option should be displayed in checkout. Setting this value to `FALSE` will hide the option from checkout | Boolean - `TRUE` / `FALE` |
| `price` | This is used to define the price of the delivery option | Numeric value<br>If the delivery option is free, simply set the price to '`0`' |
| `details` | This can include delivery option specific configurations - for example it can be used to store the delivery `prices` in different currencies | `{`  
` "prices": {`  
` "GBP": "2400",`  
` "AED": "10569",`  
` }` |
| `regionId` | Allows delivery options to be displayed based on the region associated with the store that the sales assistant is logged into, ensuring region-specific options are presented at checkout. | UUID foreign key (regions) |
</details>

## Request Payment

When the customer is happy with their order and ready to make a payment, the sales associate will typically request payment and ask the customer to confirm how they would like to pay.

Selecting ‘Request payment’ will show a summary of the order including the customer name, address (if applicable), number of items in order, and total order value. This is the customer’s last opportunity to make changes to their order before payment is taken.

> ℹ️ The order is created in the status of ‘Payment In Progress’ once the order details have been confirmed and the sales associate transitions to the 'Payment Method step of the checkout.

![image](media://6cfbd765-8999-46e3-9001-d9c2b97d9cf6)

## Payment Methods

Customer payment methods will vary depending on the type of order. This is because different types of orders may require different payment processing methods or regulations.

For example, in the case of a [virtual consultation](https://redantdigital.atlassian.net/wiki/spaces/RET/pages/114556979), the customer is not physically present in the store and is not able to make a payment in person. Therefore, it is important to offer online payment options, allowing the customer pay quickly and conveniently.

For in-store orders, the customer would usually complete their transaction using the store’s regular till checkout process. However, RetailOS is pre-integrated with a number of mobile POS systems, which means the store associate can choose to use it to accept payment through a mobile device. This is particularly useful in situations where the customer does not want to pay using cash or a traditional payment card. 

In general, the payment methods offered to customers should be tailored to the specific needs and requirements of each type of order. By doing so, the store can provide a seamless and convenient payment experience for customers, while also ensuring compliance with relevant regulations and minimising the risk of payment processing errors.

Find out more about our out-of-the-box payment options below:

### In-store Payments

- [Save Transaction](https://redantdigital.atlassian.net/wiki/spaces/RET/pages/406716433)
- [POS Payments](https://redantdigital.atlassian.net/wiki/spaces/RET/pages/1362395137)
  - [Cash](https://redantdigital.atlassian.net/wiki/spaces/RET/pages/1726939172)
  - [Integrated Card Payments (Adyen)](https://redantdigital.atlassian.net/wiki/spaces/RET/pages/1486028801)
  - [Adyen Gift Cards](https://redantdigital.atlassian.net/wiki/spaces/RET/pages/1555365889)
  - [Adyen Pay-by-link](https://redantdigital.atlassian.net/wiki/spaces/RET/pages/1524924418)
  - [Credit on File](https://redantdigital.atlassian.net/wiki/spaces/RET/pages/1447165953)

### Remote Payments

- [Stripe Card Payments](https://redantdigital.atlassian.net/wiki/spaces/RET/pages/400326705)
  - [Klarna Payments](https://redantdigital.atlassian.net/wiki/spaces/RET/pages/404946981)
- [Stripe Pay-by-link](https://redantdigital.atlassian.net/wiki/spaces/RET/pages/399081496)