---
title: "Approve a pending transfer request (Sandbox)"
method: POST
path: "/money/test_terminal_transfer_approvals/{id}/approve"
tags: ["money", "approvals", "sandbox"]
---

# Approve a pending transfer request (Sandbox)

`POST /money/test_terminal_transfer_approvals/{id}/approve`

## Request

- Base URL: `https://api.stablesea.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.stablesea.com/money/test_terminal_transfer_approvals/{id}/approve`
- Auth: none declared

Uses your business's isolated Sandbox data with your existing signed-in member permissions. Records an approval vote from the authorized signed-in session. Executes the movement only when currently eligible votes satisfy the snapshotted approval count and any required named-member sign-off. A successful non-final vote returns the request still pending. Refused if you are the requester or if the request was already decided. New execution is refused after the request expires. Execution rechecks the requester permissions and the applicable compliance privilege. A final fund vote additionally requires quote_key from POST /money/test_transfer_approvals/{id}/quotes; expired quotes, NAV drift, or unavailable Express settlement leave the request and final vote pending. A changed policy closes an unexecuted request as policy_changed.

## Path parameters

- `id` string, required

## Headers

- `Idempotency-Key` string: Optional client idempotency key, honored when sent; a duplicate submission with the same key is rejected with 409.

## Request body

- MoneyMovementsApproveTransferApprovalInput
  - `note` string: Optional plain-text comment, at most 500 characters; recorded with the successful decision.
  - `quote_key` string: Fresh checker quote key, required only when this vote executes a fund trade.

## Response `200`

OK

