{
  "$schema": "../rpc-schema-draft.json",
  "type": "object",
  "added": "v23.05",
  "rpc": "listclosedchannels",
  "title": "Get data on our closed historical channels",
  "description": [
    "The **listclosedchannels** RPC command returns data on channels which are otherwise forgotten (more than 100 blocks after they're completely resolved onchain)."
  ],
  "categories": [
    "readonly"
  ],
  "request": {
    "required": [],
    "additionalProperties": false,
    "properties": {
      "id": {
        "type": "pubkey",
        "description": [
          "If no *id* is supplied, then channel data on all historical channels are given. Supplying *id* will filter the results to only match channels to that peer. Note that prior to v23.05, old peers were forgotten."
        ]
      }
    }
  },
  "response": {
    "required": [
      "closedchannels"
    ],
    "additionalProperties": false,
    "properties": {
      "closedchannels": {
        "type": "array",
        "items": {
          "type": "object",
          "additionalProperties": true,
          "required": [
            "channel_id",
            "opener",
            "private",
            "total_msat",
            "total_local_commitments",
            "total_remote_commitments",
            "total_htlcs_sent",
            "funding_txid",
            "funding_outnum",
            "funding_withheld",
            "leased",
            "final_to_us_msat",
            "min_to_us_msat",
            "max_to_us_msat",
            "close_cause"
          ],
          "properties": {
            "peer_id": {
              "type": "pubkey",
              "description": [
                "Peer public key (can be missing with pre-v23.05 closes!)."
              ]
            },
            "channel_id": {
              "type": "hash",
              "description": [
                "The full channel_id (funding txid Xored with output number)."
              ]
            },
            "short_channel_id": {
              "type": "short_channel_id",
              "description": [
                "The short_channel_id."
              ]
            },
            "alias": {
              "type": "object",
              "required": [],
              "additionalProperties": false,
              "properties": {
                "local": {
                  "type": "short_channel_id",
                  "description": [
                    "An alias assigned by this node to this channel, used for outgoing payments."
                  ]
                },
                "remote": {
                  "type": "short_channel_id",
                  "description": [
                    "An alias assigned by the remote node to this channel, usable in routehints and invoices."
                  ]
                }
              }
            },
            "opener": {
              "type": "string",
              "enum": [
                "local",
                "remote"
              ],
              "description": [
                "Who initiated the channel."
              ]
            },
            "closer": {
              "type": "string",
              "enum": [
                "local",
                "remote"
              ],
              "description": [
                "Who initiated the channel close (only present if closing)."
              ]
            },
            "private": {
              "type": "boolean",
              "description": [
                "If True, we will not announce this channel."
              ]
            },
            "channel_type": {
              "type": "object",
              "description": [
                "Channel_type as negotiated with peer."
              ],
              "additionalProperties": false,
              "required": [
                "bits",
                "names"
              ],
              "properties": {
                "bits": {
                  "type": "array",
                  "description": [
                    "Each bit set in this channel_type."
                  ],
                  "items": {
                    "type": "u32",
                    "description": [
                      "Bit number."
                    ]
                  }
                },
                "names": {
                  "type": "array",
                  "description": [
                    "Feature name for each bit set in this channel_type. Note that *anchors_zero_fee_htlc_tx* is a deprecated synonym for *anchors*."
                  ],
                  "items": {
                    "type": "string",
                    "enum": [
                      "static_remotekey/even",
                      "anchor_outputs/even",
                      "anchors/even",
                      "anchors_zero_fee_htlc_tx/even",
                      "scid_alias/even",
                      "zeroconf/even"
                    ],
                    "description": [
                      "Name of feature bit."
                    ]
                  }
                }
              }
            },
            "total_local_commitments": {
              "type": "u64",
              "description": [
                "Number of commitment transaction we made."
              ]
            },
            "total_remote_commitments": {
              "type": "u64",
              "description": [
                "Number of commitment transaction they made."
              ]
            },
            "total_htlcs_sent": {
              "type": "u64",
              "description": [
                "Number of HTLCs we ever sent."
              ]
            },
            "funding_txid": {
              "type": "txid",
              "description": [
                "ID of the funding transaction."
              ]
            },
            "funding_outnum": {
              "type": "u32",
              "description": [
                "The 0-based output number of the funding transaction which opens the channel."
              ]
            },
            "funding_psbt": {
              "type": "string",
              "added": "v25.12",
              "description": [
                "The PSBT (may be non-final or unsigned) we should use to open the channel, if any"
              ]
            },
            "funding_withheld": {
              "type": "boolean",
              "added": "v25.12",
              "description": [
                "True if we have not broadcast the funding transaction (see fundchannel_complete)."
              ]
            },
            "leased": {
              "type": "boolean",
              "description": [
                "Whether this channel was leased from `opener`."
              ]
            },
            "funding_fee_paid_msat": {
              "type": "msat",
              "description": [
                "How much we paid to lease the channel (iff `leased` is true and `opener` is local)."
              ]
            },
            "funding_fee_rcvd_msat": {
              "type": "msat",
              "description": [
                "How much they paid to lease the channel (iff `leased` is true and `opener` is remote)."
              ]
            },
            "funding_pushed_msat": {
              "type": "msat",
              "description": [
                "How much `opener` pushed immediate (if non-zero)."
              ]
            },
            "total_msat": {
              "type": "msat",
              "description": [
                "Total amount in the channel."
              ]
            },
            "final_to_us_msat": {
              "type": "msat",
              "description": [
                "Our balance in final commitment transaction."
              ]
            },
            "min_to_us_msat": {
              "type": "msat",
              "description": [
                "Least amount owed to us ever. If the peer were to successfully steal from us, this is the amount we would still retain."
              ]
            },
            "max_to_us_msat": {
              "type": "msat",
              "description": [
                "Most amount owed to us ever. If we were to successfully steal from the peer, this is the amount we could potentially get."
              ]
            },
            "last_commitment_txid": {
              "type": "hash",
              "description": [
                "The final commitment tx's txid (or mutual close, if we accepted it). Not present for some very old, small channels pre-0.7.0."
              ]
            },
            "last_commitment_fee_msat": {
              "type": "msat",
              "description": [
                "The fee on `last_commitment_txid`."
              ]
            },
            "close_cause": {
              "type": "string",
              "enum": [
                "unknown",
                "local",
                "user",
                "remote",
                "protocol",
                "onchain"
              ],
              "description": [
                "What caused the channel to close."
              ]
            },
            "last_stable_connection": {
              "type": "u64",
              "added": "v24.02",
              "description": [
                "Last time we reestablished the open channel and stayed connected for 1 minute."
              ]
            }
          }
        }
      }
    }
  },
  "errors": [
    "On error the returned object will contain `code` and `message` properties, with `code` being one of the following:",
    "",
    "- -32602: If the given parameters are wrong."
  ],
  "author": [
    "Rusty Russell [rusty@blockstream.com](mailto:rusty@blockstream.com)."
  ],
  "see_also": [
    "lightning-listpeerchannels(7)"
  ],
  "resources": [
    "Main web site: [https://github.com/ElementsProject/lightning](https://github.com/ElementsProject/lightning)"
  ],
  "examples": [
    {
      "request": {
        "id": "example:listclosedchannels#1",
        "method": "listclosedchannels",
        "params": {}
      },
      "response": {
        "closedchannels": [
          {
            "peer_id": "nodeid030303030303030303030303030303030303030303030303030303030303",
            "channel_id": "channelid0230000230000230000230000230000230000230000230000230000",
            "short_channel_id": "111x1x1",
            "alias": {
              "local": "121x131x141",
              "remote": "151x161x171"
            },
            "opener": "local",
            "closer": "local",
            "private": false,
            "channel_type": {
              "bits": [
                12,
                22
              ],
              "names": [
                "static_remotekey/even",
                "anchors/even"
              ]
            },
            "total_local_commitments": 16,
            "total_remote_commitments": 16,
            "total_htlcs_sent": 8,
            "funding_txid": "fundingtxid00202020202020202020202020202020202020202020202020202",
            "funding_outnum": 1,
            "leased": false,
            "total_msat": 1000000000,
            "final_to_us_msat": 489809898,
            "min_to_us_msat": 489809898,
            "max_to_us_msat": 1000000000,
            "last_commitment_txid": "txidcloselastcommitment00000100001000010000100001000010000100001",
            "last_commitment_fee_msat": 2895000,
            "close_cause": "user",
            "last_stable_connection": 1738500000
          },
          {
            "peer_id": "nodeid050505050505050505050505050505050505050505050505050505050505",
            "channel_id": "channelid0250000250000250000250000250000250000250000250000250000",
            "short_channel_id": "115x1x1",
            "alias": {
              "local": "122x132x142",
              "remote": "152x162x172"
            },
            "opener": "local",
            "closer": "local",
            "private": true,
            "channel_type": {
              "bits": [
                12,
                22
              ],
              "names": [
                "static_remotekey/even",
                "anchors/even"
              ]
            },
            "total_local_commitments": 2,
            "total_remote_commitments": 2,
            "total_htlcs_sent": 1,
            "funding_txid": "fundingtxid00101010101010101010101010101010101010101010101010101",
            "funding_outnum": 1,
            "leased": false,
            "total_msat": 1000000000,
            "final_to_us_msat": 500000000,
            "min_to_us_msat": 500000000,
            "max_to_us_msat": 1000000000,
            "last_commitment_txid": "txidcloselastcommitment00000200002000020000200002000020000200002",
            "last_commitment_fee_msat": 2896000,
            "close_cause": "user",
            "last_stable_connection": 1738500000
          }
        ]
      }
    }
  ]
}
