ConnectWise Manage - PSA Agreement Billing Sync (Beta)
Discover how to enable PSA agreement billing synchronization in ConnectWise Manage to enhance efficiency and accuracy.
Table of Contents
Overview
PSA Agreement Billing Sync keeps your ConnectWise Manage billing in step with what AutoElevate is actually protecting. Each night AutoElevate counts the active agents in every one of your companies and writes that number into the quantity of a product line — an addition — on that company's ConnectWise agreement. This removes the need to reconcile agent counts manually and keeps invoiced quantities aligned with your current deployment.
The sync is configured once for your whole organization, and then applies to every company you have linked to a ConnectWise Manage company. AutoElevate only ever writes the quantity — it never creates an agreement, never creates a product line, and never changes a price.
This is a Beta feature. PSA Agreement Billing Sync is newly released and still being validated. Its behavior and interface may change. If the row does not appear in Settings, see "PSA Agreement Billing Sync" does not appear in Settings under Troubleshooting.
This feature changes billing quantities automatically. When a company's agents stop checking in — an offboarded client, a site taken offline, a mass uninstall — its quantity is written down to zero on the next run, with no notification and no approval step. This is correct behavior for billing accuracy, but it is a silent revenue change. Reconcile your first month of invoices before relying on the sync unattended.
How Agreement Billing Sync Works
What gets counted
A computer counts as active when it is not deleted and has checked in within the last 30 days. The count is per company, across all of that company's locations, and it is the same number for every platform — there is no separate Windows and macOS breakdown in this version.
What gets written
For each linked company, AutoElevate:
- Finds the company's one active agreement in ConnectWise Manage.
- Finds the addition on that agreement whose catalog product matches your configured Product Identifier.
- Replaces that addition's quantity with the active agent count.
The write is an absolute replacement, not an increment. If the addition already shows the right number, AutoElevate skips the write entirely and records the company as skipped for that run. Running the sync twice in succession produces no change on the second run.
Which agreement AutoElevate picks
AutoElevate only considers agreements that are genuinely in force at the moment the run reaches that company:
- Not cancelled.
- Already started — an agreement with no start date is treated as started.
- Not expired — an agreement is still eligible on its final day, and one with no ending date never expires.
Exactly one agreement has to match. If a company has none, or has two or more, AutoElevate does not select one automatically; it reports that company as needing setup and continues to the next company. The Agreement Type Filter resolves the "two or more" case; see the configuration steps below.
Which companies are included
Only companies that are linked to a ConnectWise Manage company are included, and linking is done from the Companies grid — it is the same link your ConnectWise ticketing integration already uses. Two situations look similar but behave differently:
- No ticketing system link at all. The company is skipped silently: no result line, no error.
- A link that exists but is incomplete. The company is reported as an error. This is what a company looks like after the organization switches ticketing systems, until the company is re-linked.
Before You Begin
Have all of the following in place before you enable the sync. The first four items must be created in ConnectWise Manage; AutoElevate does not create them.
- A ConnectWise Manage integration set up in AutoElevate. Billing sync reuses that connection and its credentials; there is no separate connection to configure.
- An active agreement on every company you want billed. This must be created in ConnectWise Manage.
- An addition on each of those agreements, pointing at the catalog product you want AutoElevate to update. This must also be created in ConnectWise Manage. A company whose agreement lacks it is reported as needing setup on every run until the addition exists.
- One catalog product identifier used consistently across all of those agreements. The identifier is configured once for the whole organization, so every company's addition must reference the same product.
- Your AutoElevate companies linked to their ConnectWise companies.
- API permissions on the ConnectWise API member AutoElevate uses. On that member's security role, set Companies → Company Maintenance to Inquire: All, and Finance → Agreements to Inquire: All and Edit: All. Agreement additions are governed by the Finance → Agreements row; no other Finance permission is required, and no other Finance data is accessed by this feature.
Enabling and Configuring the Sync
Step 1 — Open the setting
- In the AutoElevate Admin Portal, go to Settings.
- Find the PSA Agreement Billing Sync row, under the Ticketing category. Its value column reads Not Set, Enabled or Disabled.
- Open the row for editing.

