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

# Create cashout

> Request a PIX or crypto wallet withdrawal

Creates a cashout from the available balance to a PIX key or a previously registered and verified crypto wallet.

Provide exactly one destination:

* `pixKeyType` + `pixKey` for a PIX cashout;
* `cryptoPayoutAccountId` for an XGate crypto cashout.

The merchant is identified by the API token. The active XGate crypto configuration is selected automatically; no acquirer identifier is required.

<Note>
  Crypto wallets must be registered and verified in the Safefy panel before requesting a cashout. The API does not accept an arbitrary wallet address in the request body.
</Note>

<Note>
  This endpoint requires credential permission `cashouts.write`.
  If `cashouts.allowAnyPixKey` is disabled, arbitrary PIX destination keys are not allowed.
</Note>

<Warning>
  Always use `withdrawNowAvailable` from [`GET /v1/balance`](/en/api-reference/balance/get).
  If `requiresFullWithdrawalNow` is `true`, the cashout amount must be exactly `withdrawNowAvailable`.
</Warning>


## OpenAPI

````yaml api-reference/openapi.json POST /v1/cashouts
openapi: 3.1.1
info:
  title: Safefy - Pix Gateway
  description: >

    ## Introducao


    **Seu parceiro financeiro de confianca.**


    Nos somos a Safefy, uma plataforma especializada em solucoes de pagamento
    PIX. Com um servico personalizado e focado nas suas necessidades, estamos
    prontos para apoiar sua empresa em cada etapa do processo.


    - Conte com o **PIX** como metodo de pagamento rapido, seguro e alinhado com
    as melhores praticas de conformidade e prevencao a fraudes.

    - Gerencie suas financas de forma simples e acessivel por meio de uma
    interface completa e intuitiva.

    - Nosso time de suporte esta sempre disponivel para oferecer um atendimento
    exclusivo e eficiente.


    ## Precisa de Ajuda?


    A equipe da Safefy quer garantir que sua integracao seja um sucesso. Se
    tiver duvidas ou precisar de suporte, nao hesite em nos contatar:


    **suporte@safefypay.com.br**


    ---


    ## Valores Monetarios


    Todos os valores monetarios sao representados em **centavos** (menor unidade
    da moeda).


    | Valor Real | Valor na API |

    |------------|--------------|

    | R$ 1,00    | 100          |

    | R$ 10,50   | 1050         |

    | R$ 100,00  | 10000        |
  contact:
    name: Suporte Safefy
    email: suporte@safefypay.com.br
  version: v1
servers:
  - url: https://api-payment.safefypay.com.br
    description: API de Pagamentos Safefy
security:
  - bearerAuth: []
tags:
  - name: Autenticacao
    description: Endpoints de autenticacao OAuth2
  - name: Transacoes
    description: Gerenciamento de transacoes PIX
  - name: Clientes
    description: Gerenciamento de clientes
  - name: Saldo
    description: Consulta de saldo e volumes
  - name: Saques
    description: Solicitacao e gerenciamento de saques
  - name: Disputas
    description: Consulta de disputas e envio de defesa
paths:
  /v1/cashouts:
    post:
      tags:
        - Saques
      summary: Solicitar saque
      description: >-
        Solicita um novo saque do saldo disponivel para uma chave PIX ou uma
        carteira cripto previamente cadastrada e verificada. O merchant e
        identificado pelo token e a configuracao XGate ativa e selecionada
        automaticamente.
      operationId: createCashout
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCashoutRequest'
            examples:
              pix-inline:
                summary: Usando chave PIX
                value:
                  amount: 50000
                  pixKeyType: CPF
                  pixKey: 123.456.789-09
                  externalId: saque_001
                  callbackUrl: https://seusite.com.br/webhook/cashout
              crypto-wallet:
                summary: Usando carteira cripto verificada
                value:
                  amount: 50000
                  cryptoPayoutAccountId: 8d08f5d2-c6f6-4df9-b42f-6944aec3b177
                  externalId: saque_crypto_001
                  callbackUrl: https://seusite.com.br/webhook/cashout
      responses:
        '201':
          description: Saque solicitado com sucesso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateCashoutResponse'
              example:
                data:
                  id: b2c3d4e5-f6a7-8901-bcde-f23456789012
                  externalId: saque_001
                  amount: 50000
                  fee: 200
                  netAmount: 49800
                  currency: BRL
                  status: Pending
                  environment: Sandbox
                  pix:
                    pixKeyType: CPF
                    pixKey: '***456789**'
                    endToEndId: null
                  crypto: null
                  requestedAt: '2025-01-15T16:00:00Z'
                  processedAt: null
                  completedAt: null
                  failureReason: null
                  createdAt: '2025-01-15T16:00:00Z'
                message: Saque solicitado com sucesso.
                error: null
        '400':
          description: Dados invalidos ou saldo insuficiente
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateCashoutResponse'
              example:
                data: null
                message: null
                error:
                  message: Saldo insuficiente para realizar o saque.
                  code: insufficient_balance
        '401':
          description: Nao autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateCashoutResponse'
              example:
                data: null
                message: null
                error:
                  message: Token invalido ou expirado.
                  code: unauthorized
        '500':
          description: Erro interno
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateCashoutResponse'
              example:
                data: null
                message: null
                error:
                  message: Erro ao processar o saque. Tente novamente.
                  code: internal_error
