Mine Accounting Documentation Page
Click on the link below to watch the video or if you prefer check out our writing guide in the section below
Odoo Workflow Training Guide
Powered by Goodoo.ai from Smetools
Purpose of Training
This training guide provides a comprehensive overview of the end-to-end operational workflow within Odoo, from the moment a sales order is created to the final financial reconciliation. The goal is to ensure all teams understand their roles, responsibilities, and the critical control points throughout the process, including standard procedures and exception handling.
Process Phases
The workflow is broken down into five distinct phases:
- Sales Order & Down Payment
- Procurement & Receiving
- Delivery & Final Invoicing
- Exception Handling (Cancellations & Returns)
- Financial Reconciliation
Team Responsibilities
Pearl Team
The Pearl Team, including the Pearl Warehouse Team, manages the entire physical and operational lifecycle of an order.
- Sales Order creation and management.
- Purchase Order confirmation.
- Managing vendor bills and payment terms.
- Receiving and validating incoming stock.
- Managing warehouse operations and inventory transfers.
- Initiating and processing customer deliveries.
- Handling customer claims and returns initiation.
E2 Team
The E2 Team is responsible for all financial transactions, reconciliation, and ensuring the accuracy of accounting records.
- Reconciling down payments and final payments (Stripe, ACH).
- Processing refunds and credit notes.
- Reconciling vendor bills and payments.
- Auditing and reconciling key journal items (Stock Interim, Outstanding Payments, etc.).
- Ensuring all financial entries are balanced before closing periods.
- Managing the final financial sheets.
Phase | Test Case ID | Test Scenario | Expected Result | Responsible Team |
---|---|---|---|---|
Phase 1: Sales Order & Down Payment | ||||
Sales Order & Down Payment | UAT-001 | Create a Sales Order via Stripe with 100% down payment terms. | SO is created, and upon confirmation, a down payment invoice is automatically generated. | Pearl Team |
Sales Order & Down Payment | UAT-002 | Register payment for the down payment invoice using the 'Stripe' journal. | The invoice is marked as 'In Payment', and the customer's wallet reflects the deposit. | E2 Team |
Phase 2: Procurement & Receiving | ||||
Procurement & Receiving | UAT-003 | Confirm the auto-generated Purchase Order linked to the SO. | PO is confirmed, and a receipt is generated in the warehouse module. | Pearl Team |
Procurement & Receiving | UAT-004 | Create a Vendor Bill from the PO, setting a specific bill date and due date. | Vendor Bill is created in a draft state, ready for confirmation. Due date reflects the correct payment terms. | Pearl Team |
Procurement & Receiving | UAT-005 | Receive products against the PO, set the 'WH Arrival Date', and validate. | The products are moved into stock. The 'Received' quantity on the PO matches the ordered quantity. | Pearl Team |
Phase 3: Delivery & Final Invoicing | ||||
Delivery & Final Invoicing | UAT-006 | Validate the delivery for the Sales Order. | Products are moved out of stock. 'Delivered' quantity on the SO is updated. Two final invoices are auto-generated. | Pearl Team |
Delivery & Final Invoicing | UAT-007 | Confirm both the final revenue invoice and the down payment reversal credit note. | The two invoices reconcile each other, resulting in a zero balance due. Revenue and COGS are recognized. | E2 Team |
Phase 4: Exception Handling | ||||
Exception Handling | UAT-008 | Before delivery, customer cancels 1 of 10 items. Update SO quantity. | SO shows a negative balance. A credit note must be created for the down payment of 1 item. | Pearl Team |
Exception Handling | UAT-009 | Process a return to the vendor for the 1 cancelled item. | An 'OUT' transfer is created and validated. A vendor credit note is created to reverse the bill for 1 item. | Pearl Team |
Exception Handling | UAT-010 | After delivery, customer initiates a claim to return 2 items. | A Claim is created. A 'Return' transfer is generated to receive items back into stock. | Pearl Team |
Phase 5: Financial Reconciliation | ||||
Financial Reconciliation | UAT-011 | Review the Journal Items for a closed SO/PO cycle. | The 'Stock Interim Delivered' and 'Stock Interim Received' accounts should be fully reconciled with a balance of zero. | E2 Team |
Financial Reconciliation | UAT-012 | Review the 'Outstanding Payments' report. | All payments received via Stripe/ACH should be reconciled against bank statements, clearing this report. | E2 Team |
Step 1.1: Create Sales Order Pearl Team
The process begins when a customer order is entered into the system. This can happen automatically from an e-commerce source like Mongo or be created manually. Key details like the customer, products, quantities, and warehouse must be accurate. Payment terms are critical; orders paid via Stripe should have "Immediate Payment" terms to trigger the automatic down payment invoice upon confirmation.
Step 1.2: Confirm Sales Order Pearl Team
Once all order details are verified, the Sales Order is confirmed. This action locks in the order and triggers the next steps in the workflow, such as creating a linked Purchase Order and, for pre-paid orders, generating the down payment invoice. The system will prevent confirmation if a warehouse is not selected.
Step 1.3: Process Down Payment Invoice E2 Team
For pre-paid orders, a down payment invoice is created. The E2 team is responsible for reconciling this invoice once the funds are confirmed in the respective journal (e.g., Stripe). This is done by using the "Register Payment" function, which marks the invoice as paid and credits the customer's account, allowing the procurement process to proceed.
Step 2.1: Confirm Purchase Order Pearl Team
A Purchase Order (PO) is automatically generated and linked to the Sales Order. The Pearl Team reviews this PO to ensure it accurately reflects the items needed for the customer order and confirms it to send to the vendor. This action signals the intent to purchase and creates an anticipated incoming shipment.
Step 2.2: Create Vendor Bill Pearl Team
When the vendor sends their invoice, the Pearl Team creates a corresponding Vendor Bill in Odoo from the PO. It is critical to enter the correct `Bill Date` as stated on the vendor's document and to set the `Due Date` according to the agreed payment terms. This ensures Accounts Payable aging is accurate for the E2 Team.
Step 2.3: Receive & Validate Products Pearl Team
The Pearl Warehouse Team physically receives the goods from the vendor. In Odoo, they open the corresponding receipt, enter the `WH Arrival Date` to confirm when the items arrived, and validate the quantities. This action moves the products from "in-transit" to "on-hand" stock, making them available for delivery.
Step 3.1: Deliver Order to Customer Pearl Team
Once the goods are in the warehouse and ready for the customer, the Pearl Team processes the delivery. They validate the delivery order in Odoo, which confirms that the items have been shipped. This action updates the Sales Order's "Delivered" quantity and triggers the final invoicing step.
Step 3.2: Confirm Final Customer Invoices E2 Team
After delivery, the system automatically generates two invoices: a final invoice for the full value of the goods (recognizing revenue) and a credit note that reverses the initial down payment. The E2 Team confirms both. These two transactions offset each other, clearing the customer's balance and ensuring the "Total less down payment" on the SO is zero. This correctly moves the value from a customer deposit to recognized revenue.
Step 4.1: Handle Pre-Delivery Cancellation Pearl Team / E2 Team
If a customer reduces their order quantity before delivery, the Pearl Team unlocks the SO and updates the quantity. This creates a negative balance. The Pearl Team then creates a credit note against the original down payment invoice for the cancelled amount. The E2 Team processes the refund in Stripe. The Pearl team must then handle the excess stock, either by processing a return to the vendor or by creating an internal transfer to a consignment location if the vendor does not accept the return.
Step 4.2: Handle Post-Delivery Return (Claim) Pearl Team / E2 Team
If a customer wants to return items after delivery due to quality issues, the Pearl Team initiates a Claim. This creates a return transfer to bring the items back into the warehouse. Once the return is validated, the E2 Team must create a credit note against the final revenue invoice to process the customer's refund. The returned items are then assessed and either returned to the vendor or moved to consignment stock via an internal transfer by the Pearl Team.
Step 5.1: Reconcile Journal Items E2 Team
This is a critical, ongoing task for the E2 Team. They must regularly review the journal items to ensure key accounts are balanced. The goal is to have the `Stock Interim: Delivered` and `Stock Interim: Received` accounts fully reconciled to zero for every closed transaction. They must also manage and clear the `Outstanding Payments` and `Customer Deposits` accounts by reconciling them against bank and payment gateway statements. This ensures the financial integrity of the entire operation.
SOP: Pre-Delivery Cancellation
SOP: Post-Delivery Return (Claim)
Odoo Workflow Training Guide
Powered by Goodoo.ai from Smetools
Purpose of Training
This training guide provides a comprehensive overview of the end-to-end operational workflow within Odoo, from the moment a sales order is created to the final financial reconciliation. The goal is to ensure all teams understand their roles, responsibilities, and the critical control points throughout the process, including standard procedures and exception handling.
Process Phases
The workflow is broken down into five distinct phases:
- Sales Order & Down Payment
- Procurement & Receiving
- Delivery & Final Invoicing
- Exception Handling (Cancellations & Returns)
- Financial Reconciliation
Team Responsibilities
Pearl Team
The Pearl Team, including the Pearl Warehouse Team, manages the entire physical and operational lifecycle of an order.
- Sales Order creation and management.
- Purchase Order confirmation.
- Managing vendor bills and payment terms.
- Receiving and validating incoming stock.
- Managing warehouse operations and inventory transfers.
- Initiating and processing customer deliveries.
- Handling customer claims and returns initiation.
E2 Team
The E2 Team is responsible for all financial transactions, reconciliation, and ensuring the accuracy of accounting records.
- Reconciling down payments and final payments (Stripe, ACH).
- Processing refunds and credit notes.
- Reconciling vendor bills and payments.
- Auditing and reconciling key journal items (Stock Interim, Outstanding Payments, etc.).
- Ensuring all financial entries are balanced before closing periods.
- Managing the final financial sheets.
Phase | Test Case ID | Test Scenario | Expected Result | Responsible Team |
---|---|---|---|---|
Phase 1: Sales Order & Down Payment | ||||
Sales Order & Down Payment | UAT-001 | Create a Sales Order via Stripe with 100% down payment terms. | SO is created, and upon confirmation, a down payment invoice is automatically generated. | Pearl Team |
Sales Order & Down Payment | UAT-002 | Register payment for the down payment invoice using the 'Stripe' journal. | The invoice is marked as 'In Payment', and the customer's wallet reflects the deposit. | E2 Team |
Phase 2: Procurement & Receiving | ||||
Procurement & Receiving | UAT-003 | Confirm the auto-generated Purchase Order linked to the SO. | PO is confirmed, and a receipt is generated in the warehouse module. | Pearl Team |
Procurement & Receiving | UAT-004 | Create a Vendor Bill from the PO, setting a specific bill date and due date. | Vendor Bill is created in a draft state, ready for confirmation. Due date reflects the correct payment terms. | Pearl Team |
Procurement & Receiving | UAT-005 | Receive products against the PO, set the 'WH Arrival Date', and validate. | The products are moved into stock. The 'Received' quantity on the PO matches the ordered quantity. | Pearl Team |
Phase 3: Delivery & Final Invoicing | ||||
Delivery & Final Invoicing | UAT-006 | Validate the delivery for the Sales Order. | Products are moved out of stock. 'Delivered' quantity on the SO is updated. Two final invoices are auto-generated. | Pearl Team |
Delivery & Final Invoicing | UAT-007 | Confirm both the final revenue invoice and the down payment reversal credit note. | The two invoices reconcile each other, resulting in a zero balance due. Revenue and COGS are recognized. | E2 Team |
Phase 4: Exception Handling | ||||
Exception Handling | UAT-008 | Before delivery, customer cancels 1 of 10 items. Update SO quantity. | SO shows a negative balance. A credit note must be created for the down payment of 1 item. | Pearl Team |
Exception Handling | UAT-009 | Process a return to the vendor for the 1 cancelled item. | An 'OUT' transfer is created and validated. A vendor credit note is created to reverse the bill for 1 item. | Pearl Team |
Exception Handling | UAT-010 | After delivery, customer initiates a claim to return 2 items. | A Claim is created. A 'Return' transfer is generated to receive items back into stock. | Pearl Team |
Phase 5: Financial Reconciliation | ||||
Financial Reconciliation | UAT-011 | Review the Journal Items for a closed SO/PO cycle. | The 'Stock Interim Delivered' and 'Stock Interim Received' accounts should be fully reconciled with a balance of zero. | E2 Team |
Financial Reconciliation | UAT-012 | Review the 'Outstanding Payments' report. | All payments received via Stripe/ACH should be reconciled against bank statements, clearing this report. | E2 Team |
Step 1.1: Create Sales Order Pearl Team
The process begins when a customer order is entered into the system. This can happen automatically from an e-commerce source like Mongo or be created manually. Key details like the customer, products, quantities, and warehouse must be accurate. Payment terms are critical; orders paid via Stripe should have "Immediate Payment" terms to trigger the automatic down payment invoice upon confirmation.
Step 1.2: Confirm Sales Order Pearl Team
Once all order details are verified, the Sales Order is confirmed. This action locks in the order and triggers the next steps in the workflow, such as creating a linked Purchase Order and, for pre-paid orders, generating the down payment invoice. The system will prevent confirmation if a warehouse is not selected.
Step 1.3: Process Down Payment Invoice E2 Team
For pre-paid orders, a down payment invoice is created. The E2 team is responsible for reconciling this invoice once the funds are confirmed in the respective journal (e.g., Stripe). This is done by using the "Register Payment" function, which marks the invoice as paid and credits the customer's account, allowing the procurement process to proceed.
Step 2.1: Confirm Purchase Order Pearl Team
A Purchase Order (PO) is automatically generated and linked to the Sales Order. The Pearl Team reviews this PO to ensure it accurately reflects the items needed for the customer order and confirms it to send to the vendor. This action signals the intent to purchase and creates an anticipated incoming shipment.
Step 2.2: Create Vendor Bill Pearl Team
When the vendor sends their invoice, the Pearl Team creates a corresponding Vendor Bill in Odoo from the PO. It is critical to enter the correct `Bill Date` as stated on the vendor's document and to set the `Due Date` according to the agreed payment terms. This ensures Accounts Payable aging is accurate for the E2 Team.
Step 2.3: Receive & Validate Products Pearl Team
The Pearl Warehouse Team physically receives the goods from the vendor. In Odoo, they open the corresponding receipt, enter the `WH Arrival Date` to confirm when the items arrived, and validate the quantities. This action moves the products from "in-transit" to "on-hand" stock, making them available for delivery.
Step 3.1: Deliver Order to Customer Pearl Team
Once the goods are in the warehouse and ready for the customer, the Pearl Team processes the delivery. They validate the delivery order in Odoo, which confirms that the items have been shipped. This action updates the Sales Order's "Delivered" quantity and triggers the final invoicing step.
Step 3.2: Confirm Final Customer Invoices E2 Team
After delivery, the system automatically generates two invoices: a final invoice for the full value of the goods (recognizing revenue) and a credit note that reverses the initial down payment. The E2 Team confirms both. These two transactions offset each other, clearing the customer's balance and ensuring the "Total less down payment" on the SO is zero. This correctly moves the value from a customer deposit to recognized revenue.
Step 4.1: Handle Pre-Delivery Cancellation Pearl Team / E2 Team
If a customer reduces their order quantity before delivery, the Pearl Team unlocks the SO and updates the quantity. This creates a negative balance. The Pearl Team then creates a credit note against the original down payment invoice for the cancelled amount. The E2 Team processes the refund in Stripe. The Pearl team must then handle the excess stock, either by processing a return to the vendor or by creating an internal transfer to a consignment location if the vendor does not accept the return.
Step 4.2: Handle Post-Delivery Return (Claim) Pearl Team / E2 Team
If a customer wants to return items after delivery due to quality issues, the Pearl Team initiates a Claim. This creates a return transfer to bring the items back into the warehouse. Once the return is validated, the E2 Team must create a credit note against the final revenue invoice to process the customer's refund. The returned items are then assessed and either returned to the vendor or moved to consignment stock via an internal transfer by the Pearl Team.
Step 5.1: Reconcile Journal Items E2 Team
This is a critical, ongoing task for the E2 Team. They must regularly review the journal items to ensure key accounts are balanced. The goal is to have the `Stock Interim: Delivered` and `Stock Interim: Received` accounts fully reconciled to zero for every closed transaction. They must also manage and clear the `Outstanding Payments` and `Customer Deposits` accounts by reconciling them against bank and payment gateway statements. This ensures the financial integrity of the entire operation.
SOP: Pre-Delivery Cancellation
SOP: Post-Delivery Return (Claim)
Complete Guide: Export Payroll Data from Gusto for Odoo Integration
Streamline your payroll accounting with step-by-step instructions
Table of Contents
Overview & Benefits
Why Export Gusto Payroll Data to Odoo?
While Gusto and Odoo don't have a native integration, you can easily export payroll journal entries from Gusto and import them into Odoo for comprehensive financial management. This approach offers significant advantages for SME businesses.
Benefits
- • Centralized financial data in Odoo
- • No custom development required
- • Full control over import process
- • Cost-effective solution
- • Monthly processing keeps it manageable
- • Maintains audit trail in both systems
Considerations
- • Manual process (30 min/month)
- • Requires account mapping setup
- • Not real-time synchronization
- • Need to maintain consistent process
- • Potential for human error
Perfect for Monthly Payroll
Monthly payroll processing makes this approach ideal - you'll only need to export and import once per month, taking approximately 30 minutes total. This gives you 80% of the benefits of full integration with 20% of the complexity.
Prerequisites
Before You Begin
Gusto Admin Access
You need admin access to Gusto with one of these permissions:
- • Run payroll
- • View payroll reports and tax filings
Odoo Setup
Ensure you have:
- • Odoo Accounting module installed
- • Chart of accounts configured
- • Payroll journal created
- • Import permissions in Odoo
Account Mapping Plan
Prepare your account mapping between Gusto and Odoo:
- • Identify corresponding accounts
- • Document the mapping
- • Test with sample data
Method 1: Standard Payroll Journal Report
Recommended for Most Users
This is the simplest method to get started. Gusto's standard Payroll Journal Report provides all the essential data you need for Odoo import.
Step-by-Step Instructions:
Log into Gusto
Sign in to your Gusto admin account using your credentials.
Navigate to Reports
Click on the "Reports" tab in the left navigation menu.

