diff --git a/18.md b/18.md index 34571360f..64fa2cdae 100644 --- a/18.md +++ b/18.md @@ -24,6 +24,7 @@ A Payment Request is defined as follows "u": str , "s": bool , "m": Array[str] , + "ms": bool , "d": str , "t": Array[Transport] , "nut10": NUT10Option , @@ -37,10 +38,15 @@ Here, the fields are - `u`: The unit of the requested payment (MUST be set if `a` is set) - `s`: Whether the payment request is for single use - `m`: A set of mints from which the payment is requested +- `ms`: A flag indicating whether the mint list is strict; defaults to `true` - `d`: A human readable description that the sending wallet will display after scanning the request - `t`: The method of `Transport` chosen to transmit the payment (can be multiple, sorted by preference) - `nut10`: The required [NUT-10][10] locking condition +## Mint list + +A Payment Request containing a mint list `m` describes the mints it accepts payments from. If `ms` is not present, or is `true`, the recipient **MUST** reject payments from mints not in the list. If `ms` is set to `false`, the list is just a suggestion for the payer. + ## Locking conditions The payment request can include _optional_ locking conditions the payee requires from the payer. For example, the payee might require a P2PK-locked token so that they can receive payments offline. diff --git a/26.md b/26.md index 555d8bcf7..57ab38550 100644 --- a/26.md +++ b/26.md @@ -33,16 +33,17 @@ The payment request is encoded as a sequence of TLV fields. Each TLV entry consi ### Top-Level TLV Tags -| Tag | Field | Type | Description | -| ---- | ----------- | --------- | -------------------------------------------------------------------- | -| 0x01 | id | string | Payment identifier (corresponds to `i` in JSON) | -| 0x02 | amount | u64 | Amount in base units (corresponds to `a` in JSON) | -| 0x03 | unit | u8/string | Currency unit (corresponds to `u` in JSON) | -| 0x04 | single_use | u8 | Single-use flag: 0=false, 1=true (corresponds to `s` in JSON) | -| 0x05 | mint | string | Mint URL (repeatable for multiple mints, corresponds to `m` in JSON) | -| 0x06 | description | string | Human-readable description (corresponds to `d` in JSON) | -| 0x07 | transport | sub-TLV | Transport configuration (repeatable, corresponds to `t` in JSON) | -| 0x08 | nut10 | sub-TLV | NUT-10 spending conditions (corresponds to `nut10` in JSON) | +| Tag | Field | Type | Description | +| ---- | ----------- | --------- | ---------------------------------------------------------------------------------------------- | +| 0x01 | id | string | Payment identifier (corresponds to `i` in JSON) | +| 0x02 | amount | u64 | Amount in base units (corresponds to `a` in JSON) | +| 0x03 | unit | u8/string | Currency unit (corresponds to `u` in JSON) | +| 0x04 | single_use | u8 | Single-use flag: 0=false, 1=true (corresponds to `s` in JSON) | +| 0x05 | mint | string | Mint URL (repeatable for multiple mints, corresponds to `m` in JSON) | +| 0x06 | description | string | Human-readable description (corresponds to `d` in JSON) | +| 0x07 | transport | sub-TLV | Transport configuration (repeatable, corresponds to `t` in JSON) | +| 0x08 | nut10 | sub-TLV | NUT-10 spending conditions (corresponds to `nut10` in JSON) | +| 0x09 | mint_strict | u8 | Mint list strict flag: 0=false, 1=true; if absent, defaults to 1 (corresponds to `ms` in JSON) | All fields are optional. Unknown tags MUST be ignored to maintain forward compatibility.