receipt
The receipt noun — identity, lifecycle, events, and every capability as an anchored section: 3 capabilities, 0 live, 3 sandbox, 0 declared.
receipt is one of the estate's 317 automotive nouns — a job a car needs done. It carries 3 capabilities: 0 live, 3 sandbox, 0 declared · doors receipts.vin · aggregator.vin.
Identity
| Noun | receipt |
| Pillar | Commerce (facets: 3 commerce) |
| Capabilities | 3 — 0 live · 3 sandbox · 0 declared |
| Entities | Receipt |
| Doors | aggregator.vin · receipts.vin |
| SDK | Vin.receipt.* from apis.vin |
| Address | /catalog/receipt#{action} — the anchor IS the wire name minus receipt. |
Lifecycle
Receipt — ReceiptStatus: 2 states, 1 transitions — issued · verified. Each transition is a past-tense event on the record.
Events
The vocabulary this noun can append to the record — 2 past-tense, versioned event types, each linked to the capability that emits it:
Receipt.issued@1— emitted byissueReceipt.verified@1— emitted byverify
Discover & read
get
receipt.get · GET /receipts/get · gate key · sandbox · answers Receipt@1
No input — this capability takes no request body.
Door — receipts.vin serves this noun on its two routes: / (the landing) · /1C4RJFJG0KC638995 (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.
import { receipt } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await receipt.get()curl 'https://apis.vin/receipts/get'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.
{
"type": "OK",
"answers": "Receipt@1",
"value": {
"id": "id-25133444",
"intent": "intent-b2f4ddcf",
"event": "object-adbe8aab",
"amount": {
"amount": "2636.73",
"currency": "USD"
},
"asset": "asset-36693f6f",
"payTo": "payTo-b618fb4c",
"settledVia": "settledVia-d3164896",
"authority": "authority-a14886ca",
"subject": "subject-a3b2f5eb",
"issuedAt": "2026-11-26T00:00:00.000Z",
"signature": "signature-aa313af9",
"status": "state-9554bd93"
},
"evidence": {
"id": "id-25133444",
"intent": "intent-b2f4ddcf",
"event": "object-adbe8aab",
"amount": {
"amount": "2636.73",
"currency": "USD"
},
"asset": "asset-36693f6f",
"payTo": "payTo-b618fb4c",
"settledVia": "settledVia-d3164896",
"authority": "authority-a14886ca",
"subject": "subject-a3b2f5eb",
"issuedAt": "2026-11-26T00:00:00.000Z",
"signature": "signature-aa313af9",
"status": "state-9554bd93"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "receipt-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}verify
receipt.verify · GET /receipts/verify · gate none · sandbox · answers ReceiptVerification@1
No input — this capability takes no request body.
Door — receipts.vin serves this noun on its two routes: / (the landing) · /1C4RJFJG0KC638995 (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.
Emits — Receipt.verified@1.
import { receipt } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await receipt.verify()curl 'https://apis.vin/receipts/verify'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.
{
"type": "OK",
"answers": "ReceiptVerification@1",
"value": {
"id": "id-19f54427",
"intent": "intent-1ecf6fd0",
"event": "object-67677246",
"amount": {
"amount": "779.58",
"currency": "USD"
},
"asset": "asset-0960f87e",
"payTo": "payTo-2b8c4d05",
"settledVia": "settledVia-546fed79",
"authority": "authority-f665a4f3",
"subject": "subject-dcc1a83e",
"issuedAt": "2026-12-26T00:00:00.000Z",
"signature": "signature-c38df040",
"status": "state-76edcbb4"
},
"evidence": {
"id": "id-19f54427",
"intent": "intent-1ecf6fd0",
"event": "object-67677246",
"amount": {
"amount": "779.58",
"currency": "USD"
},
"asset": "asset-0960f87e",
"payTo": "payTo-2b8c4d05",
"settledVia": "settledVia-546fed79",
"authority": "authority-f665a4f3",
"subject": "subject-dcc1a83e",
"issuedAt": "2026-12-26T00:00:00.000Z",
"signature": "signature-c38df040",
"status": "state-76edcbb4"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "receipt-sandbox"
},
"events": [],
"meter": {
"charged": "0.00",
"posted": false
}
}Fulfill & operate
issue
receipt.issue · POST /receipts/issue · gate key · sandbox · answers ReceiptIssue@1
No input — this capability takes no request body.
Door — aggregator.vin serves this noun on its two routes: / (the landing) · /1C4RJFJG0KC638995 (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.
Emits — Receipt.issued@1.
import { receipt } from 'apis.vin'
// the gate law is in the type system: Answer<T> = Ok | Empty | Blocked | Offer
const answer = await receipt.issue()curl -X POST https://apis.vin/receipts/issue \
-H 'content-type: application/json' \
-d '{}'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.
{
"type": "OK",
"answers": "ReceiptIssue@1",
"value": {
"receipt": "receipt_db2f2f48",
"subject": "agent_vinsandbox0001",
"capability": "vehicle.decode",
"amount": {
"amount": "0",
"currency": "USD"
},
"status": "issued",
"issuedAt": "2026-08-10T00:00:00.000Z"
},
"evidence": {
"receipt": "receipt_db2f2f48",
"subject": "agent_vinsandbox0001",
"capability": "vehicle.decode",
"amount": {
"amount": "0",
"currency": "USD"
},
"status": "issued",
"issuedAt": "2026-08-10T00:00:00.000Z"
},
"provenance": {
"simulated": true,
"environment": "sandbox",
"source": "governance-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.
Receipt
Schema
| Property | Type |
|---|---|
id | string |
intent | string |
event | object |
amount | money |
asset | string |
payTo | string |
settledVia | string |
authority | string |
subject | string |
issuedAt | timestamp |
signature | string |
status | state |
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.
Receipt · Class model
Receipt · 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.