A walk-through of how AvaTax for FlexPrice connects your accounts and how sales tax flows onto every FlexPrice invoice automatically.
If you haven't already, pay the setup fee to receive your AvaTax for FlexPrice portal credentials. The portal (our integration) is how you'll connect FlexPrice to Avalara. If you have any questions, please email us at avataxforflexprice@taxiom.com.
Two ways to learn the integration
Watch the full walkthrough, or scroll down to the written guide for step-by-step detail on every feature.
Prefer to have us walk you through this on a live call? Add our Guided Setup add-on ($299) — two calls with our team, up to 45 minutes each. Add Guided Setup — $299
Jump to a section
Before you start Step 1 - Pay the setup fee and create your Taxiom portal account Step 2 - Set your portal password and sign in Step 3 - Connect your FlexPrice account Step 4 - Connect your Avalara account Step 5 - Set your ship-from address Customer addresses drive the tax How tax appears on your invoices Subscription invoices vs one-off invoices Recommended integration pattern: draft, then activate Avalara transaction timing Voided invoices Refunds and credit notes Manual tax overrides Tax-exempt customers (entity use codes) Per-item Avalara tax codes Reviewing Avalara calls in the portalYou'll need three things ready:
Head to the sign-up page and pay the one-time setup fee. Once payment lands, we provision your portal account at avataxforflexprice.taxiom.com and email you a link to set your password.
Use the link in your welcome email to set a password, then sign in to the portal. Everything below happens inside the portal or your FlexPrice dashboard.
Two pieces connect FlexPrice to the integration: an API key (so we can read invoices and apply tax) and a webhook endpoint (so FlexPrice tells us the moment something happens).
credit_note, customer, invoice, payment, and subscription (FlexPrice requires at least one selection). The integration routes what it needs and safely ignores the rest.whsec_), then back on the Taxiom portal's FlexPrice Connection page, paste it into the Webhook Signing Secret field and click Save Signing Secret. Every delivery is verified against it; the integration rejects any webhook that is not properly signed.On the Avalara Credentials page in the portal, enter your Avalara account number, license key, and company code, and choose sandbox or production. Click Test Connection to confirm the credentials work before saving. The test pings Avalara directly with the values in the form.
On the Company Settings page, enter your business address. Avalara uses it as the origin (ship-from) for sourcing rules. This matters in origin-based states, so set it before your first live invoice.
The integration reads the billing address stored on the FlexPrice customer (address line, city, state, postal code, country) and uses it as the tax destination. Keep customer addresses accurate and complete. If a customer has no country on file, the integration does not guess: the invoice is skipped, an alert email goes to your portal admin, and tax flows automatically once the address is fixed.
Tax is applied through FlexPrice's native tax system. The invoice's tax total carries the exact dollar amount Avalara calculated, and the invoice total, PDF, and payment amount all include it. There are no synthetic "Sales Tax" product lines and no Avalara branding on the customer-facing invoice.
You may notice tax rates named AVATAX-... accumulating in your FlexPrice tax rate settings. Those are created by the integration, one per calculated amount. Don't edit or delete them by hand; the integration manages them.
Subscription invoices (including usage-based charges) are the primary path. The integration positions the tax ahead of invoice generation whenever amounts are known, and verifies every finalized invoice against Avalara's calculation on the actual line items. If the amounts could not be known ahead of time and the tax on the generated invoice is off, the integration corrects it through FlexPrice's supported regeneration path: the original invoice is voided and FlexPrice issues a corrected replacement for the same billing period.
When a correction happens, the replacement invoice gets a new invoice number. The original shows as voided in FlexPrice. This is FlexPrice's designed correction mechanism, and the Avalara record always follows the final invoice.
One-off invoices created through the FlexPrice API are finalized by FlexPrice immediately and cannot be regenerated. If you issue one-off invoices, attach the integration-managed tax or talk to us about your flow so the right tax is included at creation. Avalara remains the system of record either way, and any discrepancy is logged and emailed to your portal admin.
If you create subscriptions through the FlexPrice API, create them with "subscription_status": "draft" and activate them a moment later (the activate call requires a start_date). In the gap, the integration calculates the exact tax for the subscription's charges and positions it, so the very first invoice is generated with correct tax already included and payment is collected on the tax-inclusive total. No corrected invoices, ever.
Subscriptions created directly as active still get correct tax: the first invoice is verified against Avalara the moment it finalizes, and corrected through FlexPrice's regeneration path if needed (the replacement gets a new invoice number). The draft-then-activate pattern simply avoids that correction entirely, and we recommend it for catalogs with mixed tax treatment across line items.
Advanced alternative: pass tax_rate_overrides on your create-subscription call to pin tax handling at creation. Talk to us before using this; it must reference rates the integration manages.
The Sync Settings page in the portal controls when transactions are committed in Avalara:
When an invoice is voided in FlexPrice, the matching Avalara transaction is voided automatically. Nothing to do on your side.
Paid invoices: FlexPrice allows voiding an invoice that has already been paid, and the integration mirrors that by cancelling the Avalara transaction entirely. For paid invoices you are refunding, use a credit note instead of a void: the credit note produces a proper return transaction in Avalara, which is what your filing should show for a refund.
When you issue a FlexPrice credit note against a paid invoice, the integration records a return transaction in Avalara for the credited amounts, dated back to the original invoice date so the tax reverses in the correct filing period. Multiple partial credit notes on the same invoice are supported; each produces its own return transaction.
FlexPrice credit notes work on pre-tax line amounts and do not credit the tax itself - a fully credited $100 line on a $108.25 invoice shows as "refunded $100" and the invoice stays partially refunded in FlexPrice. This is a FlexPrice display limitation, not a tax problem: the integration reverses the tax share in Avalara proportionally (credit 75% of a line, 75% of its tax reverses), so your tax liability nets correctly without any action from you.
When you send the actual refund to your customer, include the tax share: refund the credited amount plus its proportional tax. Reconcile your books from the Avalara liability report, which reflects the correct net - Avalara is the system of record for tax.
Refunds processed outside FlexPrice credit notes (for example, directly in your payment processor) are not visible to the integration; record those adjustments in Avalara directly or ask us for help.
To force a specific tax amount on an invoice (for example, matching a tax amount already charged in another system), add a metadata key on the FlexPrice invoice named avalara_tax_override_amount with the dollar amount as the value, and optionally avalara_tax_override_date (YYYY-MM-DD). The integration records the amount in Avalara as a documented tax override.
Two things to know: overrides require registered nexus in the destination jurisdiction (Avalara rejects them otherwise), and applying an override to an already-finalized invoice corrects it through FlexPrice's regeneration path, so the invoice number changes.
For exempt customers (resellers, government, nonprofits), open the Customer Exemptions page in the Taxiom portal: it lists your FlexPrice customers and lets you assign an Avalara entity use code (for example G for resale or A for federal government) to each. The code is stored on the customer in FlexPrice and passed on every calculation, and Avalara applies the exemption rules configured in your Avalara account.
You can also set the code directly as customer metadata (avalara_entity_use_code), or per invoice with the same key - a per-invoice value overrides the customer-level value for that invoice. Exemption certificate management itself lives in Avalara (or ExemptHQ), not in FlexPrice.
By default every line uses your Avalara account's default tax code. For product-specific taxability (SaaS, services, physical goods), open the Item Tax Mapping page in the Taxiom portal: it lists your FlexPrice prices and lets you assign an Avalara tax code to each (for example SW054000 for SaaS, or FR020100 for a freight charge you sell as a product). API-first teams can instead set a metadata key named avalara_tax_code on the price or invoice line item - a line-level metadata value overrides the mapping. Lines with neither fall back to your Avalara default.
The Tax Logs page in the portal lists every Avalara calculation with the invoice it belongs to, the customer code, the calculated tax, and the full request and response for troubleshooting. Every Avalara transaction uses the document code FLEXPRICE-INV-{invoice id}, so you can paste the code into the Avalara dashboard search to find any transaction.
Tracing a document code back to FlexPrice: the long string in the Avalara document code is the FlexPrice invoice ID - the same ID shown in your browser's address bar when you open that invoice in the FlexPrice dashboard (.../billing/invoices/inv_...).