For finance teams and agent developers

Financial recordkeeping infrastructure for AI agents.

Know what every dollar your agents spend or earn was for, and get it into your books.

Luca connects an agent’s declared intent with the payment outcome. Each payment becomes one signed record, tied to the mandate that authorized it, on any payment rail, and posted to your ERP with drill-back to the underlying evidence.

Request sandbox access How it works
5 railsMPP, x402, Ramp, AP2, Mastercard
4 ERPsRillet, NetSuite, Xero, QuickBooks
1 recordper payment, signed at creation
See this payment asTap a party to switch views
LABEL · AGREED BY BOTH SIDESlbl_7f3a9e…c21d
Viewing as the buyer (Northwind Analytics)
Paid0.40 USDC = $0.40 · 14:02:11 UTC
Railx402 · Base (eip155:8453) · tx 0x9b2e…41f7
PartiesNorthwind Analytics, Inc. (US) → Veridian Data Ltd (IE)
Agentresearch-agent-04 · v3 · policy 7c2e…
MandateAP2 open → closed mandate · check passed
ProductDA-02 · Data access / API call
TaxNo US tax · seller charges IE VAT if due
GL account6420 Data and subscriptions · CC-Research
Taxonomyus-gaap:OtherCostAndExpenseOperating
LABEL · AGREED BY BOTH SIDESlbl_7f3a9e…c21d
Viewing as the seller (Veridian Data)
Paid0.40 USDC = $0.40 · 14:02:11 UTC
Railx402 · Base (eip155:8453) · tx 0x9b2e…41f7
PartiesNorthwind Analytics, Inc. (US) → Veridian Data Ltd (IE)
Agentnot shared
Mandatenot shared
ProductDA-02 · Data access / API call
TaxSupply of digital service to US business
GL account4100 Usage revenue (seller books)
Taxonomyifrs-full:Revenue (seller books)
LABEL · AGREED BY BOTH SIDESlbl_7f3a9e…c21d
Viewing as the buyer's auditor
Paid0.40 USDC = $0.40 · 14:02:11 UTC
Railx402 · Base (eip155:8453) · tx 0x9b2e…41f7
PartiesNorthwind Analytics, Inc. (US) → Veridian Data Ltd (IE)
Agentresearch-agent-04 · v3 · policy 7c2e…
MandateAP2 open → closed mandate · signatures verified · check passed
ProductDA-02 · Data access / API call
TaxNo US tax · seller charges IE VAT if due
GL account6420 Data and subscriptions · CC-Research
Taxonomyus-gaap:OtherCostAndExpenseOperating
LABEL · AGREED BY BOTH SIDESlbl_7f3a9e…c21d
Viewing as the tax authority (US)
Paid0.40 USDC = $0.40 · 14:02:11 UTC
Railx402 · Base (eip155:8453) · tx 0x9b2e…41f7
PartiesNorthwind Analytics, Inc. (US) → Veridian Data Ltd (IE)
Agentnot shared
Mandatenot shared
ProductDA-02 · Data access / API call
TaxCross-border digital service · buyer EIN 84-…
GL accountnot shared
Taxonomynot shared
Sealed at creation · mandate check passedEd25519 · RFC 3161 · 2026-10-02T14:02:11Z

One payment, four views. Each party sees only the fields the record's owner has shared with it. Illustrative example with fictional companies.

How it works

From any agent payment rail to your ERP, through one independent ledger.

Your agent records what it intends to pay, the rail reports what settled, and Luca joins the two. It gives every payment its accounting meaning and seals it, then posts to your ERP and shares the record with the people who need it.

Agent intentbefore it pays
AGTrecord_intentwho it works for, mandate, purpose, amount
Payment railssettlement · read-only
MPPStripe MPPcharges, sessions, subscriptions
402x402stablecoin per request
RARamp Agent Cardssingle-use virtual cards
AP2Google AP2signed mandates
MCMastercard Agent Payverified intent
Luca
independent of every rail
  1. 1Capture the evidencesettlement proof, amount, time, network
  2. 2Check the mandateagent, approver, limits, merchants, window
  3. 3Label itentity, currency, tax, GL account, cost center, reporting tag
  4. 4Seal itsigned and timestamped, so any change is detectable
Out of Luca One sealed record per payment aggregated into balanced journal entries only at posting, so every entry can be traced back
Your ERPbalanced journal entries
Rillet
Posts journal entriesJournal entries API
NetSuite
Posts journal entriesREST journal entry API
Xero
Posts journal entriesManual journals API
QuickBooks
Posts journal entriesJournal entry API
Drill-back on every entryEvery journal entry links back to the payments, mandates and signatures behind it.
Also shared with
Your auditor The seller's agent Tax authority XBRL GL · SAF-T
Why Luca