components:
  schemas:
    CreateCashoutRequest:
      type: object
      required:
        - amount
      properties:
        amount:
          type: integer
          format: int64
          description: 'Valor do saque em centavos. Exemplo: R$ 500,00 = 50000.'
          example: 50000
        pixKeyType:
          type: string
          enum:
            - CPF
            - CNPJ
            - Email
            - Phone
            - Random
          description: Tipo da chave PIX de destino.
          example: CPF
        pixKey:
          type: string
          description: Chave PIX de destino.
          example: '12345678901'
        cryptoPayoutAccountId:
          type: string
          format: uuid
          nullable: true
          description: >-
            ID de uma carteira cripto ativa e verificada. Exclusivo com
            pixKeyType/pixKey; a XGate é selecionada automaticamente.
          example: 8d08f5d2-c6f6-4df9-b42f-6944aec3b177
        externalId:
          type: string
          nullable: true
          description: ID externo no seu sistema para referencia cruzada.
          example: saque_001
        callbackUrl:
          type: string
          nullable: true
          description: URL para receber webhooks de atualizacao de status do saque.
          example: https://seusite.com.br/webhook/cashout
      oneOf:
        - required:
            - pixKeyType
            - pixKey
          not:
            required:
              - cryptoPayoutAccountId
        - required:
            - cryptoPayoutAccountId
          not:
            anyOf:
              - required:
                  - pixKeyType
              - required:
                  - pixKey
    CreateCashoutResponse:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/CashoutData'
        message:
          type: string
          nullable: true
        error:
          $ref: '#/components/schemas/ApiErrorResponse'
    CashoutData:
      type: object
      nullable: true
      properties:
        id:
          type: string
          format: uuid
          description: ID unico do saque
          example: b2c3d4e5-f6a7-8901-bcde-f23456789012
        externalId:
          type: string
          nullable: true
          description: ID externo informado
          example: saque_001
        amount:
          type: integer
          format: int64
          description: Valor solicitado (centavos)
          example: 50000
        fee:
          type: integer
          format: int64
          description: Taxa cobrada (centavos)
          example: 200
        netAmount:
          type: integer
          format: int64
          description: Valor liquido (centavos)
          example: 49800
        currency:
          type: string
          description: Moeda
          example: BRL
        status:
          type: string
          enum:
            - Pending
            - Processing
            - Completed
            - Failed
            - Rejected
            - Cancelled
          description: Status do saque
          example: Pending
        environment:
          type: string
          enum:
            - Sandbox
            - Production
          description: Ambiente
          example: Sandbox
        pix:
          $ref: '#/components/schemas/CashoutPixData'
        crypto:
          $ref: '#/components/schemas/CashoutCryptoData'
        requestedAt:
          type: string
          format: date-time
          description: Data da solicitacao
          example: '2025-01-15T16:00:00Z'
        processedAt:
          type: string
          format: date-time
          nullable: true
          description: Data do inicio do processamento
          example: null
        completedAt:
          type: string
          format: date-time
          nullable: true
          description: Data da conclusao
          example: null
        failureReason:
          type: string
          nullable: true
          description: Motivo da falha
          example: null
        createdAt:
          type: string
          format: date-time
          description: Data de criacao
          example: '2025-01-15T16:00:00Z'
    ApiErrorResponse:
      type: object
      nullable: true
      properties:
        message:
          type: string
          description: Mensagem de erro
          example: Token invalido ou expirado.
        code:
          type: string
          description: Codigo do erro
          example: unauthorized
    CashoutPixData:
      type: object
      properties:
        pixKeyType:
          type: string
          nullable: true
          description: Tipo da chave PIX
          example: CPF
        pixKey:
          type: string
          nullable: true
          description: Chave PIX (mascarada)
          example: '***456789**'
        endToEndId:
          type: string
          nullable: true
          description: ID da transacao PIX
          example: null
    CashoutCryptoData:
      type: object
      nullable: true
      description: Destino de saque cripto via XGate. O endereço é sempre mascarado.
      properties:
        walletAddress:
          type: string
          description: Endereço da carteira mascarado.
          example: 0x1234…cdef
        networkSymbol:
          type: string
          description: Rede blockchain do saque.
          example: BEP-20
        cryptoSymbol:
          type: string
          description: Criptomoeda liquidada.
          example: USDT
        transactionId:
          type: string
          nullable: true
          description: ID da transação retornado pela XGate, quando disponível.
          example: null
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Token JWT obtido via /v1/auth/token

````