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

# Reconcile PSA billing with integration data

> Compare PSA billing agreements against actual device and license counts from your integrations to catch over-billing and under-billing before invoices go out.

Billing reconciliation lets you compare the quantities in your PSA billing agreements against the devices and licenses actually synced from your integrations. Recapp pulls agreement and line item data from your default PSA (HaloPSA or ConnectWise Manage), maps each line item to the appropriate integration data source, and calculates variances automatically. This catches over-billing and under-billing before your invoices go out.

<Warning>
  Billing Reconciliation is a **Pro and Enterprise** feature. If you are on the free plan, upgrade to access this page.
</Warning>

## Syncing billing data

At the top of the page, Recapp shows your default PSA integration alongside a **Sync** button. Click it to pull the latest agreements and line items from your PSA. The button shows a progress indicator while the sync is running and displays the last sync time once complete.

You can filter the entire page by **organization** and by **integration** using the two dropdowns next to the sync button. Both filters apply uniformly across all tabs — Agreements, Unmapped, Mapped, Ignored, and Reconciliation — so the counts you see in each tab always reflect your current filter selection.

## Tabs

<Tabs>
  <Tab title="Agreements">
    The **Agreements** tab shows every billing agreement synced from your PSA, organized as an expandable tree. Each agreement contains its line items, and each line item shows the product name, billed quantity, unit price, billing type, and quantity source.

    From this tab you can configure a mapping for any line item, edit an existing mapping, ignore a line item, or delete it. For adjustment or credit lines (negative price), use the **Link** button to associate the adjustment with its parent line item rather than mapping it to an integration.
  </Tab>

  <Tab title="Unmapped">
    The **Unmapped** tab lists line items that have not yet been mapped to an integration data source and have not been ignored. These are lines Recapp cannot yet reconcile.

    You can search unmapped items by product name, product ID, agreement name, or organization name. Select individual items or use **Select all** to bulk-ignore or bulk-delete multiple items at once. Pagination controls let you work through large lists 10, 25, 50, or 100 items at a time.
  </Tab>

  <Tab title="Mapped">
    The **Mapped** tab shows all active mapping configurations — the connections between PSA line items and integration data sources. Each entry shows which integration the line item is reconciled against and allows you to edit the mapping configuration.
  </Tab>

  <Tab title="Ignored">
    The **Ignored** tab lists line items you have explicitly excluded from reconciliation. Ignored items do not appear in reconciliation results or unmapped counts. You can restore or permanently delete ignored items individually or in bulk.
  </Tab>

  <Tab title="Reconciliation">
    The **Reconciliation** tab appears once you have at least one active mapping. It shows the comparison results — billed quantity from your PSA versus the actual count from your integration — and flags discrepancies by variance level: **critical** or **warning**.

    The header shows when the comparison was last calculated. Click the refresh icon to recalculate on demand.
  </Tab>
</Tabs>

## Configuring a mapping

When you click **Configure Mapping** on a line item, Recapp inspects the line item's billing quantity type from your PSA and determines the appropriate reconciliation mode automatically:

<Accordion title="Reconciliation modes">
  * **Asset count** — reconciles against device counts from an RMM or endpoint integration. You can optionally filter by device category (Desktop, Server, Laptop) and apply advanced filters on OS name or device name.
  * **Licence count** — reconciles against Microsoft CSP or Microsoft 365 license seat counts. You can select specific SKUs to match against.
  * **User count** — reconciles against user counts from an integration. You can choose between licensed users only or all active users.
  * **Subscription count** — reconciles against Pax8 subscription counts. You can select specific subscription products.
  * **Manual** — used for ConnectWise additions or other lines without a declared quantity source. You can optionally choose a comparison integration.
  * **Custom SQL** — quantity is sourced from a custom SQL expression in HaloPSA. Mapping to an integration is not available for these lines; adjust them directly in HaloPSA.
</Accordion>

For any mapping mode you can also set a **units per line item** multiplier. If a single billing line covers multiple underlying assets — for example, "BDR Subscription (2 servers)" — set this to `2` so Recapp multiplies the PSA billed quantity by 2 before comparing.

<Tip>
  Click a discrepancy row in the Reconciliation tab to open the mapping configuration dialog for that line item. From there you can adjust the integration, filters, or multiplier to resolve the variance.
</Tip>

<Note>
  The legacy URL `/reconciliation` redirects automatically to the current Billing Reconciliation page. Any bookmarks or external links using the old path will continue to work.
</Note>