Four things a sync from your payment provider to your ERP cannot do.

Connectors copy a transaction into a ledger. Agent payments need more: evidence of who allowed the agent to spend, agreement with the other side, one ledger that no payment provider owns, and records that hold up at millions of payments a month.

AP2 MANDATE Cap$2,000 / month Merchants3 approved WindowOct 2026 ✓ Payment within limits

Each entry carries its approval

The agent's signed mandate is stored with every payment, and the payment is checked against it: who approved, the limit, the merchants allowed and the time window.

Buyersigned ✓
lbl_7f3a…
Sellersigned ✓

Both sides book it the same way

The seller's agent fetches the same label, confirms it and signs it, so buyer and seller agree on what was bought and how it is taxed.

MPPx402RampAP2MC
One record format

Independent of every rail

Luca is not owned by a payment provider or card issuer, so card, stablecoin and mandate payments land in one ledger, booked the same way, whichever rail moved the money.

1,204,118 records → 1 journal entry

Built for millions of small payments

One record per payment, never lumped together, so costs can be apportioned and every payment tested. A correction is a new record, so no history is lost.

Example

A $0.40 data purchase, from payment to trial balance.

A research agent at a US company pays a data provider in Ireland 0.40 USDC over x402 for one dataset query. Nobody on either side touches it.

  1. 14:02:11 · capturedRead from x402tx 0x9b2e…41f7 · Base · 0.40 USDC · research-agent-04
  2. mandate checkedWithin its limitsAP2 · cap $2,000/month · merchant approved · inside window
  3. labeled and sealedGiven its meaningData access · GL 6420 · CC-Research · $0.40 · signed 14:02:11Z
  4. posted and agreedIn your ERP, signed by bothJE-2026-09-0412 · seller's agent confirmed the label

Built for both sides of every machine payment.

If your agents buy

Close agent spend in under a day.

  • Thousands of agent payments become a few balanced journal entries in Rillet, NetSuite, Xero or QuickBooks.
  • Every payment tied to the agent that made it, its owner, cost center and the exact spending policy in force.
  • Each payment posts Dr expense, Cr supplier, then clears the supplier to cash when it settles.
  • One record per voucher, never lumped together, so costs can be apportioned to projects and products.
  • Payment system totals reconciled to your ERP every month. Any difference is traced to the payments behind it and fixed with new records.
If agents pay you

Book millions of sub-dollar receipts correctly.

  • Each payment received becomes a record that posts Dr customer, Cr revenue, then clears the customer to cash when it settles.
  • Every receipt matched to the customer and to what was paid for, taken from the payment request.
  • Each record carries the recognition treatment you set per product, so your ERP's revenue engine can schedule it.
  • Your buyer books the same payment as Dr expense, Cr supplier, from the same sealed record.
  • Output tax by buyer location, and stablecoin holdings, conversions and gains recorded for your accountant.
Month-end close

Your team spends its time on the few payments that need judgment.

Luca maps most payments on its own. The rest are grouped by cause, such as an unknown wallet, so one decision clears a whole group and becomes a rule for next time. A sealed record is never changed: a fix is a new sealed record, and posted entries are reversed and re-posted.

ORIGINAL · SEALED 2 SEPGL 6420 · tax: standardPosted in JE-0412
CORRECTION · SEALED 18 SEPtax: standard → reverse chargeReason, who proposed, who approved
LEDGERReversal of JE-0412 + new entryNothing edited in the ERP
COUNTERPARTYSeller's agent re-signsBoth books stay in agreement
September close
OpenSoft closeHard close
  • ✓Rail totals match records: 48,112 payments
  • ✓Exceptions above $1,000 cleared, two approvers each
  • ✓ERP balances match rail totals: $0.00 difference
  • •1 batch retrying before hard close
Exceptions this period
Unknown wallet 0x51ac…e09d · 400 paymentsone decision · rule added
New product description · 1,212 paymentsmapped to AI inference
Supplier tax position · 38 paymentsawaiting second approver
Period seal 2026-09 · 4f1c…9ab2 · timestamped at hard close
Audit-ready

Give your auditor drill-back from any balance to every machine payment behind it.

Auditors sample a few dozen invoices because checking thousands by hand costs too much. With every agent payment signed and tied to its mandate, your auditor can test all of them, through time-limited, read-only access you grant.

