What this integration does
Pushed automatically when you generate / send / void invoices in Regentra:
Plus continuous sync via Intuit webhooks for incoming payments and invoice status changes — Regentra keeps the local PSA invoice in step with QB without manual intervention.
Setting up QuickBooks
1
Connect from Regentra
Go to Settings → Integrations → QuickBooks → Connect QuickBooks. Sign in with the email that owns your QBO company. Authorize Regentra against your realm. You’ll land back on the integrations page with the green Connected badge.
2
Configure the mapping
Go to Settings → Integrations → QuickBooks → Configure mapping. Choose:
- Default Service Item — which QB Service item PSA invoice line items book against (drives your GL account). Optional; falls back to the first active Service item.
- Default Income Account — reference only; QB routes invoice income via the Service item itself.
- Online Payment Methods — see QuickBooks Payments below.
3
(Optional) Sync your customers
From a Portal Company detail page, click Sync to QuickBooks to push it as a QB Customer. Regentra dedupes by primary email so re-syncs don’t create duplicates.
4
(Optional) Turn on auto-push for Stripe-imported invoices
If you also import invoices from Stripe (see Stripe → Importing invoices created directly in Stripe), the mapping page has an “Auto-push to QuickBooks” card with an Automatically push invoices to QuickBooks checkbox, off by default. See below for exactly what it does.
If the Connect button is missing or you see “QuickBooks integration not configured,” contact support@regentra.io — the platform-side QuickBooks app needs to be enabled for your account.
QuickBooks Payments (Pay Now button)
Optional. Lets your customers pay through QuickBooks’ hosted payment page directly from QB-emailed invoices.1
Enroll the QB realm in QuickBooks Payments
In QuickBooks: Settings (gear) → Account and Settings → Payments → Set up Payments. Intuit collects KYC (EIN, deposit account, identity verification) — typically 1-3 business days.
2
Pick the methods to accept
Settings → Integrations → QuickBooks Mapping → Online Payment Methods: master Pay Now toggle, credit card, and ACH (US-only). Toggles default ON when QB is your only payment integration, OFF when Stripe is also connected (see the dual-system section below).
3
Push invoices, send via QB email
On the Regentra invoice detail page, Send to QuickBooks → push the invoice. Email via QuickBooks → trigger QB to email the customer with the Pay Now button. Customer clicks → enters card or ACH on Intuit’s hosted page → Intuit Payments processes the charge → QB auto-creates a Payment entity → the local PSA invoice flips to PAID.
No card data ever touches Regentra. The Pay Now flow is end-to-end Intuit-hosted — Regentra just sets the AllowOnline* flags on the QB invoice body so the button appears.
Using QuickBooks with Stripe (the dual-system pattern)
The most common MSP setup. QuickBooks acts as the books of record (invoices, customers, AR ledger, GL); Stripe acts as the payment processor (collects card / ACH from your customers, deposits net to your bank).What Regentra does automatically
When both are connected:
The bridges are best-effort and idempotent — webhook redeliveries and double-clicks can’t double-book.
Default behavior protects against duplicate charges
When both Stripe and QB are connected, Regentra defaults the QB Pay Now toggles to OFF. The customer sees only the Stripe checkout link. This prevents the parallel-payment-path failure mode where the customer might use both channels and end up double-charged. You can override this — turn the QB Pay Now toggles back on under Settings → Integrations → QuickBooks Mapping → Online Payment Methods. The bridges still keep it safe, but a single payment path is simpler for customers and bookkeeping.Stripe processing fee + bank deposit reconciliation
When a customer pays $100 via Stripe, Stripe deposits ~$97 into your bank and keeps ~$3 as a processing fee. Your QB books need three entries to balance:- $100 invoice paid (the QB Payment).
- $97 net deposit hitting your bank account.
- $3 expense recorded against a “Stripe Fees” account.
1
Open the QuickBooks mapping page
Settings → Integrations → QuickBooks → Configure mapping → scroll to the Stripe Fee Reconciliation card. (The card only appears when both Stripe and QuickBooks are connected.)
2
Pick the expense account
Choose the QB Expense account where the Stripe processing fees should be debited. Typical name: “Merchant Processing Fees” or “Stripe Fees.” Create one in QB first if it doesn’t exist.
3
Pick the deposit bank account
Choose the QB Bank account where Stripe deposits actually land. The Purchase entry credits this account for the fee amount so the QB bank balance matches the net Stripe payout.
4
Save
From now on, every Stripe webhook for a paid invoice posts a QB Purchase debiting the expense account and crediting the bank account, in addition to the Payment.
Either field unset = fee posting is skipped (Payment is recorded at gross, same as the pre-feature behavior). The mapping is opt-in and backward-compatible: existing orgs are unaffected until you set both accounts.
- Stripe webhook fires → Regentra walks
invoice → payment_intent → latest_charge → balance_transactionto extract the exact fee in cents - Regentra posts the QB Payment (gross amount) against the invoice — same as before
- Regentra posts a QB Purchase debiting the expense account (-3 to net the deposit)
- Purchase carries a deterministic
requestIdkeyed on the Stripe charge ID — so webhook re-delivery cannot create duplicate Purchase rows
Auto-pushing invoices created from a Stripe import
If you invoice through Stripe directly and also use QuickBooks as your books of record, turning on Automatically push invoices to QuickBooks (Settings → Integrations → QuickBooks → Configure mapping → “Auto-push to QuickBooks”, off by default) automatically pushes newly-imported Stripe invoices to QuickBooks — you don’t have to click Send to QuickBooks on each one.Turning this on stamps the moment you enabled it. Only Stripe invoices created after that moment auto-push. Invoices you import from further back — through a manual backfill, or the background healing sweep catching up on older history — still import into Regentra for visibility, but don’t auto-push; use the bulk send described below for those.
Finding and bulk-sending invoices that aren’t in QuickBooks
The invoice list (PSA → Invoices) shows an In QuickBooks status pill per row so you can see at a glance which invoices have been pushed. Use the Not in QuickBooks filter to isolate everything that hasn’t. If a push failed, the pill shows why — the specific error QuickBooks returned — instead of leaving you to guess. To catch up a batch at once, select the invoices you want and click Send to QuickBooks from the list (not the single-invoice button on each invoice’s detail page). This is available only to Admin-level roles — a stricter check than the rest of this feature — since sending up to 50 invoices in one action has a much bigger blast radius than pushing one.Reconnecting a broken connection
If your QuickBooks connection breaks — most commonly an expired refresh token — a QuickBooks connection is broken — Reconnect banner now appears in two places: on the integration card itself, and on the invoice list, since that’s usually where you’ll notice invoices have stopped syncing. Either one takes you through the same reconnect flow, which re-authorizes without losing your mapping configuration.Payment processor and accounting sync roles
QuickBooks can act as both your payment processor (collecting payment) and your accounting sync (recording it to your books) at the same time — every other processor (Stripe, Alternative Payments) only ever holds the payment-processor role. See Payment Processors for how this works, including what happens if you connect QuickBooks while Stripe is already your active processor, and what disconnecting QuickBooks does to both roles at once.What gets synced (per direction)
Regentra → QuickBooks
- Customers — Portal Companies push to QB Customers via Sync to QuickBooks (or auto-sync on Portal Company edit). Dedupes by primary email.
- Invoices — pushed on Send to QuickBooks from the invoice detail page or auto-pushed when “QuickBooks” is checked as a destination on invoice generate.
- Payments — created automatically for settled Stripe or direct Alternative Payments collections and the Mark Paid manual action. AP collection through its own QuickBooks connection posts to QuickBooks through AP instead.
- Voids — propagated to QB invoice voids.
- Credit Memos — created via the Issue Credit Memo button on PAID/VOID invoices.
QuickBooks → Regentra
- Invoice paid (full) — local invoice flips to PAID; if linked to Stripe, Stripe invoice auto-voided.
- Invoice paid (partial) — local invoice flips to PARTIAL with remaining balance shown in the UI. Flips to PAID once the rest lands.
- Payment received — walks
LinkedTxn[]to find the affected invoice and reconciles balance.