Help Center

Setting up taxes

Chris Muench
Chris Muench
  • Updated

Taxes can be set at the store, location, item, customer, and sale level, and the most specific level wins. This guide explains the exact priority order, every setting under Store Config → Taxes, tax groups, exemptions, tax caps, TaxJar address-based rates, and the reports that show what you collected.

PHP Point Of Sale handles everything from a single flat sales tax to layered VAT, exemptions, and address-based rates. Taxes can be defined at several levels — store-wide, per location, per item, per customer, and on the sale itself — and understanding which level wins is most of the job. This guide covers how to set the options up; what you should actually charge is a question for your accountant or tax authority, not for this page.

Changing tax settings requires access to the Store Config module (and to Locations for location rates) — see permissions and templates.

How the app decides which tax to charge

When an item lands on a sale, the app walks down this list and uses the first level that has tax information. Everything below that level is ignored for that line:

  1. Taxes edited on the line item during the sale — an employee with the right permission clicked the line's taxes and changed them.
  2. Taxes edited on the whole sale — a sale-level tax override.
  3. The delivery zone's tax group — when the sale has a delivery going to a defined shipping zone with a tax group attached. See deliveries and shipping.
  4. The customer's tax settings — if the customer has Override Default Tax enabled, their tax group or custom rates apply. If the customer is simply marked not Taxable, the line is not taxed at all (tax-inclusive items keep their tax backed out instead).
  5. The item's per-location tax override — an item can carry different tax settings at each location.
  6. The item's own tax overrideOverride Default Tax on the item, with a tax group or custom rates. Item kits follow the same rules as items.
  7. TaxJar — when a TaxJar API key is configured, rates are pulled by address (see below).
  8. The location's taxes — the location's tax group, or its default tax rates 1–5.
  9. Store Config default tax rates — the store-wide fallback, used when nothing above applies.

Two extra rules sit outside the list: items marked as EBT-eligible are not taxed when the sale is paid with EBT, and repair items on work orders are only taxed when Repair Item Taxable is enabled in Store Config → Work Order.

At every level you make the same choice: pick a Tax Group from the dropdown, or enter custom taxes — up to five rows of tax name plus tax percent that apply only in that one place.

Every setting under Store Config → Taxes

Open Store Config, click Taxes in the section list (or search "tax"). All checkboxes default to off.

  • TaxJar API Key (US Only) — paste your TaxJar API key here to pull rates automatically; empty by default. See the TaxJar section below.
  • Use TaxJar Location API to pull taxes — with TaxJar connected, looks up the rate for your store location's address and applies it as separate state, county, and city rates.
  • Flat Discount also discounts tax — when a flat discount is applied, tax is calculated on the discounted amount rather than the original price.
  • Prices include Tax — new items default to tax-included pricing (the shelf price already contains tax). This only sets the default for newly created items; it does not change existing items.
  • Charge tax on receivings — taxes are charged on receivings (purchases from suppliers). Off by default; the rates used are your store/location tax values, or the supplier's tax group when one is assigned. See receiving stock.
  • Use Tax Values at ALL locations — a one-time action rather than a persistent toggle: when you check it and click Save, every location's tax overrides (its tax group and its default rates 1–5) are cleared, so all locations fall back to the global taxes defined here.
  • Do not apply tax to items exchanged / Do not apply tax to items traded in — exchanged or traded-in lines carry no tax. See returns, exchanges and trade-ins.
  • Apply sales tax credit for exchange items (up to purchase amount) / Apply sales tax credit for trade-in items (up to purchase amount) — instead of removing tax, credits the tax on the exchanged/traded-in value against the tax on the new purchase.
  • Markup/Markdown Fee is used when calculating tax — includes the markup/markdown fee in the taxable amount.
  • Tax Groups — the tax group editor, described next.
  • Tax 1 Rate through Tax 5 Rate — the store-wide default rates. Each has a Tax Name (Tax 1 defaults to "Sales Tax") and a Tax Percent; rates 3–5 are hidden behind Show More. Tax 2 has a Cumulative checkbox: when checked, Tax 2 is calculated on the price plus Tax 1 — tax on tax, for jurisdictions that compound.

Tax groups

A Tax Group is a named, reusable set of rates. Instead of typing "State 5% + City 1.5%" onto every item, you define the group once and assign it wherever it applies: to items, item kits, customers, suppliers, locations, and delivery (shipping) zones.

To create one, in Store Config → Taxes find the Tax Groups table and click Add Tax Group. Each group row has:

  • Name — the group's label, e.g. "Paper goods" or "Prepared food".
  • Tax Name — the name of the individual rate, as it will print on receipts and show in reports.
  • Tax Percent — the rate number, e.g. 5 for 5%.
  • Cumulative — this rate is calculated on top of the previous rates rather than on the base price.
  • Default — marks the group used when no other tax level applies (it stands in for the default tax rates).
  • Add Rate — adds another name/percent row to the same group. All rates in a group apply together: a group with a 5% rate and a 6% rate charges 11% in total.
  • Sort — controls the order rates apply and display in.
  • Delete — removes a rate or group.

Click Save at the bottom of Store Config to keep changes.

Location taxes

Each location can charge its own taxes. Open Locations, edit a location, and switch to its Taxes & Fees tab:

  • Override Default Tax — check it to give this location its own taxes; then pick a Tax Group or enter custom Tax 1–5 rates (name plus percent, with a Cumulative option on Tax 2).
  • Only Charge Tax On Amount (Tax Cap) — taxes only up to this amount of an item's price, for jurisdictions that cap the taxable value.
  • Use Tax Group When Item Above — when an item's price crosses this threshold, the tax group selected next to it is used instead of the normal rates — for rules that kick in above a price point (luxury thresholds, clothing exemptions up to a value, and similar).

