---
title: "Customer accounts"
description: "How customers sign in to your client portal with a one-time code, follow their bookings, pay a balance, cancel online, and keep their details up to date."
canonical_url: "https://requiply.com/docs/en/guides/online-booking/customer-accounts"
---
# Customer accounts

> How customers sign in to your client portal with a one-time code, follow their bookings, pay a balance, cancel online, and keep their details up to date.

A customer can book on your [client portal](https://requiply.com/docs/en/guides/online-booking) without an account. An account is what lets them come back later: see every booking they have made with you, follow its progress, pay an outstanding balance, cancel what has not started yet, and keep their own contact details current.

There is nothing to switch on. Accounts are part of every plan, and a portal account is never a staff account: it costs you no seat, appears in no [permission group](https://requiply.com/docs/en/guides/settings/organization/accounts/permission-groups), and gives no access to the Requiply app.

## Signing in

Sign-in uses one-time codes, so no customer ever chooses a password and your team never resets one.

<steps level="3">

### Enter a contact

The **Sign in** button in the portal header opens `portal.requiply.com/<your code>/login`, a card headed **Sign in to {your organization}** with your logo above it and the line *We send a one-time code, no password needed.* The customer types their email address and presses **Send code**. When you have switched on SMS codes under [Portal settings](https://requiply.com/docs/en/guides/online-booking/portal-settings), a channel toggle above the field lets them pick a phone number instead.

### Receive the code

A six-digit code is sent to that address or number.

### Confirm

The verify screen shows **Code sent to ...** and takes the six digits. **Send a new code** becomes available after a short countdown, and **Use a different contact** goes back a step.

</steps>

<figure>

![The portal sign-in card in dark mode for an organization with SMS sign-in on: the logo, Sign in to Stalford Studio, We send a one-time code, no password needed, a highlighted switch between Email and Phone number, an Email field with the hint We send a 6-digit code to this address, a Send code button, and First time here? Create an account](https://requiply.com/docs/assets/client-portal/accounts/sign-in-phone.png)<figcaption>

With SMS sign-in on, the customer picks **Email** or **Phone number** above the field.

</figcaption>
</figure>

<figure>

![The portal sign-in page in dark mode. A Sign in button sits in the header next to the cart. In the middle of the page a card carries the organization logo, the heading Sign in to Stalford Studio, the line We send a one-time code, no password needed, an Email field with the placeholder you at example dot com and the hint We send a 6-digit code to this address, a full-width Send code button, and under it First time here? Create an account](https://requiply.com/docs/assets/client-portal/accounts/sign-in.png)<figcaption>

Sign-in with SMS codes switched off: one field and one button. With SMS on, a channel toggle sits above the field so the customer can pick email or phone.

</figcaption>
</figure>

Signing in from the middle of a booking returns the customer to where they were, so a sign-in during checkout does not lose the cart.

### Creating an account

**First time here? Create an account** sits under the button, and a contact with no account yet is turned back with **We could not find an account for this contact. Create one first.** The register screen asks for:

<table>
<thead>
  <tr>
    <th>
      Field
    </th>
    
    <th>
      Required
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      First name
    </td>
    
    <td>
      Yes
    </td>
  </tr>
  
  <tr>
    <td>
      Last name
    </td>
    
    <td>
      No
    </td>
  </tr>
  
  <tr>
    <td>
      Email
    </td>
    
    <td>
      Yes, the code is sent here
    </td>
  </tr>
  
  <tr>
    <td>
      Phone number
    </td>
    
    <td>
      No, with the country code
    </td>
  </tr>
</tbody>
</table>

The phone field has a **Country code** picker in front of the number, and a hint under it: *Used to reach you about your bookings.* When your organization has SMS sign-in on, the hint reads *We will text you a code to confirm it, so you can also sign in with your phone.* The sign-in and profile screens use the same picker.

A short line explains that the details are used by your organization to manage the customer's bookings. Registration confirms with the same six-digit code flow.

**Confirming the phone.** When your organization has [SMS sign-in](https://requiply.com/docs/en/guides/online-booking/portal-settings#sign-in-methods) on and the customer entered a phone number, the email code is followed by **Confirm your phone**: *We sent a code to {number}. Once it is confirmed, you can sign in with this number.* After the code the page says *Your phone is confirmed*, and the customer can sign in with either the email or the phone from then on. A number already used by another account is refused with *This number is already used by another account. You can keep signing in with your email.* **Skip for now** under the card lets the customer carry on to where they were heading without confirming the number. They can confirm it later from the [profile](#profile).

<note>

A customer who has already booked as a guest does not need anything special: signing in with the email or phone number they used at checkout links them to the client record you already have, with their booking history attached.

</note>

## Signing in without a company link

A customer who lost your link, or who rents from more than one company that uses Requiply, can start at the bare address, [`portal.requiply.com`](https://portal.requiply.com).

Signed out, the page explains that it is the entry point of the Requiply client portal and offers **Sign in to find your bookings**. That opens `portal.requiply.com/login`, a sign-in card that is not tied to any company:

<figure>

![The portal sign-in page with no organization in dark mode. A card headed Requiply and Sign in reads We send a one-time code to your email, then show every rental company you have an account with. Below it an Email field with the placeholder you@example.com, the hint We send a 6-digit code to this address, and a Send code button.](https://requiply.com/docs/assets/client-portal/accounts/portal-login.png)<figcaption>

The company-independent sign-in. It takes an email address only.

</figcaption>
</figure>

- It accepts an **email address only**. SMS codes are a setting of each company, so they are offered only on a company's own sign-in page.
- It **cannot create an account**. An email with no account gets *We could not find an account for this contact. Create one first.* Accounts are created on a company's portal, when booking or through **Create an account**.
- The code step is the same as on a company's portal: six digits, **Send a new code** after 60 seconds, and **Use a different contact**.

After the code, the customer lands on **Your rental companies**: one card per company they have an account with, with its logo and name, the most recently used first. Clicking a card opens that company's portal on **Your bookings**.

<figure>

![The portal root page in dark mode for a signed-in customer. Under the title Requiply client portal and its description, the heading Your rental companies lists two cards: Stalford Studio with its logo, and a second company whose logo is blurred. Each card has a chevron on the right. A Learn more about Requiply link sits below.](https://requiply.com/docs/assets/client-portal/accounts/portal-root-companies.png)<figcaption>

A customer with accounts at two rental companies sees both, and picks where to go.

</figcaption>
</figure>

<table>
<thead>
  <tr>
    <th>
      What the customer sees
    </th>
    
    <th>
      Meaning
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <em>
        No rental company is linked to this account yet.
      </em>
    </td>
    
    <td>
      They are signed in, but have never booked or registered with a company. A <strong>
        Sign out
      </strong>
      
       button is shown.
    </td>
  </tr>
  
  <tr>
    <td>
      <em>
        We could not load your rental companies. Check your connection and try again.
      </em>
    </td>
    
    <td>
      The list could not be loaded. <strong>
        Try again
      </strong>
      
       retries, <strong>
        Sign out
      </strong>
      
       signs out.
    </td>
  </tr>
</tbody>
</table>

Only companies with a web URL code in [Organization info](https://requiply.com/docs/en/guides/settings/organization/info) appear in the list.

## Your bookings

The account opens on **Your bookings**, split into **Upcoming** and **Past**. A side navigation lists **Bookings** and **Profile**, with a **Book again** button under them that drops the customer back into the catalog. On a phone that navigation becomes a tab strip.

Each booking is a card carrying its number and status pill, the total, a one-line summary of the items with their quantities, the rental period, and a **View** button, with **Cancel** beside it while cancelling is allowed. With nothing to show, the list says so and offers **Book now**.

<figure>

![The Your bookings page of the portal account area in dark mode. The side navigation lists Bookings and Profile with a Book again button under them. The page is headed Your bookings, with an Upcoming and Past switch under it and Past selected. Each booking is a card carrying its number and a green Completed pill on the left, the total on the right, a one-line summary of the items with their quantities, the rental period, and a View button](https://requiply.com/docs/assets/client-portal/accounts/bookings.png)<figcaption>

The Past tab of a customer who rents regularly. Each card answers the usual question, what did I book and what did it cost, without opening anything.

</figcaption>
</figure>

The status pill always shows **your own status name** exactly as you named it under [Booking statuses](https://requiply.com/docs/en/guides/settings/bookings/statuses), in your colors, whatever language the customer uses. Since version 1.3.1 the portal no longer swaps in built-in labels such as *Confirmed* or *In progress*, so a status you called *Готово до видачі* shows as *Готово до видачі* in the English portal too. Name your statuses the way you want customers to read them.

<figure>

![The Your bookings page of the portal in light mode for Stalford Studio. The side navigation lists Bookings and Profile with an orange Book again button. Under Upcoming, booking #20 carries a New pill, the items 1 × Blackmagic Studio Camera 4k Plus, 1 × ATEM Mini Pro, 2 × Baseus HDMI to HDMI cable (10 m) and 2 × Rode Procaster, the period Oct 2, 2026 9:00 AM to Oct 5, 2026 6:00 PM, the total $626.00, and View and Cancel buttons](https://requiply.com/docs/assets/client-portal/accounts/bookings-status-name.png)<figcaption>

An upcoming booking in the light theme. The *New* pill is the organization's own status name, and **Cancel** shows because the booking has not started.

</figcaption>
</figure>

## A single booking

A **Back to bookings** link sits above the heading, which reads **Booking #{number}** with the status as a colored pill beside it. Everything the customer might phone you about is then stacked in labelled cards.

- **Progress**: a stepper built from your own [status flow](https://requiply.com/docs/en/guides/settings/bookings/statuses), with completed steps ticked, the current one highlighted, and later ones dimmed. See [How the progress bar is built](#how-the-progress-bar-is-built).
- **Dates and pickup**: the rental period, the pickup location with its address and an **Open in Google Maps** link, and when the booking was placed.
- **Items**: each item with its photo, its quantity times the rate (for example `2 × $5.00 / day`), and the line total, then the booking total and the security deposit. When your organization keeps the deposit out of booking payments, the deposit carries the note *Paid separately, not as part of this payment. It is returned after the items come back.* A booking that contains a [bundle](https://requiply.com/docs/en/guides/inventory/bundles) lists it first as *Podcast duo kit × 1* with its discount, for example *10% off*, and *Includes: …*, and adds a **Bundle discount** line above the total, so the line totals add up to what the customer pays.
- **Services**: whatever your team added to the booking, with prices. Customers cannot add services themselves.
- **Payments**: every charge and refund with its method and status, the amount paid, and the outstanding balance. A pending online payment carries a **Pay now** button that opens the provider's payment page.
- **Cancel this booking**: shown only while cancelling is allowed, with the deadline spelled out.

<figure>

![A booking page in the portal account area, dark mode. A side navigation on the left lists Bookings and Profile with a Book again button under them. The page itself opens with a Back to bookings link, the heading Booking #19 beside a green Completed pill, and a four-step progress line reading New, Confirmed, In progress and Completed with every step ticked. Below it a Dates and pickup card with the rental period Jun 19 2026 1:00 PM to Jun 22 2026 1:00 PM, the pickup location Main Studio with its address and an Open in Google Maps link, and the date the booking was placed. Under that an Items card listing each item with its photo, its quantity times the daily rate, and the line total](https://requiply.com/docs/assets/client-portal/accounts/booking-detail.png)<figcaption>

A finished booking: every step of the flow is ticked. There is no **Cancel this booking** section here, because a completed booking can no longer be cancelled.

</figcaption>
</figure>

<figure>

![Booking #28 in the portal account area, dark mode, with a New pill and the progress line New, Confirmed, In progress, Completed. Under Dates and pickup, the Items card starts with box 1 around Podcast duo kit × 1, 10% off, and its Includes line, then Rode NT1 1 × 16.00 dollars per day 48.00, Rode Procaster 2 × 15.00 90.00, Rode PSA1 2 × 8.00 48.00, XLR (5m) 2 × 3.00 18.00 and Behringer UMC404HD 1 × 12.00 36.00. Box 2 marks Bundle discount -19.20 dollars above Total 220.80 dollars and Deposit 44.16 dollars](https://requiply.com/docs/assets/client-portal/accounts/booking-detail-bundle.png)<figcaption>

A booking with a bundle: **1** the set and what it includes, **2** its saving. The line totals minus the bundle discount give the total.

</figcaption>
</figure>

### How the progress bar is built

The progress bar shows your organization's own pipeline, not a fixed list of stages, and every step carries the name you gave the status under [Booking statuses](https://requiply.com/docs/en/guides/settings/bookings/statuses).

1. **Where it starts.** A booking still waiting in your **Status for booking requests** starts at that status. Every other booking starts at your **Default status for new bookings**. Both are set under [Booking creation](https://requiply.com/docs/en/guides/settings/bookings/booking-creation#choosing-the-starting-statuses).
2. **Up to now.** From the starting status, the bar follows the shortest route through your allowed transitions to the booking's current status.
3. **What is ahead.** From the current status, it continues along the shortest route to the nearest status with the **Completed** lifecycle.

So with the default statuses, a booking in *Confirmed* shows *New*, *Confirmed*, *In progress*, *Completed*, while one moved into *Ready for pickup* shows *New*, *Confirmed*, *Ready for pickup*, *In progress*, *Completed*. A step the booking skipped is not shown.

A few cases worth knowing:

<table>
<thead>
  <tr>
    <th>
      Case
    </th>
    
    <th>
      What the bar shows
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      The booking is finished (a <strong>
        Completed
      </strong>
      
       lifecycle status)
    </td>
    
    <td>
      Every step ticked.
    </td>
  </tr>
  
  <tr>
    <td>
      The booking is cancelled
    </td>
    
    <td>
      The route it would have taken, every step still ahead, next to the cancellation note. Statuses with the <strong>
        Cancelled
      </strong>
      
       lifecycle are never a step.
    </td>
  </tr>
  
  <tr>
    <td>
      No transition leads to the booking's current status
    </td>
    
    <td>
      The bar starts at the current status.
    </td>
  </tr>
  
  <tr>
    <td>
      No route leads on from the current status to a completed status
    </td>
    
    <td>
      The bar ends at the current status.
    </td>
  </tr>
</tbody>
</table>

## Cancelling online

Whether customers can cancel at all is set under [Portal settings → Client portal](https://requiply.com/docs/en/guides/online-booking/portal-settings#cancellation) with **Status for cancelled bookings**. With **Clients cannot cancel** chosen there, the portal shows no **Cancel** button at all.

Otherwise, a customer may cancel their own booking when all of the following are true:

1. The booking's status has the **Active** lifecycle, so it is not already completed or cancelled.
2. The goods have not been handed out: no pickup checklist was confirmed for the booking, and its status is not one set to *Return checklist*.
3. The pickup time has not passed yet. The deadline shown on the page is the pickup time itself.
4. Your [status flow](https://requiply.com/docs/en/guides/settings/bookings/statuses) allows a move from the booking's current status to the status chosen as **Status for cancelled bookings**.

Cancelling asks for confirmation first, explaining that the items go back on offer to everyone else and that it cannot be undone. The booking then moves to your **Status for cancelled bookings** in Requiply, its stock is freed, the booking timeline gets the comment *Cancelled by the client from the portal*, and your status [workflows](https://requiply.com/docs/en/guides/automations/workflows) fire as usual.

<warning>

**No money moves.** A portal cancellation never triggers a refund, not of the payment and not of the deposit. Your team decides and issues refunds from the booking in the app. See [Deposits](https://requiply.com/docs/en/guides/settings/bookings/deposits).

</warning>

When cancelling is not possible, the page explains why in the customer's own words:

<table>
<thead>
  <tr>
    <th>
      What the customer sees
    </th>
    
    <th>
      Why
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <em>
        This booking has started, so it can no longer be cancelled online.
      </em>
    </td>
    
    <td>
      The goods were handed out: a pickup checklist was confirmed, or the booking is in a status set to <em>
        Return checklist
      </em>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <em>
        Cancellation from the portal is not available for this organization. Please contact {organization}.
      </em>
    </td>
    
    <td>
      <strong>
        Status for cancelled bookings
      </strong>
      
       is set to <strong>
        Clients cannot cancel
      </strong>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <em>
        This booking has already started.
      </em>
    </td>
    
    <td>
      The pickup time has passed.
    </td>
  </tr>
  
  <tr>
    <td>
      <em>
        This booking is completed.
      </em>
    </td>
    
    <td>
      The status has the <strong>
        Completed
      </strong>
      
       lifecycle.
    </td>
  </tr>
  
  <tr>
    <td>
      <em>
        This booking is already cancelled.
      </em>
    </td>
    
    <td>
      The status has the <strong>
        Cancelled
      </strong>
      
       lifecycle.
    </td>
  </tr>
  
  <tr>
    <td>
      <em>
        This booking can no longer be cancelled online. Please contact {organization}.
      </em>
    </td>
    
    <td>
      Your status flow has no transition from the booking's current status to your <strong>
        Status for cancelled bookings
      </strong>
      
      .
    </td>
  </tr>
</tbody>
</table>

<note>

A status set to *Pickup checklist*, such as *In progress*, does not block cancellation on its own. If your team moves bookings into *In progress* by hand, with [checklists](https://requiply.com/docs/en/guides/bookings/checklists) switched off, the portal cannot tell that the goods left. Remove the transition from *In progress* to your cancellation status under [Booking statuses](https://requiply.com/docs/en/guides/settings/bookings/statuses) so those bookings cannot be cancelled online. With the default transitions there is no such move, so nothing needs changing.

</note>

## Profile

The profile screen holds three cards:

- **Profile**: first name, last name, and phone number, all editable and saved with **Save changes**, which stays disabled until something is actually edited. Changes land on the client record your team sees. When the account has no first name yet, a warning on top asks for one: *Add your first name so we know who is booking.* With SMS sign-in on, **Phone for sign-in** shows the confirmed number or *Not confirmed*, with a **Confirm {phone} for sign-in** button.
- **Your discount**: the percentage in large type with the name of the [pricing discount](https://requiply.com/docs/en/guides/settings/pricing/pricing-discounts) you assigned under it, for example **5%** and *Premium*, plus the line *Applied automatically to your bookings*. The card is not shown when the client has no discount.
- **Sign-in details**: the email the account signs in with, plus the line *Your email comes from the way you sign in. Ask {your organization} to change it.* **Sign out** sits under the cards.

<figure>

![The Profile page of the portal account area in dark mode. A Profile card holds First name, Last name and Phone number fields with a Save changes button below them. A Your discount card shows 5 percent in large type with the discount name Premium under it and the line Applied automatically to your bookings. A Sign-in details card shows the email the account signs in with and the note that the email comes from the way the customer signs in and the organization can change it. A Sign out button sits at the bottom](https://requiply.com/docs/assets/client-portal/accounts/profile.png)<figcaption>

The only things a customer can change about themselves are their name and phone number. The email is tied to how they sign in, and the discount is yours to set.

</figcaption>
</figure>

## What your team sees

Add the optional **Client portal** field for the Client level to see accounts in the app:

- On [Manage clients](https://requiply.com/docs/en/guides/clients/manage), a **Client portal** column reading **Has account** or **No account**. Add it under [Table column layout](https://requiply.com/docs/en/guides/settings/fields/table-columns).
- On [Client details](https://requiply.com/docs/en/guides/clients/client-details), a **Client portal** row with **Account since** and **Last seen**. Add it under [Detail page fields](https://requiply.com/docs/en/guides/settings/fields/detail-page-fields).

Both start hidden, so nothing changes in your tables until you add them.

A customer's account is tied to your organization. The same person can hold an account with several Requiply businesses using one email address, and each business only ever sees its own client record.

## Common scenarios

### A customer did not get their code

Ask them to check the spam folder first, then use **Send a new code** on the verify screen. Codes expire, and an expired one reports *That code is wrong or has expired*. Too many attempts in a row are rate limited with *Too many attempts. Please wait a moment and try again*.

### A customer wants to change the email they sign in with

They cannot do that themselves. Update the email on their client record in [Add or edit client](https://requiply.com/docs/en/guides/clients/add-or-edit); the next sign-in with the new address links to the same client.

### A customer cancelled but expects money back

Cancelling online frees the booking and the stock, nothing else. Open the booking in [Manage bookings](https://requiply.com/docs/en/guides/bookings/manage) and refund the payment or the deposit there if your policy says so.

### A customer says they cannot cancel although pickup is days away

Check the message on their booking page against the table in [Cancelling online](#cancelling-online), then:

1. Open [Portal settings → Client portal](https://app.requiply.com/web/edit?tab=portal) and check that **Status for cancelled bookings** is not **Clients cannot cancel**.
2. Open [Booking statuses](https://app.requiply.com/settings/reservations/statuses), open the booking's current status, and check that the status picked in step 1 is in its **Allowed transitions**. Organizations that pruned their transitions, or added a status of their own, can end up with a status that cannot be cancelled from.
3. Check whether a pickup checklist was already confirmed for the booking. Once goods are handed out, only your team can cancel.

### The progress bar shows steps we do not use

The bar follows your allowed transitions. If it shows a status your team never uses, remove the transitions into that status under [Booking statuses](https://app.requiply.com/settings/reservations/statuses), or delete the status. If it shows *New* for bookings that start elsewhere, check **Default status for new bookings** under [Booking creation](https://app.requiply.com/settings/reservations/booking-creation).

## Tips and cautions

<tip>

**Tip:** Put a link to `portal.requiply.com/<your code>/account` in your booking confirmation [email template](https://requiply.com/docs/en/guides/automations/email-templates). Customers who follow their own booking phone you less.

</tip>

<note>

**Tip:** The **Client portal** column is a useful segment. Clients with an account are the ones who can self-serve, so they are worth pointing at the portal first when you are busy.

</note>

<note>

**Tip:** With [SMS sign-in](https://requiply.com/docs/en/guides/online-booking/portal-settings#sign-in-methods) on, customers who confirmed their phone can sign in with it even when they no longer use the email they registered with.

</note>


## Sitemap

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