CoPortalDocs

Power features

Integrations

CoPortal connects to your accounting software, automation tools, and enterprise ERP systems. All integrations are managed from Settings → Integrations.

Import preview (Xero / QuickBooks / Sage)

Before importing contacts from any accounting integration, CoPortal shows a preview modal so you can see exactly what will happen. Each row is tagged:

  • New — not in CoPortal yet, will be created
  • Duplicate email — already exists in your CoPortal clients (will be skipped unless you explicitly select it)
  • Linked — already linked to a CoPortal client via the external ID

A read-only field-mapping table shows how external fields map to CoPortal fields (name, email, phone, billing address). Tick the rows you want to import and confirm.

Per-integration toggles (Xero / QuickBooks / Sage)

Each accounting integration has three independent toggles on the Integrations page:

  • Auto-sync — when on, invoices sync automatically on send or status change
  • Sync as draft — when on, invoices post as drafts in the accounting software so you can review before sending (off means they post as approved/sent)
  • Display-only payments — when on, marking an invoice paid in CoPortal will not push paid status to the accounting system. The accountant owns payment state there. Useful when CoPortal is your client-facing layer and an external accountant manages the books.

Flags are per-provider, so you can (for example) auto-sync Xero but keep QuickBooks manual, push Sage as draft while Xero goes straight to approved, or run QuickBooks display-only while Xero pushes paid status.

Xero Studio+

Two-way sync of contacts plus outbound sync of invoices and quotes. Used widely in the UK, AU/NZ, and the US.

Connecting Xero

Go to Settings → Integrations and click Connect Xero. You'll be redirected to Xero to authorise CoPortal — pick the organisation you want to sync to. After authorising, you're returned to CoPortal with the connection active and the organisation name shown on the Xero card.

Syncing invoices

A Sync to Xero button appears on every invoice once connected. On sync:

  • The client is matched to a Xero contact by external ID first, then by email; created if neither matches
  • Invoice number, line items, VAT rate, due date, currency, and notes are all carried over
  • Subsequent syncs update the existing Xero invoice — no duplicates
  • The Xero invoice ID and last-synced timestamp are stored on the CoPortal record

Syncing quotes

Quotes push as Xero Quotes with status mapped (Sent → Sent, Accepted → Accepted, Declined → Declined). Multi-option quotes only sync the accepted tier — until acceptance, the headline subtotal goes as a single estimate.

Importing contacts

Click Preview import on the Xero card. Each Xero contact is tagged new, duplicate email, or linked — tick the rows you want to import and confirm.

Per-integration auto-sync and sync-as-draft toggles let you push automatically (on send) and as drafts (so you can review in Xero before they go to the client there).

QuickBooks Online Studio+

QuickBooks has the deepest integration — outbound sync for invoices/quotes/customers plus two-way invoice import with payment-state mirroring, perfect for moving historical billing data into CoPortal or running CoPortal alongside an accountant who manages the books.

For the full end-to-end reference (every setting, every flow, troubleshooting) see /docs/quickbooks. Quick summary below.

Connect

Go to Settings → Integrations and click Connect QuickBooks. Sign in to Intuit, pick the company, authorise. Tokens are encrypted at rest and refresh automatically.

Syncs

  • Invoices — push as QB Invoices, preserving DocNumber. Re-syncs update the existing QB record.
  • Quotes — push as QB Estimates with status mapping (Sent → Pending, Accepted → Accepted). Multi-option quotes only sync the accepted tier.
  • Customers — created lazily on first invoice push, or in bulk via Preview customers.

Imports

  • Customers — bulk import with new/duplicate/linked tagging.
  • Invoices — preserves DocNumber, mirrors partial payments as CoPortal payment rows so outstanding balances are correct from day one. Falls back to QB-<DocNumber> on number conflicts.
  • Estimates — bulk import as CoPortal proposals.

Settings

Auto-sync, Sync-as-draft, and Display-only payments toggles all on the QB card. Marking an invoice paid in CoPortal does not push paid status to QuickBooks — the accountant owns payment state in QB. Display-only payments locks that contract for future code paths.

Sage Business Cloud Accounting Agency+

Sync invoices and contacts to Sage Business Cloud Accounting — the cloud accounting platform widely used in South Africa and the UK.

Connecting Sage

Go to Settings → Integrations and click Connect Sage. You'll be redirected to Sage to authorise CoPortal access. After authorising, you're returned to CoPortal with the connection active.

Syncing invoices

Once connected, a Sync to Sage button appears on sent and paid invoices. On sync:

  • The client is created as a Sage contact if they don't already exist — or matched by name
  • VAT is applied using the 15% South African standard rate (fetched from your Sage tax settings)
  • Line items, due date, and invoice reference are all included
  • Subsequent syncs update the existing Sage invoice — no duplicates
  • The Sage invoice ID + last-synced timestamp are stored on the CoPortal record

