Bookkeeping

How to Book Shopify Shipping Costs in Moneybird

How to Book Shopify Shipping Costs in Moneybird

Shipping costs appear on almost every Shopify order. Whether you charge a flat rate, offer free shipping above a certain threshold, or use calculated rates based on weight, those shipping charges need to end up correctly in your accounting. In practice, this is where many webshop owners make mistakes, leading to incorrect VAT returns or questions from their accountant at the end of the quarter.

Why you should book shipping costs separately

Many shop owners book shipping costs as part of their regular revenue, on the same ledger account as product sales. While this is not technically wrong, you miss valuable insight into your business operations. By booking shipping costs on a separate ledger account, you can see exactly how much customers contribute to shipping and how much you subsidize yourself.

For VAT purposes, it is also important to know which VAT rate applies to shipping costs. In the Netherlands, shipping costs follow the VAT rate of the delivered goods. If you only sell products at 21% VAT, the shipping costs also carry 21% VAT. But when an order contains both 21% and 9% products, it gets more complex, because the shipping costs should be proportionally divided across the rates.

For a correct VAT setup between Shopify and Moneybird, it is essential that shipping costs are processed correctly. Manually calculating how shipping costs should be split across different VAT rates is time-consuming and error-prone.

How Shopify records shipping costs

Shopify offers several options for setting up shipping rates. You can work with flat rates per zone, free shipping above a threshold amount, calculated rates based on order weight or dimensions, or rates from third-party carriers like PostNL or DHL. Each of these methods results in a shipping line item on the order.

What matters for accounting is that Shopify treats shipping costs as a separate line on the order, distinct from product lines. This makes it possible to process shipping costs separately in your bookkeeping. Shopify also records the VAT amount on shipping, but by default applies the highest VAT rate from the order to the entire shipping charge.

In the Dutch context, this is not always correct. When an order contains products with different VAT rates, you should ideally split the shipping costs proportionally. This is a nuance that Shopify itself does not handle, but it is relevant for an accurate VAT return filed with the Dutch tax authorities.

Shipping costs on Moneybird invoices

In Moneybird, you can process shipping costs in several ways. The most common approach is a separate invoice line with the description “Shipping costs” and the correct VAT rate. You can link this line to a specific ledger account, for example “Charged shipping costs” or the default revenue account.

The advantage of a dedicated ledger account for shipping is that your reports immediately show how much revenue comes from product sales versus shipping charges. This helps evaluate your shipping strategy. If you notice that customers barely cover the actual shipping costs, you might consider adjusting your rates or raising the free shipping threshold.

If you want to know which ledger accounts to set up for your Shopify webshop in Moneybird, we have written a separate guide on that topic.

How Schakel handles shipping costs

Schakel automatically picks up shipping costs from every Shopify order and processes them as a separate invoice line in Moneybird. In the app settings, you can choose which ledger account the shipping costs should be booked to. By default, they are placed on a separate revenue account so you have immediate insight into shipping revenue.

The app also handles VAT allocation correctly. For orders with products under different VAT rates, shipping costs are proportionally divided so your VAT return is accurate. This not only saves time but also prevents errors that are nearly inevitable with manual processing.

For orders with free shipping, no shipping line is created on the invoice, which makes sense. The customer paid nothing for shipping, so there is no revenue to book. Any actual shipping costs you incur (PostNL, DHL) are booked separately as a purchase invoice, independent of the sales invoice to the customer.

Free shipping and its impact on your books

Free shipping is a popular marketing strategy, but it does affect your accounting. When you offer free shipping, you bear the shipping costs yourself. These costs are booked as business expenses on a purchase account in Moneybird, for example “Shipping costs” under expense accounts.

It is important to make this distinction: shipping charges billed to the customer are revenue (and appear on the sales invoice), while shipping costs you pay to the carrier are business expenses (and appear on a purchase invoice or bank entry). By separating these cleanly, you have a clear picture of your actual margin per order.

Many webshop owners process the shipping costs they pay to PostNL or DHL as a monthly bulk booking. That is perfectly fine, as long as you do it consistently. The alternative is booking per shipment, but with hundreds of orders per month that is not practical.

Returns and shipping cost credits

When processing returns, the question arises: should shipping costs also be credited? The answer depends on your return policy. If you credit the full order including shipping, the credit note must also include the shipping line. For partial returns where only products are sent back, the shipping charges typically remain as is.

Schakel follows the data from Shopify here. If you process a return in Shopify and refund the shipping costs, this is automatically included on the credit note in Moneybird. If you only return the products, the original shipping line remains unchanged. You can read more about processing returns in our article on credit notes for Shopify returns.

Common mistakes when booking shipping costs

The most common mistake is booking all shipping revenue on the same account as product sales. This makes it impossible to analyze how much shipping charges actually contribute to your revenue and how much you lose on them. For a growing webshop, this can mean the difference between a profitable and unprofitable shipping strategy.

Another frequent error is applying the wrong VAT rate to shipping costs. Some entrepreneurs charge 21% VAT on shipping by default, even when the order exclusively contains products at the reduced rate. During a tax audit, this can lead to corrections and additional assessments.

Finally, many entrepreneurs forget to include shipping costs when reconciling their Shopify payouts with their bank account. The Shopify Payments payout contains the total order value including shipping, minus transaction fees. If you have not booked the shipping costs correctly, the reconciliation will not match and you will have a discrepancy to investigate.

Setting up shipping costs in Schakel

Configuring shipping cost processing in Schakel is straightforward. In the app, go to settings and select the ledger account where you want shipping costs to be booked. You can choose from all available revenue accounts in your Moneybird administration. We recommend creating a dedicated account, for example “Charged shipping costs (8xxx)”, so you always have clear visibility.

Once the setting is saved, all new orders are automatically processed with shipping costs on the correct account. Existing invoices are not modified, so if you switch mid-year, there will be a break in your reports. For this reason, it is best to configure this at the start of a new quarter or fiscal year.

The app also handles combined scenarios correctly: an order with shipping costs, discount codes, and different VAT rates is fully automatically converted into a correct Moneybird invoice. No manual calculations, no errors, no stress at quarter-end closing.

Want this handled automatically? Pick your connector.

Back to the blog