# ACP · Integra

> The checkout session’s id is the ATR hash, with the link to the ATR in the session’s metadata.

URL: https://integraledger.com/protocols/acp

Protocol

## ACP

Agentic Commerce Protocol

The checkout session’s id is the ATR hash, with the link to the ATR in the session’s metadata. [Source: lcp docs: agentic checkouts⁠ (opens in a new tab)](https://github.com/IntegraLedger/integra-protocol/blob/66274bf/docs/guides/checkouts.md)

ACP, the Agentic Commerce Protocol, is maintained by OpenAI and Stripe. [Source: ACP repository⁠ (opens in a new tab)](https://github.com/agentic-commerce-protocol/agentic-commerce-protocol) Integra is not affiliated; we read their published interfaces.

**Sources (1)**

[lcp docs: agentic checkouts⁠ (opens in a new tab)](https://github.com/IntegraLedger/integra-protocol/blob/66274bf/docs/guides/checkouts.md)

[The protocol’s own site⁠ (opens in a new tab)](https://www.agenticcommerce.dev) [The standard’s illustration of this protocol (LCP §C.2)⁠ (opens in a new tab)](https://github.com/legal-context-protocol/legal-context-protocol/blob/c8df26d/spec/legal-context-protocol-v1.md#c2-acp-agentic-commerce-protocol)

### What it is

In the Agentic Commerce Protocol, the seller creates a checkout session and the buyer’s agent completes it with a payment handler; a payment service provider moves the money. [Source: lcp docs: agentic checkouts⁠ (opens in a new tab)](https://github.com/IntegraLedger/integra-protocol/blob/66274bf/docs/guides/checkouts.md)

**Sources (1)**

[lcp docs: agentic checkouts⁠ (opens in a new tab)](https://github.com/IntegraLedger/integra-protocol/blob/66274bf/docs/guides/checkouts.md)

### Where the ATR hash rides

The checkout session is named by the ATR hash, with a link to the ATR beside it.

#### The standard

The package makes the ATR hash the session’s `id`, and puts the link beside it in the session’s `metadata.legal_context`. [Source: lcp docs: agentic checkouts⁠ (opens in a new tab)](https://github.com/IntegraLedger/integra-protocol/blob/66274bf/docs/guides/checkouts.md)

Where the payment handler requires `delegate_payment`, the allowance in the agent’s signed request names the session, and so the ATR hash; where it does not, nothing the buyer signs names it. [Source: lcp docs: agentic checkouts⁠ (opens in a new tab)](https://github.com/IntegraLedger/integra-protocol/blob/66274bf/docs/guides/checkouts.md)

A new top-level field would fail ACP’s released schema, whose checkout session admits no undeclared members; the session’s open `metadata` is the conformant place for the reference. [Source: LCP §C.2⁠ (opens in a new tab)](https://github.com/legal-context-protocol/legal-context-protocol/blob/c8df26d/spec/legal-context-protocol-v1.md#c2-acp-agentic-commerce-protocol)

### What a payment through it proves

Each pairing’s record states what a payment through it shows, and what it does not, in the package’s own words. These are read from the package when the site is built. [Source: lcp docs: pairings reference⁠ (opens in a new tab)](https://github.com/IntegraLedger/integra-protocol/blob/66274bf/docs/reference/pairings.md)

Of these 2 pairings, 0 have the buyer’s signature cover the ATR hash, 0 leave a public proof of it, and 0 let anyone read it back from the chain alone. [Source: lcp docs: pairings reference⁠ (opens in a new tab)](https://github.com/IntegraLedger/integra-protocol/blob/66274bf/docs/reference/pairings.md)

Switch to Technical to see each pairing, and the sentence its record states about what a payment through it proves.

**Sources (1)**

[lcp docs: pairings reference⁠ (opens in a new tab)](https://github.com/IntegraLedger/integra-protocol/blob/66274bf/docs/reference/pairings.md)

#### The standard

- **`acp/checkout/delegated` Native Field Buyer signs H: no H on chain: no Public proof: no Recoverable from chain: no**

  Pattern: [Native Field (LCP §8.3.1)⁠ (opens in a new tab)](https://github.com/legal-context-protocol/legal-context-protocol/blob/c8df26d/spec/legal-context-protocol-v1.md#831-native-field)

  What a payment through it proves: Before this payment, the buyer signed and paid an agreement transaction carrying this ATR's hash on \<network>, recorded in \<transaction>. The checkout session this payment completed has this ATR's hash as its id, and its responses carried the ATR's link in metadata. The payment handler required delegate_payment, so ACP has the buyer's agent obtain a vault token whose allowance names this session as checkout_session_id, in a request the agent signs (a MUST in one section of ACP and RECOMMENDED in another) and the PSP SHOULD verify. The seller neither saw nor verified that allowance or its signature, and ACP does not require the PSP to hold the token to that session. The seller tied the payment to the hash in its report. This does not show that amount, payee or timing match the ATR's content.

  LCP profile: [acp/checkout/session-id⁠ (opens in a new tab)](https://github.com/IntegraLedger/integra-protocol/blob/66274bf/lcp/profiles/acp-checkout-session-id.md)
- **`acp/checkout/undelegated` HTTP-layer advisory Buyer signs H: no H on chain: no Public proof: no Recoverable from chain: no**

  Pattern: [HTTP-layer advisory (LCP §8.3.7)⁠ (opens in a new tab)](https://github.com/legal-context-protocol/legal-context-protocol/blob/c8df26d/spec/legal-context-protocol-v1.md#837-http-layer-advisory-reference)

  What a payment through it proves: Before this payment, the buyer signed and paid an agreement transaction carrying this ATR's hash on \<network>, recorded in \<transaction>. The checkout session this payment completed has this ATR's hash as its id, and its responses carried the ATR's link in metadata. The payment handler did not require delegate_payment, so nothing the buyer signed for the payment names the hash. The seller tied the payment to the hash in its report.

  LCP profile: [acp/checkout/session-id⁠ (opens in a new tab)](https://github.com/IntegraLedger/integra-protocol/blob/66274bf/lcp/profiles/acp-checkout-session-id.md)

Where a sentence names `<network>` and `<transaction>`, the pairing’s record fills them in: they name the agreement payment the buyer made first. [Source: lcp docs: pairings reference⁠ (opens in a new tab)](https://github.com/IntegraLedger/integra-protocol/blob/66274bf/docs/reference/pairings.md) · [Source: lcp docs: the agreement URL⁠ (opens in a new tab)](https://github.com/IntegraLedger/integra-protocol/blob/66274bf/docs/concepts/buyer-gate.md#the-agreement-url)

### The rails it settles on

A checkout through this protocol is paid by the provider the checkout names, so it lists no rail of its own.
