A Quote is a response to a Listing — it represents a pricing offer from a trading partner. Unlike listings, quote content is end-to-end encrypted (NIP-44) so only the two parties in the conversation can read it. The encryption key is derived from the sender’s private key and the recipient’s public key, meaning no node or third party can decrypt the content.
Kind: 2014
When publishing a quote, clients MUST republish the original Listing to the node URL specified in the listing’s "r" tag. Because listings are replaceable events (kind 31001), the node may no longer have the original version. Republishing it preserves the thread’s reference to the root listing.
Content:
{
"company": "<string - Company name (set by app layer)>",
"contact": "<string - Contact information>",
"message": "<string - Quote message or note>",
"qty": "<int - Quantity being quoted>",
"unit_price": "<float64 - Unit price for the quoted item>",
"timing": {
"lead_time": <string - Lead Time (Optional), supply listings>,
"required_date": <int64 - Required Date as Unix timestamp (Optional), demand listings>
"expiry": <int64 - Listing expiry as Unix timestamp (Optional)>
},
"terms": {
"shipping": {
"incoterm": "<string - Incoterm (e.g. FOB, CIF)>",
"place": "<string - Place of delivery or shipment>"
},
"payment_term": {
"code": "<string - Payment term code (e.g. NET30)>",
"currency": "<string - Currency code (e.g. USD)>"
}
},
"meta": "<object - Arbitrary metadata JSON object (type: object, Optional)>",
"schema_version": "<string - quote schema version"
}
This object is encrypted and placed in the content field of the event. Upon retrieval it is decrypted by the recipient.
Quote Tags
[
["h", "thread_id"],
["n", "material_no"],
["m", "manufacturer name"],
["y", "supply or demand"],
["c", "poster_name"],
["b", "any"],
["t", "any"],
["i", "internal_no"],
["c", "any"],
["r", "inbox_node_url"],
["p", "recipient_pubkey"],
["e", "event_id", "", "root"],
["u", "user_pubkey1", "user_pubkey2"]
]
- Quotes SHOULD copy the listing tags over.
- Quotes MUST generate a thread_id
"h" if not present — see Threads.
- Quotes MUST set the recipient
"p" tag to the listing event’s Author pubkey.
- Quotes MUST be published to the listing’s
"r" tag inbox node URL, as well as the sender’s inbox node.