# Stripe · Integra

> Through Stripe, MPP’s challenge carries the ATR hash into the PaymentIntent’s metadata.

URL: https://integraledger.com/rails/stripe

Payment rail

## Stripe

Through Stripe, MPP’s challenge carries the ATR hash into the PaymentIntent’s metadata. [Source: lcp docs: MPP⁠ (opens in a new tab)](https://github.com/IntegraLedger/integra-protocol/blob/66274bf/docs/guides/mpp.md)

**Sources (1)**

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

### Where the ATR hash rides

On this rail, the ATR hash rides in the PaymentIntent’s metadata.

#### The standard

The buyer’s token signs nothing that carries the ATR hash; settlement is the seller’s report, and the pairing’s record says so. [Source: lcp docs: MPP⁠ (opens in a new tab)](https://github.com/IntegraLedger/integra-protocol/blob/66274bf/docs/guides/mpp.md) · [Source: lcp docs: pairings reference⁠ (opens in a new tab)](https://github.com/IntegraLedger/integra-protocol/blob/66274bf/docs/reference/pairings.md)

- The MPP request’s `methodDetails.metadata.legal_context`, which Stripe copies into the PaymentIntent. The buyer’s token signs nothing that carries H. [Source: lcp docs: MPP⁠ (opens in a new tab)](https://github.com/IntegraLedger/integra-protocol/blob/66274bf/docs/guides/mpp.md)

  `mpp/charge/stripe` `mpp/subscription/stripe`

Entry points: `@integraledger/lcp/mpp`

### What a payment on this rail proves

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.

#### The standard

- **`mpp/charge/stripe` Opaque Challenge Buyer signs H: no H on chain: no Public proof: no Recoverable from chain: no**

  Pattern: [Opaque Challenge (LCP §8.3.4)⁠ (opens in a new tab)](https://github.com/legal-context-protocol/legal-context-protocol/blob/c8df26d/spec/legal-context-protocol-v1.md#834-opaque-challenge-parameter)

  Where the ATR hash rides: The MPP request’s `methodDetails.metadata.legal_context`, which Stripe copies into the PaymentIntent. The buyer’s token signs nothing that carries H.

  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 ATR was in the seller's storage before payment. The seller's MPP challenge carried this ATR's hash in its id and its opaque reference, bound to the challenge by the seller's own server, and the buyer's credential echoed that challenge. The seller also placed the hash in the method's reference field (externalId for card; the PaymentIntent's metadata for Stripe). Nothing the buyer or its card or Stripe token signed carries the hash, and the seller checked nothing the buyer signed. Settlement is the seller's report. This record does not show that the buyer's approval carried the hash.
- **`mpp/subscription/stripe` Opaque Challenge Buyer signs H: no H on chain: no Public proof: no Recoverable from chain: no**

  Pattern: [Opaque Challenge (LCP §8.3.4)⁠ (opens in a new tab)](https://github.com/legal-context-protocol/legal-context-protocol/blob/c8df26d/spec/legal-context-protocol-v1.md#834-opaque-challenge-parameter)

  Where the ATR hash rides: The MPP request’s `methodDetails.metadata.legal_context`, which Stripe copies into the PaymentIntent. The buyer’s token signs nothing that carries H.

  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 ATR was in the seller's storage before payment. The seller's MPP challenge carried this ATR's hash in its id and its opaque reference, bound to the challenge by the seller's own server, and the buyer's credential echoed that challenge. The seller also placed the hash in the method's reference field (externalId for card; the PaymentIntent's metadata for Stripe). Nothing the buyer or its card or Stripe token signed carries the hash, and the seller checked nothing the buyer signed. Settlement is the seller's report. This record does not show that the buyer's approval carried the hash. Later billing periods were paid under this ATR by renewal invoices the seller did not read. The close is the seller's report.

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)

### Reading the settlement

This rail has no public settlement for the package to read.

### The protocols that pay on it

- [MPP](https://integraledger.com/protocols/mpp)

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