docs.vin

feeSchedule

The feeSchedule noun — identity, lifecycle, events, and every capability as an anchored section: 6 capabilities, 2 live, 4 sandbox, 0 declared.

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

Identity

NounfeeSchedule
PillarData (facets: 5 data · 1 services)
Capabilities6 — 2 live · 4 sandbox · 0 declared
EntitiesInvoice
Doorsaggregator.vin
SDKVin.feeSchedule.* from apis.vin
Address/catalog/feeSchedule#{action} — the anchor IS the wire name minus feeSchedule.

Events

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

Discover & read

lookup

feeSchedule.lookup · GET /fee-schedules/lookup · gate none · live · answers FeeScheduleLookup@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /3C4NJDBN9RT132967 (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 — feeSchedule.lookup
import { feeSchedule } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await feeSchedule.lookup({"vin":"3C4NJDBN9RT132967"})
GET /fee-schedules/lookup
curl 'https://apis.vin/fee-schedules/lookup?vin=3C4NJDBN9RT132967'

validate

feeSchedule.validate · POST /fee-schedules/validate · gate offer · sandbox · answers FeeScheduleValidate@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) · /3C4NJDBN9RT132967 (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.

EmitsFeeSchedule.validated@1.

the SDK — feeSchedule.validate
import { feeSchedule } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await feeSchedule.validate({"vin":"3C4NJDBN9RT132967"})
POST /fee-schedules/validate
curl -X POST https://apis.vin/fee-schedules/validate \
  -H 'content-type: application/json' \
  -d '{"vin":"3C4NJDBN9RT132967"}'

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:11.513Z · HTTP 200
{
  "type": "OK",
  "answers": "FeeScheduleValidate@1",
  "value": {
    "vin": "3C4NJDBN9RT132967",
    "noun": "feeSchedule",
    "asOf": "2026-08-10",
    "id": "FIN-acf86215",
    "subjectId": "DL-99867dbe",
    "lineItems": [
      {
        "kind": "doc-fee",
        "amountCents": 8500,
        "basis": "posted-doc-fee"
      },
      {
        "kind": "title-reg",
        "amountCents": 19000,
        "basis": "title-rail-posted-total"
      },
      {
        "kind": "sales-tax",
        "amountCents": 189750,
        "basis": "posted-rate-on-asking-value"
      }
    ],
    "amount": 217250,
    "status": "Created",
    "validation": {
      "status": "valid",
      "basis": "derivation-conforms-to-posted-menu",
      "lines": [
        {
          "kind": "doc-fee",
          "amountCents": 8500,
          "standing": "conforms",
          "anchor": "posted-doc-fee"
        },
        {
          "kind": "title-reg",
          "amountCents": 19000,
          "standing": "conforms",
          "anchor": "title-rail-posted-total"
        },
        {
          "kind": "sales-tax",
          "amountCents": 189750,
          "standing": "conforms",
          "anchor": "posted-rate-on-asking-value"
        }
      ]
    }
  },
  "evidence": {
    "vin": "3C4NJDBN9RT132967",
    "noun": "feeSchedule",
    "asOf": "2026-08-10",
    "id": "FIN-acf86215",
    "subjectId": "DL-99867dbe",
    "lineItems": [
      {
        "kind": "doc-fee",
        "amountCents": 8500,
        "basis": "posted-doc-fee"
      },
      {
        "kind": "title-reg",
        "amountCents": 19000,
        "basis": "title-rail-posted-total"
      },
      {
        "kind": "sales-tax",
        "amountCents": 189750,
        "basis": "posted-rate-on-asking-value"
      }
    ],
    "amount": 217250,
    "status": "Created",
    "validation": {
      "status": "valid",
      "basis": "derivation-conforms-to-posted-menu",
      "lines": [
        {
          "kind": "doc-fee",
          "amountCents": 8500,
          "standing": "conforms",
          "anchor": "posted-doc-fee"
        },
        {
          "kind": "title-reg",
          "amountCents": 19000,
          "standing": "conforms",
          "anchor": "title-rail-posted-total"
        },
        {
          "kind": "sales-tax",
          "amountCents": 189750,
          "standing": "conforms",
          "anchor": "posted-rate-on-asking-value"
        }
      ]
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "billing-annex-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

Quote & price

dealerFees

feeSchedule.dealerFees · GET /fee-schedules/dealer-fees · gate none · sandbox · answers FeeScheduleDealerFees@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /3C4NJDBN9RT132967 (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.

the SDK — feeSchedule.dealerFees
import { feeSchedule } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await feeSchedule.dealerFees({"vin":"3C4NJDBN9RT132967"})
GET /fee-schedules/dealer-fees
curl 'https://apis.vin/fee-schedules/dealer-fees?vin=3C4NJDBN9RT132967'

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:11.497Z · HTTP 200
{
  "type": "OK",
  "answers": "FeeScheduleDealerFees@1",
  "value": {
    "vin": "3C4NJDBN9RT132967",
    "noun": "feeSchedule",
    "asOf": "2026-08-10",
    "id": "FIN-acf86215",
    "subjectId": "DL-99867dbe",
    "lineItems": [
      {
        "kind": "doc-fee",
        "amountCents": 8500,
        "basis": "posted-doc-fee"
      },
      {
        "kind": "title-reg",
        "amountCents": 19000,
        "basis": "title-rail-posted-total"
      },
      {
        "kind": "sales-tax",
        "amountCents": 189750,
        "basis": "posted-rate-on-asking-value"
      }
    ],
    "amount": 217250,
    "status": "Created",
    "dealerFees": {
      "fees": [
        {
          "kind": "doc-fee",
          "amountCents": 8500,
          "basis": "posted-doc-fee"
        },
        {
          "kind": "title-reg",
          "amountCents": 19000,
          "basis": "title-rail-posted-total"
        },
        {
          "kind": "sales-tax",
          "rateBps": 825,
          "basis": "posted-rate-on-asking-value"
        }
      ],
      "currency": "USD"
    }
  },
  "evidence": {
    "vin": "3C4NJDBN9RT132967",
    "noun": "feeSchedule",
    "asOf": "2026-08-10",
    "id": "FIN-acf86215",
    "subjectId": "DL-99867dbe",
    "lineItems": [
      {
        "kind": "doc-fee",
        "amountCents": 8500,
        "basis": "posted-doc-fee"
      },
      {
        "kind": "title-reg",
        "amountCents": 19000,
        "basis": "title-rail-posted-total"
      },
      {
        "kind": "sales-tax",
        "amountCents": 189750,
        "basis": "posted-rate-on-asking-value"
      }
    ],
    "amount": 217250,
    "status": "Created",
    "dealerFees": {
      "fees": [
        {
          "kind": "doc-fee",
          "amountCents": 8500,
          "basis": "posted-doc-fee"
        },
        {
          "kind": "title-reg",
          "amountCents": 19000,
          "basis": "title-rail-posted-total"
        },
        {
          "kind": "sales-tax",
          "rateBps": 825,
          "basis": "posted-rate-on-asking-value"
        }
      ],
      "currency": "USD"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "billing-annex-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

docFee

feeSchedule.docFee · GET /fee-schedules/doc-fee · gate key · live · answers FeeScheduleDocFee@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /3C4NJDBN9RT132967 (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 — feeSchedule.docFee
import { feeSchedule } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await feeSchedule.docFee({"vin":"3C4NJDBN9RT132967"})
GET /fee-schedules/doc-fee
curl 'https://apis.vin/fee-schedules/doc-fee?vin=3C4NJDBN9RT132967'

evFee

feeSchedule.evFee · GET /fee-schedules/ev-fee · gate key · sandbox · answers FeeScheduleEvFee@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /3C4NJDBN9RT132967 (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.

the SDK — feeSchedule.evFee
import { feeSchedule } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await feeSchedule.evFee({"vin":"3C4NJDBN9RT132967"})
GET /fee-schedules/ev-fee
curl 'https://apis.vin/fee-schedules/ev-fee?vin=3C4NJDBN9RT132967'

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:11.501Z · HTTP 200
{
  "type": "OK",
  "answers": "FeeScheduleEvFee@1",
  "value": {
    "vin": "3C4NJDBN9RT132967",
    "noun": "feeSchedule",
    "asOf": "2026-08-10",
    "id": "FIN-acf86215",
    "subjectId": "DL-99867dbe",
    "lineItems": [
      {
        "kind": "doc-fee",
        "amountCents": 8500,
        "basis": "posted-doc-fee"
      },
      {
        "kind": "title-reg",
        "amountCents": 19000,
        "basis": "title-rail-posted-total"
      },
      {
        "kind": "sales-tax",
        "amountCents": 189750,
        "basis": "posted-rate-on-asking-value"
      }
    ],
    "amount": 217250,
    "status": "Created",
    "evFee": {
      "kind": "ev-fee",
      "status": "no-ev-fee-posted",
      "postedKinds": [
        "doc-fee",
        "title-reg",
        "sales-tax"
      ],
      "basis": "the-posted-menu-carries-no-such-line"
    }
  },
  "evidence": {
    "vin": "3C4NJDBN9RT132967",
    "noun": "feeSchedule",
    "asOf": "2026-08-10",
    "id": "FIN-acf86215",
    "subjectId": "DL-99867dbe",
    "lineItems": [
      {
        "kind": "doc-fee",
        "amountCents": 8500,
        "basis": "posted-doc-fee"
      },
      {
        "kind": "title-reg",
        "amountCents": 19000,
        "basis": "title-rail-posted-total"
      },
      {
        "kind": "sales-tax",
        "amountCents": 189750,
        "basis": "posted-rate-on-asking-value"
      }
    ],
    "amount": 217250,
    "status": "Created",
    "evFee": {
      "kind": "ev-fee",
      "status": "no-ev-fee-posted",
      "postedKinds": [
        "doc-fee",
        "title-reg",
        "sales-tax"
      ],
      "basis": "the-posted-menu-carries-no-such-line"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "billing-annex-sandbox"
  },
  "events": [],
  "meter": {
    "charged": "0.00",
    "posted": false
  }
}

tireFee

feeSchedule.tireFee · GET /fee-schedules/tire-fee · gate key · sandbox · answers FeeScheduleTireFee@1

FieldTypeRequiredNotes
vinstringno

Dooraggregator.vin serves this noun on its two routes: / (the landing) · /3C4NJDBN9RT132967 (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.

the SDK — feeSchedule.tireFee
import { feeSchedule } from 'apis.vin'

// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await feeSchedule.tireFee({"vin":"3C4NJDBN9RT132967"})
GET /fee-schedules/tire-fee
curl 'https://apis.vin/fee-schedules/tire-fee?vin=3C4NJDBN9RT132967'

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:11.513Z · HTTP 200
{
  "type": "OK",
  "answers": "FeeScheduleTireFee@1",
  "value": {
    "vin": "3C4NJDBN9RT132967",
    "noun": "feeSchedule",
    "asOf": "2026-08-10",
    "id": "FIN-acf86215",
    "subjectId": "DL-99867dbe",
    "lineItems": [
      {
        "kind": "doc-fee",
        "amountCents": 8500,
        "basis": "posted-doc-fee"
      },
      {
        "kind": "title-reg",
        "amountCents": 19000,
        "basis": "title-rail-posted-total"
      },
      {
        "kind": "sales-tax",
        "amountCents": 189750,
        "basis": "posted-rate-on-asking-value"
      }
    ],
    "amount": 217250,
    "status": "Created",
    "tireFee": {
      "kind": "tire-fee",
      "status": "no-tire-fee-posted",
      "postedKinds": [
        "doc-fee",
        "title-reg",
        "sales-tax"
      ],
      "basis": "the-posted-menu-carries-no-such-line"
    }
  },
  "evidence": {
    "vin": "3C4NJDBN9RT132967",
    "noun": "feeSchedule",
    "asOf": "2026-08-10",
    "id": "FIN-acf86215",
    "subjectId": "DL-99867dbe",
    "lineItems": [
      {
        "kind": "doc-fee",
        "amountCents": 8500,
        "basis": "posted-doc-fee"
      },
      {
        "kind": "title-reg",
        "amountCents": 19000,
        "basis": "title-rail-posted-total"
      },
      {
        "kind": "sales-tax",
        "amountCents": 189750,
        "basis": "posted-rate-on-asking-value"
      }
    ],
    "amount": 217250,
    "status": "Created",
    "tireFee": {
      "kind": "tire-fee",
      "status": "no-tire-fee-posted",
      "postedKinds": [
        "doc-fee",
        "title-reg",
        "sales-tax"
      ],
      "basis": "the-posted-menu-carries-no-such-line"
    }
  },
  "provenance": {
    "simulated": true,
    "environment": "sandbox",
    "source": "billing-annex-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.

Invoice

Modeled

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

FeeSchedule · Class model


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