Send WooCommerce orders to FreeAgent as paid invoices
If you copy WooCommerce orders into FreeAgent by hand, this guide sets up the free Skillmerc Sync for FreeAgent plugin so each paid order turns into a FreeAgent invoice on its own. It takes about ten minutes.
What ends up in FreeAgent
When an order reaches Processing or Completed (you choose the statuses), the plugin:
- Finds the customer in FreeAgent by email, or creates a contact with their name, company, email, phone and billing address.
- Creates an invoice numbered WC-(order number), with one line per product and fee, a separate shipping line, and the VAT rate WooCommerce charged on each line.
- Marks the invoice as sent. FreeAgent does not email your customer.
- Explains a payment in the bank account you choose, so the invoice shows as paid.
The order notes show the FreeAgent invoice number and the payment.
Before you start
- WooCommerce on WordPress 6.2 or later and PHP 7.4 or later.
- Your FreeAgent login.
- Orders in the same currency as your FreeAgent company. Version 0.1 skips orders in other currencies and says so in an order note.
Step 1: install the plugin
In WordPress go to Plugins > Add New, search for "Skillmerc Sync for FreeAgent", then install and activate it. Open WooCommerce > Settings > FreeAgent Sync and copy the OAuth redirect URI shown at the top.
Step 2: create your own FreeAgent app
- Sign in at dev.freeagent.com with a free developer account.
- Create an app and paste the redirect URI from step 1 into it. Save.
- Copy the app's OAuth identifier and OAuth secret.
Why your own app? A secret cannot stay secret inside a plugin anyone can download. With your own app, the keys stay in your site and FreeAgent only gives access to the company you approve. No order data passes through our servers.
Step 3: connect
Paste the identifier into Client ID and the secret into Client Secret, then save. Tick Sandbox only if you are testing against a FreeAgent sandbox company. Click Connect to FreeAgent, sign in with the login you use for your books and approve access. The settings page then shows "Connected to" and your company name.
Step 4: pick the bank account and categories
- Bank account for payments: the FreeAgent account where the money lands, for example your Stripe or PayPal account in FreeAgent, or the bank account your gateway pays out to.
- Income category for products and fees and for shipping: Sales by default.
The page also tells you whether your FreeAgent company is VAT registered. If it is, each invoice line gets the WooCommerce VAT rate. If it is not, lines are sent without VAT.
Step 5: test with one order
Place a test order and set it to Processing. Within a few seconds the order notes should say "FreeAgent invoice WC-... created" and "Payment of ... recorded in FreeAgent". Open the invoice in FreeAgent to check the lines and VAT.
To send an order that was paid before you installed the plugin, open it and choose the order action Sync to FreeAgent now.
If something goes wrong
- FreeAgent is down or rate limits the request: the plugin retries in the background up to 5 times (after 5 minutes, 30 minutes, 2 hours and 6 hours). A retry never creates a second invoice or a second payment.
- A note says the totals differ: FreeAgent works out VAT from the rate on each line, so rounding can differ by a penny. A WooCommerce rate that is not one of your FreeAgent VAT rates can differ more. Check the invoice in FreeAgent.
- Errors: read the order notes, then WooCommerce > Status > Logs under the source skillmerc-sync-for-freeagent. Tick Debug log for more detail.
- Refunds: version 0.1 does not send refunds. Record a credit note in FreeAgent by hand for now.
More WooCommerce and FreeAgent guides
Using Sage Accounting instead? See WooCommerce to Sage Accounting sync.