Job Material Update - Ex/Inc GST Issue

Hi there,

We are experiencing an issue upon performing a job material update whereby the job card view within billing changes from the default “Inc GST” to “Ex GST” thus adding 10% on top of the already including gst value which appears on the invoice out to the customer.

No other materials exist on the order and passing “displayed_amount_is_tax_inclusive”:“true” at all times, and tax settings, material settings, invoice settings, and client settings are all in place with the appropriate tax and gst settings as confirmed by ServiceM8 service desk.

If anybody can shed any light on what we may be doing wrong…

Thank you!

Job card Price ex GST/Total ex GST

Partial payload to ServiceM8

/api_1.0/JobMaterial/insertUUID

Material A

UUID: 123ABC; 
    Material_UUID: 123ABC; 
        Product: Carry out service.; 
        Quantity: 1; 
        Price: 0.00; 
        Displayed_Amount: 0.00; 
        Displayed_Amount_Is_Tax_Inclusive: true; 
        Tax_Rate_UUID: 123ABC; 
            2026-05-07 08:56:11.652 +10:00 [WRN] jsonPayload: {
                "job_uuid":"123ABC",
                    "material_uuid":"123ABC",
                    "name":"Carry out service.",
                    "quantity":1,
                    "price":0.00,
                    "displayed_amount":0.00,
                    "displayed_amount_is_tax_inclusive":"true",
                    "tax_rate_uuid":"123ABC",
                    "sort_order":"2"
    }

Material B

UUID: 123ABC; 
    Material_UUID: 123ABC; 
        Product: Carry out service.; 
        Quantity: 1; 
        Price: 259.09; 
        Displayed_Amount: 285.00; 
        Displayed_Amount_Is_Tax_Inclusive: true; 
        Tax_Rate_UUID: 123ABC;
            2026-05-07 08:56:11.759 +10:00 [WRN] jsonPayload: {
                 "job_uuid":"123ABC",
                     "material_uuid":"123ABC",
                     "name":"Carry out service.",
                     "quantity":1,
                     "price":259.09,
                     "displayed_amount":285.00,
                     "displayed_amount_is_tax_inclusive":"true",
                     "tax_rate_uuid":"123ABC",
                     "sort_order":"3"
                }

Hi Bradley,

For JobMaterials, ServiceM8 stores both an ex-tax unit price and a “displayed” unit amount, and which one is treated as inc or ex tax depends on the displayed_amount_is_tax_inclusive flag.

A couple of key points to sanity-check against what’s actually being saved after your update:

  • price is the unit price excluding tax.
  • displayed_amount is the unit price amount as displayed on invoices and quotes, and it can be either tax-inclusive or tax-exclusive depending on displayed_amount_is_tax_inclusive.
  • displayed_amount_is_tax_inclusive is the flag that indicates whether displayed_amount includes tax (true) or excludes tax (false).

Because of that, the quickest way to confirm what’s going wrong is to read the JobMaterial straight back after your update and verify what value is actually stored for displayed_amount_is_tax_inclusive, along with displayed_amount, price, and tax_rate_uuid. The retrieve endpoint is GET /jobmaterial/{uuid}.json.

Separately, if what you’re seeing is the job card “Amounts are” preference itself flipping between tax inclusive and tax exclusive, that’s an account-wide setting shared by all staff logins. In the Enhanced Job Card, it lives under Account > Settings > Preferences > Invoicing > “Set whether item prices include [GST]”.

If you email support@servicem8.com with (1) the JobMaterial UUID, and (2) the GET /jobmaterial/{uuid}.json response from immediately after one of the problematic updates, we can confirm whether the stored displayed_amount_is_tax_inclusive value matches what you intended.

Thanks,
Cody