Skip to content

Update a tax preset

Open .md

PUT/v1/api/store/{team_slug}/setting/tax_type/{hash_id}

v1Operation ID v1_public_custom_tax_update_put

Changes a tax preset and returns it. Send only the fields to change.

  • simple: name, total, shipping_taxable, apply_before_disc, enable, default.
  • line_tax: the same, with line_taxes instead of total.
  • system presets: only name and default; for Auto Tax, only default. The Tax Exempt preset (secondary_type other) saves a new name but keeps showing Tax Exempt.

default: true makes it the team default. The type can't be changed. Existing invoices keep the rate they used.

Permission

Needs the Manage Settings permission.

Business rules

  • Fields that don't apply to the preset's type are ignored.
  • line_taxes, when sent, needs 1 to 8 parts and replaces them all; the rate becomes their sum.

Side effects

  • With default: true, new invoices YoPrint creates use this preset.

Path parameters

  • team_slugstringrequired

    Your team slug, shown as Team ID next to your API key in Profile.

    • Example your-team
  • hash_idstringrequired

    The tax preset's id: a hash id from an earlier answer. Only hash ids work here; anything else answers 404 page_not_found.

    • Example kazdbC5ICA0kV0

Request body

application/json, required.

  • Calculate tax before the discount. Defaults to false.

    • Default false
  • defaultboolean

    true makes it the team's default tax preset. false does nothing.

  • enableboolean

    Defaults to true.

    • Default true
  • line_taxesarray of objects

    line_tax presets only. Replaces all the parts.

    • 1 to 8 items
    Fields of each item (2)
    • namestringrequired

      The part's name, such as State or County.

    • totalintegerrequired

      The part's rate. A percentage ×1000: 8250 is 8.25%. With X-Yoprint-Decimal-Format: exact-v1, a value that isn't a whole number comes back as a string.

      • Minimum 0
  • namestring

    Any preset except Auto Tax.

  • Tax shipping too. Defaults to true.

    • Default true
  • totalinteger

    simple presets only. A percentage ×1000: 8250 is 8.25%. With X-Yoprint-Decimal-Format: exact-v1, a value that isn't a whole number comes back as a string.

    • Minimum 0
More examples (1)

Change a Single Line Tax rate

curl
curl -X PUT 'https://secure.yoprint.com/v1/api/store/your-team/setting/tax_type/kazdbC5ICA0kV0' \  -H 'Authorization: Bearer YOUR_API_KEY' \  -H 'Accept: application/json' \  -H 'X-Yoprint-Decimal-Format: exact-v1' \  -H 'Content-Type: application/json' \  -d '{    "total": 6250  }'

Response

200Successful response.

  • dataobjectrequired
    Child fields (18)
    • apply_before_discbooleanrequired

      Whether tax is calculated before the discount (Calculate Taxes Before Discount). Normally false: tax comes after the discount.

    • defaultbooleanrequired

      Whether it is the team's default tax preset. At most one preset is the default.

    • enablebooleanrequired
    • idstringrequired
    • line_taxesarray of objectsrequired

      The parts of a line_tax preset, as they were sent. Empty for the others.

      Fields of each item (2)
      • namestringrequired

        The part's name, such as State or County.

      • totalintegerrequired

        The part's rate. A percentage ×1000: 8250 is 8.25%. With X-Yoprint-Decimal-Format: exact-v1, a value that isn't a whole number comes back as a string.

        • Minimum 0
    • namestringrequired
    • secondary_typestring | nullrequired

      For system presets, which one: auto is Auto Tax, YoPrint's automatic US sales tax; other is a 0% preset some teams have, whose name always reads Tax Exempt. Null for your own presets.

    • shipping_taxablebooleanrequired

      Whether shipping is taxed (Tax Shipping).

    • totalintegerrequired

      The rate. For line_tax, the sum of the parts. Auto Tax shows 0: its rate is looked up per invoice. A percentage ×1000: 8250 is 8.25%. With X-Yoprint-Decimal-Format: exact-v1, a value that isn't a whole number comes back as a string.

      • Minimum 0
    • trashedbooleanrequired

      True for a deleted preset. Restore it with Restore a tax preset.

    • typestringrequired

      simple (Single Line Tax): one rate. line_tax (Multi Line Tax): parts that add up. system: made by YoPrint, such as Auto Tax.

      • One of: "simple", "line_tax", "system"
    • errorstring
    • hiddenboolean
    • override_ratesarray of objects
    • override_rulesarray of objects
    • supported_placearray of objects
  • statusintegerrequired
  • successbooleanrequired

Errors

  • 401The API key is missing or wrong (unauthenticated).

    When
    The API key is missing or wrong.
    Fix
    Send your personal API key as Authorization: Bearer YOUR_API_KEY.
  • 403You are not allowed to do this. api_access_not_in_plan: your team's plan doesn't include API access (Pro and above, with an active subscription or trial), so every request answers this until the team upgrades. When your role lacks the permission the operation needs, the body is only {"message": "Insufficient Permission"}. Other refusals use the error envelope, with unauthorized or user_is_not_authorized.

    When
    Your permission group lacks Manage Settings. This 403 has a short body, {"message": "Insufficient Permission"}, without success or error.
    Fix
    Ask the team owner to give your permission group Manage Settings.
  • 404Not found. page_not_found: the team slug is unknown, you are not a member of the team, or an id in the path is not one of this team's. code: null, with a message that starts "No query results for": there is no record with that id.

    When
    No tax preset with that id on this team (error.code is null and error.message starts "No query results"), the id is not one of this team's hash ids, or you are not a member of the team (both page_not_found).
    Fix
    Use an id from the list operation and check the team slug.
  • 422The request was refused and changed nothing. validation_failed lists what to fix in error.fields; other codes name a business rule, explained in error.message. A few checks answer with only {"message": "..."}. An operation that calls another service (a payment provider, a carrier, an accounting app) can answer connect_timeout ("Please retry again") when that service does not answer in time: the change may or may not have happened there, so read the record back before you retry.

    When
    A field is the wrong type, a rate is not a whole number of 0 or more, or line_taxes has no parts or more than 8. error.code is validation_failed, and error.fields names each field with its messages.
    Fix
    Fix the fields listed in error.fields and send the request again.
    When
    The preset is a retired legacy row (error.code validation_error, "We only support simple and line tax type update."), or the parts add up to more than YoPrint can store (amount_out_of_range).
    Fix
    Edit only presets the list returns, with rates as a percentage ×1000 (8250 is 8.25%).