API reference

Tax rates

A tax rate is a named rate products reference by id. Rates are integer micro-units (8.875% is 88750); the API also accepts ratePercent.

Base URL: https://apiv2.venuerun.com/merchants/:merchantId/tax-rates

text
GET    /merchants/:merchantId/tax-rates
POST   /merchants/:merchantId/tax-rates
GET    /merchants/:merchantId/tax-rates/:taxRateId
PATCH  /merchants/:merchantId/tax-rates/:taxRateId
DELETE /merchants/:merchantId/tax-rates/:taxRateId

The tax rate object

FieldTypeDescription
idstring (read-only)Unique identifier, assigned by VenueRun.
createdAtstring (read-only)When it was created (ISO 8601).
updatedAtstring (read-only)When it last changed (ISO 8601).
namestringShown to the customer on the receipt and to the merchant on reports.
rateMicrointeger
inclusivebooleanWhether the product price already contains this tax. Defaults to false.
jurisdictionstringFree-form label for the merchant's own bookkeeping, e.g. "NY-STATE". Defaults to "".
testModebooleanDefaults to false.
json
{
  "id": "NTvVkBJIkueQ0gxKmlb8",
  "name": "Test tax A1B2C3",
  "rateMicro": 88750,
  "inclusive": false,
  "jurisdiction": "",
  "testMode": true,
  "createdAt": "2026-01-15T12:00:00.000Z",
  "updatedAt": "2026-01-15T12:00:00.000Z"
}

List tax rates

GET /merchants/:merchantId/tax-rates

javascript
const merchantId = process.env.VENUERUN_MERCHANT_ID;
const response = await fetch(`https://apiv2.venuerun.com/merchants/${merchantId}/tax-rates?testMode`, {
  method: 'GET',
  headers: {
    Authorization: `Bearer ${process.env.VENUERUN_API_KEY}`,
  },
});

Response:

json
{
  "testMode": true,
  "length": 1,
  "data": [
    {
      "id": "NTvVkBJIkueQ0gxKmlb8",
      "name": "Test tax A1B2C3",
      "rateMicro": 88750,
      "inclusive": false,
      "jurisdiction": "",
      "testMode": true,
      "createdAt": "2026-01-15T12:00:00.000Z",
      "updatedAt": "2026-01-15T12:00:00.000Z"
    }
  ]
}

Create a tax rate

POST /merchants/:merchantId/tax-rates

Required attributes

FieldTypeDescription
namestringShown to the customer on the receipt and to the merchant on reports.

Optional attributes

FieldTypeDescription
inclusivebooleanWhether the product price already contains this tax. Defaults to false.
jurisdictionstringFree-form label for the merchant's own bookkeeping, e.g. "NY-STATE". Defaults to "".
testModebooleanDefaults to false.
rateMicrointeger
ratePercentnumber
javascript
const merchantId = process.env.VENUERUN_MERCHANT_ID;
const response = await fetch(`https://apiv2.venuerun.com/merchants/${merchantId}/tax-rates`, {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.VENUERUN_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "name": "Test tax A1B2C3",
    "ratePercent": "8.875",
    "testMode": true
  }),
});

Response:

json
{
  "id": "libQFE1PTxfZchFSmZRz",
  "name": "Test tax A1B2C3",
  "rateMicro": 88750,
  "inclusive": false,
  "jurisdiction": "",
  "testMode": true,
  "createdAt": "2026-01-15T12:00:00.000Z",
  "updatedAt": "2026-01-15T12:00:00.000Z"
}

Retrieve a tax rate

GET /merchants/:merchantId/tax-rates/:taxRateId

javascript
const merchantId = process.env.VENUERUN_MERCHANT_ID;
const response = await fetch(`https://apiv2.venuerun.com/merchants/${merchantId}/tax-rates/zXUl8nKoYxl7mDZur7xu`, {
  method: 'GET',
  headers: {
    Authorization: `Bearer ${process.env.VENUERUN_API_KEY}`,
  },
});

Response:

json
{
  "id": "zXUl8nKoYxl7mDZur7xu",
  "name": "Test tax A1B2C3",
  "rateMicro": 88750,
  "inclusive": false,
  "jurisdiction": "",
  "testMode": true,
  "createdAt": "2026-01-15T12:00:00.000Z",
  "updatedAt": "2026-01-15T12:00:00.000Z"
}

Update a tax rate

PATCH /merchants/:merchantId/tax-rates/:taxRateId

Send only the fields you are changing — every attribute is optional.

javascript
const merchantId = process.env.VENUERUN_MERCHANT_ID;
const response = await fetch(`https://apiv2.venuerun.com/merchants/${merchantId}/tax-rates/eEYnh4vyprGsydfbqkRI`, {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${process.env.VENUERUN_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "name": "Renamed",
    "testMode": false
  }),
});

Response:

json
{
  "id": "eEYnh4vyprGsydfbqkRI",
  "name": "Renamed",
  "rateMicro": 88750,
  "inclusive": false,
  "jurisdiction": "",
  "testMode": true,
  "createdAt": "2026-01-15T12:00:00.000Z",
  "updatedAt": "2026-01-15T12:00:00.000Z"
}

Delete a tax rate

DELETE /merchants/:merchantId/tax-rates/:taxRateId

javascript
const merchantId = process.env.VENUERUN_MERCHANT_ID;
const response = await fetch(`https://apiv2.venuerun.com/merchants/${merchantId}/tax-rates/NOwKQuprdMCaInowmunN`, {
  method: 'DELETE',
  headers: {
    Authorization: `Bearer ${process.env.VENUERUN_API_KEY}`,
  },
});

Response:

json
{
  "id": "NOwKQuprdMCaInowmunN",
  "object": {
    "id": "NOwKQuprdMCaInowmunN",
    "name": "Order tax A1B2C3",
    "rateMicro": 100000,
    "inclusive": false,
    "jurisdiction": "",
    "testMode": true,
    "createdAt": "2026-01-15T12:00:00.000Z",
    "updatedAt": "2026-01-15T12:00:00.000Z"
  },
  "message": "Tax rate deleted",
  "deleted": true,
  "UlxsYomqtIm36VM5sVS3": 0
}

Errors

Every error answers with a message. A request that fails validation is a 400:

json
{
  "message": "rateMicro: Invalid input: expected int, received number"
}