Accounts payable control today
Purchase orderReceiptInvoice
Matched by hand, tested by sample
Agent payment control in Luca
Signed mandateSettlement proofSealed record
Checked by machine on every payment: valid signer, within amount, merchant and time limits, settled as recorded
Drill back from any balance
  1. 1Trial balance6420 Data and subscriptions · $18,240.55
  2. 2Journal entryJE-2026-09-0412 · batch b_31c0 · aggregation rule v4
  3. 3Batch48,112 records · signed root over every record
  4. 4Payment record and its corrections0.40 USDC · Base · sealed
  5. 5MandateAP2 open mandate · up to $2,000 a month · approved merchants
  6. 6SignaturesMandate, record and period seals verified
XBRL and reporting taxonomies

Every payment carries its XBRL tag from the moment it is recorded.

XBRL gave companies, auditors and regulators one language for financial reporting through the US GAAP and IFRS taxonomies. Luca applies those taxonomies to each agent payment as it happens, so every record that reaches your ERP, your auditor or the other side's agent already carries its reporting meaning.

US GAAP Financial Reporting TaxonomyIFRS Accounting TaxonomyXBRL GLSAF-TISO 21378AICPA Audit Data Standards
XBRL GL · one $0.40 paymenttagged at capture
<gl-cor:entryDetail>
  gl-cor:accountMainID   6420
  gl-cor:amount          0.40
  gl-muc:amountCurrency  USD
  gl-cor:postingDate     2026-10-02
  gl-cor:documentReference lbl_7f3a9e…c21d
  gl-taf:originatingDocumentType x402 receipt
  gl-srcd:summaryReportingElement us-gaap:OtherCostAndExpenseOperating
  <!-- machine payment profile -->
  mp:agentID             research-agent-04
  mp:mandateReference    AP2 · cap $2,000/month
  mp:paymentRail         x402 · Base
  mp:settlementEvidence  tx 0x9b2e…41f7
</gl-cor:entryDetail>
01Tagged as it happensEach payment gets its US GAAP or IFRS taxonomy element, entity and currency the moment Luca records it, using the same taxonomies companies already file with.
02Shared as a labelThe tag travels with the label, so your ERP, your auditor, the seller's agent and, where you choose, a tax authority all read the same meaning.
03Ready when reporting is dueRecords export as XBRL GL, SAF-T, ISO 21378 and AICPA Audit Data Standards, already tagged, for financial statements, audit files and e-reporting.
Contributing to the standard A machine payment profile for XBRL GL We are building on XBRL GL with a small set of extension elements for agent payments, so each record stays readable by the audit, reporting and filing tools that already support XBRL. We plan to publish the profile openly and bring it to XBRL International as a proposed standard once customers are using it.
Extension elements in the profile
agentmandatepayment railsettlement evidenceshared label
For agents and developers

An agent adds two calls to the way it already pays, and its company gets the accounting record.

Before paying, the agent calls record_intent with who it works for, the mandate, the purpose and the amount. Luca checks that against the mandate and budget and flags anything outside them. The payment goes ahead either way, because Luca never sits in the payment path. After paying, record_settlement adds what actually settled, or the payment network's own feed fills it in. Luca joins the two halves, seals the record and posts it to the ERP.

Luca runs as an MCP server, an A2A agent and a REST API. Other agents can read a label with get_label and pay for it per call over x402 or MPP. The record's owner decides who sees which fields and for how long, and every read is logged.

record_intent record_settlement get_label confirm_label propose_change verify_record
research-agent-04luca · record_intent
record_intent({
  "principal": "Northwind Analytics, Inc.",
  "mandate": "MND-0042 · market data",
  "purpose": "Dataset query for Q3 sector report",
  "counterparty": "data provider, Ireland",
  "amount": "0.40 USDC"
})

← { "intent_token": "int_01J9…7QK",
    "mandate_check": "within budget · 61% used" }

  … agent pays 0.40 USDC over x402 …
research-agent-04luca · record_settlement
record_settlement({
  "intent_token": "int_01J9…7QK",
  "payment_reference": "0x9b2e…41f7:0",
  "network": "eip155:8453"
})

← { "label_id": "lbl_7f3a9e…c21d",
    "entry": "Dr 6130 Data services / Cr 1120 USDC",
    "seal": "verified",
    "state": "POSTED" }
Global

Built for groups that operate across borders.

Each payment lands in the right legal entity and currency, translated at the moment it happened under ASC 830 and IAS 21, with intercompany payments matched for elimination. Records carry US GAAP or IFRS tags and export to XBRL GL, SAF-T, ISO 21378 and AICPA Audit Data Standards.

United StatesUSD · US GAAP · state sales tax
CanadaCAD · IFRS and ASPE · GST/HST
United KingdomGBP · IFRS and FRS 102 · VAT
European UnionEUR · IFRS · VAT
AustraliaAUD · AASB · GST
ChinaCNY · CAS · VAT
Middle EastAED, SAR · IFRS · VAT
Asia-PacificSGD, JPY, HKD · IFRS and local GAAP
Security and controls

