---
title: "Sale page"
description: "The page of one sale of goods: its products, total, payment, and returns. Collect or change the payment, edit the products, record a return with a refund and restock, or cancel a standalone sale."
canonical_url: "https://requiply.com/docs/en/guides/sales/sale-page"
---
# Sale page

> The page of one sale of goods: its products, total, payment, and returns. Collect or change the payment, edit the products, record a return with a refund and restock, or cancel a standalone sale.

Every sale has its own page with its number, for example **Sale #4**. It shows what was sold, what the client paid, and what came back, and it is where you collect the payment, change the products, record a return, or cancel the sale.

Open it by clicking the number in the [Sales list](https://requiply.com/docs/en/guides/sales/list), the **Sale #N** link on a booking's **Sold items**, a *Sale #N* entry in a product's stock history, or directly at `https://app.requiply.com/sales/{sale id}`. It needs **Allow viewing sales**. A sale that does not exist, or one you cannot see, shows *This sale does not exist or you cannot see it* with **Back to sales**.

<figure>

![Sale #4 in dark mode. The header reads #4, William Hargreaves, September 29, 2026 at 10:14 PM, $77.50, with a pencil split button on the right. The lines table lists SanDisk Extreme SD card 128GB, SKU SD-128-EXT, quantity 2 at $29.00, total $58.00, and Duracell AA batteries (4-pack), SKU BAT-AA-4, quantity 3 at $6.50, total $19.50. The side card shows the client William Hargreaves, Items $77.50, Total $77.50, Paid $0.00, To pay $77.50 in red, and under Payment a Pay in person · $77.50 button](https://requiply.com/docs/assets/sales/sale-page/sale-detail.png)<figcaption>

A standalone sale waiting for payment. The payment button opens the status, the payment link, and the method.

</figcaption>
</figure>

## What you'll see

**The header** shows a **Cancelled** or **Returned** tag when that applies, then the sale number, the client, the booking (for a sale on a booking), the date and time of the sale, and its total. On the right is the actions button, see [Actions](#actions).

**The lines table:** each product with its image, name, and SKU (click the SKU to open the product), **Quantity**, **Price** per unit, and **Total**. A line with returns shows *2 returned* under the name.

**The side card:**

<table>
<thead>
  <tr>
    <th>
      Row
    </th>
    
    <th>
      Meaning
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <strong>
        Client
      </strong>
    </td>
    
    <td>
      The client with the <a href="https://requiply.com/docs/en/guides/clients#client-hover-card">
        client hover card
      </a>
      
      , or <em>
        No client
      </em>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Items
      </strong>
    </td>
    
    <td>
      The sum of the lines.
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Returned
      </strong>
    </td>
    
    <td>
      What was credited for returned goods, shown once there is a return.
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Total
      </strong>
    </td>
    
    <td>
      Items minus returns: what the client owes for the goods.
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Paid
      </strong>
      
       / <strong>
        To pay
      </strong>
    </td>
    
    <td>
      Standalone sales only: what was received and the balance, in red while something is due.
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Payment
      </strong>
    </td>
    
    <td>
      The payment button, or the combined invoice note for a sale on a booking.
    </td>
  </tr>
</tbody>
</table>

**Returns:** once goods came back, a **Returns** card lists each return with its date, the products and quantities (*SanDisk Extreme SD card 128GB × 1 (not back to stock)* when they were not restocked), the credited amount, and the note.

## Payments

### Standalone sales

A standalone sale is paid on its own. The **Payment** button shows the method, its status color, and the amount, for example **Pay in person · $77.50**. Click it for the payment popover:

- **Status:** change it, for example to **Completed** once the client paid at the counter. Requiply shows *Payment moved to Completed*.
- **Total:** the amount of this payment.
- For an online payment: the **Payment URL:** with a copy button, **Open**, and **Generate payment link** / **Regenerate payment link**.
- **Change payment method** with **Save**, to switch between pay in person and a connected provider. With LiqPay, the sale needs a client with an email.

When the sale has a balance but no open payment, the button reads **Collect payment**: choose a method and **Save** to open one. With nothing to pay, it reads *No payment yet*.

Online payments are settled by the same provider webhooks as booking payments, so **Paid** updates by itself when the client pays through the link. An unpaid or partly paid standalone sale with a client counts toward that client's **Debt** on [Client details](https://requiply.com/docs/en/guides/clients/client-details). [Debt settlement](https://requiply.com/docs/en/guides/clients/debt-settlement) does not include sales, so collect the sale from its own **Payment** button.

### Sales on a booking

A sale made on a booking has no payment of its own. The **Payment** section shows **Combined invoice**: *Booking #20 collects the rental and these items in one payment*, with a link to the booking. Its goods total is already inside the booking's **Total Cost**, and the booking's payment button appears here for convenience. See [Sell items on a booking](https://requiply.com/docs/en/guides/bookings/sell-items).

## Actions

<table>
<thead>
  <tr>
    <th>
      Action
    </th>
    
    <th>
      Shown when
    </th>
    
    <th>
      What it does
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <strong>
        Edit items
      </strong>
      
       (pencil)
    </td>
    
    <td>
      A standalone sale that is not cancelled, for members with <strong>
        Allow selling items
      </strong>
      
      .
    </td>
    
    <td>
      Opens <a href="#editing-the-items">
        Editing the items
      </a>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Edit on booking
      </strong>
      
       (pencil)
    </td>
    
    <td>
      A sale on a booking, same conditions.
    </td>
    
    <td>
      Opens the booking's <strong>
        Sold items
      </strong>
      
       page.
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Booking #N
      </strong>
    </td>
    
    <td>
      A sale on a booking.
    </td>
    
    <td>
      Opens the booking.
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Return items
      </strong>
    </td>
    
    <td>
      The client still has goods from this sale, for members with <strong>
        Allow selling items
      </strong>
      
      .
    </td>
    
    <td>
      Opens <a href="#returning-goods">
        Returning goods
      </a>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Cancel sale
      </strong>
    </td>
    
    <td>
      A standalone sale that is not cancelled, for members with <strong>
        Allow selling items
      </strong>
      
      .
    </td>
    
    <td>
      See <a href="#cancelling-a-sale">
        Cancelling a sale
      </a>
      
      .
    </td>
  </tr>
</tbody>
</table>

## Editing the items

**Edit items** opens **Edit sale items** at `/sales/{id}/edit`, under the title *Sale #4*. Change quantities, add products from the list or by scanning, or remove products. The client and the payment method stay the same.

The preview on the right shows the **Current total**, **Items**, **Returned** and **Paid** if any, and the new **Total to pay**. The note under the items explains the payment:

- Pay in person: *The amount to pay follows the new total.*
- Online: *The amount to pay follows the new total, and a new payment link is created.*

**Save items** saves the change: *Sale #4 updated*. The stock moves by the difference (*Sold* for added units, *Sale undone* for removed ones).

<table>
<thead>
  <tr>
    <th>
      Message
    </th>
    
    <th>
      Why
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <em>
        Change the items or their quantities
      </em>
    </td>
    
    <td>
      Nothing changed yet.
    </td>
  </tr>
  
  <tr>
    <td>
      <em>
        Archived items cannot be sold
      </em>
    </td>
    
    <td>
      You added an archived product, or raised its quantity. An archived product already on the sale can only be reduced.
    </td>
  </tr>
  
  <tr>
    <td>
      <em>
        A line cannot go below the quantity already returned
      </em>
    </td>
    
    <td>
      Some of that product came back, so the quantity cannot drop under the returned amount.
    </td>
  </tr>
  
  <tr>
    <td>
      <em>
        A line with returned items cannot be removed
      </em>
    </td>
    
    <td>
      Remove only products that have no returns.
    </td>
  </tr>
  
  <tr>
    <td>
      <em>
        The sale changed while you were editing. Reload and try again.
      </em>
    </td>
    
    <td>
      Someone else changed the sale. Reload the page.
    </td>
  </tr>
</tbody>
</table>

Products already on the sale keep the price they were sold at. Newly added products take their current **Sale price**.

## Returning goods

**Return items** opens **Return sold items**. It lists each product the client still has: *2 with the client, $29.00 each*.

For each product:

<table>
<thead>
  <tr>
    <th>
      Field
    </th>
    
    <th>
      What it does
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <strong>
        Quantity to return
      </strong>
    </td>
    
    <td>
      How many come back. Zero leaves the product out of the return.
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Back to stock
      </strong>
    </td>
    
    <td>
      On by default. Turn it off for opened or damaged goods: the return is recorded, but the stock does not go up.
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Refund
      </strong>
    </td>
    
    <td>
      The amount credited for this product. It starts at quantity × price and can be lowered, for example for an opened package. It cannot exceed what the client paid for the returned goods.
    </td>
  </tr>
</tbody>
</table>

Add an optional **Note**, check the **Refund total**, and click **Return**.

- For a standalone sale: *The refund is taken off the sale total.* The balance or the online payment amount follows the new total.
- For a sale on a booking: *The refund is taken off the booking total. Money already paid is refunded from the booking.*
- When money was already received, Requiply says *Return recorded. $29.00 was already paid and needs a refund.* Give the money back the way it was paid: in cash, or through your payment provider's cabinet for an online payment.

Restocked goods get a *Returned* entry in the product's stock history. You cannot return more than the client holds: *You cannot return more than was sold*.

## Cancelling a sale

**Cancel sale** asks *Cancel this sale?*: *Items the client still has go back to stock. The sale stays in the list as cancelled.* Confirm with **Cancel sale**. The sale keeps its number and shows **Cancelled**, and each product gets a *Sale undone* entry in its stock history.

Only standalone sales can be cancelled. For a sale on a booking, remove the goods with **Sell items** on the booking, or cancel the booking: cancelling a booking returns its goods to stock, and moving it out of the cancelled status takes them again.

## In the mobile app

Tap a sale in the **Sales** tab. The screen shows the number and state, the lines with returns, **Items**, **Returned**, **Total**, **Paid**, and **To pay**, the payment rows, and the returns. The actions button offers **Edit** (standalone) or **Edit on booking**, **Return items**, **Cancel sale**, and the booking link.

- **Edit sale:** *Change the items or their quantities. The client and the payment method stay the same.* It shows **Current total** and **New total**.
- **Return items:** choose quantities under **With the client**, **Back to stock**, **Refund**, and an optional note, then **Return**: *Return recorded: $29.00*.
- Tap the payment to change its status or method, the same as on the web.

## Common scenarios

### The client paid cash for an unpaid sale

Open the sale, click **Pay in person · $77.50**, and set **Status** to **Completed**. **To pay** drops to zero and the sale shows **Paid** in the list.

### One of two memory cards comes back unopened

Open the sale, **Actions → Return items**, set **Quantity to return** to 1 on the card, keep **Back to stock**, leave the refund at the full price, and click **Return**. If the sale was paid, give the client the money back.

### A sale was recorded twice by mistake

Open the duplicate and pick **Cancel sale**. The goods return to stock, and the cancelled sale stays in the list for the record.

## Tips and cautions

<warning>

**Heads up:** Recording a return does not send money back by itself. When Requiply says a refund is due, pay it back through the provider's cabinet or in cash.

</warning>

<note>

**Tip:** Use **Back to stock** off for goods that cannot be sold again. The return still credits the client, and the shelf count stays right without a separate write-off.

</note>


## Sitemap

See the full [sitemap](https://requiply.com/docs/sitemap.md) for all pages.
