For payment rails

Your payments carry the agreement, in a field you already have.

On almost every rail the public package supports, the ATR hash — the unique fingerprint of the agreement’s Agentic Transaction Record (ATR) — rides in a field the payment already has: a nonce, a memo, a note, a salt, an invoice field. Where a rail has none, the package says so. Settlement stays on your rail. Source: lcp docs: rails⁠ (opens in a new tab)

Sources (1)

lcp docs: rails⁠ (opens in a new tab)

Where it rides

A field the rail already has, and no new contract.

Each rail below, with the field its payments carry the ATR hash in, or, where a rail has none, what carries it instead. No pairing in the package adds a contract for LCP, and nothing about the rail changes. Source: lcp docs: rails⁠ (opens in a new tab) · Source: lcp docs: binding⁠ (opens in a new tab)

RailWhere the ATR hash rides
EVM chainsthe signed authorization’s nonce
TempoMPP’s attribution memo
Solanaone Memo instruction
Stellarthe seller’s muxed address
XRP Ledgerthe Payment’s InvoiceID
Hederathe signed transaction body’s memo
Algorandthe asset transfer’s note
Aptosthe challenge only
Cardanoa CIP-20 message
Casperthe CEP-3009 authorization’s nonce
Concordiumthe transfer’s memo
NEARthe NEP-141 transfer’s memo
Polkadot Asset Huba remark batched with the transfer
Starknetthe outside execution’s nonce
Suian unused Pure input
Tronthe TRC-20 transfer’s memo
TONthe Jetton transfer’s text comment
Stacksthe SIP-010 transfer’s memo
Lightningthe BOLT11 invoice
Card networksthe agent’s signature, the mandate, or the processor reference
Stripethe PaymentIntent’s metadata

See every rail, field by field

Sources (2)

lcp docs: rails⁠ (opens in a new tab) · lcp docs: binding⁠ (opens in a new tab)

What it proves

What makes a payment a proof of the agreement.

Three properties decide how much a payment on a rail shows, and every pairing in the package states all three about itself. Source: lcp docs: binding⁠ (opens in a new tab)

The payer signs it

The buyer’s own signature covers the ATR hash, or a value derived from it, so the payer cannot later say the payment was for something else. Source: lcp docs: binding⁠ (opens in a new tab)

The ledger keeps it

Settlement leaves a public record that commits to the ATR hash: anyone can check an ATR against it. Source: lcp docs: binding⁠ (opens in a new tab)

Anyone can read it back

Where the rail keeps all 32 bytes, the ATR hash can be read from the settled transaction alone, without asking either party. Source: lcp docs: recovering H from the chain alone⁠ (opens in a new tab) · Source: LCP §8.3.8⁠ (opens in a new tab)

Where a rail’s payment carries nothing public, the seller can advertise an agreement URL: the buyer first pays it on a pairing that is a public proof, then makes the full payment. Source: lcp docs: where the payment is not a public proof⁠ (opens in a new tab) · Source: lcp docs: the agreement URL⁠ (opens in a new tab)

Sources (5)

lcp docs: binding⁠ (opens in a new tab) · lcp docs: recovering H from the chain alone⁠ (opens in a new tab) · LCP §8.3.8⁠ (opens in a new tab) · lcp docs: where the payment is not a public proof⁠ (opens in a new tab) · lcp docs: the agreement URL⁠ (opens in a new tab)

Non-custodial

Nothing about your rail changes.

Integra orchestrates. It never broadcasts a transaction and never takes custody of funds. Settlement stays entirely on your rail.

The package itself holds no key, signs nothing, moves no funds and calls no network on its own. It reads a payment’s settlement through a reader you supply, with your endpoint and your credentials. A reader that fails never makes a payment read as failed. Source: @integraledger/lcp: what it guarantees⁠ (opens in a new tab) · Source: lcp docs: reading settlement⁠ (opens in a new tab)

Sources (2)

@integraledger/lcp: what it guarantees⁠ (opens in a new tab) · lcp docs: reading settlement⁠ (opens in a new tab)

Ways in

Build it once, for your whole network.

Publish your rail’s profile

The standard invites chain operators and protocol stewards to publish authoritative binding profiles in their own documentation. The package’s own profiles, one per binding, show the form: the rail’s rules, clause by clause. Source: LCP §8⁠ (opens in a new tab) · Source: @integraledger/lcp: LCP profiles⁠ (opens in a new tab)

Test against the vectors

The package ships its test vectors for every pairing: the placed challenge, what the payer signs, the ATR hash read back, and the settlement read. An implementation that passes them agrees with it byte for byte. Source: @integraledger/lcp: vectors and conformance⁠ (opens in a new tab)

Run it on your test network

The hosted appliance is free on test networks, with test-network USDC, so your developers can see the agreement ride your rail before anything is in production.

The protocols that pay on them

Sources (3)

LCP §8⁠ (opens in a new tab) · @integraledger/lcp: LCP profiles⁠ (opens in a new tab) · @integraledger/lcp: vectors and conformance⁠ (opens in a new tab)

Ready to see your own agreements proved?

Tell us what you sell, buy or carry, and we will show you where the agreement rides in it.

The hosted appliance is free on test networks, with test-network USDC.

Talk to us