The dialog opens with Applies to: Global — this setting is configured once for the whole organization; there is no per-company version of it.
The dialog looks up your PSA type when it opens, so you see the ConnectWise fields only when your organization is connected to ConnectWise Manage.
If the row is not present, see "PSA Agreement Billing Sync" does not appear in Settings under Troubleshooting. This setting is provisioned automatically; the portal provides no Add action for it.
Step 2 — Fill in the fields
| Field | Required | What it does |
| Enable nightly billing sync | Yes | Enables the sync. Nothing is written to ConnectWise Manage while it is off. The dialog explains it as "Each night, AutoElevate updates your PSA billing quantities with the count of active agents (checked in within the last 30 days) for every linked company." |
| Agreement Type Filter | No | The agreement type name, used to select the correct agreement when a company has more than one active agreement. The field's own hint reads "Optional. Selects the agreement when a company has more than one." Example: Managed Services. |
| Product Identifier | Yes | The ConnectWise catalog product on each company's agreement addition — it must already exist, and its quantity is what gets overwritten each night. Example: AutoElevate Agent. |

The fields appear in that order in the dialog. Both text fields accept up to 100 characters and cannot contain a double-quote (") character. Saving is blocked if the sync is enabled without a Product Identifier; the form reports that a product identifier is required when billing sync is enabled.
Step 3 — Save and verify
- Save the setting. The Settings row now reads Enabled.
- After the next nightly run, review the results below and resolve any company reported as needing setup.
The setting records which PSA it was saved for. If you later switch to a different ticketing system, the sync stops entirely until you update this setting — it does not begin writing to a different PSA on its own. Switching PSA takes two steps, and both are required:
- Change a field before you save. Opening the dialog and clicking Save re-sends the stored value unchanged, which does not update the recorded PSA. Edit a field first — retyping the Product Identifier is enough — and then save.
- Re-link every company. Companies that were already linked still point at the previous ticketing system, and AutoElevate links a company only when it has no link at all, so nothing re-evaluates them for you. Re-link each company from the Companies grid (Ticketing System → Link). Until you do, those companies are reported as errors on every run.
Reading the Nightly Results
Every run reports one status per company:
| Status | Meaning |
| Updated | The addition's quantity was changed. The detail line shows the old and new values. |
| Skipped | The addition was already at the right number, so nothing was written. |
| Needs setup | AutoElevate could not find exactly one agreement, or exactly one matching addition, for that company. This indicates a configuration gap rather than a failure, and is deliberately not logged as an error. |
| Error | A genuine failure, such as an authentication problem, an API error, or a company whose ticketing system link is incomplete. The run continues with the next company. |
Companies with no ticketing system link at all produce no line. A company whose link exists but is incomplete is reported as an Error.
A run summary is recorded internally with the totals — organizations processed, organizations needing attention, and companies updated, skipped, needing setup and errored. There is no customer-facing view of it, so contact CyberFOX Support if you require the result of a specific run.
Best Practices
- Standardize on one AutoElevate product across every agreement. The product identifier is a single organization-wide value, so a company whose agreement uses a different product reports as needing setup indefinitely.
- Create a dedicated addition when AutoElevate is sold inside a bundle. Add an AutoElevate addition to each bundled company's agreement — at a zero rate if the price is carried by the bundle line — so that the sync has a dedicated line to write to.
- Set an Agreement Type Filter up front if any company carries more than one active agreement. This avoids triaging "multiple active agreements" results later.
- Review the needs-setup results after the first nightly run. Treat that list as a build-out checklist; it clears once every company has its addition.
- Reconcile your first month of invoices before relying on the sync unattended — see the warning in the Overview about quantities being written down to zero.
- Keep company names synchronized. The company link is matched on your AutoElevate company name against the ConnectWise company identifier by default, so renaming one side can leave a new company unlinked.
Troubleshooting
"PSA Agreement Billing Sync" does not appear in Settings
Every organization receives this row automatically, and it cannot be added through the portal's normal Add setting flow. If it is missing from your Settings grid, open a support ticket and reference this article so that Support can have the setting created for your account.
The Enable nightly billing sync checkbox is unavailable
The dialog shows the message "Agreement billing sync requires a ConnectWise Manage or Halo PSA integration. Set up a supported PSA Integration first, or switch the sync off." Your organization has no supported PSA integration connected; set one up first. If the sync was already enabled before the PSA changed, you can still switch it off, but you cannot switch it back on until a supported PSA is connected.

"No active ConnectWise agreement found for company …"
No agreement on that ConnectWise company satisfies all of the active tests: not cancelled, already started, not expired. Check the agreement's cancelled flag and its start and end dates. Cancelled, expired and future-dated agreements are ignored by design.
"Multiple active ConnectWise agreements found for company …"
The company has more than one agreement in force, and AutoElevate does not select between them automatically. Set the Agreement Type Filter to the agreement type that carries your AutoElevate line, or retire the agreements that should no longer be active.
"No addition with product identifier … found on agreement …"
The agreement exists but has no line item for your configured product. Add the addition in ConnectWise, referencing the catalog product whose identifier matches the setting exactly, then wait for the next run. AutoElevate does not create the addition.
"Multiple additions with product identifier … found on agreement …"
That agreement carries two or more lines for the same catalog product, so there is no single quantity to write. Consolidate them into one addition.
"Company is not linked to a ConnectWise Manage company"
This message means the company’s ticketing system link exists but is incomplete — most often after switching ticketing systems, when the link still points at the previous one. It is reported as an error, not as needing setup. A company with no ticketing system link at all is skipped silently and never produces this message.
Re-link the company from the Companies grid (Ticketing System → Link), or from that company’s Ticketing System Setup screen, then wait for the next run.
"Billing sync was saved for … but the PSA integration is now …"
Your PSA integration changed type after the billing sync setting was saved. Nothing syncs until you update PSA Agreement Billing Sync against the current PSA — and saving the dialog without editing anything re-sends the stored value unchanged, so change a field (retyping the Product Identifier is enough) before you save. You must also re-link every company from the Companies grid: companies linked to the previous ticketing system are not re-evaluated automatically and are reported as errors until they are re-linked.
The quantity in ConnectWise does not match what the portal shows
Check the following before escalating. First, the count is per company across all locations, and it includes only computers that are not deleted and have checked in within the last 30 days — a company page filtered to one location, or showing all-time installations, will not agree with it. Second, the value written is the count at the moment the nightly run reached that company; agents that checked in later are picked up on the following run.
The addition is updated every night but the quantity never changes
A company that reports Updated on every run while its quantity stays the same usually means the quantity is being returned as text rather than as a number, so the check that normally skips an unchanged addition never matches and the addition is written again each night. The billed value stays correct; the run simply looks busier than it is. Report it so it can be corrected.
No changes have appeared since the sync was enabled
The sync runs on a schedule rather than on save, so allow one full overnight cycle. If a second night passes with no change to a company you expect to be updated, open a support ticket and reference this article.
Security Notes
- AutoElevate’s write surface in ConnectWise Manage is intentionally limited. The feature uses three calls — read agreements, read agreement additions, and edit an agreement addition. No other Finance data is read or written, and billing sync does not maintain your company links; your ticketing integration does that.
- Only quantity changes. Rates, products, agreement dates and agreement status are never modified.
- No new credentials. The sync reuses your existing ConnectWise Manage integration credentials; no additional credentials are stored.
- Requests are bounded. Each call times out after 30 seconds, refuses redirects and caps the response it will read, and AutoElevate waits 250 milliseconds between companies.
- Values you enter are validated before they are used in a query. Double-quote characters are rejected in the Product Identifier and Agreement Type Filter at save time and again at run time.