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

# Receive bills on WhatsApp

> Link your firm's WhatsApp number, bind each client's sending number, and assign bills from unknown senders.

Clients send bills to your firm's linked WhatsApp number. Pragma files a bill against the client its **sender** is bound to: the client's own mobile, not the number the firm receives on. A bill from a number nobody has bound is held for a person to assign instead of being guessed at.

Only an **Owner** links the firm's number and sees **Settings → WhatsApp intake**. An **Owner**, or a **Manager** assigned to the client, binds senders on the client's **Setup → Intake** tab.

## Link the firm's number

**1. Check the connection status**

Open **Settings → WhatsApp intake**. Under **WhatsApp number for this firm**, the badge reads **Connected**, **Linking**, **Not reconnecting** or **Not linked**. When connected, it shows the **Number**, what it is **Called**, **Connected since** and **Last spoke to WhatsApp**. With **Not linked**, nothing a client sends is collected.

**2. Link a number**

Select **Connect a WhatsApp number** and read **Use a number you do not use**: Pragma becomes a linked device on that number, reads and sends its messages automatically, and WhatsApp may ban a number used for automation. Enter **Name this number** (for example `Front desk`, up to 80 characters), tick **I understand this number will be automated and should not be a personal number**, and select **Generate a code**.

**3. Scan or type the code**

On the phone that holds the number, open WhatsApp → **Settings → Linked devices → Link a device** and scan the code; it refreshes on its own. To pair without the camera, select **Link with a code instead**, enter the **Mobile** being linked, select **Get a code**, then on the phone choose **Link with phone number instead** and type the single-use **Pairing code**. A brief disconnect right after scanning is normal. When **Number linked** appears, check that phone for the confirmation message, then select **Done**.

**4. Recover or change the number**

If the badge reads **Not reconnecting**, nothing sent to the number is being collected: select **Reconnect**, or **Disconnect** and link another. If a link was started but never finished, use **Show the code** to continue or **Stop trying** to abandon it. **Disconnect** stops collecting bills sent to the number and removes it from that phone's linked devices; nothing already filed changes. Only one number can be linked per firm.

## Bind each client's sending number

![Client Intake tab showing WhatsApp senders and the bind sender control](https://help.pragmachartered.com/images/invoices/client-intake.png)

**1. Check who is already bound**

Open **Clients → \[client] → Setup → Intake**. Under **WhatsApp senders**, check the list before adding another mobile; **No senders bound** means bills from this client are all being held. The **Intake** tab shows the number of active senders.

**2. Bind a sender**

In **Their mobile**, enter the client's **10-digit Indian mobile**, for example `9876543210`; the `+91` prefix is shown separately, not typed. Select **Bind sender**; the button stays unavailable for fewer than 10 digits. Repeat for each mobile the client sends from.

**3. Understand a Hidden number**

A sender may show **Hidden number**: WhatsApp did not disclose that sender's number. It was created when a held message was assigned with its sender remembered, and messages from it still route to this client. Do not type a guessed number to replace it.

**4. Unbind a sender**

Select **Unbind** beside the sender and confirm **Unbind**. Bills sent from that number stop being filed against this client; nothing already filed moves.

The **Email** section on the tab is informational: email intake is not available. On **Settings → WhatsApp intake**, the **Who can send us bills** table lists each active client with its **Senders** count (**None** if nothing is bound) and **Numbers**; select a row to open the client and bind one. A badge such as **2 opted out** lists numbers that replied STOP: their bills still arrive, but they get no acknowledgement back.

## Assign bills from unknown senders

When a bill arrives from a number nobody has bound, it appears under **Waiting to be assigned** on **Settings → WhatsApp intake**, with **Received**, **From** (or `unknown`), **File** and **Type**. Nothing is filed until someone decides whose it is. The section is hidden when nothing is waiting.

**1. Identify the sender**

Check the **From** number and file name with your team or the client before assigning. If the bill is not for your firm, select **Discard**.

**2. Assign it to a client**

Select **Assign**, choose the client in **File this against**, and leave **Remember this sender for that client** ticked if every future bill from this number belongs to the same client (untick it for a one-off). Select **Assign**, or **Cancel** to back out. The bill is then fetched and read like any other WhatsApp bill and appears in **Review queue**.

A received document is not a voucher posted to the client's books (Tally or Zoho Books): [review and approve it](https://help.pragmachartered.com/invoices/review-and-approve.md). The client's **Overview → Messages** tab shows each WhatsApp message and file from that client (see [Request documents from clients](https://help.pragmachartered.com/clients/document-requests.md)).

## When something is refused

* **That WhatsApp number is already bound to a client. Unbind it first.** The same active number cannot route to two clients, in your firm or another. Check with the sender and your team before changing a binding.
* **Too many attempts. Wait a moment and try again.** Binding attempts are rate-limited.
* **A WhatsApp number is already linked. Disconnect it before linking another — one number per practice, or a client would get replies from a number they have never seen.**
* **Confirm you understand that this number will be automated before linking it.**
* An **Assign** or **Discard** that reports a conflict means a colleague, or the [agent](https://help.pragmachartered.com/automation/agent.md), already handled that message.

> [card] Still stuck?
>
> [Open a case](https://app.pragmachartered.com/support) from **Help & support** in Pragma, or [book a walkthrough](https://help.pragmachartered.com/support/book-a-walkthrough.md) and the team will show you around on a call. Can't sign in? [Contact support](https://app.pragmachartered.com/contact-support).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.