{"lexicon":1,"id":"money.atmosphere.payment.recurringReceipt","defs":{"main":{"type":"record","key":"tid","description":"An immutable SETTLEMENT-EVIDENCE record for the initial settled payment that begins a payer-confirmed recurring relationship, plus the cadence snapshot accepted at enrollment. Explicitly NOT current subscription state: automatic renewals, later tier or cadence changes, merely scheduling a future change, no-charge changes, cancellation, delinquency, and pauses neither create nor update this record. A separately confirmed immediate adjustment that settles money uses money.atmosphere.payment.receipt for that exact settlement; it does not rewrite this record or pretend to encode the new recurring price. The payer action is not by itself publication consent: any new receipt still requires that exact settlement's frozen publication choice and repository authority. A later cancellation followed by a genuinely new enrollment may create a new recurringReceipt for that new relationship's initial settlement. A separate record type is required because Lexicon has no conditional requiredness: the cadence snapshot is required here and absent from money.atmosphere.payment.receipt. Commitment, author-provenance, proof, and policy-dependent lifecycle semantics are identical to money.atmosphere.payment.receipt.","record":{"type":"object","required":["recipient","value","settlement","settledAt","nonce","interval","intervalCount","proofs"],"properties":{"recipient":{"type":"string","format":"did","description":"DID of the party receiving the payment."},"value":{"type":"union","refs":["money.atmosphere.payment.defs#fiatMinor","money.atmosphere.payment.defs#assetAtomic"],"description":"The single authoritative value satisfied by the initial settlement that begins this recurring relationship, after applicable discounts and charged tax. It is NOT a promise of the future recurring price. Uses the exact shared fiat-minor or asset-atomic variants defined by money.atmosphere.payment.defs; money-atmosphere-v1 treats every unknown tag as record-invalid. Later adjustments and automatic renewal values are not represented here."},"settlement":{"type":"union","refs":["money.atmosphere.payment.defs#processorSettlement"],"description":"Committed open settlement union. This profile admits only #processorSettlement with its exact authority DID and visible-ASCII transactionId; flat transactionId/transactionIdAuthority fields, mixed branches and unknown branches are record-invalid. The processor branch requires at least one proof, including the producer's matching-authority proof. Future chain and Zone branches require separate reviewed semantics; no reserved name grants verification or execution authority."},"settledAt":{"type":"string","format":"datetime","description":"UTC instant at which the canonical accepted-settlement authority asserts the recurring relationship's initial settlement occurred (millisecond precision, Z suffix). Not the quote, confirmation, checkout-creation, or record-publication time."},"nonce":{"type":"string","minLength":32,"maxLength":32,"description":"Exactly 32 lowercase hexadecimal characters (implementations MUST enforce ^[0-9a-f]{32}$) encoding 128 bits that MUST be generated by a cryptographically secure random generator, once per payment, never derived from other fields, never reused. See money.atmosphere.payment.receipt."},"interval":{"type":"string","minLength":1,"maxLength":16,"knownValues":["day","week","month","year"],"description":"Billing interval unit accepted when the recurring relationship's initial settlement occurred (cadence snapshot)."},"intervalCount":{"type":"integer","minimum":1,"maximum":366,"description":"Multiplier applied to `interval` (e.g. interval=month, intervalCount=3 bills quarterly). The 366 ceiling admits an annual daily cadence including leap years while rejecting implausibly large immutable billing snapshots; ATM's operational subscription-change quote uses a broader 1095 limit because it is an app-private, expiring workflow object rather than this permanent public receipt. Required and always explicit — writers MUST NOT rely on validator-inserted defaults, so one set of terms has exactly one canonical byte form. Terms snapshot only."},"proofs":{"type":"array","maxLength":10,"items":{"type":"ref","ref":"com.atproto.repo.strongRef"},"description":"References to immutable money.atmosphere.payment.proof records in each attester's own repository. Each URI authority identifies its attester; each cid is the exact canonical AT repository-record CID. The array is required and fixed at creation. Its schema permits zero entries to reserve later profiles, but the processor profile and every ATM-written receipt require at least one proof. Brokered proofs are written first. proofs is the only field removed from the commitment preimage; settlement remains committed. Receipts are immutable. The optional recipient acknowledgment is independently discovered at the full commitment-CID key specified by COMMITMENT_PROFILE.md; it may be published later and never edits this array. Every reference whose URI authority is committed settlement.authority must have a canonical 13-character TID key or the whole receipt is record-invalid. Only that committed broker role supplies lifecycle candidates; unrelated non-broker references are raw observations.","minLength":0},"entitlements":{"type":"array","minLength":1,"maxLength":100,"items":{"type":"ref","ref":"com.atproto.repo.strongRef"},"description":"Optional purchase-context strongRefs whose exact committed URI and CID values, when a verifier accepts a trusted proof for this recurring receipt, are bound only to the historical initial-settlement assertion for this recurring relationship so an application can use them as purchase evidence after separately authenticating and validating each referenced record; the proof establishes neither a renewal nor current subscription or term standing, does not prove the target exists or authenticate its author, repository, schema, or meaning, does not make a handle authority durable, and the references are not live entitlement grants or bearer credentials (any lexicon). Every cid is the referenced record's canonical AT repository-record CID string (lowercase unpadded base32 CIDv1, DAG-CBOR, SHA-256/32). By themselves, these references never establish current, unconsumed, unexpired, or unrevoked access; an independent current entitlement authority or source of truth must make access decisions. Line-item detail (quantities, unit prices, per-item tax) is deliberately not public."},"discount":{"type":"ref","ref":"com.atproto.repo.strongRef","description":"Optional strongRef to the public offer terms (for example a money.atmosphere.discount record) under which this recurring relationship's initial settlement value was reduced. It is a terms snapshot for that initial settlement only: automatic renewals, a later end of the offer, and later price changes neither create nor update this record, and the reference says nothing about what any later cycle charged. It is committed exactly like an entitlements entry: when a verifier accepts a trusted proof for this recurring receipt, the exact committed uri and cid are bound to the historical initial-settlement assertion, so a reduced or zero initial value is explainable by separately dereferencing, authenticating, and validating the referenced terms. The payment proof does not prove the target exists or authenticate its author, repository, schema, or meaning. The reference carries no customer-facing code, eligibility fact, or redemption state (codes and their counters stay private), and its absence asserts nothing about whether a discount applied. The cid is the referenced record's canonical AT repository-record CID string (lowercase unpadded base32 CIDv1, DAG-CBOR, SHA-256/32). The payment proof does not establish that the referenced terms were applied or that the value derives from them."},"price":{"type":"ref","ref":"com.atproto.repo.strongRef","description":"Optional strongRef to the public posted terms (for example a money.atmosphere.price record) under which this recurring relationship's initial settlement value and stated cadence were computed. It is a terms snapshot for that initial settlement only: automatic renewals, later price changes, and a later end of the offer neither create nor update this record, and the reference says nothing about what any later cycle charged. It is committed exactly like an entitlements entry: when a verifier accepts a trusted proof for this recurring receipt, the exact committed uri and cid are bound to the historical initial-settlement assertion, so the initial value is explainable against the referenced terms by separately dereferencing, authenticating, and validating them. The payment proof does not prove the target exists or authenticate its author, repository, schema, or meaning. The reference carries no quantity, tax, or line-item breakdown, does not restate the amount (value remains the single authoritative settled obligation), and its absence asserts nothing about how the value was computed. The cid is the referenced record's canonical AT repository-record CID string (lowercase unpadded base32 CIDv1, DAG-CBOR, SHA-256/32). The payment proof does not establish that the referenced terms produced the value or that the value derives from them."}}}}}}