Approve Settlements

Overview

You can approve settlements that you counterparties initiate. The number of steps in the integration flow depends on your enterprise policies. For example, you may need to sign, approve, and acknowledge a settlement, or you may configure unidirectional settlements to be automatic. This page documents all possible steps to approve a settlement.

Prerequisites

1. Acknowledge Settlement

Acknowledging a settlement lets your counterparties know you reviewed and confirmed the amounts for transfer. Acknowledging doesn't sign the settlement.

Endpoint: Update settlement approval request

  • cURL
1 2 3 4 5 6 7 8 9 10 11 12 export ENTERPRISE_ID="<YOUR_ENTERPRISE_ID>" export ACCOUNT_ID="<YOUR_ACCOUNT_ID>" export APPROVAL_REQUEST_ID="<APPROVAL_REQUEST_ID>" export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>" export PAYLOAD="<SETTLEMENT_PAYLOAD>" export SIGNATURE="<YOUR_PUBLIC_KEY>" curl -X POST \ https://app.bitgo-test.com/api/clearing/v1/enterprise/$ENTERPRISE_ID/account/$ACCOUNT_ID/approval-requests/$APPROVAL_REQUEST_ID \ -H 'Content-Type: application/json' \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -d '{"status": "acknowledged"}'

Step Result

The settlement is approved.

  • JSON
1 2 3 4 5 6 7 8 9 10 11 { "settlementId": "string", "approvedAt": "2019-08-24", "createdAt": "2019-08-24", "updatedAt": "2019-08-24", "id": "string", "accountId": "string", "status": "acknowledged", "payload": "string", "signature": "string" }

2. Sign Settlement (Optional)

If you're sending assets in the settlement, you must sign the settlement to confirm the transaction. However, if you're only receiving assets in a settlement, signing is optional.

Endpoint: Sign settlement

  • cURL
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 export ENTERPRISE_ID="<YOUR_ENTERPRISE_ID>" export ACCOUNT_ID="<YOUR_ACCOUNT_ID>" export SETTLEMENT_ID="<SETTLEMENT_ID>" export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>" export PAYLOAD="<SETTLEMENT_PAYLOAD>" export SIGNATURE="<YOUR_PUBLIC_KEY>" curl -X POST \ https://app.bitgo-test.com/api/clearing/v1/enterprise/$ENTERPRISE_ID/account/$ACCOUNT_ID/settlement/$SETTLEMENT_ID/signing \ -H 'Content-Type: application/json' \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -d '{ "payload": "'"$PAYLOAD"'", "signature": "'"$SIGNATURE"'" }'

Step Result

Signing a settlement places the assets in your Go Account into a held state, preventing them from use in other transactions. If your Go Account has an insufficient balance to cover the settlement, then the request is rejected.

Note: If the signing fails for any reason, the settlement cancels.

  • JSON
1 {}

3. Approve Settlement (Optional)

Note: If you configure an approval requirement for settlements, you can't approve a settlement you signed in the prior step - another admin must always approve it.

Endpoint: Update Pending Approval

  • cURL
  • JavaScript
1 2 3 4 5 6 7 8 9 10 11 12 export APPROVAL_ID="<APPROVAL_ID>" export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>" export OTP="<YOUR_OTP>" curl -X PUT \ https://app.bitgo-test.com/api/v2/pendingApprovals/$APPROVAL_ID \ -H 'Content-Type: application/json' \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -d '{ "state": "approved", "otp": "'"$OTP"'" }'

Step Result

  • JSON
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 { "id": "65529448bd87efe59c3b0156ddfce867", "coin": "tbtc4", "wallet": "654ec786c07fe8dc0dcfe03916ec5bb0", "enterprise": "62c5ae8174ac860007aff138a2d74df7", "creator": "62ab90e06dfda30007974f0a52a12995", "createDate": "2023-11-13T21:25:28.022Z", "info": { "type": "transactionRequest", "transactionRequest": { "requestedAmount": "10000", "fee": 20451, "sourceWallet": "654ec786c07fe8dc0dcfe03916ec5bb0", "policyUniqueId": "654ec786c07fe8dc0dcfe03f", "recipients": [ { "address": "2N1UvKhtSHLUa9YomSH7n9YMFCkMG2pbmsQ", "amount": "10000", "_id": "65529448bd87efe59c3b0158" } ], "coinSpecific": { "tbtc4": { "txHex": "010000000001010e4d3af014f9efe311062965d561b67f78a1759e7016605cd506ddd7041762d50000000023220020510ded26d712922bbb61bc68ef6766f836a03527820cbdc8b1551914eb467dafffffffff02102700000000000017a9145a581567fd2a630e61e34a696ab3bb887972886d87ad0f010000000000225120850d0ab466d15cb1565dd528d4d9709f3e46f41d41fe6d94aa01378e626983990500483045022100db45a8d94ee2144f7e29baa855d94a2bf0120707a7ab2fc93734ed94af972c460220558d00b91275aafc7805dfaaf9ab796adbe9f4e66dc467f7eb93b790671a323201000069522103c10ac628c880629ed0fd2a0563a898f4882baca45e15668a4d3064cf1ea379882103e56f84be4460080618ef869bb7b07096880760f748ba23efab533c2359f923bd21020ae81372264b5eac5c9dc7fe0b9a32bad00771c3a2c71f6e2c971823c3182ed653ae00000000" } }, "validTransaction": "010000000001010e4d3af014f9efe311062965d561b67f78a1759e7016605cd506ddd7041762d50000000023220020510ded26d712922bbb61bc68ef6766f836a03527820cbdc8b1551914eb467dafffffffff02102700000000000017a9145a581567fd2a630e61e34a696ab3bb887972886d87ad0f010000000000225120850d0ab466d15cb1565dd528d4d9709f3e46f41d41fe6d94aa01378e626983990400483045022100db45a8d94ee2144f7e29baa855d94a2bf0120707a7ab2fc93734ed94af972c460220558d00b91275aafc7805dfaaf9ab796adbe9f4e66dc467f7eb93b790671a323201473044022049e20c0073f42c9636408efc6c833ebf0e1a8ef13e8cb818dde2f4e2af7f7b7f022000cb3a321d65605b9d51d7f87e34306169607646c8d54a44011b021eff3dbe500169522103c10ac628c880629ed0fd2a0563a898f4882baca45e15668a4d3064cf1ea379882103e56f84be4460080618ef869bb7b07096880760f748ba23efab533c2359f923bd21020ae81372264b5eac5c9dc7fe0b9a32bad00771c3a2c71f6e2c971823c3182ed653ae00000000", "validTransactionHash": "5ea8d2b93997ed9fa3597a2f3113817c8216f573a0278c2533bb5db50fdb0dff" } }, "state": "approved", "scope": "wallet", "userIds": [ "62ab90e06dfda30007974f0a52a12995", "621d08a634ad8a0007fcddffd7c429cc" ], "approvalsRequired": 1, "singleRunResults": [ { "ruleId": "Custody Enterprise Transaction ID Verification", "triggered": false, "_id": "65529448bd87efe59c3b0157" } ], "resolvers": [ { "user": "621d08a634ad8a0007fcddffd7c429cc", "date": "2023-11-13T21:44:27.794Z", "resolutionType": "pending" } ] }

Next Steps

The traded assets transfer between Go Accounts. You can view the updated balances in your Go Account in BitGo or by calling the Get wallet by ID endpoint.

See Also