Pass your own EU IOSS number and control whether Zonos calculates VAT
remittance or you remit it yourself.
GraphQL
If you hold your own Import One-Stop Shop (IOSS) registration for the European Union, you can pass your IOSS number on the landed cost calculation and control whether Zonos calculates the VAT remittance. Use this when you collect and remit EU import VAT yourself under your own IOSS registration, rather than remitting through Zonos. Zonos still returns a guaranteed landed cost.
Two fields on the landedCostCalculateWorkflow input control this behavior:
taxIdNumber – Your own EU IOSS number. When provided, it is surfaced on the response remittance lines so you can reconcile what you owe. (taxNumber is a deprecated alias.)
taxRemittanceCalculation – Whether Zonos calculates remittance. Accepts REMITTANCE or NO_REMITTANCE.
Invalid IOSS numbers are ignored
Zonos checks the format of the IOSS number you pass — it must be IM followed by 10 digits. If the format is invalid, Zonos ignores the number and calculates remittance under its own registration, as if none were passed; the quote is never rejected. The check is format only, so a correctly formatted but incorrect number is still accepted — make sure your number is right.
Pass taxIdNumber with the behavior you want. For the same EU low-value shipment (goods ≤ €150), taxRemittanceCalculation changes the result.
REMITTANCE — Zonos calculates remittance
Zonos calculates the EU VAT and populates the remittance line, with your IOSS number surfaced for reconciliation.
1mutation{
2 landedCostCalculateWorkflow(
3input:{
4endUse: NOT_FOR_RESALE
5method: DDP
6tariffRate: ZONOS_PREFERRED
7taxIdNumber:"IM1234567890"
8taxRemittanceCalculation: REMITTANCE
9}
10){
11 id
12 taxIdNumber
13 amountSubtotals {
14 duties
15 taxes
16 fees
17 landedCostTotal
18}
19 taxes {
20 amount
21 description
22 currency
23}
24 remittance {
25 amount
26 description
27 note
28 taxIdNumber
29}
30}
31}
NO_REMITTANCE — you remit under your own IOSS
When you pass your own IOSS number with NO_REMITTANCE on a qualifying EU low-value shipment (ship-to in the EU, arriving on or after 1 July 2026, goods total ≤ €150), Zonos hands VAT off to you: the remittance array is empty and Zonos calculates no VAT on goods, shipping, or duty — you collect and remit it under your own IOSS registration. Outside that low-value window, NO_REMITTANCE only empties the remittance array and the tax totals are unchanged.
1mutation{
2 landedCostCalculateWorkflow(
3input:{
4endUse: NOT_FOR_RESALE
5method: DDP
6tariffRate: ZONOS_PREFERRED
7taxIdNumber:"IM1234567890"
8taxRemittanceCalculation: NO_REMITTANCE
9}
10){
11 id
12 taxIdNumber
13 amountSubtotals {
14 duties
15 taxes
16 fees
17 landedCostTotal
18}
19 taxes {
20 amount
21 description
22 currency
23}
24 remittance {
25 amount
26 description
27 note
28 taxIdNumber
29}
30}
31}
GraphQL API ReferenceTypes, inputs, and operations used in this guide
Remit EU VAT with your own IOSS number
Remit EU VAT with your own IOSS number
Pass your own EU IOSS number and control whether Zonos calculates VAT remittance or you remit it yourself.
GraphQL
If you hold your own Import One-Stop Shop (IOSS) registration for the European Union, you can pass your IOSS number on the landed cost calculation and control whether Zonos calculates the VAT remittance. Use this when you collect and remit EU import VAT yourself under your own IOSS registration, rather than remitting through Zonos. Zonos still returns a guaranteed landed cost.
How it works
Two fields on the
landedCostCalculateWorkflowinput control this behavior:taxIdNumber– Your own EU IOSS number. When provided, it is surfaced on the responseremittancelines so you can reconcile what you owe. (taxNumberis a deprecated alias.)taxRemittanceCalculation– Whether Zonos calculates remittance. AcceptsREMITTANCEorNO_REMITTANCE.Zonos checks the format of the IOSS number you pass — it must be
IMfollowed by 10 digits. If the format is invalid, Zonos ignores the number and calculates remittance under its own registration, as if none were passed; the quote is never rejected. The check is format only, so a correctly formatted but incorrect number is still accepted — make sure your number is right.When NO_REMITTANCE is honored
NO_REMITTANCEis applied only when you pass your own IOSS number. The number you pass determines the result:NO_REMITTANCEis ignored. Zonos calculates remittance as usual.NO_REMITTANCEis honored. You self-remit and theremittancearray is empty.NO_REMITTANCEis ignored. Zonos calculates and remits as usual.REMITTANCEalways calculates remittance, regardless of the IOSS number you pass.Calculate with your IOSS number
Pass
taxIdNumberwith the behavior you want. For the same EU low-value shipment (goods ≤ €150),taxRemittanceCalculationchanges the result.REMITTANCE — Zonos calculates remittance
Zonos calculates the EU VAT and populates the
remittanceline, with your IOSS number surfaced for reconciliation.mutation {landedCostCalculateWorkflow(input: {endUse: NOT_FOR_RESALEmethod: DDPtariffRate: ZONOS_PREFERREDtaxIdNumber: "IM1234567890"taxRemittanceCalculation: REMITTANCE}) {idtaxIdNumberamountSubtotals {dutiestaxesfeeslandedCostTotal}taxes {amountdescriptioncurrency}remittance {amountdescriptionnotetaxIdNumber}}}NO_REMITTANCE — you remit under your own IOSS
When you pass your own IOSS number with
NO_REMITTANCEon a qualifying EU low-value shipment (ship-to in the EU, arriving on or after 1 July 2026, goods total ≤ €150), Zonos hands VAT off to you: theremittancearray is empty and Zonos calculates no VAT on goods, shipping, or duty — you collect and remit it under your own IOSS registration. Outside that low-value window,NO_REMITTANCEonly empties theremittancearray and the tax totals are unchanged.mutation {landedCostCalculateWorkflow(input: {endUse: NOT_FOR_RESALEmethod: DDPtariffRate: ZONOS_PREFERREDtaxIdNumber: "IM1234567890"taxRemittanceCalculation: NO_REMITTANCE}) {idtaxIdNumberamountSubtotals {dutiestaxesfeeslandedCostTotal}taxes {amountdescriptioncurrency}remittance {amountdescriptionnotetaxIdNumber}}}landedCostCalculateWorkflow
Was this page helpful?