Docs · Controls
Compliance export
LiveUpdated
Agents. Written for people who build agents, the hosts they run in, and the people and companies the agents pay for.
An export is what leaves Enruta when somebody outside it needs proof: the auditor at year end, an issuer asking for the material behind a disputed payment, a regulator asking who authorized an agent. It contains the records, their bundles, the consents and the verifier, and nothing in it depends on Enruta being online.
Request one
POST /v0/exports Authorization: Bearer enruta_dev_… (or an auditor key)
{
"from": "2026-09-01", "to": "2026-09-30",
"principal_login_id": "halvern/dana.reyes@halvernrobotics.com", // optional: one person's records
"kinds": "all", // optional: or ["payment", "reversal", "consent_record"]
"consents": true // optional: include the sealed consent records
}
→ 202 { "id": "exp_01M2H4W7Q2T9K5N3B8D1H6XRS" }
GET /v0/exports/exp_01M2H4W7Q2T9K5N3B8D1H6XRS → { "state": "ready", "download_url": "…" }
GET /v0/exports/exp_01M2H4W7Q2T9K5N3B8D1H6XRS/download → application/zipWithout the three optional fields the export is exactly the v0 export: the payment records of the period. enruta records export --from --to --out does the same from the terminal, and the export panel on /records in the console offers the same options.
What is in the zip
| Path | Contents |
|---|---|
rec_….json, rec_….bundle.json | Every payment record in range with its bundle |
linked/rec_….json, linked/rec_….bundle.json | Every linked record in range: reversals, dispute packets and outcomes, settlement records, reconciliation lines and reports, attestations, recurrences, pauses |
consents/cns_….json | The sealed consent records, when consents: true |
checkpoints/<date>.json | The signed daily roots the records are included in |
enruta-verify.mjs, evidence-record.schema.json | The verifier and the schema, the versions that sealed these records |
README.md | The layout, and the verify command |
npx enruta-verify ./export-2026-09/
# 47 records: 41 payment, 3 reversal, 1 settlement_record, 1 reconciliation_line, 1 reconciliation_report
# chain ok #1 → #47, 2 checkpoints, 0 gaps
# PASSRetention
Records are kept for the plan’s retention period: 13 months on Free, 540 days on Developer and Scale, 24 months on Vendor and Enterprise. Contracts state the minimum a paid plan keeps: 540 days for card rails, the longest dispute window, and 730 days for ACH consent records. Every plan exports on expiry, and a record you hold keeps verifying after you leave.
Two requests it answers
- An issuer’s information request. For the $168.40 payment of 2026-09-09, the export of that day, filtered to the approver’s login id, contains the consent, the mandate, the record and the bundle; the issuer runs the verifier. The card-rail retention keeps that record until at least March 2028.
- A revocation. A person revokes an agent’s consent on 2027-02-15; the export shows the consent record, the revocation record chained to it, and that every mandate after it was denied with
consent_revoked. For a consumer,institution_notified_atmarks the moment the institution was told.