Read-only by design. Luca reads your payment records and has no access to move money.

Read-only connectionsLuca never holds funds, issues cards or controls wallets.
Keys in hardwareSigning keys held in hardware security modules.
Encrypted throughoutTLS 1.3 in transit, AES-256 at rest.
Separation of dutiesRules and corrections need a second approver; every action is logged.
Field-level sharingYou choose who sees which fields and for how long. We never sell or pool data.
SOX-ready, SOC reports plannedVersioned rules, approvals and complete logs; SOC 1 and SOC 2 planned in our first year.
Getting started

Start in a sandbox the same day.

Nothing in production to connect until you are ready. Try Luca with sample data first, then with your own test payments.

  1. Day 1Explore with sample dataA private sandbox with sample agents, payments across every rail and a connected ERP sandbox.
  2. NextConnect your test railsx402 on Base Sepolia, Stripe in test mode and your own ERP sandbox, mapped to your chart of accounts.
  3. When readySwitch to productionRead-only production connections. Luca posts to your live ERP once you are happy with the numbers.
Request free sandbox access
Team

Accounting and AI engineering, from the people building it.

Kunle Odebunmi, FCA

A chartered accountant, former CFO of a Series A company, and three-time founder, he built Arnergy and AllBase Energy and participated in Techstars Detroit, powered by J.P. Morgan. His conviction that accounting will increasingly be run by machines comes from understanding both the financial reporting process and what standards such as XBRL made possible: structured financial information that software can interpret, exchange, and process.

LinkedIn

Emmanuel Oyekanlu, PhD

AI engineer and enterprise architect with 18 years across telecom network engineering, applied research and AI and data architecture. He works on agentic AI, GPU orchestration and data engineering at scale, has built AI systems at CohnReznick, and holds a US patent with more than 33 peer-reviewed publications.

LinkedIn
Backed by
Vastly Valuable VenturesAlumni Angels Allianceand angel investors
Questions

What finance teams ask first.

Anything else, ask us when you request access.

What is Luca?

Luca is financial recordkeeping infrastructure for AI agents. It connects what an agent said it would pay for with what was actually paid, and turns each payment into one signed record tied to the mandate that authorized it. Luca reads payments from Stripe MPP, x402, Ramp Agent Cards, Google AP2 and Mastercard Agent Pay and posts journal entries to Rillet, NetSuite, Xero or QuickBooks. The buyer and the seller sign the same label, so both sets of books agree. Luca is independent of every payment rail and has read-only access.

Who is Luca for?

Finance teams at companies whose AI agents buy or sell, and the developers who build those agents. Finance teams get records they can close the month on and hand to their auditors. Developers add two calls to the way their agent already pays.

How does an AI agent record a payment in Luca?

Before paying, the agent calls record_intent with who it works for, the mandate, the purpose and the amount. After paying, it calls record_settlement, or the payment network’s own feed fills in the result. Luca joins the two, checks them against the mandate and budget, seals the record and posts it to the ERP. Luca runs as an MCP server, an A2A agent and a REST API, and it never sits in the payment path.

Does Luca hold or move money?

No. Luca reads payment records through read-only connections and writes accounting entries. It never holds funds, issues cards or controls wallets.

Why not use the accounting tools from Stripe or Ramp?

Each provider sees only its own payments. Luca is independent of all of them, so payments across Stripe MPP, x402, Ramp, AP2 and Mastercard land in one ledger, booked the same way, and no payment provider controls your accounting records.

Can we try it without connecting production systems?

Yes. Every customer starts in a private sandbox with sample data, then connects test rails and an ERP sandbox. Production connections come last.

What if the other side of a payment does not use Luca?

Your books work the same. Labels are matched and co-signed only when both sides take part; otherwise your record stands on its own evidence.

Who can see our payment data?

Only you and the parties you grant access to, such as your auditor, field by field and for a set time. Every read is logged.

How are mistakes fixed if records are sealed?

A correction is a new sealed record linked to the original. Posted entries are reversed and re-posted, so the full history stays provable.

Do we need to change our ERP?

No. Luca posts summarized journal entries into Rillet, NetSuite, Xero or QuickBooks, with a link from each entry back to every payment behind it.

Which countries do you support?

Companies in the United States, Canada, the United Kingdom, the European Union, Australia, China, the Middle East and Asia-Pacific, in their own currencies and reporting standards.

Request sandbox access

See your own agent payments in Luca.

Tell us about your company and we will set up a private sandbox and walk your team through it. We are onboarding a small number of companies now and reply within two working days.

By submitting you agree to our privacy policy.