> ## Documentation Index
> Fetch the complete documentation index at: https://developers.portao3.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# /realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/transfer-requests/{transferRequestId}



## OpenAPI

````yaml /api-reference/banking.openapi.json put /realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/transfer-requests/{transferRequestId}
openapi: 3.0.3
info:
  title: Banking
  version: 1.0.0
  description: >-
    Portão 3 banking API. Generated by tools/openapi from code (routes +
    security) and the hand-written spec (request/response bodies). Banking
    attaches a zod validationSchema at the route; request bodies are resolved
    from it (object + array roots). Responses have no presenter layer, so they
    stay tier=unknown. Confidence tiers: generated:typed=107 copied:manual=7
    unknown=79.
servers:
  - url: https://api.banking.v2.portao3.com.br/
    description: production
  - url: https://api.banking.dev.3pers.com.br/
    description: development
security:
  - bearerAuth: []
tags:
  - name: Accounts
  - name: Wallets
  - name: Cards
  - name: PIX
  - name: PIX Keys (DICT)
  - name: PIX Charges
  - name: PIX Automatic
  - name: PIX Initiation (Open Finance)
  - name: PIX Infractions (MED)
  - name: Boleto
  - name: Boleto Charges
  - name: TED
  - name: Transfers
  - name: Transactions
  - name: Cashback
  - name: Currency Codes
  - name: Reversals
