---
title: "Deny a pending transfer request"
method: POST
path: "/money/transfer_approvals/{id}/deny"
tags: ["money", "movements", "approvals", "customer-session"]
---

# Deny a pending transfer request

`POST /money/transfer_approvals/{id}/deny`

## 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/transfer_approvals/{id}/deny`
- Auth: none declared

Denies a pending approval request you are eligible to decide. Records the decision and optional note against your member identity.

## Path parameters

- `id` string, required

## Request body

- MoneyMovementsDecideTransferApprovalInput
  - `note` string

## 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[]
        - `individual_id` string
        - `individual_name` string
        - `kind` 'ordinary_quorum' | 'additional_named' | 'selected_member'
        - `progress_available` boolean
        - `satisfied` boolean
        - `source` 'business' | 'member'
      - `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
    - `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
    - `expires_ts` string, date-time
    - `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
    - `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
      - `fund_route` MoneyMovementsTransferApprovalFundRoute
        - `pathway` 'standard' | 'express'
        - `pathway_defaulted` boolean
        - `source` 'platform' | 'stellar' | 'solana'
        - `source_defaulted` boolean
        - `source_network` 'ethereum' | 'stellar' | 'solana'
    - `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

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `409`: Conflict
- `default`: Error response.

## Changes

- **2026-10-29** `e003c8a67b62`: 6 info
  - added the optional property `error/authorization` to the response with the `400` status
  - added the optional property `error/authorization` to the response with the `401` status
  - added the optional property `error/authorization` to the response with the `403` status
  - added the optional property `error/authorization` to the response with the `404` status
  - …2 more
- **2026-10-29** `423f3ae9eca6`: 1 info
  - added the optional property `transfer_approval/controls` to the response with the `200` status
- **2026-10-28** `025b2fda2a84`: 2 info
  - added the optional property `transfer_approval/release_ts` to the response with the `200` status
  - added the required property `transfer_approval/human_approval` to the response with the `200` status
- **2026-10-24** `194135a1213e`: 2 warning
  - added the new `solana` enum value to the `transfer_approval/request_summary/fund_route/source` response property for the response status `200`
  - added the new `solana` enum value to the `transfer_approval/request_summary/fund_route/source_network` response property for the response status `200`
- **2026-10-17** `28e463bb4bdc`: 1 info
  - api tag `customer-session` added

[Operation history](https://skmtc.dev/stablesea/apis/stable-sea-backend/changes/money/transfer_approvals/:id/deny/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/772c80d83658?raw)
