With some channels `chantools forceclose` command may give you the following error:
```
[INF] CHAN: Published TX a445b928e0603d0af0b1c23876adb975c442009aa7c73c1c08bbb9a09bf1918e, response: sendrawtransaction RPC error: {"code":-26,"message":"non-mandatory-script-verify-flag (Signature must be zero for failed CHECK(MULTI)SIG operation)"}
```
Your funds may still be recovered following these steps:
1. First of all we need to build the master branch of PSBT-Toolkit (available [here](https://github.com/benthecarman/PSBT-Toolkit)). Don’t use the last release because it has a bug that will make us fail in funds recovery.
2. If you search for the transaction ID in your `./results/forceclose-yyyy-mm-dd.json` file (in this example: “a445b928e0603d0af0b1c23876adb975c442009aa7c73c1c08bbb9a09bf1918e”) you will find the part of the json related to this transaction.
3. Copy the value corresponding to "serialized", you can find it in the row just under txid. This is the raw transaction, we will use it in the next steps. It is similar to this:
Line one is the signature for key A, line two is the signature for key B, line three is the witness script.
6. Using the witness script obtained above (line 3 in "txinwitness", previous step) we are going to obtain the two public keys with the following command:
Key A and key B are the two strings between the number 2 in the first “asm”.
7. Using PSBT-Toolkit we are going to convert the transaction into a base PSBT by clicking "From Unsigned Transaction" and pasting the raw transaction we got in the step 3. The result has to be similar to this:
8. Now from the output of step 4 we can obtain the initial channel opening transaction ID (can be found in "vin": [ { "txid"). Then we have to go to this [page](https://nioctib.tech/#/transaction) and insert the initial channel opening transaction ID. In this example: "23ddab90ff21342b7dcd95035eaab0026e09c66694ae4e05efa576e892b65288".
Here we have to understand what is the output which generated the channel (looking at its amount for example), mind that the first is output zero. Then click on RAW. Going with the mouse above the text give you the meaning of the different colors. So we copy the green and red part of the correct output (In this example: "3063030000000000220020e2d5738f3a404873001ccce6a4cf0a65fe26ac43f33c3c0eee61e578e9859aa9"), we click on "Add Witness UTXO" in the PSBT-Toolkit, enter Input Index 0 and past the copied string in the Output field. Then press OK.
9. Now click on "Add Input Redeem Script" in the PSBT-Toolkit, again index 0 and paste in the second field the witness script (line three of step 5). Result:
Save it somewhere, because now we can follow two different possibilities.
10. **Variant A:** we assume your key is key A (in this example: "02948634a3000bd6b92c757f296928bfc5f26d8fc5eb9bd2d037b0c5e815cf43dd"). So we click on the "Add Unknown" button in PSBT-Toolkit (middle column under Input Functions), insert key A in the field Data, Input Index 0 and “cc” in the field Key (which is a custom key for `chantools` so it knows what key to look for).
11. Now we add the public key and the signature of B. So click on “Add signature” in PSBT-Toolkit, insert Input Index 0, Public Key of B (in this example: "038a0fbe274e9fbeb9f091c37c008dfc372c51150c4af3b109a72b6d26e644784d") and signature of B (in this example: "3044022052aaf4d85600198e567cea40dacc248dc700ab9f0ef17235c71a534fb9202a37022045749ae4918ca89c0969a9cf7738f28286ef6c1386fb33105dab11e2b58ab3f501")
12. PSBT-Toolkit currently has a little bug, we just need to fix the script. It's marked as "redeem script" (0x04) in the PSBT but we actually want a "witness script" (0x05). So we just convert the obtained string from Base64 to Hex, look for the "04" in the string (2 bytes before the actual script starts, so you can just search for the witness script we obtained in line three of step 5) and change it to "05". Then convert everything back to Base64.
13. Run the following command inserting the obtained PSBT:
```
chantools signrescuefunding --psbt <your-PSBT>
```
14. If last command succeeds simply send the raw transaction you obtained using bitcoind (`bitcoin-cli sendrawtransaction <raw-transaction>`). If the command in step 13 doesn’t succeed and you get "could not find local multisig key" then we need to try with **Variant B: insert in PSBT Toolkit the string you saved in step 9 and repeat the procedure from step 10 assuming your key is Key B and replacing Key A and Signature A with Key B and Signature B and vice versa.**