One-click invoicing. Straight to QBO.
Create, send, and track QuickBooks Online invoices from any order — with automatic customer sync, product mapping, cached PDFs, and real-time payment status via webhooks.
QuickBooks Online Invoicing
Push invoices to QBO from any order with automatic customer and product sync, cached PDF downloads, and real-time payment tracking via webhooks.
| Product | Qty | Unit Price | Line Total | QBO Item |
|---|---|---|---|---|
| Organic Granola Mix | 120 | $18.50 | $2,220.00 | Mapped |
| Trail Mix (Classic) | 80 | $14.00 | $1,120.00 | Mapped |
| Almond Butter (16oz) | 48 | $22.00 | $1,056.00 | Auto-created |
NovexERP connects to QuickBooks Online using OAuth 2.0 with the com.intuit.quickbooks.accounting scope. The OAuth handshake exchanges an authorization code for access and refresh tokens, which are stored in the qbo_tokens table alongside the QBO company name and realm ID. Access tokens auto-refresh when within five minutes of expiration, and a single automatic retry on 401 responses handles edge cases where tokens expire mid-request.
Invoice creation is a one-click operation from the order detail screen. The system resolves the NovexERP customer to a QBO customer — querying by email first, then creating the customer in QBO if no match exists. Each line item is similarly resolved through the product mappings table, with unmapped products auto-created in QBO as NonInventory items. The invoice is built with SalesItemLineDetail entries and pushed to the QBO API in a single request. The resulting PDF is downloaded and cached locally so it's available instantly without hitting the QBO API on every view.
Product mapping gives you full control over how NovexERP products appear in QBO. Map products individually through the admin panel, or use bulk create to push all unmapped products to QBO at once. Each mapping links a NovexERP product ID to a QBO item ID, so subsequent invoices reference the correct QBO line items automatically. You can unlink and remap products at any time without affecting historical invoices.
Payment status flows back from QBO via webhooks. NovexERP registers a webhook endpoint that receives Invoice and Payment events, verified with HMAC-SHA256 signature validation against the Intuit-Signature header. Events are queued and processed asynchronously by a cron job — on each update, the system fetches the current invoice state from QBO, updates the local status (draft, sent, paid, partial, overdue, voided), refreshes the cached PDF, and stores the latest balance. This means the order detail screen always shows the real payment status without manual checking.
- OAuth 2.0 connection with auto-refreshing tokens
- One-click invoice creation from any order
- Automatic QBO customer creation and matching
- Product mapping with bulk sync support
- Locally cached invoice PDFs
- Send, void, and regenerate invoices from NovexERP
- Real-time payment status via QBO webhooks
- HMAC-SHA256 webhook signature verification
How It Works
Connect to QuickBooks Online from the admin panel with a single OAuth flow. NovexERP redirects to Intuit's authorization page, exchanges the code for tokens, and stores them securely with the connected company name. The connection status is always visible in the admin panel — showing company name, connected user, and token health.
Map your NovexERP products to QBO items through the product mapping interface. Products can be linked individually or bulk-created in QBO with one click. Once mapped, every invoice automatically uses the correct QBO item references — no per-invoice configuration needed.
Create an invoice from any order detail screen. The system builds the QBO invoice from the order's line items, resolves the customer and product references, and pushes the invoice to QBO. The PDF is cached locally for instant download. From the same screen you can send the invoice via email through QBO, void it, or regenerate a replacement — all without leaving NovexERP.
Payment updates arrive automatically. QBO sends webhook notifications when invoices are paid, partially paid, or updated. NovexERP verifies the signature, queues the event, and a background cron job processes up to 25 events per run — updating statuses, balances, and cached PDFs. If processing fails, events are retried on the next cycle.
Modules Used
This feature is powered by these NovexERP modules.
Related Features
Order Lifecycle
End-to-end order management with lot assignment, invoice generation, and fulfillment tracking.
Explore → EVENTSWebhook Ingestion
Secure inbound webhooks with HMAC verification, idempotent storage, and retry-aware queue processing.
Explore → ECOMMERCEShopify Integration
OAuth authentication, product sync, webhook-driven order intake, and fulfillment status push.
Explore →