paths:
  /realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/transfer-requests/{transferRequestId}:
    put:
      tags:
        - Wallets
      summary: >-
        /realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/transfer-requests/{transferRequestId}
      operationId: >-
        putRealmsByRealmIdOrganizationsByOrganizationIdAccountsByAccountIdWalletsByWalletIdTransferRequestsByTransferRequestId
      parameters:
        - name: realmId
          in: path
          required: true
          schema:
            type: string
        - name: organizationId
          in: path
          required: true
          schema:
            type: string
        - name: accountId
          in: path
          required: true
          schema:
            type: string
        - name: walletId
          in: path
          required: true
          schema:
            type: string
        - name: transferRequestId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                customFields:
                  type: object
                  additionalProperties: {}
                scheduledAt:
                  type: string
                  format: date-time
                timeZone:
                  type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  realmId:
                    type: string
                  organizationId:
                    type: string
                  accountId:
                    type: string
                    description: >-
                      The account BOTH wallets belong to (one organization = one
                      account).
                  walletId:
                    type: string
                    description: >-
                      The SUBJECT wallet (the path wallet) — never the org
                      default wallet.
                  walletName:
                    type: string
                    description: >-
                      Display name of the subject wallet, snapshotted at
                      creation from the already-loaded wallet doc (a later
                      rename does not propagate) — carried so the policy-request
                      (and this doc's own reads) can show it without a wallet
                      lookup. Absent on docs created before the field existed
                      and on legacy wallets with no name.
                  defaultWalletId:
                    type: string
                    description: >-
                      The organization's default wallet — the counterparty on
                      every transfer request — snapshotted at creation so a
                      later default-wallet change cannot retarget an
                      already-open request.
                  destinationCategory:
                    type: string
                    enum:
                      - FLEX_NATIONAL
                      - FLEX_INTERNATIONAL
                      - FOOD
                      - GAS
                      - MOBILITY
                      - TOLL
                      - FLEX_NATIONAL_WITHOUT_WITHDRAWALS
                      - ADS
                      - SAAS
                      - HOTEL
                      - AIRLINES
                      - TRAVEL
                    description: >-
                      The balance category on the SUBJECT wallet's side — see
                      the payload.
                  amount:
                    type: number
                    description: >-
                      Signed integer cents — see
                      `CreateWalletTransferRequestPayload.amount`.
                  txnCurrency:
                    type: string
                    enum:
                      - '784'
                      - '971'
                      - '008'
                      - '051'
                      - '973'
                      - '032'
                      - '036'
                      - '533'
                      - '944'
                      - '977'
                      - '052'
                      - '050'
                      - '048'
                      - '108'
                      - '060'
                      - '096'
                      - '068'
                      - '984'
                      - '986'
                      - '044'
                      - '064'
                      - '072'
                      - '933'
                      - '084'
                      - '124'
                      - '976'
                      - '947'
                      - '756'
                      - '948'
                      - '990'
                      - '152'
                      - '156'
                      - '170'
                      - '970'
                      - '188'
                      - '192'
                      - '132'
                      - '203'
                      - '262'
                      - '208'
                      - '214'
                      - '012'
                      - '818'
                      - '232'
                      - '230'
                      - '978'
                      - '242'
                      - '238'
                      - '826'
                      - '981'
                      - '936'
                      - '292'
                      - '270'
                      - '324'
                      - '320'
                      - '328'
                      - '344'
                      - '340'
                      - '332'
                      - '348'
                      - '360'
                      - '376'
                      - '356'
                      - '368'
                      - '364'
                      - '352'
                      - '388'
                      - '400'
                      - '392'
                      - '404'
                      - '417'
                      - '116'
                      - '174'
                      - '408'
                      - '410'
                      - '414'
                      - '136'
                      - '398'
                      - '418'
                      - '422'
                      - '144'
                      - '430'
                      - '426'
                      - '434'
                      - '504'
                      - '498'
                      - '969'
                      - '807'
                      - '104'
                      - '496'
                      - '446'
                      - '929'
                      - '480'
                      - '462'
                      - '454'
                      - '484'
                      - '979'
                      - '458'
                      - '943'
                      - '516'
                      - '566'
                      - '558'
                      - '578'
                      - '524'
                      - '554'
                      - '512'
                      - '590'
                      - '604'
                      - '598'
                      - '608'
                      - '586'
                      - '985'
                      - '600'
                      - '634'
                      - '946'
                      - '941'
                      - '643'
                      - '646'
                      - '682'
                      - '090'
                      - '690'
                      - '938'
                      - '752'
                      - '702'
                      - '654'
                      - '925'
                      - '706'
                      - '968'
                      - '728'
                      - '930'
                      - '222'
                      - '760'
                      - '748'
                      - '764'
                      - '972'
                      - '934'
                      - '788'
                      - '776'
                      - '949'
                      - '780'
                      - '901'
                      - '834'
                      - '980'
                      - '800'
                      - '840'
                      - '997'
                      - '940'
                      - '858'
                      - '927'
                      - '860'
                      - '926'
                      - '928'
                      - '704'
                      - '548'
                      - '882'
                      - '396'
                      - '950'
                      - '961'
                      - '959'
                      - '955'
                      - '956'
                      - '957'
                      - '958'
                      - '951'
                      - '532'
                      - '960'
                      - '952'
                      - '964'
                      - '953'
                      - '962'
                      - '994'
                      - '963'
                      - '965'
                      - '999'
                      - '886'
                      - '710'
                      - '967'
                      - '924'
                    description: >-
                      The wallet's currency as an ISO-4217 numeric code, in
                      string form (`"986"` = BRL). Set from the wallet when the
                      request is created and never accepted as input. Absent on
                      requests created before this field existed.
                  description:
                    type: string
                  requester:
                    type: object
                    properties:
                      userId:
                        type: string
                      name:
                        type: string
                      email:
                        type: string
                    required:
                      - userId
                      - name
                      - email
                  status:
                    type: string
                    enum:
                      - PENDING_APPROVAL
                      - REQUESTED
                      - CONFIRMED
                      - CANCELLED
                      - EXPIRED
                      - FAILED
                      - SCHEDULED
                  policyRequestId:
                    type: string
                  autoResolutionRequestedAt:
                    type: string
                    description: >-
                      When a confirm first asked the policy engine to execute
                      the matched auto-approving policy for this request.
                      Informational; once set, every later confirm of this
                      request is reconciled against that execution.
                  scheduledAt:
                    type: string
                  scheduledTimeZone:
                    type: string
                  scheduleId:
                    type: string
                  approvalExpiresAt:
                    type: string
                  confirmedAt:
                    type: string
                  canceledAt:
                    type: string
                    description: >-
                      ONE `l` — the fleet spelling for this timestamp
                      (pix/boleto/ted all use `canceledAt`). The STATUS value
                      keeps two (`CANCELLED`), which all of them already share;
                      only the timestamp was inconsistent.
                  failureReason:
                    type: string
                  customFields:
                    type: object
                    additionalProperties: {}
                    description: Custom-field values, keyed by the definition's slug.
                  createdAt:
                    type: string
                  updatedAt:
                    type: string
                  environment:
                    type: string
                    enum:
                      - LIVE
                      - TEST
                  confirmingAt:
                    type: string
                  policy:
                    anyOf:
                      - type: object
                        properties:
                          id:
                            type: string
                          realmId:
                            type: string
                          organizationId:
                            type: string
                          context:
                            type: string
                            enum:
                              - PAYMENT
                              - SPEND_REVIEW
                              - TRAVEL
                            description: The business surface a policy governs.
                          name:
                            type: string
                          description:
                            type: string
                          order:
                            type: number
                            description: Evaluation sorts ascending; first match wins.
                          status:
                            type: string
                            enum:
                              - ACTIVE
                              - DISABLED
                              - ARCHIVED
                            description: >-
                              `ARCHIVED` is a soft delete: terminal, set only
                              through the archive endpoint, and never evaluated
                              against a transaction.
                          conditions:
                            type: object
                            properties:
                              logic:
                                type: string
                                enum:
                                  - AND
                                  - OR
                              groups:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    logic:
                                      type: string
                                      enum:
                                        - AND
                                        - OR
                                    dependsOn:
                                      type: array
                                      items:
                                        type: string
                                    items:
                                      type: array
                                      items:
                                        type: object
                                        properties:
                                          operator:
                                            type: string
                                            description: >-
                                              Same ConditionOperator union the
                                              security rules use (incl. LLM_EVALUATE).
                                          field:
                                            type: string
                                          maskType:
                                            type: string
                                          dynamicFieldValue:
                                            type: string
                                          value: {}
                                        required:
                                          - operator
                                          - field
                                  required:
                                    - logic
                                    - items
                                description: >-
                                  An EMPTY array matches unconditionally — the
                                  catch-all/default policy.
                            required:
                              - logic
                              - groups
                          createdAt:
                            anyOf:
                              - type: string
                              - type: string
                                format: date-time
                          updatedAt:
                            anyOf:
                              - type: string
                              - type: string
                                format: date-time
                          actions:
                            type: object
                            properties:
                              hierarchy:
                                type: boolean
                                description: >-
                                  true = approvals resolve one-by-one in array
                                  order.
                              autoAction:
                                type: string
                                enum:
                                  - APPROVE
                                  - DENY
                                  - NONE
                                description: >-
                                  What happens when a policy matches:

                                  - `APPROVE` — allowed outright, no
                                  policy-request

                                  - `DENY` — refused outright

                                  - `NONE` — an approval flow is required
                                  (`approvals` must be non-empty)
                              moveBalance:
                                type: object
                                properties:
                                  addBalance:
                                    type: boolean
                                  fromAccountId:
                                    type: string
                                    description: Required when `addBalance` is true.
                                  fromWalletId:
                                    type: string
                                    description: Required when `addBalance` is true.
                                required:
                                  - addBalance
                              approvals:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    type:
                                      type: string
                                      enum:
                                        - USER
                                        - GROUP
                                    id:
                                      type: string
                                      description: >-
                                        userId when type=USER, identity groupId
                                        when type=GROUP.
                                    name:
                                      type: string
                                  required:
                                    - id
                                    - type
                                  description: >-
                                    A participant as RENDERED on a read: the
                                    persisted spec plus the display name
                                    resolved at read time.


                                    `name` is never accepted on input and never
                                    persisted — a request body carrying it is
                                    rejected. It is optional on the way out: a
                                    participant whose name cannot be resolved is
                                    returned without one.
                                description: >-
                                  Non-empty when autoAction=NONE; empty/absent
                                  otherwise.
                            required:
                              - autoAction
                            description: >-
                              Evaluation response — a **pure read**.


                              A match returns the whole matched policy; NO match
                              returns exactly `{ actions: { autoAction:
                              "APPROVE" } }`. Callers key off
                              `actions.autoAction` and must tolerate every other
                              field being absent.


                              `approvals[]` carries each participant's display
                              name, resolved at read time exactly as the
                              business-policy CRUD reads do. The name is
                              best-effort: a participant that cannot be resolved
                              keeps its `{type, id}` and omits `name`.
                        required:
                          - actions
                      - type: object
                        properties:
                          error:
                            type: string
                        required:
                          - error
                    description: >-
                      Transient, never persisted — the ADVISORY business-policy
                      evaluation for the request as it now stands. Fail-open and
                      ALWAYS present: an unreachable evaluator answers `{ error:
                      "POLICY_EVALUATION_UNAVAILABLE" }`, never an absent key.


                      It is re-emitted here for the same reason CREATE emits one
                      — a policy may be conditioned on a custom field, so
                      editing the map can change whether the transfer will need
                      approval, and the client needs to see that BEFORE it calls
                      `/request` or `/confirm`.
                required:
                  - accountId
                  - amount
                  - createdAt
                  - defaultWalletId
                  - destinationCategory
                  - environment
                  - id
                  - organizationId
                  - policy
                  - realmId
                  - requester
                  - status
                  - updatedAt
                  - walletId
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````