> ## 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.

# Create a transfer request

> Creates a transfer request: the wallet asks the organization's main wallet for money, or sends money back to it. Nothing moves yet.

A positive `amount` asks for money from the main wallet; a negative one sends it from this wallet back to the main wallet. The request starts `REQUESTED` and comes back with `policy`: what the organization's business policies decide about it, for information only. From there:

* `APPROVE` (also when no policy matches) — confirm it, and the money moves.
* `NONE` — send it for approval; once its approvers approve it, it is confirmed automatically.
* `DENY` — its requester can't confirm it; an organization admin can cancel it.

[Business policies and approvals](https://developers.portao3.com.br/guides/policies-and-approvals.md) walks through the whole flow.

Organization admins can confirm a `REQUESTED` request whatever the policies decide. Send `scheduledAt` to move the money on a future day instead of on confirmation. Custom fields are checked against the organization's transaction custom fields; required ones can be filled in later, before the request is sent for approval or confirmed. The wallet can't be the organization's main wallet.

Organization admins can create requests for every wallet; other users only for the wallets shared with them as `OWNER` or `USER`.


## OpenAPI

````yaml /api-reference/banking.openapi.json post /realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/transfer-requests
openapi: 3.0.3
info:
  title: Banking
  version: 1.0.0
  description: >-
    Portão 3 banking API. Every endpoint requires a bearer token in the
    Authorization header (Authorization: Bearer <token>) unless its page states
    otherwise; see the Authentication guide. That requirement is not repeated
    per endpoint. 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=262 copied:manual=1 unknown=35.
servers:
  - url: https://api.banking.v2.portao3.com.br/
    description: production
  - url: https://api.banking.dev.3pers.com.br/
    description: development
security: []
tags:
  - name: Accounts
  - name: Account Limits
  - name: Wallets
  - name: Transaction Limits
  - name: Transfers
  - name: Cards
  - name: Card Limits
  - name: Cards 3DS
  - name: Pix Payments
  - name: PIX Keys (DICT)
  - name: PIX Charges
  - name: PIX Automatic
  - name: PIX Initiation (Open Finance)
  - name: PIX Infractions (MED)
  - name: Boleto Payments
  - name: Boleto Charges
  - name: TED
  - name: Transactions
  - name: Cashback
  - name: Currency Codes
  - name: Reversals
paths:
  /realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/transfer-requests:
    post:
      tags:
        - Transfers
      summary: Create a transfer request
      description: >-
        Creates a transfer request: the wallet asks the organization's main
        wallet for money, or sends money back to it. Nothing moves yet.
      operationId: >-
        postRealmsByRealmIdOrganizationsByOrganizationIdAccountsByAccountIdWalletsByWalletIdTransferRequests
      parameters:
        - name: realmId
          in: path
          required: true
          description: |-
            ID of your realm.

            Format: `UUID`
          schema:
            type: string
            format: uuid
          example: f495ff0c-ab54-4f99-8e92-ca8682e4de9b
        - name: organizationId
          in: path
          required: true
          description: |-
            ID of the organization the wallet belongs to.

            Format: `UUID`
          schema:
            type: string
            format: uuid
          example: c4bd3f21-dfbd-44e8-8055-68ba15bed410
        - name: accountId
          in: path
          required: true
          description: ID of the organization's account (24 hexadecimal characters).
          schema:
            type: string
            pattern: ^[0-9a-fA-F]{24}$
          example: 66f2a1c7b4d3e80012c9a0b4
        - name: walletId
          in: path
          required: true
          description: >-
            ID of the wallet that receives or returns the money (24 hexadecimal
            characters). It can't be the organization's main wallet.
          schema:
            type: string
            pattern: ^([0-9a-fA-F]{24}|default)$
          example: 66f2a3d1b4d3e80012c9a0d2
        - name: x-environment
          in: header
          required: false
          description: >-
            Environment of the wallet: `LIVE` (production) or `TEST` (sandbox).
            When you omit it, the request runs in `TEST`; any other value is
            rejected.
          schema:
            type: string
            enum:
              - LIVE
              - TEST
          example: LIVE
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                destinationCategory:
                  type: string
                  enum:
                    - FLEX_NATIONAL
                    - FLEX_INTERNATIONAL
                    - FOOD
                    - GAS
                    - MOBILITY
                    - TOLL
                    - FLEX_NATIONAL_WITHOUT_WITHDRAWALS
                    - ADS
                    - SAAS
                    - HOTEL
                    - AIRLINES
                    - TRAVEL
                  description: >-
                    Balance category of this wallet the transfer moves: where
                    the money lands when `amount` is positive, and where it is
                    taken from when `amount` is negative. The organization's
                    main wallet always uses `FLEX_INTERNATIONAL`.
                  example: FLEX_NATIONAL
                amount:
                  type: integer
                  description: >-
                    Amount in cents, never zero. Positive moves money from the
                    organization's main wallet into this wallet; negative sends
                    it from this wallet back to the main wallet.
                  example: 250000
                description:
                  description: Description of the transfer.
                  example: Verba de eventos — novembro
                  type: string
                scheduledAt:
                  description: >-
                    Day to make the transfer, as `YYYY-MM-DD` (a date-time
                    counts as its UTC day). Omit it, or send today — in São
                    Paulo — to transfer as soon as the request is confirmed. A
                    day before today in São Paulo is rejected.
                  example: '2026-11-10'
                  anyOf:
                    - type: string
                      format: date
                    - type: string
                      format: date-time
                timeZone:
                  description: >-
                    Time zone that decides what "today" is for `scheduledAt`.
                    Only `America/Sao_Paulo` is supported: it is the default,
                    and any other value — another valid time zone included — is
                    read as `America/Sao_Paulo`.
                  example: America/Sao_Paulo
                  type: string
                customFields:
                  description: >-
                    Values of the organization's transaction custom fields,
                    keyed by each field's `slug`. Each value must fit its
                    field's type and options; required fields can be filled in
                    later, before the request is sent for approval or confirmed.


                    ---


                    Example: `{"cost-center":"CC-1020"}`
                  example:
                    cost-center: CC-1020
                  type: object
                  additionalProperties: {}
              required:
                - destinationCategory
                - amount
      responses:
        '201':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: ID of the transfer request.
                    example: 6720d4f1b4d3e80012c9a2e7
                  realmId:
                    type: string
                    description: ID of the realm.
                    example: f495ff0c-ab54-4f99-8e92-ca8682e4de9b
                    format: uuid
                  organizationId:
                    type: string
                    description: ID of the organization.
                    example: c4bd3f21-dfbd-44e8-8055-68ba15bed410
                    format: uuid
                  accountId:
                    type: string
                    description: ID of the account both wallets belong to.
                    example: 66f2a1c7b4d3e80012c9a0b4
                  walletId:
                    type: string
                    description: >-
                      ID of the wallet that receives the money — or sends it
                      back, when `amount` is negative.
                    example: 66f2a3d1b4d3e80012c9a0d2
                  walletName:
                    type: string
                    description: >-
                      Name of that wallet when the request was created. Absent
                      when the wallet had no name.
                    example: Marketing
                  defaultWalletId:
                    type: string
                    description: >-
                      ID of the organization's main wallet when the request was
                      created: the other side of the transfer. Absent only on a
                      few requests from the first version of transfer requests,
                      which carry `originWalletId` instead.
                    example: 66f2a1d0b4d3e80012c9a0b9
                  environment:
                    type: string
                    enum:
                      - LIVE
                      - TEST
                    description: >-
                      Environment of the request: `LIVE` (production) or `TEST`
                      (sandbox).
                    example: LIVE
                  destinationCategory:
                    type: string
                    enum:
                      - FLEX_NATIONAL
                      - FLEX_INTERNATIONAL
                      - FOOD
                      - GAS
                      - MOBILITY
                      - TOLL
                      - FLEX_NATIONAL_WITHOUT_WITHDRAWALS
                      - ADS
                      - SAAS
                      - HOTEL
                      - AIRLINES
                      - TRAVEL
                      - BLOCKED
                      - CASHBACK
                    description: >-
                      Balance category of `walletId` the transfer moves: where
                      the money lands when `amount` is positive, and where it is
                      taken from when `amount` is negative. The main wallet
                      always uses `FLEX_INTERNATIONAL`.
                    example: FLEX_NATIONAL
                  amount:
                    type: number
                    description: >-
                      Amount in cents, never zero. Positive moves money from the
                      organization's main wallet into `walletId`; negative sends
                      it from `walletId` back to the main wallet.
                    example: 250000
                  txnCurrency:
                    type: string
                    description: >-
                      Currency of the amount, as an ISO 4217 numeric code: `986`
                      (Brazilian real).
                    example: '986'
                  description:
                    type: string
                    description: Description of the transfer. Absent when none was given.
                    example: Verba de eventos — novembro
                  requester:
                    type: object
                    properties:
                      userId:
                        type: string
                        description: >-
                          ID of the user who created the request. Absent only on
                          a few requests from the first version of transfer
                          requests, which carry `id` instead.
                        example: e3553bc1-5e20-4e17-b22a-a796fda0aa99
                        format: uuid
                      name:
                        type: string
                        description: >-
                          Name of the user, as it was when they created the
                          request. Absent only on a few requests from the first
                          version of transfer requests.
                        example: Mariana Costa
                      email:
                        type: string
                        description: >-
                          E-mail of the user, as it was when they created the
                          request.
                        example: mariana.costa@acme.com.br
                      id:
                        type: string
                        description: >-
                          ID of the user, on a few requests from the first
                          version of transfer requests only.
                        example: e3553bc1-5e20-4e17-b22a-a796fda0aa99
                        format: uuid
                    required:
                      - email
                    description: Who created the request.
                  status:
                    type: string
                    enum:
                      - PENDING_APPROVAL
                      - REQUESTED
                      - CONFIRMED
                      - CANCELLED
                      - EXPIRED
                      - FAILED
                      - SCHEDULED
                      - DENIED
                    description: >-
                      Status of the request:

                      - `REQUESTED` — created; it can still be edited, sent for
                      approval or confirmed.

                      - `PENDING_APPROVAL` — waiting for the approvers the
                      business policy names.

                      - `CONFIRMED` — the money moved.

                      - `SCHEDULED` — confirmed for a future day; the money
                      moves on `scheduledAt`.

                      - `CANCELLED` — cancelled before the money moved.

                      - `EXPIRED` — the approval deadline passed before it was
                      approved.

                      - `FAILED` — the transfer was refused, for the reason in
                      `failureReason`.

                      - `DENIED` — only on a few requests from the first version
                      of transfer requests.
                    example: REQUESTED
                  policyRequestId:
                    type: string
                    description: >-
                      ID of the approval request opened when the request was
                      sent for approval, or of the automatic approval that
                      confirmed it. Absent otherwise.
                    example: 4d2c1b0a-9f8e-4d7c-8b6a-5f4e3d2c1b0a
                  autoResolutionRequestedAt:
                    type: string
                    description: >-
                      When a confirmation first asked for the automatic approval
                      of the matching business policy. Absent when no
                      confirmation needed it.
                    example: '2026-11-02T13:12:05.000Z'
                    format: date-time
                  scheduledAt:
                    type: string
                    description: >-
                      Day the transfer is scheduled for. Absent when it
                      transfers as soon as it is confirmed.
                    example: '2026-11-10T00:00:00.000Z'
                    format: date-time
                  scheduledTimeZone:
                    type: string
                    description: >-
                      Time zone `scheduledAt` was read in — `America/Sao_Paulo`,
                      the only one supported. Present only with `scheduledAt`.
                    example: America/Sao_Paulo
                  scheduleId:
                    type: string
                    description: >-
                      ID of the schedule created when a request for a future day
                      was confirmed. Cancel the request to cancel it.
                    example: 8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f
                    format: uuid
                  approvalExpiresAt:
                    type: string
                    description: >-
                      Deadline for the approval: 21:00 (São Paulo time) of the
                      day the transfer is for, and at least one hour after the
                      request was sent for approval. Present once it was sent
                      for approval.
                    example: '2026-11-03T00:00:00.000Z'
                    format: date-time
                  confirmedAt:
                    type: string
                    description: When the money moved.
                    example: '2026-11-02T13:12:07.000Z'
                    format: date-time
                  canceledAt:
                    type: string
                    description: When the request was cancelled.
                    example: '2026-11-02T15:40:00.000Z'
                    format: date-time
                  failureReason:
                    type: string
                    description: >-
                      Why the transfer failed, as an error code — for example
                      `INSUFFICIENT_FUNDS`, `ACCOUNT_BLOCKED` or
                      `BANKING_PROVIDER_UNAVAILABLE`. Only on `FAILED` requests.
                    example: INSUFFICIENT_FUNDS
                  customFields:
                    type: object
                    additionalProperties: {}
                    description: >-
                      Values of the organization's transaction custom fields,
                      keyed by each field's `slug`. Absent when the request has
                      none.


                      ---


                      Example: `{"cost-center":"CC-1020"}`
                    example:
                      cost-center: CC-1020
                  createdAt:
                    type: string
                    description: When the request was created.
                    example: '2026-11-02T13:10:22.000Z'
                    format: date-time
                  updatedAt:
                    type: string
                    description: When the request last changed.
                    example: '2026-11-02T13:10:22.000Z'
                    format: date-time
                  decision:
                    type: object
                    additionalProperties: {}
                    description: >-
                      Decision recorded on a few requests from the first version
                      of transfer requests.
                  deniedAt:
                    type: string
                    description: >-
                      When the request was denied, on a few requests from the
                      first version of transfer requests.
                    example: '2025-11-20T18:05:00.000Z'
                    format: date-time
                  originAccountId:
                    type: string
                    description: >-
                      Account the money came from, on a few requests from the
                      first version of transfer requests.
                    example: 66f2a1c7b4d3e80012c9a0b4
                  originWalletId:
                    type: string
                    description: >-
                      Wallet the money came from, on a few requests from the
                      first version of transfer requests.
                    example: 66f2a1d0b4d3e80012c9a0b9
                  sourceCategory:
                    type: string
                    enum:
                      - FLEX_NATIONAL
                      - FLEX_INTERNATIONAL
                      - FOOD
                      - GAS
                      - MOBILITY
                      - TOLL
                      - FLEX_NATIONAL_WITHOUT_WITHDRAWALS
                      - ADS
                      - SAAS
                      - HOTEL
                      - AIRLINES
                      - TRAVEL
                      - BLOCKED
                      - CASHBACK
                    description: >-
                      Balance category the money came from, on a few requests
                      from the first version of transfer requests.
                    example: FLEX_INTERNATIONAL
                  policy:
                    anyOf:
                      - type: object
                        properties:
                          actions:
                            type: object
                            properties:
                              autoAction:
                                type: string
                                enum:
                                  - APPROVE
                                  - DENY
                                  - NONE
                                description: >-
                                  `APPROVE` — the transfer can be confirmed
                                  right away; `DENY` — it is refused; `NONE` —
                                  it needs approval from `approvals`. When no
                                  policy matches, this is `APPROVE` and no other
                                  field of the policy is present.
                                example: NONE
                              hierarchy:
                                type: boolean
                                description: >-
                                  Whether the approvers decide one after the
                                  other, in the order of `approvals`, instead of
                                  all at once.
                                example: false
                              moveBalance:
                                type: object
                                properties:
                                  addBalance:
                                    type: boolean
                                    description: >-
                                      Whether the policy adds the missing
                                      balance to the wallet before the transfer.
                                    example: true
                                  fromAccountId:
                                    type: string
                                    description: >-
                                      Account the top-up comes from. Present
                                      when `addBalance` is `true`.
                                    example: 66f2a1c7b4d3e80012c9a0b4
                                  fromWalletId:
                                    type: string
                                    description: >-
                                      Wallet the top-up comes from. Present when
                                      `addBalance` is `true`.
                                    example: 66f2a1d0b4d3e80012c9a0b9
                                required:
                                  - addBalance
                                description: >-
                                  Whether the policy tops up the wallet before
                                  the transfer.
                              approvals:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    type:
                                      type: string
                                      enum:
                                        - USER
                                        - GROUP
                                      description: >-
                                        `USER` for a user, `GROUP` for a group
                                        of users.
                                      example: USER
                                    id:
                                      type: string
                                      description: ID of the user or of the group.
                                      example: 0b6f2c1e-8d4a-4f3b-9a7e-5c2d1e0f9a8b
                                    name:
                                      type: string
                                      description: >-
                                        Name of the user or of the group. Absent
                                        when it can't be read at that moment.
                                      example: Rafael Lima
                                  required:
                                    - type
                                    - id
                                  description: An approver named by a business policy.
                                description: >-
                                  Who must approve the transfer. Present when
                                  `autoAction` is `NONE`.
                            required:
                              - autoAction
                            description: What the policy decides.
                          id:
                            type: string
                            description: ID of the policy.
                            example: 3f2e1d0c-9b8a-4c7d-8e6f-5a4b3c2d1e0f
                          realmId:
                            type: string
                            description: ID of the realm.
                            example: f495ff0c-ab54-4f99-8e92-ca8682e4de9b
                            format: uuid
                          organizationId:
                            type: string
                            description: ID of the organization.
                            example: c4bd3f21-dfbd-44e8-8055-68ba15bed410
                            format: uuid
                          context:
                            type: string
                            description: >-
                              Kind of operation the policy governs: `PAYMENT`
                              for transfers and payments.
                            example: PAYMENT
                          name:
                            type: string
                            description: Name of the policy.
                            example: Transferências acima de R$ 1.000
                          description:
                            type: string
                            description: Description of the policy.
                            example: >-
                              Pede aprovação do financeiro para transferências
                              acima de R$ 1.000.
                          order:
                            type: number
                            description: >-
                              Position of the policy in the organization's
                              evaluation order; the first that matches wins.
                            example: 1
                          status:
                            type: string
                            description: Status of the policy.
                            example: ACTIVE
                          conditions:
                            type: object
                            properties:
                              logic:
                                type: string
                                enum:
                                  - AND
                                  - OR
                                description: >-
                                  `AND` — every group must match; `OR` — any one
                                  is enough.
                                example: AND
                              groups:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    logic:
                                      type: string
                                      enum:
                                        - AND
                                        - OR
                                      description: >-
                                        `AND` — every condition must match; `OR`
                                        — any one is enough.
                                      example: AND
                                    dependsOn:
                                      type: array
                                      items:
                                        type: string
                                      description: |-
                                        Other groups this group depends on.

                                        ---

                                        Example: `[]`
                                      example: []
                                    items:
                                      type: array
                                      items:
                                        type: object
                                        properties:
                                          operator:
                                            type: string
                                            description: >-
                                              How the field is compared, such as
                                              `GREATER_THAN` or `EQUALS`.
                                            example: GREATER_THAN
                                          field:
                                            type: string
                                            description: >-
                                              Field of the transfer the condition
                                              reads.
                                            example: amount
                                          maskType:
                                            type: string
                                            description: >-
                                              Format the value is compared in, when
                                              the field needs one.
                                            example: CURRENCY
                                          dynamicFieldValue:
                                            type: string
                                            description: >-
                                              Another field whose value is compared
                                              instead of `value`.
                                            example: customFields.cost-center
                                          value:
                                            description: Value the field is compared with.
                                            example: 100000
                                        required:
                                          - operator
                                          - field
                                        description: One condition of a business policy.
                                      description: The conditions of the group.
                                  required:
                                    - logic
                                    - items
                                  description: A group of conditions of a business policy.
                                description: >-
                                  The groups of conditions. With none, the
                                  policy matches every transfer.
                            required:
                              - logic
                              - groups
                            description: The conditions the policy matches.
                          createdAt:
                            type: string
                            description: When the policy was created.
                            example: '2026-09-15T14:00:00.000Z'
                            format: date-time
                          updatedAt:
                            type: string
                            description: When the policy last changed.
                            example: '2026-10-01T09:30:00.000Z'
                            format: date-time
                        required:
                          - actions
                        description: >-
                          The organization's business policy that matches the
                          transfer, and what it decides. When no policy matches,
                          only `actions.autoAction` (`APPROVE`) is present.
                        title: Policy evaluation
                      - type: object
                        properties:
                          error:
                            type: string
                            description: Always `POLICY_EVALUATION_UNAVAILABLE`.
                            example: POLICY_EVALUATION_UNAVAILABLE
                        required:
                          - error
                        description: >-
                          The organization's business policies couldn't be
                          evaluated at that moment. The request was still saved;
                          evaluate it again by editing it, or confirm it, which
                          evaluates the policies anew.
                        title: Evaluation unavailable
                    description: >-
                      The business policy that matches the request as it stands,
                      and what it decides: the transfer can be confirmed right
                      away (`APPROVE`), it needs approval (`NONE`) or it is
                      refused (`DENY`). Informative only — nothing is enforced
                      until the request is sent for approval or confirmed.
                required:
                  - accountId
                  - amount
                  - createdAt
                  - destinationCategory
                  - environment
                  - id
                  - organizationId
                  - policy
                  - realmId
                  - requester
                  - status
                  - updatedAt
                  - walletId
                description: >-
                  A transfer request, with what the organization's business
                  policies say about it.
              examples:
                policy-evaluation:
                  summary: Policy evaluation
                  value:
                    id: 6720d4f1b4d3e80012c9a2e7
                    realmId: f495ff0c-ab54-4f99-8e92-ca8682e4de9b
                    organizationId: c4bd3f21-dfbd-44e8-8055-68ba15bed410
                    accountId: 66f2a1c7b4d3e80012c9a0b4
                    walletId: 66f2a3d1b4d3e80012c9a0d2
                    walletName: Marketing
                    defaultWalletId: 66f2a1d0b4d3e80012c9a0b9
                    environment: LIVE
                    destinationCategory: FLEX_NATIONAL
                    amount: 250000
                    txnCurrency: '986'
                    description: Verba de eventos — novembro
                    requester:
                      userId: e3553bc1-5e20-4e17-b22a-a796fda0aa99
                      name: Mariana Costa
                      email: mariana.costa@acme.com.br
                      id: e3553bc1-5e20-4e17-b22a-a796fda0aa99
                    status: REQUESTED
                    policyRequestId: 4d2c1b0a-9f8e-4d7c-8b6a-5f4e3d2c1b0a
                    autoResolutionRequestedAt: '2026-11-02T13:12:05.000Z'
                    scheduledAt: '2026-11-10T00:00:00.000Z'
                    scheduledTimeZone: America/Sao_Paulo
                    scheduleId: 8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f
                    approvalExpiresAt: '2026-11-03T00:00:00.000Z'
                    confirmedAt: '2026-11-02T13:12:07.000Z'
                    canceledAt: '2026-11-02T15:40:00.000Z'
                    failureReason: INSUFFICIENT_FUNDS
                    customFields:
                      cost-center: CC-1020
                    createdAt: '2026-11-02T13:10:22.000Z'
                    updatedAt: '2026-11-02T13:10:22.000Z'
                    deniedAt: '2025-11-20T18:05:00.000Z'
                    originAccountId: 66f2a1c7b4d3e80012c9a0b4
                    originWalletId: 66f2a1d0b4d3e80012c9a0b9
                    sourceCategory: FLEX_INTERNATIONAL
                    policy:
                      actions:
                        autoAction: NONE
                        hierarchy: false
                        moveBalance:
                          addBalance: true
                          fromAccountId: 66f2a1c7b4d3e80012c9a0b4
                          fromWalletId: 66f2a1d0b4d3e80012c9a0b9
                        approvals:
                          - type: USER
                            id: 0b6f2c1e-8d4a-4f3b-9a7e-5c2d1e0f9a8b
                            name: Rafael Lima
                      id: 3f2e1d0c-9b8a-4c7d-8e6f-5a4b3c2d1e0f
                      realmId: f495ff0c-ab54-4f99-8e92-ca8682e4de9b
                      organizationId: c4bd3f21-dfbd-44e8-8055-68ba15bed410
                      context: PAYMENT
                      name: Transferências acima de R$ 1.000
                      description: >-
                        Pede aprovação do financeiro para transferências acima
                        de R$ 1.000.
                      order: 1
                      status: ACTIVE
                      conditions:
                        logic: AND
                        groups:
                          - logic: AND
                            dependsOn: []
                            items:
                              - operator: GREATER_THAN
                                field: amount
                                maskType: CURRENCY
                                dynamicFieldValue: customFields.cost-center
                                value: 100000
                      createdAt: '2026-09-15T14:00:00.000Z'
                      updatedAt: '2026-10-01T09:30:00.000Z'
                evaluation-unavailable:
                  summary: Evaluation unavailable
                  value:
                    id: 6720d4f1b4d3e80012c9a2e7
                    realmId: f495ff0c-ab54-4f99-8e92-ca8682e4de9b
                    organizationId: c4bd3f21-dfbd-44e8-8055-68ba15bed410
                    accountId: 66f2a1c7b4d3e80012c9a0b4
                    walletId: 66f2a3d1b4d3e80012c9a0d2
                    walletName: Marketing
                    defaultWalletId: 66f2a1d0b4d3e80012c9a0b9
                    environment: LIVE
                    destinationCategory: FLEX_NATIONAL
                    amount: 250000
                    txnCurrency: '986'
                    description: Verba de eventos — novembro
                    requester:
                      userId: e3553bc1-5e20-4e17-b22a-a796fda0aa99
                      name: Mariana Costa
                      email: mariana.costa@acme.com.br
                      id: e3553bc1-5e20-4e17-b22a-a796fda0aa99
                    status: REQUESTED
                    policyRequestId: 4d2c1b0a-9f8e-4d7c-8b6a-5f4e3d2c1b0a
                    autoResolutionRequestedAt: '2026-11-02T13:12:05.000Z'
                    scheduledAt: '2026-11-10T00:00:00.000Z'
                    scheduledTimeZone: America/Sao_Paulo
                    scheduleId: 8c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f
                    approvalExpiresAt: '2026-11-03T00:00:00.000Z'
                    confirmedAt: '2026-11-02T13:12:07.000Z'
                    canceledAt: '2026-11-02T15:40:00.000Z'
                    failureReason: INSUFFICIENT_FUNDS
                    customFields:
                      cost-center: CC-1020
                    createdAt: '2026-11-02T13:10:22.000Z'
                    updatedAt: '2026-11-02T13:10:22.000Z'
                    deniedAt: '2025-11-20T18:05:00.000Z'
                    originAccountId: 66f2a1c7b4d3e80012c9a0b4
                    originWalletId: 66f2a1d0b4d3e80012c9a0b9
                    sourceCategory: FLEX_INTERNATIONAL
                    policy:
                      error: POLICY_EVALUATION_UNAVAILABLE
        '403':
          description: '`FORBIDDEN_WALLET` — You can''t use this wallet.'
          content:
            application/json:
              schema:
                type: object
                properties:
                  traceId:
                    type: string
                    description: >-
                      Identifier of the request that failed. Quote it when
                      contacting support.
                    example: 1-68ee2a1b-3c4d5e6f7a8b9c0d1e2f3a4b
                  code:
                    type: string
                    enum:
                      - FORBIDDEN_WALLET
                    description: >-
                      Stable, machine-readable error code. Branch on this, never
                      on `message`.
                  origin:
                    type: string
                    enum:
                      - BANKING
                    description: Service that produced the error.
                  message:
                    type: string
                    description: >-
                      Human-readable explanation. Its wording may change without
                      notice.
                required:
                  - traceId
                  - code
                  - origin
                  - message
              example:
                traceId: 1-68ee2a1b-3c4d5e6f7a8b9c0d1e2f3a4b
                code: FORBIDDEN_WALLET
                origin: BANKING
                message: >-
                  You do not have permission to perform this action on this
                  wallet
        '404':
          description: >-
            `ACCOUNT_NOT_FOUND` — No account with this ID exists in the
            organization.


            `WALLET_NOT_FOUND` — No wallet with this ID exists in the account
            and environment, or the organization has no main wallet in it.
          content:
            application/json:
              schema:
                type: object
                properties:
                  traceId:
                    type: string
                    description: >-
                      Identifier of the request that failed. Quote it when
                      contacting support.
                    example: 1-68ee2a1b-3c4d5e6f7a8b9c0d1e2f3a4b
                  code:
                    type: string
                    enum:
                      - ACCOUNT_NOT_FOUND
                      - WALLET_NOT_FOUND
                    description: >-
                      Stable, machine-readable error code. Branch on this, never
                      on `message`.
                  origin:
                    type: string
                    enum:
                      - BANKING
                    description: Service that produced the error.
                  message:
                    type: string
                    description: >-
                      Human-readable explanation. Its wording may change without
                      notice.
                required:
                  - traceId
                  - code
                  - origin
                  - message
              example:
                traceId: 1-68ee2a1b-3c4d5e6f7a8b9c0d1e2f3a4b
                code: ACCOUNT_NOT_FOUND
                origin: BANKING
                message: Account not found
        '422':
          description: >-
            `BAD_REQUEST` — A path parameter is not a valid ID or the body
            failed validation; `fields` lists each offending field.


            `TRANSFER_REQUEST_DEFAULT_WALLET_NOT_ALLOWED` — The wallet is the
            organization's main wallet.


            `INVALID_SCHEDULED_AT` — `scheduledAt` is a past day.


            `CUSTOM_FIELD_NOT_FOUND` — A `customFields` key is not the `slug` of
            an active transaction custom field of the organization; `fields`
            names it.


            `CUSTOM_FIELD_NOT_ALLOWED` — A `customFields` key belongs to a
            custom field that doesn't apply to transactions; `fields` names it.


            `CUSTOM_FIELD_INVALID_VALUE` — A `customFields` value doesn't fit
            its field's type or options; `fields` names it.
          content:
            application/json:
              schema:
                type: object
                properties:
                  traceId:
                    type: string
                    description: >-
                      Identifier of the request that failed. Quote it when
                      contacting support.
                    example: 1-68ee2a1b-3c4d5e6f7a8b9c0d1e2f3a4b
                  code:
                    type: string
                    enum:
                      - BAD_REQUEST
                      - TRANSFER_REQUEST_DEFAULT_WALLET_NOT_ALLOWED
                      - INVALID_SCHEDULED_AT
                      - CUSTOM_FIELD_NOT_FOUND
                      - CUSTOM_FIELD_NOT_ALLOWED
                      - CUSTOM_FIELD_INVALID_VALUE
                    description: >-
                      Stable, machine-readable error code. Branch on this, never
                      on `message`.
                  origin:
                    type: string
                    enum:
                      - BANKING
                    description: Service that produced the error.
                  message:
                    type: string
                    description: >-
                      Human-readable explanation. Its wording may change without
                      notice.
                  fields:
                    type: array
                    description: >-
                      One entry per invalid request field (validation errors
                      only).
                    items:
                      type: object
                      properties:
                        field:
                          type: string
                          description: >-
                            Path of the invalid field, e.g. `label` or
                            `values[0].value`.
                          example: label
                        message:
                          type: string
                          description: Why the field was rejected.
                          example: label is required
                        code:
                          type: string
                          description: >-
                            `<FIELD>_<REASON>` — e.g. `LABEL_REQUIRED`,
                            `TYPE_ONE_OF`, `VALUES_VALUE_TYPE_ERROR`.
                          example: LABEL_REQUIRED
                        values:
                          type: array
                          items:
                            type: string
                          description: >-
                            The accepted values, when the field is an
                            enumeration.
                      required:
                        - field
                        - message
                        - code
                required:
                  - traceId
                  - code
                  - origin
                  - message
              example:
                traceId: 1-68ee2a1b-3c4d5e6f7a8b9c0d1e2f3a4b
                code: BAD_REQUEST
                origin: BANKING
                message: >-
                  Bad Request: Your request is invalid or incomplete. Please
                  make sure you are requesting with the right fields.
                fields:
                  - field: destinationCategory
                    message: >-
                      Invalid option: expected one of
                      "FLEX_NATIONAL"|"FLEX_INTERNATIONAL"|"FOOD"|"GAS"|"MOBILITY"|"TOLL"|"FLEX_NATIONAL_WITHOUT_WITHDRAWALS"|"ADS"|"SAAS"|"HOTEL"|"AIRLINES"|"TRAVEL"
                    code: DESTINATIONCATEGORY_ONE_OF
                    values:
                      - FLEX_NATIONAL
                      - FLEX_INTERNATIONAL
                      - FOOD
                      - GAS
                      - MOBILITY
                      - TOLL
                      - FLEX_NATIONAL_WITHOUT_WITHDRAWALS
                      - ADS
                      - SAAS
                      - HOTEL
                      - AIRLINES
                      - TRAVEL

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.