Select Payroll Journal Report
From the available reports, locate and select the "Payroll Journal Report".

Set Date Range
Configure the report for your monthly payroll period:
- • Select start date (first day of month)
- • Select end date (last day of month)
- • Or choose specific payroll dates
Export as CSV
Choose CSV format for easy import into Odoo:
- • Click "Generate Report"
- • Select format: CSV (not PDF)
- • Download the file
Important Note:
The standard Payroll Journal Report may not map perfectly to your Odoo chart of accounts. You may need to manually adjust account codes after export or use Method 3 (General Ledger Mapper) for automatic mapping.
Method 2: Custom Reports
Most Flexible Approach
Create custom reports tailored to your specific needs. This method gives you complete control over which data fields to include and how to structure the export.
Step-by-Step Instructions:
Access Custom Reports
Navigate to Reports → Custom Report in your Gusto dashboard.
Configure Report Structure
Set up how you want your data organized:

- • Break down by: Payroll, Employee, or Work Address
- • Time period: Select your monthly date range
- • Specific payrolls: Choose individual payroll runs
Select Data Columns
Choose which fields to include in your export:

Essential Columns for Odoo | Optional Columns |
---|---|
• Gross earnings • Total employee deductions • Total employer contributions • Total employee taxes • Total employer taxes • Net pay |
• Employee details • Department breakdown • Job codes • Project tracking • Overtime details • Benefit specifics |
Save as Template
Create a reusable template for future months:

