org.hypercerts.funding.receipt
Records a payment from a sender to a recipient. Any party may record it, and the sender may stay anonymous. When the sender chose the recipient, record one receipt to the final recipient even if platforms or hosts passed the funds on. When an intermediary chose (regranting), record the payment into it and each onward payment as separate receipts. A receipt may be updated in place under the same record key: its URI does not change, so references by URI keep resolving, but a strongRef (as likes and reposts use) still pins the earlier CID, and signatures bind to content and must be renewed. An earlier version cannot be recalled from readers that kept it.
Details · record, key tid
| Kind | record |
|---|---|
| Record key | tid |
| Authority | funding.hypercerts.org |
| Indexed |
Checks
Valid Lint pass{
"$type": "com.atproto.lexicon.schema",
"defs": {
"main": {
"description": "Records a payment from a sender to a recipient. Any party may record it, and the sender may stay anonymous. When the sender chose the recipient, record one receipt to the final recipient even if platforms or hosts passed the funds on. When an intermediary chose (regranting), record the payment into it and each onward payment as separate receipts. A receipt may be updated in place under the same record key: its URI does not change, so references by URI keep resolving, but a strongRef (as likes and reposts use) still pins the earlier CID, and signatures bind to content and must be renewed. An earlier version cannot be recalled from readers that kept it.",
"key": "tid",
"record": {
"properties": {
"amount": {
"description": "Gross amount the sender paid, before fees, as a numeric string (e.g. '1000.50'). Omit if unknown, and set netAmount instead.",
"maxLength": 50,
"type": "string"
},
"createdAt": {
"description": "Client-declared timestamp when this receipt record was created.",
"format": "datetime",
"type": "string"
},
"currency": {
"description": "Currency of amount: an ISO 4217 code for fiat (e.g. EUR), a token ticker for digital assets (e.g. USDC). This is what marks the funds as fiat or digital. Set it whenever amount is set.",
"maxLength": 10,
"type": "string"
},
"for": {
"description": "Optional strong reference to the activity, project, or organization this funding relates to.",
"ref": "com.atproto.repo.strongRef",
"type": "ref"
},
"from": {
"description": "The sender of the funds (a free-text string, an account DID, or a strong reference to a record). Optional — omit to represent anonymity. Name a sender only if they chose to be named: from can be added later by updating the receipt in place, but removing it later only hides the name from the current version, and an onchain transactionId still names the sending wallet.",
"refs": [
"#text",
"app.certified.defs#did",
"com.atproto.repo.strongRef"
],
"type": "union"
},
"netAmount": {
"description": "What the recipient received after fees and conversion, as a numeric string in netCurrency.",
"maxLength": 50,
"type": "string"
},
"netCurrency": {
"description": "Currency of netAmount: an ISO 4217 code for fiat, a token ticker for digital assets. Set it whenever netAmount is set.",
"maxLength": 10,
"type": "string"
},
"notes": {
"description": "Optional notes or additional context for this funding receipt.",
"maxLength": 500,
"type": "string"
},
"occurredAt": {
"description": "Timestamp when the payment occurred.",
"format": "datetime",
"type": "string"
},
"paymentNetwork": {
"description": "Where transactionId can be looked up: the chain for onchain payments, preferably as a CAIP-2 ID (e.g. 'eip155:1'), otherwise the processor or scheme (e.g. stripe, sepa). Set it whenever transactionId is a transaction hash.",
"maxLength": 50,
"type": "string"
},
"paymentRail": {
"description": "How the sender paid. Use 'payment_processor' only when the underlying method is unknown.",
"knownValues": [
"onchain",
"bank_transfer",
"card",
"direct_debit",
"mobile_money",
"payment_processor",
"cash",
"check"
],
"maxLength": 50,
"type": "string"
},
"signatures": {
"description": "Optional cryptographic signatures attesting to this record's content.",
"ref": "app.certified.signature.defs#list",
"type": "ref"
},
"to": {
"description": "The recipient of the funds (a free-text string, an account DID, or a strong reference to a record).",
"refs": [
"#text",
"app.certified.defs#did",
"com.atproto.repo.strongRef"
],
"type": "union"
},
"transactionId": {
"description": "ID of the sender's payment, not of a platform's later payout: a transaction hash for onchain payments, otherwise the processor's or scheme's reference. Receipts are public: prefer opaque processor IDs to bank references, and note that a hash reveals the sender's wallet even when from is omitted.",
"maxLength": 256,
"type": "string"
},
"type": {
"description": "What the payment is: a donation (a gift from the sender), a match (funds a matching pool allocated on the strength of other gifts) or a grant (funds awarded through a selection process). Values beyond the known set are permitted. Omit if unknown.",
"knownValues": [
"donation",
"match",
"grant"
],
"maxLength": 50,
"type": "string"
},
"via": {
"description": "Optional intermediary that facilitated or processed the payment (funding platform, payment servicer, broker).",
"refs": [
"#text",
"app.certified.defs#did",
"com.atproto.repo.strongRef"
],
"type": "union"
}
},
"required": [
"to",
"createdAt"
],
"type": "object"
},
"type": "record"
},
"text": {
"description": "A free-text string value (e.g. a display name, wallet address, or other identifier).",
"properties": {
"value": {
"description": "The string value.",
"maxLength": 2048,
"type": "string"
}
},
"required": [
"value"
],
"type": "object"
}
},
"id": "org.hypercerts.funding.receipt",
"lexicon": 1
}