MPC Error Recovery - MPC Lite

Recover failed MPC Lite withdrawal transactions using sequenceId. See the Guide.

  1. Use the sequenceId to check the status of a failed transaction request. If BitGo hasn't registered the sequenceId, you can safely retry the original withdrawal. However, if BitGo has registered the sequenceId and the state response field is pendingDelivery, then continue to the next step to rebuild, re-sign, and send the transaction request.

    Prerequisites: Initiate a withdrawal with a unique sequenceId (see Withdraw Overview).

    API Reference

  2. Use the MPC Lite recovery script to rebuild, re-sign, and broadcast a failed transaction. The script uses the sequenceId to look up the transaction request and checks if it is in a recoverable state (pendingDelivery). It deletes the existing signature shares, re-signs the transaction through BitGo Express, sends the signed transaction, and retries up to 3 times. Unlike MPC Full, the Lite version requires an additional explicit send step after signing. Terminal states (delivered, canceled, rejected, failed) cause the script to exit gracefully.

    API Reference

// 1. Check Status
export COIN="<ASSET_ID>"
export WALLET_ID="<YOUR_WALLET_ID>"
export SEQUENCE_ID="<YOUR_SEQUENCE_ID>"
export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>"

curl -X GET \
  "https://app.bitgo-test.com/api/v2/$COIN/wallet/$WALLET_ID/txrequests?sequenceId=$SEQUENCE_ID" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $ACCESS_TOKEN"
// 2. Rebuild Transaction Request
// Use the JavaScript SDK for this step (see JavaScript tab)
Response
// 1. Check Status Response
{
  "txRequests": [
    {
      "intent": {
        "selfSend": true,
        "intentType": "payment",
        "recipients": [
          {
            "address": {
              "address": "string",
              "option": {}
            },
            "data": "string"
          }
        ],
        "sequenceId": "string",
        "comment": "string",
        "nonce": "string",
        "receiveAddress": "string",
      },
      "apiVersion": "full",
      "txRequestId": "123e4567-e89b-12d3-a456-426614174000",
      "idempotencyKey": "string",
      "walletId": "59cd72485007a239fb00282ed480da1f",
      "walletType": "hot",
      "version": 0,
      "enterpriseId": "59cd72485007a239fb00282ed480da1f",
      "state": "pendingDelivery",
      "date": "2025-04-24T00:00:00.000Z",
      "createdDate": "2025-04-24T00:00:00.000Z",
      "userId": "string",
      "initiatedBy": "string",
      "pendingApprovalId": "string",
      "policiesChecked": true,
    }
  ]
}