docs.vin

salesTax

The salesTax noun — identity, lifecycle, events, and every capability as an anchored section: 6 capabilities, 1 live, 5 sandbox, 0 declared.

salesTax is one of the estate's 317 automotive nouns — a job a car needs done. It carries 6 capabilities: 1 live, 5 sandbox, 0 declared · doors aggregator.vin.

Identity

NounsalesTax
PillarCommerce (facets: 1 data · 2 services · 3 commerce)
Capabilities6 — 1 live · 5 sandbox · 0 declared
EntitiesDeal
Doorsaggregator.vin
SDKVin.salesTax.* from apis.vin
Address/catalog/salesTax#{action} — the anchor IS the wire name minus salesTax.

Events

The vocabulary this noun can append to the record — 6 past-tense, versioned event types, each linked to the capability that emits it:

Discover & read

report

salesTax.report · POST /sales-taxes/report · gate offer · sandbox · answers SalesTaxReport@1

FieldTypeRequiredNotes
vinstringno

The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /JM3KKCHA6S1201830 (the VIN lens).

Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.

EmitsSalesTax.reported@1.

the SDK — salesTax.report
import { salesTax } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await salesTax.report({"vin":"JM3KKCHA6S1201830"})
POST /sales-taxes/report
curl -X POST https://apis.vin/sales-taxes/report \
  -H 'content-type: application/json' \
  -d '{"vin":"JM3KKCHA6S1201830"}'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-17T12:42:17.249Z · HTTP 200
{
  "type": "OK",
  "answers": "SalesTaxReport@1",
  "value": {
    "dealId": "salesTax_7eccbdc7",
    "workflow": "workflow-19869ae9",
    "dealType": "Deal-01",
    "vehicleId": "vehicle_e38b6fc9",
    "buyerId": "party_a72040f6",
    "sellerId": "party_5e840b3a",
    "dealerOfRecordId": "dealer_2017ba10",
    "authority": "mandate_9364bae9",
    "structure": "Deal-01",
    "state": "Deal-01",
    "correlationId": "W0-EVT-01",
    "dependsOn": []
  },
  "evidence": {
    "dealId": "salesTax_7eccbdc7",
    "workflow": "workflow-19869ae9",
    "dealType": "Deal-01",
    "vehicleId": "vehicle_e38b6fc9",
    "buyerId": "party_a72040f6",
    "sellerId": "party_5e840b3a",
    "dealerOfRecordId": "dealer_2017ba10",
    "authority": "mandate_9364bae9",
    "structure": "Deal-01",
    "state": "Deal-01",
    "correlationId": "W0-EVT-01",
    "dependsOn": []
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "sales-tax-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Quote & price

calc

salesTax.calc · GET /sales-taxes/calc · gate key · live · answers SalesTaxCalc@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /JM3KKCHA6S1201830 (the VIN lens).

Try it — live: answers on the wire today. A sandbox key still selects the deterministic simulated mode — drive the full outcome range with the magic triggers.

the SDK — salesTax.calc
import { salesTax } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await salesTax.calc({"vin":"JM3KKCHA6S1201830"})
GET /sales-taxes/calc
curl 'https://apis.vin/sales-taxes/calc?vin=JM3KKCHA6S1201830'

Pay & settle

collect

salesTax.collect · POST /sales-taxes/collect · gate offer · sandbox · answers SalesTaxCollect@1

FieldTypeRequiredNotes
vinstringno

The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /JM3KKCHA6S1201830 (the VIN lens).

Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.

EmitsSalesTax.collected@1 · SalesTax.failed@1.

the SDK — salesTax.collect
import { salesTax } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await salesTax.collect({"vin":"JM3KKCHA6S1201830"})
POST /sales-taxes/collect
curl -X POST https://apis.vin/sales-taxes/collect \
  -H 'content-type: application/json' \
  -d '{"vin":"JM3KKCHA6S1201830"}'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-17T12:42:17.240Z · HTTP 200
{
  "type": "OK",
  "answers": "SalesTaxCollect@1",
  "value": {
    "dealId": "salesTax_066d2be2",
    "workflow": "workflow-080514a8",
    "dealType": "Deal-01",
    "vehicleId": "vehicle_c9f0d342",
    "buyerId": "party_5d0e4835",
    "sellerId": "party_bdb004cb",
    "dealerOfRecordId": "dealer_33166a91",
    "authority": "mandate_100cbf46",
    "structure": "Deal-01",
    "state": "Deal-01",
    "correlationId": "W0-EVT-01",
    "dependsOn": []
  },
  "evidence": {
    "dealId": "salesTax_066d2be2",
    "workflow": "workflow-080514a8",
    "dealType": "Deal-01",
    "vehicleId": "vehicle_c9f0d342",
    "buyerId": "party_5d0e4835",
    "sellerId": "party_bdb004cb",
    "dealerOfRecordId": "dealer_33166a91",
    "authority": "mandate_100cbf46",
    "structure": "Deal-01",
    "state": "Deal-01",
    "correlationId": "W0-EVT-01",
    "dependsOn": []
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "sales-tax-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

refund

salesTax.refund · POST /sales-taxes/refund · gate offer · sandbox · answers SalesTaxRefund@1

FieldTypeRequiredNotes
vinstringno

The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /JM3KKCHA6S1201830 (the VIN lens).

Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.

EmitsSalesTax.failed@1 · SalesTax.refunded@1.

the SDK — salesTax.refund
import { salesTax } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await salesTax.refund({"vin":"JM3KKCHA6S1201830"})
POST /sales-taxes/refund
curl -X POST https://apis.vin/sales-taxes/refund \
  -H 'content-type: application/json' \
  -d '{"vin":"JM3KKCHA6S1201830"}'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-17T12:42:17.243Z · HTTP 200
{
  "type": "OK",
  "answers": "SalesTaxRefund@1",
  "value": {
    "dealId": "salesTax_e7cbccef",
    "workflow": "workflow-d8041d51",
    "dealType": "Deal-01",
    "vehicleId": "vehicle_64148b61",
    "buyerId": "party_d05eb6ae",
    "sellerId": "party_523c3bd2",
    "dealerOfRecordId": "dealer_7e9ad818",
    "authority": "mandate_2f23ec61",
    "structure": "Deal-01",
    "state": "Deal-01",
    "correlationId": "W0-EVT-01",
    "dependsOn": []
  },
  "evidence": {
    "dealId": "salesTax_e7cbccef",
    "workflow": "workflow-d8041d51",
    "dealType": "Deal-01",
    "vehicleId": "vehicle_64148b61",
    "buyerId": "party_d05eb6ae",
    "sellerId": "party_523c3bd2",
    "dealerOfRecordId": "dealer_7e9ad818",
    "authority": "mandate_2f23ec61",
    "structure": "Deal-01",
    "state": "Deal-01",
    "correlationId": "W0-EVT-01",
    "dependsOn": []
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "sales-tax-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

remit

salesTax.remit · POST /sales-taxes/remit · gate offer · sandbox · answers SalesTaxRemit@1

FieldTypeRequiredNotes
vinstringno

The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /JM3KKCHA6S1201830 (the VIN lens).

Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.

EmitsSalesTax.failed@1 · SalesTax.remitted@1.

the SDK — salesTax.remit
import { salesTax } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await salesTax.remit({"vin":"JM3KKCHA6S1201830"})
POST /sales-taxes/remit
curl -X POST https://apis.vin/sales-taxes/remit \
  -H 'content-type: application/json' \
  -d '{"vin":"JM3KKCHA6S1201830"}'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-17T12:42:17.245Z · HTTP 200
{
  "type": "OK",
  "answers": "SalesTaxRemit@1",
  "value": {
    "dealId": "salesTax_cc24bc48",
    "workflow": "workflow-482d6dba",
    "dealType": "Deal-01",
    "vehicleId": "vehicle_7ee3ef94",
    "buyerId": "party_a6c7fe17",
    "sellerId": "party_0a9aa179",
    "dealerOfRecordId": "dealer_c2a2ed3b",
    "authority": "mandate_8c896228",
    "structure": "Deal-01",
    "state": "Deal-01",
    "correlationId": "W0-EVT-01",
    "dependsOn": []
  },
  "evidence": {
    "dealId": "salesTax_cc24bc48",
    "workflow": "workflow-482d6dba",
    "dealType": "Deal-01",
    "vehicleId": "vehicle_7ee3ef94",
    "buyerId": "party_a6c7fe17",
    "sellerId": "party_0a9aa179",
    "dealerOfRecordId": "dealer_c2a2ed3b",
    "authority": "mandate_8c896228",
    "structure": "Deal-01",
    "state": "Deal-01",
    "correlationId": "W0-EVT-01",
    "dependsOn": []
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "sales-tax-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

More actions

exempt

salesTax.exempt · POST /sales-taxes/exempt · gate offer · sandbox · answers SalesTaxExempt@1

FieldTypeRequiredNotes
vinstringno

The gate is a 402 OFFER — the price and a hard ceiling on the wire, with a durable intent that executes on settlement. Never a wall, never "contact sales". Price: not posted — see /pricing.

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /JM3KKCHA6S1201830 (the VIN lens).

Try it — sandbox: every call answers a deterministic, provenance-labeled simulated payload ({ environment, simulated } in the body). Force any documented outcome with the magic triggers. Going live is a connect, never a ballot: submit the credential at integrates.vin (dealer systems) or connects.vin (consumer accounts) — submissions enter the activation queue and rank live rollout.

EmitsSalesTax.exempted@1.

the SDK — salesTax.exempt
import { salesTax } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await salesTax.exempt({"vin":"JM3KKCHA6S1201830"})
POST /sales-taxes/exempt
curl -X POST https://apis.vin/sales-taxes/exempt \
  -H 'content-type: application/json' \
  -d '{"vin":"JM3KKCHA6S1201830"}'

Receipt — the sandbox wire answered the request above with this exact body at build time. Captured by the receipts runner (timestamped, provenance in the payload), never authored; it re-executes only when this descriptor changes.

receipt · executed 2026-08-17T12:42:17.243Z · HTTP 200
{
  "type": "OK",
  "answers": "SalesTaxExempt@1",
  "value": {
    "dealId": "salesTax_a5304388",
    "workflow": "workflow-836227fa",
    "dealType": "Deal-01",
    "vehicleId": "vehicle_9b51e6d4",
    "buyerId": "party_1172b557",
    "sellerId": "party_883867b9",
    "dealerOfRecordId": "dealer_125d087b",
    "authority": "mandate_6b1e9968",
    "structure": "Deal-01",
    "state": "Deal-01",
    "correlationId": "W0-EVT-01",
    "dependsOn": []
  },
  "evidence": {
    "dealId": "salesTax_a5304388",
    "workflow": "workflow-836227fa",
    "dealType": "Deal-01",
    "vehicleId": "vehicle_9b51e6d4",
    "buyerId": "party_1172b557",
    "sellerId": "party_883867b9",
    "dealerOfRecordId": "dealer_125d087b",
    "authority": "mandate_6b1e9968",
    "structure": "Deal-01",
    "state": "Deal-01",
    "correlationId": "W0-EVT-01",
    "dependsOn": []
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "sales-tax-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Data model

The record shape behind this noun — one entity, each property an evidence field. See the whole estate model on the data model page.

Deal

Modeled

The noun drawn out — its record shape, its lifecycle, and how it is exercised end to end. 2 diagrams, rendered from the estate model.

SalesTax · Class model

SalesTax · State machine


Generated from the catalog. Every capability, answer, gate, and entity on this page is a rendered descriptor — it cannot drift from the wire.