# Tax authority - FBR Digital Invoicing (Pakistan)

> Report every sale and return to FBR Digital Invoicing from SmartPOS Hub and print the FBR invoice number and QR code on receipts. Setup, product fields and submissions.

Source: https://docs.smartposhub.com/modules/tax-authority-fbr/  
Last updated: 2026-10-30  
Product: SmartPOS Hub (https://smartposhub.com)

The **Tax authority** module reports your sales and returns to **FBR Digital Invoicing** (Pakistan) and prints the FBR invoice number and QR code on your receipts.

> **How to turn it on**
> 1. **Plan:** Tax authority (FBR)
> 2. **Switch:** Settings › Business Settings › Modules › Tax authority (FBR) (off by default), then Settings › Tax authority
> 3. **Permission:** Tax authority: view / manage (settings and product tax fields) / resubmit

**Caution:** 
The FBR connection is built from FBR's published technical specification and is waiting to be tested with real FBR keys (the Integrations card shows **Needs keys to test**). Start in **sandbox** mode and run the sandbox tests before going live. The setup screens could not be shown here because the module is off in the demo accounts.

![Integrations page with the Tax authority card and FBR Digital Invoicing provider with Connect](https://docs.smartposhub.com/_astro/on-integrations-hub.gX0ZPWtc.png) (web app page: `/integrations`)

## Set it up

1. Switch on **Tax authority (FBR)** in **Settings › Business Settings › Modules**.
2. Open **Settings › Tax authority** (also from **Online & apps › Integrations › Tax authority**).
3. **Connection**: paste the sandbox and production tokens, choose the mode and test.
4. **Seller & defaults**, **Documents**, **Locations**: your NTN and seller details, which document types and which locations report.
5. Fill FBR fields on products (HS code, unit, sale type, rate, SRO schedule and item) - directly, through **Category defaults**, or with the extra columns of the product import.
6. On customers, fill the **Tax registration (FBR)** section (NTN/CNIC, registered or unregistered, province) and use **Check with FBR**.
7. Run the **Sandbox tests**, then switch to production when FBR approves.

## Follow submissions

**Reports › Tax authority submissions** shows each document's status (accepted, rejected, retrying, unconfirmed…), with errors explained, **Resubmit**, **Retry all rejected**, entering an FBR number by hand, **Do not report**, and CSV export. The sales list shows an **FBR ✓** or **FBR: Rejected** badge next to each invoice number.

## Related pages

  - [Integrations](https://docs.smartposhub.com/modules/integrations/)
  - [Receipts and invoice layouts](https://docs.smartposhub.com/selling/receipts-and-invoice-layouts/)
  - [Returns and refunds](https://docs.smartposhub.com/selling/returns-and-refunds/)
  - [Import products from Excel](https://docs.smartposhub.com/catalog/import-products-excel/)

## Frequently asked questions

### Which tax authority is supported?

FBR Digital Invoicing in Pakistan. Other countries can be added later.

### Does FBR reporting slow down the till?

No. The sale is saved first; reporting happens right after in the background, so the till never waits or fails because of FBR.

### What is printed on the receipt?

The FBR Digital Invoicing logo, the QR code and the FBR invoice number on every invoice design. Until FBR accepts it, the receipt says FBR invoice no.: pending. In sandbox mode it says Sandbox - not a legal invoice.

### What do I need from FBR?

A sandbox token from PRAL to test, then the production token after FBR approves your sandbox tests. Enter both in Settings › Tax authority and choose the mode.

### What happens to returns?

Each new returned quantity is sent as a note against the original FBR invoice, after the original sale was accepted.

### A sale was rejected. What do I do?

Open Reports › Tax authority submissions, read the error and the hint, fix the product or customer data (for example the HS code), then Resubmit.

### Can I cancel an accepted FBR invoice?

No. FBR cannot cancel an accepted invoice; make a sales return instead.
