The agreement step
Where the payment carries no public proof of the hash, a nominal payment that carries it comes first.
Some pairings' payments carry no public proof of H: on a card payment, nothing the buyer signs carries it. For such a pairing a seller can configure the agreement step: before the full payment, the buyer's agent pays a nominal amount in a payment whose signed payload carries H. That agreement payment is the public proof, and it is on record before the payment it covers.
The pairings whose publicProof is "no" are marked in the pairings reference.
How it runs
sequenceDiagram
participant C as Connector
participant D as Seller door
participant B as Buyer's agent
C->>D: issue
D-->>C: atrHash, link, carriers, agreement {url, network, pairing}
C->>B: the carriers, with agreement.url beside them
B->>D: pays agreement.url (a nominal payment carrying H)
C->>D: status
D-->>C: agreement.state recorded
C->>B: the full payment may start
C->>D: report the full payment
issueanswers withagreement: {url, network, pairing}. The URL is on the tenant's host, at/agreement/<atrHash>.- Place
agreement.urlwhere the buyer's agent can see it, beside the carriers:- on MPP, as
opaque.legalContextAgreementUrl; - elsewhere, as
legalContextAgreementUrlbesidelegalContextUrl, or the protocol's own place beside the link.
- on MPP, as
- The buyer's agent pays the nominal amount at
agreement.url, onagreement.network, with the agreement'spairing, in a payment whose signed payload carries H. - Read
statusuntilagreement.stateisrecorded. Until then,claimanswers409 claim/agreement-first. - Take the full payment, and claim or report it as its pairing needs.
Never start or accept the full payment before the agreement is recorded.
What the record states
Once the agreement is recorded, the record's proves.pattern.proves names it: its network and its transaction take
the places of <network> and <transaction> in the pairing's sentence. The sentences are in
the pairings reference.
A payment before the agreement
A payment reported before the agreement is recorded has moved, so it is recorded. Its record states what is missing
(vector CV10):
import type { RecordView } from "@integraledger/agentic-connectors";
import { } from "@integraledger/agentic-connectors";
const = .. ?? "https://seller.example/door";
const = .. ?? "";
const = { : `Bearer ${}`, "content-type": "application/json" };
const [, ] = ["CV10"]!.;
await (`${}/issue`, { : "POST", , : .(!..) });
const = await (`${}/report`, { : "POST", , : .(!..) });
const = (await .()) as RecordView;
.(., ., .?., ..);
.(..?.);200 paid required seller-report
No agreement was recorded before this payment; nothing public carries this ATR's hash.Last updated on