- MoneyMovementsTransferApprovalOutput
  - `transfer_approval` MoneyMovementsTransferApprovalView
    - `also_required_ind_id` string, nullable
    - `also_required_name` string
    - `also_required_satisfied` boolean
    - `amount_usd` MoneyfmtMoneyAmountView
      - `float` number, double, required
      - `formatted` MoneyfmtFormattedMoneyAmountView, required
        - `compact` string, required
        - `currency_sign` string, required
        - `currency_sign_position` string, required
        - `full` string, required
      - `precise` string, required
      - `symbol` string, required
      - `zero` boolean, required
    - `approvals_received` integer
    - `composed_policy` MoneyMovementsApprovalPolicyView
      - `action_allowed` boolean
      - `business_policy_revision` string, nullable
      - `permission_allowed` boolean
      - `requirements` MoneyMovementsApprovalClauseView[], nullable
        - `approvals_received` integer
        - `count` integer
        - `excluded_individual_ids` string[]
        - `id` string: Deterministic source-qualified snapshot clause key, not a resource identifier.
        - `individual_id` string
        - `individual_name` string
        - `kind` 'ordinary_quorum' | 'additional_named' | 'selected_member'
        - `progress_available` boolean
        - `satisfied` boolean
        - `source` 'business' | 'member'
        - `source_flow` 'ach_withdrawal' | 'wire_withdrawal' | 'onchain_withdrawal' | 'fund_buy' | 'fund_sell'
      - `revision` string
      - `valuation` MoneyMovementsApprovalPolicyValuationView
        - `amount_usd` string, nullable
        - `amount_usd_view` union
          - MoneyfmtMoneyAmountView
            - `float` number, double, required
            - `formatted` MoneyfmtFormattedMoneyAmountView, required
              - …
            - `precise` string, required
            - `symbol` string, required
            - `zero` boolean, required
          - unknown
        - `status` 'valued' | 'unavailable'
    - `controls` WithdrawaltraceEvaluation[]: Last recorded customer-visible control evaluations. Missing or empty evidence does not imply that a control was disabled.
      - `evaluated_ts` string, date-time, required
      - `result` 'passed' | 'waiting', required
      - `type` 'rail_access' | 'agreements' | 'destination' | 'withdrawal_limit' | 'business_eligibility' | 'approval' | 'release_delay' | 'destination_cooloff' | 'destination_authorization', required
    - `current_approver_names` string[], nullable: Current eligible approver display names excluding the requester; null when roster progress is unavailable.
    - `decided_by` string, nullable
    - `decided_ts` string, date-time, nullable: When the decision on the approval was recorded; absent while it is pending and when it expired without a decision
    - `decider_name` string: Historical tenant member display name of the final decider; omitted when no person decided.
    - `decision_comment` string: Optional comment from a recorded execution recovery decision, attributed to decided_by and decided_ts. Original vote comments remain on vote rows. The legacy decision_note can repeat a successful final decision's comment or contain a system outcome note.
    - `decision_note` string
    - `execution_expires_ts` string, date-time: Hard execution deadline; a financial stop never extends it. An expired instruction needs a new quote and new request.
    - `expires_ts` string, date-time: Request deadline, including a fresh post-lift lifetime when assigned. Historical only while withdrawal_release_held is true.
    - `flow_label` string
    - `group_id` string
    - `human_approval` 'unknown' | 'none' | 'required', required: Whether the saved request requires human approval. Unknown when historical requirements cannot be read.
    - `id` string
    - `money_movement_id` string, nullable
    - `native_asset` MoneyMovementsTransferApprovalAssetDisplay
      - `amount` string
      - `network` string
      - `symbol` string
    - `progress_available` boolean
    - `rail` string: Approval flow: ach_offramp, wire_offramp, onchain_withdrawal, fund_buy, or fund_sell
    - `ramp_fees` MoneyMovementsRampFeeDisclosure
      - `bank_fee_usd` string, required
      - `platform_fee_usdc` string, required
      - `total_debit_usdc` string, required
    - `release_ts` string, date-time, nullable: Earliest permitted execution time. Passing this time does not confirm execution; status and money_movement_id report the outcome.
    - `request_summary` MoneyMovementsTransferApprovalInstructions
      - `action` 'buy' | 'sell' | 'withdrawal'
      - `amount` MoneyfmtMoneyAmountView
        - `float` number, double, required
        - `formatted` MoneyfmtFormattedMoneyAmountView, required
          - `compact` string, required
          - `currency_sign` string, required
          - `currency_sign_position` string, required
          - `full` string, required
        - `precise` string, required
        - `symbol` string, required
        - `zero` boolean, required
      - `asset_symbol` string
      - `destination` MoneyMovementsTransferApprovalDestination
        - `account_id` string
        - `masked_account` string
        - `masked_address` string
      - `fee` MoneyfmtMoneyAmountView
        - `float` number, double, required
        - `formatted` MoneyfmtFormattedMoneyAmountView, required
          - `compact` string, required
          - `currency_sign` string, required
          - `currency_sign_position` string, required
          - `full` string, required
        - `precise` string, required
        - `symbol` string, required
        - `zero` boolean, required
      - `fund_route` MoneyMovementsTransferApprovalFundRoute
        - `pathway` 'standard' | 'express'
        - `pathway_defaulted` boolean
        - `source` 'platform' | 'stellar' | 'solana'
        - `source_defaulted` boolean
        - `source_network` 'ethereum' | 'stellar' | 'solana'
      - `purpose` string
      - `quote_id` string
      - `recipient_amount` MoneyfmtMoneyAmountView
        - `float` number, double, required
        - `formatted` MoneyfmtFormattedMoneyAmountView, required
          - `compact` string, required
          - `currency_sign` string, required
          - `currency_sign_position` string, required
          - `full` string, required
        - `precise` string, required
        - `symbol` string, required
        - `zero` boolean, required
      - `tax` MoneyfmtMoneyAmountView
        - `float` number, double, required
        - `formatted` MoneyfmtFormattedMoneyAmountView, required
          - `compact` string, required
          - `currency_sign` string, required
          - `currency_sign_position` string, required
          - `full` string, required
        - `precise` string, required
        - `symbol` string, required
        - `zero` boolean, required
      - `total_debit` MoneyfmtMoneyAmountView
        - `float` number, double, required
        - `formatted` MoneyfmtFormattedMoneyAmountView, required
          - `compact` string, required
          - `currency_sign` string, required
          - `currency_sign_position` string, required
          - `full` string, required
        - `precise` string, required
        - `symbol` string, required
        - `zero` boolean, required
    - `requested_by` string
    - `requested_ts` string, date-time
    - `requester_name` string
    - `required_approvals` integer
    - `selected_approver_name` string
    - `selected_approver_satisfied` boolean
    - `status` 'pending' | 'approved' | 'denied' | 'cancelled' | 'expired' | 'policy_changed' | 'failed'
    - `valuation_unavailable` boolean
    - `votes` MoneyMovementsTransferApprovalVoteView[], nullable
      - `approver` string
      - `approver_name` string: Approver full name from historical business membership; a team member when identity is unavailable. Display only, independent of current voting eligibility.
      - `decision` 'approved' | 'denied'
      - `note` string: Optional plain-text comment recorded with this immutable decision.
      - `voted_ts` string, date-time
    - `withdrawal_release_held` boolean, required: A pending withdrawal has recorded approval and remains held for execution. While true, expires_ts is historical and does not expire the request. Does not confirm execution.
    - `withdrawals_paused` boolean: Current generic withdrawal availability when known; absence is unknown.

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `409`: Conflict
- `429`: Too Many Requests
- `503`: Service Unavailable
- `default`: Error response.

## Changes

- **2026-11-13** `4e0d05c2b29a`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/stablesea/apis/stable-sea-backend/changes/money/test_terminal_transfer_approvals/:id/approve/post.md)

---

[API](https://skmtc.dev/stablesea/apis/stable-sea-backend.md) - [All operations](https://skmtc.dev/stablesea/apis/stable-sea-backend/llms.txt) - [OpenAPI document](https://skmtc.dev/stablesea/apis/stable-sea-backend/revisions/4e0d05c2b29a?raw)
