What this integration does
Pushed automatically when you generate / send / void invoices in Regentra:| Event | What happens in QuickBooks |
|---|---|
| Generate invoice | New Invoice created in your QB realm with line items, customer ref, due date |
| Send via QB email | QB emails the customer the invoice from your QB realm (uses BillEmail) |
| Edit DRAFT invoice (notes, due date) | Sparse update to the QB invoice |
| Void invoice | QB invoice voided; if also linked to Stripe, Stripe invoice voided too |
| Mark Paid | QB Payment created applying full balance to the invoice |
| Customer pays via QB | Local invoice flips to PAID; Stripe invoice voided automatically |
| Issue credit memo | New QB CreditMemo against the customer |
Setting up QuickBooks
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.
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.
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.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.
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).
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:| Customer action | Stripe side | QuickBooks side |
|---|---|---|
| Pays via Stripe checkout link | Invoice closes, deposit lands in your bank | Regentra automatically creates a QB Payment so the QB ledger reflects the receipt |
| Pays via QB Pay Now (if enabled) | Regentra automatically voids the linked Stripe invoice so they can’t double-pay | Payment lands, ledger updates |
| Pays you offline (cash, wire) | — | Click Mark Paid in Regentra → QB Payment created |
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 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.
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.)
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.
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.
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
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 on Stripe webhook + Mark Paid manual action.
- 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.