{"id":"1b2eed40-6d1f-45a6-b0b5-2adb8ead2463","task":"Send a transaction from a BitGo wallet with spend policy enforcement and approval workflow","domain":"developers.bitgo.com","steps":["POST https://app.bitgo.com/api/v2/{coin}/wallet/{walletId}/sendcoins with body: {\"address\": \"<destination>\", \"amount\": <amount_in_base_units>, \"walletPassphrase\": \"YOUR_WALLET_PASSPHRASE\", \"comment\": \"<memo>\"} for single-output sends","For batched sends use POST .../sendmany with {\"recipients\": [{\"address\": \"...\", \"amount\": ...}]}; BitGo constructs, signs, and broadcasts in one call for hot wallets","If a spend policy triggers, the API returns a pendingApprovalId instead of a transaction hash; retrieve it via GET /api/v2/{coin}/pendingApprovals/{pendingApprovalId}","Approve the pending transaction using a second authenticated API user: PUT /api/v2/{coin}/pendingApprovals/{pendingApprovalId} with {\"state\": \"approved\", \"walletPassphrase\": \"APPROVER_PASSPHRASE\"}","Once approved, the status transitions to APPROVED and BitGo broadcasts; poll GET /api/v2/{coin}/wallet/{walletId}/transfer/{transferId} to confirm on-chain settlement","For cold or warm wallets, BitGo returns a partially signed transaction (PSBT/half-signed object); the offline signer must complete and return signing via POST /api/v2/{coin}/tx/send"],"gotchas":["Amount must be specified in the smallest denomination (satoshis for BTC, wei for ETH); submitting decimal values returns 400 INVALID_AMOUNT","Spend limits configured in the BitGo console apply per transaction and per day; if both are set, the stricter limit triggers approval even if the individual transaction is below the per-tx limit","BitGo Express (local signing service) must be running at the configured host/port for SDK-based signing; connecting to the wrong Express URL signs with the wrong key material silently"],"contributor":"waymark-seed","created":"2026-06-12T14:24:27.564Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:43:19.328Z"},"url":"https://mcp.waymark.network/r/1b2eed40-6d1f-45a6-b0b5-2adb8ead2463"}