Rates live on the location, so each store in a chain can charge its own — see locations and registers. If you want every location back on the global rates, use Use Tax Values at ALL locations in Store Config as described above.

Item taxes

On an item's form (see creating items), the Pricing area has:

  • Prices include Tax — this item's price already contains tax; the app backs the tax portion out for reporting. New items inherit the store-wide Prices include Tax default.
  • Override Default Tax — check it, then choose a Tax Group or enter custom Tax 1–5 rates for this item alone. This is how groceries ring up exempt while electronics carry the full rate.

An item's tax settings beat the location and store defaults, and can additionally differ per location.

Customer taxes and exemptions

On a customer's profile (see customer profiles):

  • Taxable — checked by default. Uncheck it for a tax-exempt customer and no tax is charged on their sales; a Non tax certificate number field appears so the exemption paperwork trail is on file.
  • Override Default Tax — gives the customer their own Tax Group or custom rates, which replace item and location taxes on their sales — for out-of-state resellers or customers taxed under a different scheme.

Suppliers have a Tax Group field on their form too; it applies to receivings from that supplier when Charge tax on receivings is enabled. See suppliers.

Editing taxes during a sale

At the register, an employee can click the tax lines on a sale to change or remove them — but only with the right permissions. Two employee permissions in the Sales module gate this (with matching ones in Receivings):

  • Edit Taxes — may change tax names and percentages on a sale in progress.
  • Delete Taxes — may remove taxes from a sale.

Grant them only to the people who genuinely need to adjust tax at the counter; everyone else rings sales with the configured rates untouched. See permissions and templates.

TaxJar: address-based rates for US stores

PHP Point Of Sale integrates with TaxJar for automatic US sales-tax calculation, in store and for deliveries:

  1. Sign in to your TaxJar account and copy your API key.
  2. Open Store Config → Taxes and paste it into TaxJar API Key (US Only).
  3. Check Use TaxJar Location API to pull taxes if you want in-store rates pulled for your location's address; the returned rate is applied broken out as its state, county, and city components.
  4. Click Save.

From then on rates come from TaxJar automatically. On sales with a delivery, the delivery address is used, so destination-based tax comes out right. Item-level tax overrides still take priority over TaxJar — an item marked exempt stays exempt. The integration works only in the USA.

Tax-inclusive pricing (VAT-style)

If your shelf prices already include tax — the norm in VAT countries — enable Prices include Tax in Store Config → Taxes so new items default to tax-included, and check the per-item Prices include Tax flag on the items themselves. The price you enter is the price the customer pays, and the app backs the tax portion out for receipts and reports.

Two related display settings: your Tax ID (from Store Config → Company Information, or per location) prints on receipts, and for Saudi Arabia's ZATCA requirements you can print a compliant QR code by setting Show QR code on sale receipt with QR Code Format = Saudi Arabia Digital Receipt in Store Config → Sales. How taxes display on the receipt itself — per-item tax, grouped taxes, taxable markers — is covered in customizing receipts.

Check your work with tax reports

Once sales are flowing, Reports shows what you have collected (each gated by the Taxes report permission):

  • Taxes Summary Report — tax collected by rate, with a graphical version.
  • Tax by Payments Received — tax based on payments actually received, for cash-basis filing.
  • Receivings Taxes Summary Report — the purchasing side, when you charge tax on receivings.

Running reports covers filtering and exporting. Set the rates, ring a test sale (use test mode to keep it out of your records), and read the receipt before opening day — a minute of checking now beats amending a filing later.

Common questions

Why is no tax being charged on my sales? Check the levels in priority order: is the customer on the sale marked not Taxable? Does the item have Override Default Tax with empty rates? Then confirm the location's Taxes & Fees tab and finally Store Config → Taxes actually carry a rate. A rate of 0 or an empty percent charges nothing.

How do I make one product tax-free while everything else is taxed? Edit the item, check Override Default Tax, and leave the rates empty (or assign a tax group with a 0% rate). That override beats the location and store defaults.

How do I set up two taxes that both apply, like state plus city? Enter both under Store Config → Taxes as Tax 1 Rate and Tax 2 Rate, or build a Tax Group with two rates. Both apply to the same base price unless you mark the second Cumulative, which calculates it on the price plus the first tax.

What does Cumulative mean? A cumulative rate is calculated on the price including the previous taxes instead of the base price — "tax on tax", required in some jurisdictions.

How do I mark a customer tax exempt? Edit the customer and uncheck Taxable; record their certificate in Non tax certificate number. Their sales then ring with no tax.

Can each of my locations charge a different rate? Yes. Edit each location, open Taxes & Fees, check Override Default Tax, and set that location's group or rates. To undo it everywhere at once, check Use Tax Values at ALL locations in Store Config and save.

Does changing tax settings affect past sales? No. Completed sales keep the taxes they were rung with; new settings apply only to sales rung after the change.

A cashier changed the tax on a sale — how do I stop that? Remove the Edit Taxes and Delete Taxes permissions from their permission template. Without them the tax lines on a sale cannot be altered.

Why are my prices coming out slightly different from shelf price with tax included? Confirm the item itself has Prices include Tax checked — the store-wide setting only changes the default for new items, and an item created before you enabled it still carries tax-excluded pricing.

Was this article helpful?

0 out of 0 found this helpful

Have more questions? Submit a request

Comments

0 comments

Please sign in to leave a comment.