---
title: "Client details"
description: "Everything Requiply knows about one customer on a single page: contact details, total revenue and profit, what they still owe, and every booking they have made."
canonical_url: "https://requiply.com/docs/en/guides/clients/client-details"
---
# Client details

> Everything Requiply knows about one customer on a single page: contact details, total revenue and profit, what they still owe, and every booking they have made.

The **Client details** page is the single view of everything Requiply knows about one client: their contact record, the money they have generated and still owe, their custom field values, and every booking they have ever made — grouped by what needs attention first.

Before this page existed, client information was spread across the clients table, individual bookings, and reports. Now one page answers the two questions staff actually ask at the counter: *who is this person* and *do they owe us anything*.

![Client details page: the toolbar, then one card with a Search fields box above the ID, System ID, Full name, Email, Phone, Discount, Revenue, Profit, Pending and Debt rows](https://requiply.com/docs/assets/clients/details/overview.png)

Contact details and finance figures are rows of the same list — there is no separate finance card. This client owes nothing, so Debt reads $0.00 and no **Settle debt** button appears, and Profit matches Revenue exactly ($413.22) because nothing was spent on subrentals or service payouts against their bookings.

## How to open it

The page lives at `/clients/{id}`, where `{id}` is the client's organization-scoped number. There are two ways in:

- On [Manage clients](https://requiply.com/docs/en/guides/clients/manage), click the **ID** tag in the left-most column of any row.
- From a booking, open the client popover (the client button on a booking row or on the booking detail page) and click the **ID** tag inside it.

The page runs the `auth` and `store-refresh` middleware, so it is available to any signed-in member of the organization.

## What you'll see

A sticky toolbar sits at the top with the client's full name, their email and phone, the number of bookings they have, and the same **Actions** split button used on [Manage clients](https://requiply.com/docs/en/guides/clients/manage) — edit, assign discount, delete. Deleting only succeeds for a client with no bookings; on success you are returned to the clients list.

Below the toolbar are up to three cards: the **details card**, then [Messaging](#messaging), then [Bookings](#bookings).

The details card holds every field row for the client — contact details, the finance figures, and the organization's own client fields — in one ordered list. Which rows appear and in what order is set per organization under [Settings → Fields → Detail page fields](https://requiply.com/docs/en/guides/settings/fields/detail-page-fields), so the order below is Requiply's default rather than a fixed layout.

A **Search fields…** box sits at the top of the card. Typing filters the rows by their label *and* their value — search an email address, a phone number, or a figure and only the matching rows remain. Matching ignores case and accents, and each word can match anywhere in the row. When nothing matches, the card shows **No fields match your search**.

### Details rows

The plain contact record:

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

<tbody>
  <tr>
    <td>
      <strong>
        ID
      </strong>
    </td>
    
    <td>
      The organization-scoped client number — the one shown on bookings and invoices.
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        System ID
      </strong>
    </td>
    
    <td>
      The internal database id, useful for support and API calls.
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Full name
      </strong>
    </td>
    
    <td>
      First and last name joined.
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Email
      </strong>
    </td>
    
    <td>
      Followed by quick actions — copy the address, or open it in your mail client. Shows a muted <strong>
        Not assigned
      </strong>
      
       when empty.
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Phone
      </strong>
    </td>
    
    <td>
      Followed by quick actions — copy the number, or open a Viber, WhatsApp, or Telegram chat with it. Shows a muted <strong>
        Not assigned
      </strong>
      
       when empty.
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Discount
      </strong>
    </td>
    
    <td>
      The assigned <a href="https://requiply.com/docs/en/guides/settings/pricing/pricing-discounts">
        pricing discount
      </a>
      
       as a tag with its percentage (for example <code>
        Premium (5%)
      </code>
      
      ), or <strong>
        Not assigned
      </strong>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Client portal
      </strong>
    </td>
    
    <td>
      Whether the client has an account on your <a href="https://requiply.com/docs/en/guides/online-booking/customer-accounts">
        client portal
      </a>
      
      . With one, a green <strong>
        Has account
      </strong>
      
       tag followed by <strong>
        Account since {date}
      </strong>
      
       and <strong>
        Last seen {date}
      </strong>
      
      ; without one, a grey <strong>
        No account
      </strong>
      
      . Starts hidden: add it in <a href="https://requiply.com/docs/en/guides/settings/fields/detail-page-fields">
        Detail page fields
      </a>
      
      .
    </td>
  </tr>
</tbody>
</table>

### Finance rows

Four figures summarising the client's financial history with your organization, all in the organization currency. They are rows in the same card as the contact details and can be reordered or hidden alongside them.

<table>
<thead>
  <tr>
    <th>
      Figure
    </th>
    
    <th>
      What it means
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <strong>
        Revenue
      </strong>
    </td>
    
    <td>
      Money actually collected: settled charges, minus recorded refunds, minus any security deposit still being held. A deposit is a liability until it is kept or returned, so it is not counted as revenue while you hold it.
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Profit
      </strong>
    </td>
    
    <td>
      Revenue minus costs. Costs are employee service payouts plus what you paid suppliers for <a href="https://requiply.com/docs/en/guides/bookings/subrentals">
        subrentals
      </a>
      
      , across all non-cancelled bookings, plus the net cost of goods the client bought (<a href="https://requiply.com/docs/en/guides/sales">
        Sales
      </a>
      
      ). Shown in green when positive, red when negative.
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Pending
      </strong>
    </td>
    
    <td>
      Charges that are currently pending or processing — money on its way but not yet settled.
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Debt
      </strong>
    </td>
    
    <td>
      What the client still owes: each booking's billed total minus what was actually collected on it, floored at zero and summed, plus the unpaid part of their standalone <a href="https://requiply.com/docs/en/guides/sales">
        sales
      </a>
      
      . Shown in red when above zero, with a <strong>
        Settle debt
      </strong>
      
       button next to it.
    </td>
  </tr>
</tbody>
</table>

<note>

**These figures are derived from payment records, not from booking totals.** A booking marked "paid" in the table but with no settled payment record still counts as debt here — the finance rows reflect money that actually moved.

</note>

Requests, cancelled bookings, and fully refunded bookings never contribute debt. A fully refunded booking is treated as called off, so re-billing the client for it would be wrong.

Goods sold on a booking are already inside that booking's total. What a client paid for a standalone sale counts in **Revenue**, and cancelled sales count nowhere.

<note>

**Settle debt covers bookings only.** The unpaid part of a standalone sale is included in **Debt**, but [Debt settlement](https://requiply.com/docs/en/guides/clients/debt-settlement) does not collect it. Collect it from the sale's **Payment** button on its [sale page](https://requiply.com/docs/en/guides/sales/sale-page#payments).

</note>

When the client owes money, the **Settle debt** button opens the debt settlement flow — see [Debt settlement](https://requiply.com/docs/en/guides/clients/debt-settlement). When a settlement is already running, this row shows the payoff payment itself with a **Regenerate** button beside it.

![The finance rows for a client owing money: Revenue $673.88, Profit $88.88 in green, Pending $490.92, and Debt $490.92 in red with a Settle debt button beside it](https://requiply.com/docs/assets/clients/details/finance-card.png)

Above, $673.88 was collected but Profit is only $88.88, so most of that went straight back out as subrental spend or service payouts. **Pending** and **Debt** show the same $490.92, which is not double counting: those charges have been raised but not settled, so the money is simultaneously *on its way* and *not yet collected*. It clears from both rows at once when the payment settles.

This client also has no discount assigned, which is why **Discount** reads a muted *Not assigned* rather than a tag.

### Messaging

Shown when your organization has at least one [messaging channel](https://requiply.com/docs/en/guides/settings/integrations/communications) configured, or when Requiply has already tried to message this client.

The card has two parts.

**Channel reach**, in the header beside the title — one entry per channel your organization has configured (**Telegram**, **Viber**, **SMS**), each showing whether this client can actually be reached on it:

<table>
<thead>
  <tr>
    <th>
      Channel
    </th>
    
    <th>
      What it shows
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <strong>
        Telegram
      </strong>
    </td>
    
    <td>
      The client's connection state — <strong>
        Connected
      </strong>
      
       (with their <code>
        @handle
      </code>
      
      ), <strong>
        Invited
      </strong>
      
      , <strong>
        Blocked
      </strong>
      
      , or <strong>
        Not connected
      </strong>
      
      . Until they connect, a <strong>
        Copy invite link
      </strong>
      
       button puts their personal bot link on the clipboard, ready to paste into a chat or email.
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Viber
      </strong>
      
       / <strong>
        SMS
      </strong>
    </td>
    
    <td>
      <strong>
        Phone on file
      </strong>
      
       when the client has a usable number, <strong>
        No phone number
      </strong>
      
       when they do not.
    </td>
  </tr>
</tbody>
</table>

**Recent messages**, underneath — a table of every message Requiply sent this client, newest first, ten rows to a page with a paginator. The columns are **Channel**, **Template**, **Message**, **Booking**, **Status**, and **Date**; the status is a **Sent** or **Failed** tag, and expanding a row shows the full message text. Failures carry the reason. When nothing has been sent yet, the card reads *No messages have been sent to this client yet*.

Failure reasons are written in plain language:

<table>
<thead>
  <tr>
    <th>
      Reason
    </th>
    
    <th>
      What to do
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <em>
        The client has not connected Telegram yet
      </em>
    </td>
    
    <td>
      Send them the invite link from this card.
    </td>
  </tr>
  
  <tr>
    <td>
      <em>
        The client blocked the bot
      </em>
    </td>
    
    <td>
      They removed the bot in Telegram; use another channel.
    </td>
  </tr>
  
  <tr>
    <td>
      <em>
        The client has no phone number
      </em>
      
       / <em>
        The client phone number is invalid
      </em>
    </td>
    
    <td>
      Fix the number on <a href="https://requiply.com/docs/en/guides/clients/add-or-edit">
        Add or edit client
      </a>
      
       — it must include a country code.
    </td>
  </tr>
  
  <tr>
    <td>
      <em>
        The messaging provider is not configured
      </em>
    </td>
    
    <td>
      Connect a provider under <a href="https://requiply.com/docs/en/guides/settings/integrations/communications">
        Communications
      </a>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <em>
        The message template was deleted
      </em>
      
       / <em>
        The template format does not match the channel
      </em>
    </td>
    
    <td>
      Repoint the <a href="https://requiply.com/docs/en/guides/automations/workflows">
        workflow
      </a>
      
       at a compatible template.
    </td>
  </tr>
</tbody>
</table>

<note>

This card is the fastest way to answer "did the client actually get the reminder?" — it records every automated send, including the ones that never left Requiply.

</note>

### Conversations

When the [Conversations inbox](https://requiply.com/docs/en/guides/conversations/inbox) is on and the client has chatted with you, a **Conversations** row lists their conversations from every channel: the channel (Booking page, Website widget, Telegram, OLX, Instagram) with the contact's profile picture when the channel shares one, the last message, its time, and a **Closed** tag on finished ones. Click a conversation to open it in the inbox. The row is hidden when the client has no conversations.

<figure>

![The client page of James Whitfield scrolled to the highlighted Conversations row. It lists one conversation from the Booking page with the last message Hi James, yes, Monday is free and the date 10/03/2026, 08:50 PM. Below it the Messaging card](https://requiply.com/docs/assets/clients/details/client-conversations.png)<figcaption>

Every chat with the client, whatever channel it came from, next to their bookings and messages.

</figcaption>
</figure>

The same list is on the mobile client page as a **Conversations** card.

### Binotel calls

An optional row in the details card that shows the client's phone calls from [Binotel](https://requiply.com/docs/en/guides/settings/integrations/communications#binotel), matched by the client's phone number, with recordings you can play on the spot and a button to call the client.

The row appears only when all of these are true:

- Binotel is connected under [Communications](https://requiply.com/docs/en/guides/settings/integrations/communications#binotel).
- An administrator has added **Binotel calls** to the Client tab of [Detail page fields](https://requiply.com/docs/en/guides/settings/fields/detail-page-fields) at [`/settings/fields/page-level-configurations?tab=client`](https://app.requiply.com/settings/fields/page-level-configurations?tab=client). It is **not** added automatically when Binotel is connected.
- Your [permission group](https://requiply.com/docs/en/guides/settings/organization/accounts/permission-groups) has **Allow access to client call history**. The Administrators group has it by default.

<figure>

![The Binotel calls row on a client page: the header with the assigned employee, the call summary, and the Call, Binotel, and refresh buttons; a table with Date, Direction, Employee, Status, and Duration columns showing an answered incoming call; and the recording player with a waveform, playback speed, and download button](https://requiply.com/docs/assets/clients/details/binotel-calls.png)<figcaption>

The **Binotel calls** row with a recording open. The client name is hidden in this screenshot.

</figcaption>
</figure>

**The header** sums up the client:

- the client's name in Binotel, the employee they are **Assigned to**, and their Binotel labels, or *Not in the Binotel customer list* when Binotel has no customer card for them,
- the number of calls, how many were missed (in red when above zero), and the total minutes of talk,
- **Call**, which calls the client through Binotel from your own line. Binotel rings your line first and dials the client once you pick up. Hovering the button shows which line will ring,
- a **Binotel** button that opens the client in your Binotel cabinet,
- **Refresh**, which reloads the history.

**The calls table** lists calls newest first, 10 per page:

<table>
<thead>
  <tr>
    <th>
      Column
    </th>
    
    <th>
      What it shows
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <strong>
        Date
      </strong>
    </td>
    
    <td>
      When the call started.
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Direction
      </strong>
    </td>
    
    <td>
      <strong>
        Incoming
      </strong>
      
       or <strong>
        Outgoing
      </strong>
      
      , with a colored arrow: green for answered, red for missed.
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Employee
      </strong>
    </td>
    
    <td>
      Who handled the call and their internal line. For unanswered calls, how long the client waited.
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Status
      </strong>
    </td>
    
    <td>
      <strong>
        Answered
      </strong>
      
      , <strong>
        Transferred
      </strong>
      
      , <strong>
        Missed
      </strong>
      
       (an incoming call nobody answered), or <strong>
        Busy
      </strong>
      
      , <strong>
        No answer
      </strong>
      
      , <strong>
        Cancelled
      </strong>
      
       (an outgoing call that did not connect).
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Duration
      </strong>
    </td>
    
    <td>
      How long the conversation lasted.
    </td>
  </tr>
</tbody>
</table>

At the end of each row, a link icon opens all calls with this number in Binotel, and the play button opens the recording right under the row. The player has a waveform you can click or drag to jump to any moment, the position and full length, a playback speed button, and a download button. The play button turns into an **X** that closes the player. Missed incoming calls without a recording show **Call back** instead.

Empty states:

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

<tbody>
  <tr>
    <td>
      <em>
        Add a phone number to match Binotel calls
      </em>
    </td>
    
    <td>
      The client has no phone number. Add one on <a href="https://requiply.com/docs/en/guides/clients/add-or-edit">
        Add or edit client
      </a>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <em>
        No calls with this client yet
      </em>
    </td>
    
    <td>
      Binotel has no calls with this number.
    </td>
  </tr>
  
  <tr>
    <td>
      <em>
        Binotel is not connected
      </em>
    </td>
    
    <td>
      The integration was disconnected or is inactive.
    </td>
  </tr>
  
  <tr>
    <td>
      <em>
        Binotel has no recording for this call
      </em>
    </td>
    
    <td>
      Call recording is off in Binotel for that line or employee.
    </td>
  </tr>
</tbody>
</table>

<warning>

**Call is disabled?** Requiply finds your Binotel line by matching the email of your Requiply account to an employee in Binotel. If they differ, the tooltip reads *Your account email does not match a Binotel employee, so there is no line to call from*. The history and recordings still work.

</warning>

For the whole organization's call log, with missed calls, unknown numbers, and the mobile app, see [Calls](https://requiply.com/docs/en/guides/clients/calls).

### Custom field rows

Every [client entity field](https://requiply.com/docs/en/guides/settings/fields/entity-fields) the organization has configured for the Client level appears as a row in the same card. New fields are visible by default and land at the end of the list; they can then be moved anywhere among the built-in rows under [Detail page fields](https://requiply.com/docs/en/guides/settings/fields/detail-page-fields). Checkboxes render as **Yes** / **No**, multi-selects as a comma-separated list, and empty values as **Not assigned**.

### Bookings

Every booking belonging to this client, split across five tabs. The page opens on the first tab that has rows, and each tab carries a count badge.

<table>
<thead>
  <tr>
    <th>
      Tab
    </th>
    
    <th>
      What lands here
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <strong>
        Overdue
      </strong>
    </td>
    
    <td>
      Ended before today and the booking's status does <strong>
        not
      </strong>
      
       release availability — the gear is still out. Adds a red <strong>
        Days Overdue
      </strong>
      
       badge.
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Today
      </strong>
    </td>
    
    <td>
      Starts or ends today. Adds a <strong>
        Type
      </strong>
      
       tag: <strong>
        Pickup
      </strong>
      
      , <strong>
        Return
      </strong>
      
      , or <strong>
        Same Day
      </strong>
      
      , and shows times as well as dates.
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Active
      </strong>
    </td>
    
    <td>
      Started before today and ends after today — currently out on rental. Adds a <strong>
        Days Left
      </strong>
      
       badge.
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Upcoming
      </strong>
    </td>
    
    <td>
      Starts after today.
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        History
      </strong>
    </td>
    
    <td>
      Ended before today and the status releases availability — closed and returned. Adds the booking's <strong>
        Total Cost
      </strong>
      
      .
    </td>
  </tr>
</tbody>
</table>

Every tab shows the booking ID (linking to the booking), start and end dates, the [payment status](https://requiply.com/docs/en/guides/bookings/manage#the-payment-column), and the booking status tag. Tables paginate at 10 rows.

The same widget appears on the inventory item detail page, where it answers the equivalent question for a piece of gear instead of a person.

## Empty and error states

- **Client not found** — a full-page placeholder with *This client may have been removed or belongs to another organization* and a **Back to clients** button. This is what you get from a stale link or an id belonging to a different organization.
- **No bookings** — the Bookings card shows a calendar icon and *No bookings for this client* instead of tabs.
- **Finance failed to load** — the finance rows show *Could not load finance data*. The rest of the page still works; reload to retry.
- **Every row hidden** — if an admin hides all rows for the Client level, the details card is not rendered at all. The messaging and bookings cards are unaffected.

## How this page connects to the rest of Requiply

<table>
<thead>
  <tr>
    <th>
      Feature
    </th>
    
    <th>
      Relationship
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <a href="https://requiply.com/docs/en/guides/clients/manage">
        <strong>
          Manage clients
        </strong>
      </a>
    </td>
    
    <td>
      Entry point via the ID column; the Actions button here is the same one used there.
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://requiply.com/docs/en/guides/clients/add-or-edit">
        <strong>
          Add or edit client
        </strong>
      </a>
    </td>
    
    <td>
      Reached from the Actions button; changes are reflected when you return.
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://requiply.com/docs/en/guides/clients/debt-settlement">
        <strong>
          Debt settlement
        </strong>
      </a>
    </td>
    
    <td>
      Launched from the <strong>
        Debt
      </strong>
      
       row and lives entirely on this page.
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Booking detail
      </strong>
    </td>
    
    <td>
      Every row in the Bookings card deep-links into it.
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://requiply.com/docs/en/guides/bookings/subrentals">
        <strong>
          Subrentals
        </strong>
      </a>
    </td>
    
    <td>
      Supplier spend on subrentals is subtracted from Profit.
    </td>
  </tr>
  
  <tr>
    <td>
      <strong>
        Services
      </strong>
    </td>
    
    <td>
      Employee service payouts are subtracted from Profit.
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://requiply.com/docs/en/guides/settings/pricing/pricing-discounts">
        <strong>
          Pricing discounts
        </strong>
      </a>
    </td>
    
    <td>
      The assigned discount is shown in the Details card.
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://requiply.com/docs/en/guides/settings/fields/entity-fields">
        <strong>
          Entity fields
        </strong>
      </a>
    </td>
    
    <td>
      Client-level custom fields become rows in the details card.
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://requiply.com/docs/en/guides/settings/fields/detail-page-fields">
        <strong>
          Detail page fields
        </strong>
      </a>
    </td>
    
    <td>
      Sets which rows the details card shows and in what order, for everyone in the organization.
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://requiply.com/docs/en/guides/settings/integrations/communications">
        <strong>
          Communications
        </strong>
      </a>
    </td>
    
    <td>
      The Messaging card reflects the Telegram integration and the invite link generated for this client.
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://requiply.com/docs/en/guides/automations/message-templates">
        <strong>
          Message templates
        </strong>
      </a>
    </td>
    
    <td>
      Named in every entry of the message log.
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://requiply.com/docs/en/guides/clients/calls">
        <strong>
          Calls
        </strong>
      </a>
    </td>
    
    <td>
      The organization-wide call log. The <strong>
        Binotel calls
      </strong>
      
       row shows the same calls filtered to this client.
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://requiply.com/docs/en/guides/settings/organization/accounts/permission-groups">
        <strong>
          Permission groups
        </strong>
      </a>
    </td>
    
    <td>
      <strong>
        Allow access to client call history
      </strong>
      
       decides who sees the <strong>
        Binotel calls
      </strong>
      
       row.
    </td>
  </tr>
  
  <tr>
    <td>
      <a href="https://requiply.com/docs/en/guides/reports/analytics">
        <strong>
          Analytics
        </strong>
      </a>
    </td>
    
    <td>
      Organization-wide versions of the same revenue and utilization figures.
    </td>
  </tr>
</tbody>
</table>

## Common scenarios

### A client walks in and wants to rent again

Open their page from the client popover on any past booking. The **Debt** row tells you immediately whether to take payment before handing over new gear, and the **Overdue** tab shows anything they still have not returned.

### Chasing an overdue return

The **Overdue** tab lists only bookings whose status has not released availability, with a day count on each. Click straight through to the booking to call the client or extend the dates with [Edit booking dates](https://requiply.com/docs/en/guides/bookings/changing/dates).

### Working out whether a client is worth the trouble

Compare **Revenue** and **Profit**. A large gap means the client's bookings lean heavily on subrented gear or paid services — the revenue is real but most of it leaves again.

## Tips and cautions

<note>

**Tip:** The Bookings card auto-selects the first non-empty tab. If the page opens on **Overdue**, that client has something outstanding — no need to go looking.

</note>

<warning>

**Heads up:** **Profit** counts service payouts and subrental spend, but not general overheads. Treat it as gross margin per client, not net profit.

</warning>

<warning>

**Heads up:** A client with bookings **cannot** be deleted. The delete dialog lists the bookings that block it, and the confirm button stays disabled until they are gone — so the Bookings card here is also the checklist for what to clear first.

</warning>


## Sitemap

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