- • Click "Save as Template"
- • Name it "Monthly Payroll Journal for Odoo"
- • This saves time for future exports
Export to CSV
Generate and download your custom report:

- • Click "Download" button
- • Select CSV format
- • Save file with descriptive name
Pro Tip:
Once you've created your template, future monthly exports will take less than 5 minutes. Just load the template, adjust the date range, and export!
Method 3: General Ledger Mapper
Advanced Account Mapping
The General Ledger Mapper allows you to map Gusto expense categories directly to your Odoo chart of accounts. This provides the most accurate and automated account mapping.
Initial Setup (One-time):
Access General Ledger Mapper
Navigate to App Directory → Accounting → General Ledger Mapper:
- • Go to App Directory in Gusto
- • Under "Categories," choose Accounting
- • Select General Ledger Mapper
- • Click "Connect"
Upload Odoo Chart of Accounts
Export your chart of accounts from Odoo and upload to Gusto:
Column 1: Account Codes (e.g., 620000)
Column 2: Account Names (e.g., Salaries & Wages)
- • Export chart of accounts from Odoo as CSV
- • Click "Upload CSV" in Gusto
- • Choose your file and click "Open"
Map Gusto Categories to Odoo Accounts
Connect each Gusto expense category to corresponding Odoo account:
Gusto Category | Typical Odoo Account |
---|---|
Gross Wages | 620000 - Salaries & Wages |
Federal Tax | 241000 - Federal Tax Payable |
State Tax | 241100 - State Tax Payable |
FICA | 241200 - FICA Payable |
Health Insurance | 241300 - Benefits Payable |
Net Pay | 211000 - Payroll Payable |
Configure Advanced Options (Optional)
Set up additional mapping by departments, jobs, or projects:
- • Department mapping: Different accounts per department
- • Job code mapping: Separate tracking by job roles
- • Project mapping: Track costs by project
Monthly Export Process:
Navigate to Pay History
Go to Pay → Pay History in your Gusto dashboard.
Select Monthly Payroll
Find your monthly payroll run and click "View Details".
Download Mapped Report
Click "Download" to get your pre-mapped CSV file ready for Odoo import.
Key Advantage:
Once configured, the General Ledger Mapper automatically applies your account mappings to every export. This eliminates manual account code adjustments in Odoo.
Account Mapping Guide
Proper account mapping is crucial for accurate financial reporting. Here's a comprehensive guide to mapping common Gusto payroll categories to standard Odoo accounts.
Standard Account Mapping
Gusto Category | Account Type | Odoo Account Code | Odoo Account Name | Notes |
---|---|---|---|---|
Gross Wages | Expense | 620000 | Salaries & Wages | Total employee compensation |
Federal Income Tax | Liability | 241000 | Federal Tax Payable | Employee tax withholding |
State Income Tax | Liability | 241100 | State Tax Payable | State-specific withholding |
Social Security (Employee) | Liability | 241200 | FICA Payable | Employee portion |
Medicare (Employee) | Liability | 241201 | Medicare Payable | Employee portion |
Social Security (Employer) | Expense | 625000 | Payroll Tax Expense | Employer portion |
Medicare (Employer) | Expense | 625001 | Medicare Tax Expense | Employer portion |
FUTA | Expense | 625100 | Federal Unemployment Tax | Employer federal unemployment |
SUTA | Expense | 625200 | State Unemployment Tax | Employer state unemployment |
Health Insurance | Liability | 241300 | Benefits Payable | Employee benefit deductions |
401k Employee | Liability | 241400 | 401k Payable | Employee retirement contributions |
401k Employer Match | Expense | 626000 | Retirement Benefits Expense | Company match expense |
Net Pay | Liability | 211000 | Payroll Payable | Amount paid to employees |
Important Considerations:
- • Account codes may vary based on your Odoo chart of accounts setup
- • Some businesses prefer to separate payroll taxes by state
- • Consider department-specific wage accounts for better reporting
- • Verify account types (Asset, Liability, Expense) match your setup
Importing to Odoo
Once you've exported your payroll data from Gusto, follow these steps to import it into Odoo accounting.
Step-by-Step Import Process
Prepare the CSV File
Clean and format your Gusto export for Odoo import:
- • Remove unnecessary columns
- • Ensure account codes match your Odoo chart
- • Verify date formats (YYYY-MM-DD)
- • Check for any special characters
Access Odoo Journal Entries
Navigate to the journal entry import function:
- • Go to Accounting → Miscellaneous → Journal Entries
- • Click "Import" or "Upload" button
- • Select your prepared CSV file
Map CSV Columns
Match your CSV columns to Odoo fields:
CSV Column | Odoo Field |
---|---|
Date | Date |
Account Code | Account |
Description | Label |
Debit | Debit |
Credit | Credit |
Reference | Reference |
Preview and Validate
Review the import preview before processing:
- • Check that debits and credits balance
- • Verify account codes are correct
- • Ensure dates are properly formatted
- • Review any error messages
Import and Post
Complete the import process:
- • Click "Import" to process the data
- • Review the created journal entries
- • Post the entries when satisfied
- • Create a backup before posting
Import Template Tip:
After your first successful import, save the column mapping as a template in Odoo. This will streamline future monthly imports to just a few clicks.
Best Practices
Do's
- Create a monthly routine - process payroll and export immediately
- Use consistent file naming: "Payroll_YYYY_MM_Gusto.csv"
- Always export as CSV, not PDF
- Set up import templates in Odoo for consistency
- Keep backup copies of all export files
- Document your account mapping for reference
- Review imported entries before posting
- Reconcile with bank statements monthly
Don'ts
- Don't wait until tax season to start exporting
- Don't manually edit account codes in CSV - use mapping
- Don't skip the preview step in Odoo imports
- Don't delete original export files after import
- Don't post entries without balancing verification
- Don't change account mapping mid-year without documentation
- Don't rely on memory - document your process
- Don't forget to update mappings when adding new payroll items
Monthly Workflow Checklist
Week 1 (Payroll Processing)
- □ Process monthly payroll in Gusto
- □ Verify all employees and amounts
- □ Submit payroll for processing
Week 2 (Export & Import)
- □ Export payroll journal from Gusto
- □ Review and clean CSV file
- □ Import into Odoo
- □ Verify import accuracy
Week 3 (Reconciliation)
- □ Reconcile with bank statements
- □ Post journal entries
- □ Review payroll reports
- □ File export for records
Troubleshooting
Common Issues & Solutions
Issue: CSV Import Fails in Odoo
The CSV file won't import or shows errors
- • Check CSV format - ensure UTF-8 encoding
- • Verify account codes exist in Odoo
- • Remove special characters from descriptions
- • Ensure debits and credits balance
- • Check date format is YYYY-MM-DD
Issue: Account Mapping Errors
Transactions are posting to wrong accounts
- • Review and update General Ledger Mapper settings
- • Verify account codes in both systems
- • Check for new payroll items in Gusto
- • Update account mapping documentation
Issue: Unbalanced Journal Entries
Debits don't equal credits in imported entries
- • Check for missing entries in Gusto export
- • Verify all payroll components are included
- • Review employer tax calculations
- • Check for rounding differences
Issue: Missing Payroll Data
Some payroll information is not appearing in reports
- • Verify date range covers all payroll periods
- • Check user permissions in Gusto
- • Ensure payroll is fully processed
- • Review report filters and settings
Getting Help
Gusto Support
- • Gusto Help Center
- • Live chat in your Gusto account
- • Phone support for admin users
Odoo Support
- • Odoo Documentation
- • Community forums
- • Professional support services
Official Resources & Documentation
Essential Links
Gusto Official Documentation
Quick Reference
Gusto Login: https://app.gusto.com/login
Gusto Support: https://support.gusto.com/
Odoo Documentation: https://www.odoo.com/documentation
Conclusion
Exporting payroll data from Gusto to Odoo doesn't have to be complicated. With the right approach and a consistent monthly routine, you can maintain accurate financial records without the complexity of custom integrations.
Key Takeaways:
- • Monthly payroll processing makes this approach highly manageable
- • Choose the method that best fits your business complexity
- • Consistent processes reduce errors and save time
- • Proper account mapping is crucial for accurate reporting
- • This solution provides 80% of integration benefits with minimal complexity
Complete Guide: Export Payroll Data from Gusto for Odoo Integration
Streamline your payroll accounting with step-by-step instructions
Table of Contents
Overview & Benefits
Why Export Gusto Payroll Data to Odoo?
While Gusto and Odoo don't have a native integration, you can easily export payroll journal entries from Gusto and import them into Odoo for comprehensive financial management. This approach offers significant advantages for SME businesses.
Benefits
- • Centralized financial data in Odoo
- • No custom development required
- • Full control over import process
- • Cost-effective solution
- • Monthly processing keeps it manageable
- • Maintains audit trail in both systems
Considerations
- • Manual process (30 min/month)
- • Requires account mapping setup
- • Not real-time synchronization
- • Need to maintain consistent process
- • Potential for human error
Perfect for Monthly Payroll
Monthly payroll processing makes this approach ideal - you'll only need to export and import once per month, taking approximately 30 minutes total. This gives you 80% of the benefits of full integration with 20% of the complexity.
Prerequisites
Before You Begin
Gusto Admin Access
You need admin access to Gusto with one of these permissions:
- • Run payroll
- • View payroll reports and tax filings
Odoo Setup
Ensure you have:
- • Odoo Accounting module installed
- • Chart of accounts configured
- • Payroll journal created
- • Import permissions in Odoo
Account Mapping Plan
Prepare your account mapping between Gusto and Odoo:
- • Identify corresponding accounts
- • Document the mapping
- • Test with sample data
Method 1: Standard Payroll Journal Report
Recommended for Most Users
This is the simplest method to get started. Gusto's standard Payroll Journal Report provides all the essential data you need for Odoo import.
Step-by-Step Instructions:
Log into Gusto
Sign in to your Gusto admin account using your credentials.
Navigate to Reports
Click on the "Reports" tab in the left navigation menu.