Syncing quotes

Quotes push as Sage Quotes via the same one-click flow. Multi-option quotes only sync the accepted tier; lead-linked quotes skip auto-sync to avoid polluting Sage with speculative estimates.

Importing contacts

Click Preview import on the Sage card to open the preview modal. Each Sage contact is tagged as new, duplicate email, or linked — tick the rows you want to import and confirm. Per-integration auto-sync and sync-as-draft toggles are also available on the Sage card.

Important: Sage's OAuth tokens are scoped to a single business. If your Sage account has multiple companies, you'll need separate CoPortal workspaces for each.

Microsoft Business Central Enterprise

Business Central is Microsoft's ERP platform for mid-size businesses. The CoPortal integration syncs invoices and customers over the Business Central OData API.

Connecting Business Central

Go to Settings → Integrations and click Connect Business Central. You'll authenticate via Microsoft (Azure AD). CoPortal automatically discovers your Business Central environments and companies — the first production environment and company are selected by default.

To switch environments or companies: click Change company on the Business Central card.

Syncing invoices

A Sync to Business Central button appears on invoices once connected. On sync:

  • The client is created as a BC customer if not already present — or matched by email
  • The invoice header is created first, then each line item is posted as a nested resource
  • The Business Central invoice ID and sync timestamp are stored on the CoPortal record

Importing customers

Click Import BC Customers to bulk-import your Business Central customer list into CoPortal. Existing clients matched by email are skipped.

Note: Business Central requires an Enterprise plan. The integration authenticates via your organisation's Azure AD tenant — your IT administrator may need to grant admin consent for the CoPortal application the first time.

Zapier Agency+

Connect CoPortal to 6,000+ apps through Zapier — no code required. Use CoPortal as a trigger (something happens in CoPortal → do something in another app) or as an action (something happens in another app → do something in CoPortal).

Connecting Zapier

From Settings → Integrations, click the Zapier card to open the Zapier integration page. You'll need a CoPortal API key — generate one from Settings → API Keys. Enter it in Zapier when prompted.

Available triggers

New invoice createdFires when any invoice is created in CoPortal
Invoice paidFires when an invoice status changes to Paid
New client addedFires when a client record is created
New project createdFires when a project is created (includes client name)
Quote acceptedFires when a proposal is accepted by a client
New lead addedFires when a new lead is added to the CRM pipeline

Available actions

Create clientAdds a new client to CoPortal (deduplicates by email)
Create invoiceCreates a draft invoice with line items (finds or creates client by email)

Example Zaps

  • New CoPortal invoice → create row in Google Sheets
  • Invoice paid → send Slack message to your team channel
  • New Typeform submission → create CoPortal lead
  • Quote accepted → send congratulations email via Gmail
  • New CoPortal client → add contact to Mailchimp audience

Single Sign-On (SSO) Enterprise

Enterprise workspaces can require team members to log in using your organisation's identity provider — Google Workspace, Microsoft Entra ID (Azure AD), or any SAML 2.0-compatible IdP.

How it works

When SSO is configured for your domain (e.g. yourcompany.com), anyone signing in with that email domain is automatically redirected to your identity provider. After authenticating there, they're returned to CoPortal with their session established.

Setting up SSO

Go to Settings → Integrations → Single Sign-On. Enter your company domain and select your provider:

  • Google Workspace — uses Google OAuth. No additional configuration required.
  • Microsoft / Entra ID — uses Microsoft OAuth. Your Azure AD tenant must allow external OAuth apps.
  • SAML 2.0 — paste your IdP's metadata URL. Contact support to complete SAML setup as it requires configuration on the Supabase Auth layer.
Note: SSO is an Enterprise-only feature. Contact hello@coportal.io to discuss your setup requirements before configuring SAML.

What syncs across all accounting integrations

Invoice numberCarried over as the reference number
Client name & emailMatched to existing contact or created
Line itemsEach item with description, quantity, and unit price
VAT / GSTApplied at the rate set on the CoPortal invoice
Due dateIf set
Invoice statusDraft in CoPortal → Awaiting Payment in accounting software

General notes

  • Accounting syncs are primarily outbound — CoPortal pushes to the accounting software. QuickBooks is the exception: it also has bulk inbound import (customers, invoices with payment history, estimates).
  • Marking an invoice paid in CoPortal: QuickBooks and Sage never push payment status. Xero can push paid status by default — turn on Display-only payments on the Xero card to clamp it to AUTHORISED instead.
  • OAuth tokens can expire. If a sync fails, reconnect the integration from the Integrations settings page
  • You can sync the same invoice multiple times — subsequent syncs update the existing record
  • Connection tokens are encrypted at rest using AES-256-GCM