Select Payroll Journal Report
From the available reports, locate and select the "Payroll Journal Report".

Set Date Range
Configure the report for your monthly payroll period:
- • Select start date (first day of month)
- • Select end date (last day of month)
- • Or choose specific payroll dates
Export as CSV
Choose CSV format for easy import into Odoo:
- • Click "Generate Report"
- • Select format: CSV (not PDF)
- • Download the file
Important Note:
The standard Payroll Journal Report may not map perfectly to your Odoo chart of accounts. You may need to manually adjust account codes after export or use Method 3 (General Ledger Mapper) for automatic mapping.
Method 2: Custom Reports
Most Flexible Approach
Create custom reports tailored to your specific needs. This method gives you complete control over which data fields to include and how to structure the export.
Step-by-Step Instructions:
Access Custom Reports
Navigate to Reports → Custom Report in your Gusto dashboard.
Configure Report Structure
Set up how you want your data organized:

- • Break down by: Payroll, Employee, or Work Address
- • Time period: Select your monthly date range
- • Specific payrolls: Choose individual payroll runs
Select Data Columns
Choose which fields to include in your export:

Essential Columns for Odoo | Optional Columns |
---|---|
• Gross earnings • Total employee deductions • Total employer contributions • Total employee taxes • Total employer taxes • Net pay |
• Employee details • Department breakdown • Job codes • Project tracking • Overtime details • Benefit specifics |
Save as Template
Create a reusable template for future months:

- • Click "Save as Template"
- • Name it "Monthly Payroll Journal for Odoo"
- • This saves time for future exports
Export to CSV
Generate and download your custom report:

- • Click "Download" button
- • Select CSV format
- • Save file with descriptive name
Pro Tip:
Once you've created your template, future monthly exports will take less than 5 minutes. Just load the template, adjust the date range, and export!
Method 3: General Ledger Mapper
Advanced Account Mapping
The General Ledger Mapper allows you to map Gusto expense categories directly to your Odoo chart of accounts. This provides the most accurate and automated account mapping.
Initial Setup (One-time):
Access General Ledger Mapper
Navigate to App Directory → Accounting → General Ledger Mapper:
- • Go to App Directory in Gusto
- • Under "Categories," choose Accounting
- • Select General Ledger Mapper
- • Click "Connect"
Upload Odoo Chart of Accounts
Export your chart of accounts from Odoo and upload to Gusto:
Column 1: Account Codes (e.g., 620000)
Column 2: Account Names (e.g., Salaries & Wages)
- • Export chart of accounts from Odoo as CSV
- • Click "Upload CSV" in Gusto
- • Choose your file and click "Open"
Map Gusto Categories to Odoo Accounts
Connect each Gusto expense category to corresponding Odoo account:
Gusto Category | Typical Odoo Account |
---|---|
Gross Wages | 620000 - Salaries & Wages |
Federal Tax | 241000 - Federal Tax Payable |
State Tax | 241100 - State Tax Payable |
FICA | 241200 - FICA Payable |
Health Insurance | 241300 - Benefits Payable |
Net Pay | 211000 - Payroll Payable |
Configure Advanced Options (Optional)
Set up additional mapping by departments, jobs, or projects:
- • Department mapping: Different accounts per department
- • Job code mapping: Separate tracking by job roles
- • Project mapping: Track costs by project
Monthly Export Process:
Navigate to Pay History
Go to Pay → Pay History in your Gusto dashboard.
Select Monthly Payroll
Find your monthly payroll run and click "View Details".
Download Mapped Report
Click "Download" to get your pre-mapped CSV file ready for Odoo import.
Key Advantage:
Once configured, the General Ledger Mapper automatically applies your account mappings to every export. This eliminates manual account code adjustments in Odoo.
Account Mapping Guide
Proper account mapping is crucial for accurate financial reporting. Here's a comprehensive guide to mapping common Gusto payroll categories to standard Odoo accounts.
Standard Account Mapping
Gusto Category | Account Type | Odoo Account Code | Odoo Account Name | Notes |
---|---|---|---|---|
Gross Wages | Expense | 620000 | Salaries & Wages | Total employee compensation |
Federal Income Tax | Liability | 241000 | Federal Tax Payable | Employee tax withholding |
State Income Tax | Liability | 241100 | State Tax Payable | State-specific withholding |
Social Security (Employee) | Liability | 241200 | FICA Payable | Employee portion |
Medicare (Employee) | Liability | 241201 | Medicare Payable | Employee portion |
Social Security (Employer) | Expense | 625000 | Payroll Tax Expense | Employer portion |
Medicare (Employer) | Expense | 625001 | Medicare Tax Expense | Employer portion |
FUTA | Expense | 625100 | Federal Unemployment Tax | Employer federal unemployment |
SUTA | Expense | 625200 | State Unemployment Tax | Employer state unemployment |
Health Insurance | Liability | 241300 | Benefits Payable | Employee benefit deductions |
401k Employee | Liability | 241400 | 401k Payable | Employee retirement contributions |
401k Employer Match | Expense | 626000 | Retirement Benefits Expense | Company match expense |
Net Pay | Liability | 211000 | Payroll Payable | Amount paid to employees |
Important Considerations:
- • Account codes may vary based on your Odoo chart of accounts setup
- • Some businesses prefer to separate payroll taxes by state
- • Consider department-specific wage accounts for better reporting
- • Verify account types (Asset, Liability, Expense) match your setup
Importing to Odoo
Once you've exported your payroll data from Gusto, follow these steps to import it into Odoo accounting.
Step-by-Step Import Process
Prepare the CSV File
Clean and format your Gusto export for Odoo import:
- • Remove unnecessary columns
- • Ensure account codes match your Odoo chart
- • Verify date formats (YYYY-MM-DD)
- • Check for any special characters
Access Odoo Journal Entries
Navigate to the journal entry import function:
- • Go to Accounting → Miscellaneous → Journal Entries
- • Click "Import" or "Upload" button
- • Select your prepared CSV file
Map CSV Columns
Match your CSV columns to Odoo fields:
CSV Column | Odoo Field |
---|---|
Date | Date |
Account Code | Account |
Description | Label |
Debit | Debit |
Credit | Credit |
Reference | Reference |
Preview and Validate
Review the import preview before processing:
- • Check that debits and credits balance
- • Verify account codes are correct
- • Ensure dates are properly formatted
- • Review any error messages
Import and Post
Complete the import process:
- • Click "Import" to process the data
- • Review the created journal entries
- • Post the entries when satisfied
- • Create a backup before posting
Import Template Tip:
After your first successful import, save the column mapping as a template in Odoo. This will streamline future monthly imports to just a few clicks.
Best Practices
Do's
- Create a monthly routine - process payroll and export immediately
- Use consistent file naming: "Payroll_YYYY_MM_Gusto.csv"
- Always export as CSV, not PDF
- Set up import templates in Odoo for consistency
- Keep backup copies of all export files
- Document your account mapping for reference
- Review imported entries before posting
- Reconcile with bank statements monthly
Don'ts
- Don't wait until tax season to start exporting
- Don't manually edit account codes in CSV - use mapping
- Don't skip the preview step in Odoo imports
- Don't delete original export files after import
- Don't post entries without balancing verification
- Don't change account mapping mid-year without documentation
- Don't rely on memory - document your process
- Don't forget to update mappings when adding new payroll items
Monthly Workflow Checklist
Week 1 (Payroll Processing)
- □ Process monthly payroll in Gusto
- □ Verify all employees and amounts
- □ Submit payroll for processing
Week 2 (Export & Import)
- □ Export payroll journal from Gusto
- □ Review and clean CSV file
- □ Import into Odoo
- □ Verify import accuracy
Week 3 (Reconciliation)
- □ Reconcile with bank statements
- □ Post journal entries
- □ Review payroll reports
- □ File export for records
Troubleshooting
Common Issues & Solutions
Issue: CSV Import Fails in Odoo
The CSV file won't import or shows errors
- • Check CSV format - ensure UTF-8 encoding
- • Verify account codes exist in Odoo
- • Remove special characters from descriptions
- • Ensure debits and credits balance
- • Check date format is YYYY-MM-DD
Issue: Account Mapping Errors
Transactions are posting to wrong accounts
- • Review and update General Ledger Mapper settings
- • Verify account codes in both systems
- • Check for new payroll items in Gusto
- • Update account mapping documentation
Issue: Unbalanced Journal Entries
Debits don't equal credits in imported entries
- • Check for missing entries in Gusto export
- • Verify all payroll components are included
- • Review employer tax calculations
- • Check for rounding differences
Issue: Missing Payroll Data
Some payroll information is not appearing in reports
- • Verify date range covers all payroll periods
- • Check user permissions in Gusto
- • Ensure payroll is fully processed
- • Review report filters and settings
Getting Help
Gusto Support
- • Gusto Help Center
- • Live chat in your Gusto account
- • Phone support for admin users
Odoo Support
- • Odoo Documentation
- • Community forums
- • Professional support services
Official Resources & Documentation
Essential Links
Gusto Official Documentation
Quick Reference
Gusto Login: https://app.gusto.com/login
Gusto Support: https://support.gusto.com/
Odoo Documentation: https://www.odoo.com/documentation
Conclusion
Exporting payroll data from Gusto to Odoo doesn't have to be complicated. With the right approach and a consistent monthly routine, you can maintain accurate financial records without the complexity of custom integrations.
Key Takeaways:
- • Monthly payroll processing makes this approach highly manageable
- • Choose the method that best fits your business complexity
- • Consistent processes reduce errors and save time
- • Proper account mapping is crucial for accurate reporting
- • This solution provides 80% of integration benefits with minimal complexity
Monthly Tax Update Guide
Export from TaxJar and Import to Odoo
Complete monthly workflow for maintaining accurate tax calculations without API integrations or developer involvement. This guide provides a 30-minute monthly process to keep your Odoo tax rates current using TaxJar data.
Monthly Process Overview
Step 1: Export
10 minutes
Download TaxJar transaction data
Step 2: Process
10 minutes
Clean and format data in Excel
Step 3: Import
10 minutes
Update Odoo fiscal positions
Total Time Investment: 30 minutes monthly | No API setup | No developer involvement
Why Choose Monthly Manual Process?
✅ Advantages
- No API integration complexity
- Full control over tax updates
- No ongoing API costs
- Manual review before import
- No technical dependencies
- Predictable monthly workflow
⚠️ Considerations
- Monthly manual process required
- Rates updated monthly (not real-time)
- Requires Excel/Sheets knowledge
- Need backup person training
Prerequisites & Access Requirements
Required Access
- TaxJar account with export permissions
- Odoo accounting module access
- Excel or Google Sheets
- File storage for monthly archives
Skills Needed
- Basic Excel formulas
- Odoo navigation
- CSV import/export
- Data validation
Step 1: Export Data from TaxJar (10 minutes)
Login to TaxJar Dashboard
Access your TaxJar account at app.taxjar.com
Navigate to Transactions
Click on the Transactions tab in the navigation bar at the top of the screen
Export Transaction Data
Click Actions at the top right, then select Export CSV
Note: TaxJar supports only one export at a time. If you don't see the export option, wait for any ongoing export to complete.
Select Date Range
Choose the current month's transactions to get the most recent tax rate data
Download and Save
TaxJar will email you a download link. Save the file with a clear naming convention:
TaxJar Export Data Structure
Your exported CSV will contain columns similar to:
Step 2: Process Data in Excel/Sheets (10 minutes)
Open TaxJar Export
Open the downloaded CSV file in Excel or Google Sheets
Extract Unique ZIP Codes
Create a new sheet and use formulas to get unique ZIP codes with their tax rates:
Clean and Format Data
Remove duplicates, handle missing data, and format rates consistently
- • Remove duplicate ZIP codes
- • Handle missing city/county data
- • Convert rates to decimal format
- • Validate ZIP code formats
Create Odoo Import Template
Format your data for Odoo import using this structure:
Save Processed File
Save as CSV for Odoo import:
Excel Processing Template
Create a reusable template with these sheets:
- • Raw Data: Paste TaxJar export here
- • Processing: Clean and deduplicate data
- • Odoo Import: Final formatted data
- • Validation: Check for errors and anomalies
Step 3: Import to Odoo (10 minutes)
Access Odoo Accounting
Navigate to Accounting → Configuration → Fiscal Positions
Backup Current Settings
Export current fiscal positions for backup before making changes
Important: Always backup your current tax settings before importing new data.
Import Processed Data
Use Odoo's import function to upload your processed CSV file
- • Click Import button
- • Select your CSV file
- • Map columns to Odoo fields
- • Validate data before import
Review and Activate
Check imported data for accuracy and activate new rates
- • Review imported fiscal positions
- • Verify tax rate calculations
- • Test with sample transactions
- • Activate for the next month
Update Customer Assignments
Ensure customers are assigned to correct fiscal positions based on ZIP codes
One-Time Odoo Setup
Tax Structure Setup
Create Base Tax Categories:
- • State Sales Tax (variable rate)
- • County Sales Tax (variable rate)
- • City Sales Tax (variable rate)
- • Special District Tax (variable rate)
- • Combined Sales Tax (calculated)
Fiscal Position Template
Configuration:
- • Name:
{State}-{City}-{ZIP}
- • Tax mapping: Location-based
- • Auto-detect: By ZIP code
- • Customer assignment: Automatic
Import Mapping Setup
CSV Column | Odoo Field | Description |
---|---|---|
zip_code | ZIP Code | Customer location identifier |
fiscal_position_name | Fiscal Position Name | Unique identifier for tax rules |
state_tax_rate | State Tax Rate | State-level tax percentage |
county_tax_rate | County Tax Rate | County-level tax percentage |
city_tax_rate | City Tax Rate | City-level tax percentage |
combined_rate | Total Tax Rate | Sum of all applicable taxes |
effective_date | Effective Date | When new rates become active |
Monthly Process Checklist
Pre-Process (Day 30)
- Export TaxJar data for the month
- Create backup of current Odoo tax settings
- Review any new ZIP codes in transactions
- Check for significant rate changes
Process (Day 31)
- Clean TaxJar export data
- Remove duplicates and format rates
- Update Odoo import template
- Import and validate in Odoo
Post-Process (Day 1)
- Activate new tax rates for the month
- Test customer invoice calculations
- Archive old tax data
- Update process documentation
File Organization & Templates
Recommended Folder Structure
Template Files
Excel Processing Template
Pre-configured with formulas for data cleaning and formatting
Odoo Import Template
Properly formatted CSV structure for Odoo import
Validation Checklist
Data quality checks and error prevention
Common Issues & Solutions
TaxJar Export Issues
Problem: Export option not available
Solution: Wait for existing export to complete (TaxJar allows one export at a time)
Problem: Empty or incomplete export
Solution: Check date range and transaction filters
Data Processing Issues
Problem: Duplicate ZIP codes with different rates
Solution: Use most recent transaction or highest rate for safety
Problem: Missing city/county information
Solution: Research missing data or use state-level rates
Odoo Import Issues
Problem: Import fails with validation errors
Solution: Check column mapping and data format
Problem: Fiscal positions not auto-assigning
Solution: Verify ZIP code matching rules in fiscal position settings
Best Practices & Tips
Do's
- • Always backup before importing new data
- • Review significant rate changes (>1%)
- • Test calculations with sample transactions
- • Keep detailed logs of all changes
- • Train a backup person on the process
- • Set calendar reminders for monthly updates
- • Validate data quality before import
Don'ts
- • Don't skip monthly updates
- • Don't ignore validation errors
- • Don't delete old backups immediately
- • Don't make changes during busy periods
- • Don't assume all ZIP codes are covered
- • Don't forget to test after import
- • Don't skip documentation updates
Process Evolution Timeline
Months 1-3: Learning Phase
- • Refine templates and workflows
- • Identify common issues and solutions
- • Optimize data cleanup procedures
- • Expected time: 45-60 minutes
Months 4-6: Optimization
- • Streamline workflow to 25-30 minutes
- • Automate Excel formulas and validation
- • Develop error-checking procedures
- • Expected time: 25-30 minutes
Months 7+: Maintenance
- • Routine 20-minute monthly process
- • Focus on exception handling
- • Quarterly review of tax structure
- • Expected time: 20-25 minutes
Key Resources & Links
TaxJar Resources
Odoo Resources
Additional Tools
- • Excel/Google Sheets for data processing
- • CSV validation tools
- • File organization software
- • Calendar reminders for monthly tasks
Conclusion
This monthly process provides the perfect balance: TaxJar's accurate tax data with full control over your tax configuration, no API complexity, and minimal time investment.
Key Benefits:
- • 30-minute monthly process
- • No developer involvement needed
- • Full control over tax updates
- • Cost-effective solution
- • Scales with your business
Expected Results:
- • Accurate tax calculations
- • Compliance with local regulations
- • Streamlined monthly workflow
- • Reduced manual errors
- • Better audit preparation
This approach has been successfully implemented by numerous SME businesses transitioning from QuickBooks to Odoo, providing reliable tax management without the complexity of API integrations.
Last Updated: July 2025 | Monthly Process Time: 30 minutes
Monthly Tax Update Guide
Export from TaxJar and Import to Odoo
Complete monthly workflow for maintaining accurate tax calculations without API integrations or developer involvement. This guide provides a 30-minute monthly process to keep your Odoo tax rates current using TaxJar data.
Monthly Process Overview
Step 1: Export
10 minutes
Download TaxJar transaction data
Step 2: Process
10 minutes
Clean and format data in Excel
Step 3: Import
10 minutes
Update Odoo fiscal positions
Total Time Investment: 30 minutes monthly | No API setup | No developer involvement
Why Choose Monthly Manual Process?
✅ Advantages
- No API integration complexity
- Full control over tax updates
- No ongoing API costs
- Manual review before import
- No technical dependencies
- Predictable monthly workflow
⚠️ Considerations
- Monthly manual process required
- Rates updated monthly (not real-time)
- Requires Excel/Sheets knowledge
- Need backup person training
Prerequisites & Access Requirements
Required Access
- TaxJar account with export permissions
- Odoo accounting module access
- Excel or Google Sheets
- File storage for monthly archives
Skills Needed
- Basic Excel formulas
- Odoo navigation
- CSV import/export
- Data validation
Step 1: Export Data from TaxJar (10 minutes)
Login to TaxJar Dashboard
Access your TaxJar account at app.taxjar.com
Navigate to Transactions
Click on the Transactions tab in the navigation bar at the top of the screen
Export Transaction Data
Click Actions at the top right, then select Export CSV
Note: TaxJar supports only one export at a time. If you don't see the export option, wait for any ongoing export to complete.
Select Date Range
Choose the current month's transactions to get the most recent tax rate data
Download and Save
TaxJar will email you a download link. Save the file with a clear naming convention:
TaxJar Export Data Structure
Your exported CSV will contain columns similar to:
Step 2: Process Data in Excel/Sheets (10 minutes)
Open TaxJar Export
Open the downloaded CSV file in Excel or Google Sheets
Extract Unique ZIP Codes
Create a new sheet and use formulas to get unique ZIP codes with their tax rates:
Clean and Format Data
Remove duplicates, handle missing data, and format rates consistently
- • Remove duplicate ZIP codes
- • Handle missing city/county data
- • Convert rates to decimal format
- • Validate ZIP code formats
Create Odoo Import Template
Format your data for Odoo import using this structure:
Save Processed File
Save as CSV for Odoo import:
Excel Processing Template
Create a reusable template with these sheets:
- • Raw Data: Paste TaxJar export here
- • Processing: Clean and deduplicate data
- • Odoo Import: Final formatted data
- • Validation: Check for errors and anomalies
Step 3: Import to Odoo (10 minutes)
Access Odoo Accounting
Navigate to Accounting → Configuration → Fiscal Positions
Backup Current Settings
Export current fiscal positions for backup before making changes
Important: Always backup your current tax settings before importing new data.
Import Processed Data
Use Odoo's import function to upload your processed CSV file
- • Click Import button
- • Select your CSV file
- • Map columns to Odoo fields
- • Validate data before import
Review and Activate
Check imported data for accuracy and activate new rates
- • Review imported fiscal positions
- • Verify tax rate calculations
- • Test with sample transactions
- • Activate for the next month
Update Customer Assignments
Ensure customers are assigned to correct fiscal positions based on ZIP codes
One-Time Odoo Setup
Tax Structure Setup
Create Base Tax Categories:
- • State Sales Tax (variable rate)
- • County Sales Tax (variable rate)
- • City Sales Tax (variable rate)
- • Special District Tax (variable rate)
- • Combined Sales Tax (calculated)
Fiscal Position Template
Configuration:
- • Name:
{State}-{City}-{ZIP}
- • Tax mapping: Location-based
- • Auto-detect: By ZIP code
- • Customer assignment: Automatic
Import Mapping Setup
CSV Column | Odoo Field | Description |
---|---|---|
zip_code | ZIP Code | Customer location identifier |
fiscal_position_name | Fiscal Position Name | Unique identifier for tax rules |
state_tax_rate | State Tax Rate | State-level tax percentage |
county_tax_rate | County Tax Rate | County-level tax percentage |
city_tax_rate | City Tax Rate | City-level tax percentage |
combined_rate | Total Tax Rate | Sum of all applicable taxes |
effective_date | Effective Date | When new rates become active |
Monthly Process Checklist
Pre-Process (Day 30)
- Export TaxJar data for the month
- Create backup of current Odoo tax settings
- Review any new ZIP codes in transactions
- Check for significant rate changes
Process (Day 31)
- Clean TaxJar export data
- Remove duplicates and format rates
- Update Odoo import template
- Import and validate in Odoo
Post-Process (Day 1)
- Activate new tax rates for the month
- Test customer invoice calculations
- Archive old tax data
- Update process documentation
File Organization & Templates
Recommended Folder Structure
Template Files
Excel Processing Template
Pre-configured with formulas for data cleaning and formatting
Odoo Import Template
Properly formatted CSV structure for Odoo import
Validation Checklist
Data quality checks and error prevention
Common Issues & Solutions
TaxJar Export Issues
Problem: Export option not available
Solution: Wait for existing export to complete (TaxJar allows one export at a time)
Problem: Empty or incomplete export
Solution: Check date range and transaction filters
Data Processing Issues
Problem: Duplicate ZIP codes with different rates
Solution: Use most recent transaction or highest rate for safety
Problem: Missing city/county information
Solution: Research missing data or use state-level rates
Odoo Import Issues
Problem: Import fails with validation errors
Solution: Check column mapping and data format
Problem: Fiscal positions not auto-assigning
Solution: Verify ZIP code matching rules in fiscal position settings
Best Practices & Tips
Do's
- • Always backup before importing new data
- • Review significant rate changes (>1%)
- • Test calculations with sample transactions
- • Keep detailed logs of all changes
- • Train a backup person on the process
- • Set calendar reminders for monthly updates
- • Validate data quality before import
Don'ts
- • Don't skip monthly updates
- • Don't ignore validation errors
- • Don't delete old backups immediately
- • Don't make changes during busy periods
- • Don't assume all ZIP codes are covered
- • Don't forget to test after import
- • Don't skip documentation updates
Process Evolution Timeline
Months 1-3: Learning Phase
- • Refine templates and workflows
- • Identify common issues and solutions
- • Optimize data cleanup procedures
- • Expected time: 45-60 minutes
Months 4-6: Optimization
- • Streamline workflow to 25-30 minutes
- • Automate Excel formulas and validation
- • Develop error-checking procedures
- • Expected time: 25-30 minutes
Months 7+: Maintenance
- • Routine 20-minute monthly process
- • Focus on exception handling
- • Quarterly review of tax structure
- • Expected time: 20-25 minutes
Key Resources & Links
TaxJar Resources
Odoo Resources
Additional Tools
- • Excel/Google Sheets for data processing
- • CSV validation tools
- • File organization software
- • Calendar reminders for monthly tasks
Conclusion
This monthly process provides the perfect balance: TaxJar's accurate tax data with full control over your tax configuration, no API complexity, and minimal time investment.
Key Benefits:
- • 30-minute monthly process
- • No developer involvement needed
- • Full control over tax updates
- • Cost-effective solution
- • Scales with your business
Expected Results:
- • Accurate tax calculations
- • Compliance with local regulations
- • Streamlined monthly workflow
- • Reduced manual errors
- • Better audit preparation
This approach has been successfully implemented by numerous SME businesses transitioning from QuickBooks to Odoo, providing reliable tax management without the complexity of API integrations.
Last Updated: July 2025 | Monthly Process Time: 30 minutes