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

# 16 - Transfer Resource

> <p>Scopes:</p>
<b>api.pix api.recurso.transferir</b>

Through this endpoint, the partner can make transfers using a Pix key, bank details, or QR Code.

<Info> In production, the use of HandShake and HMAC is mandatory. </Info>

<Warning>
  Transfer via PIX Key: In this model, for the client to successfully complete the request, the client must query the key at the /api/Chave/Consultar endpoint to obtain the "ticket." In this case, the key that will receive the transfer is required.

  Transfer via Bank Details: In this model, for the client to successfully complete the request, the client must provide the destination account details, including the branch, account, account type, account model, destination ISPB (Brazilian Social Security Number), name, and beneficiary's federal ID.

  Transfer via QR Code: In this model, for the client to successfully complete the request, the client must query the key at the /api/QRCode/Ler endpoint to obtain the "QRCodeReadingCode" (CodigoLeituraQRCode).
</Warning>


## OpenAPI

````yaml post /api/Recurso/Transferir
openapi: 3.0.1
info:
  title: Api Externa BMP SPI
  description: '<p><strong>Build Number: </strong>#0.0</p>'
  version: v1
servers:
  - url: https://api.ext.pix.dbs.moneyp.com.br/
    description: Localhost
security:
  - Bearer: []
paths:
  /api/Recurso/Transferir:
    post:
      tags:
        - Recurso
      summary: Realiza uma transferência via Pix.
      description: "<p>Scopes:</p>\r\n<b>api.pix api.recurso.transferir</b>"
      parameters:
        - name: IdempotencyKey
          in: header
          required: true
          schema:
            type: string
        - name: IgnoraHandshake
          in: header
          description: (somente em homologação)
          required: true
          schema:
            type: boolean
            default: true
      requestBody:
        content:
          application/json:
            schema:
              allOf:
                - $ref: >-
                    #/components/schemas/BMPSPB.Domain.Messaging.API.Pix.Recurso.Transferir.TransferirRequest
          text/json:
            schema:
              allOf:
                - $ref: >-
                    #/components/schemas/BMPSPB.Domain.Messaging.API.Pix.Recurso.Transferir.TransferirRequest
          application/*+json:
            schema:
              allOf:
                - $ref: >-
                    #/components/schemas/BMPSPB.Domain.Messaging.API.Pix.Recurso.Transferir.TransferirRequest
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/BMPSPB.Domain.Messaging.API.Pix.Recurso.Transferir.TransferirResponse
        '400':
          description: Erro de negócio
          content:
            application/json:
              schema:
                type: object
                properties:
                  sucesso:
                    type: boolean
                  mensagem:
                    type: string
        '500':
          description: Erro interno do servidor
          content:
            application/json:
              schema:
                type: object
                properties:
                  sucesso:
                    type: boolean
                  mensagem:
                    type: string
components:
  schemas:
    BMPSPB.Domain.Messaging.API.Pix.Recurso.Transferir.TransferirRequest:
      type: object
      properties:
        dadosEnvioPorChave:
          allOf:
            - $ref: >-
                #/components/schemas/BMPSPB.Domain.Messaging.API.Pix.Recurso.Transferir.EnvioPorChaveRequest
          description: |-
            Objeto detalhando os dados da chave Pix para transação.

            Observação:
            - Obrigatório para transações através de chave.
          nullable: true
        dadosEnvioPorConta:
          allOf:
            - $ref: >-
                #/components/schemas/BMPSPB.Domain.Messaging.API.Pix.Recurso.Transferir.EnvioPorContaRequest
          description: |-
            Objeto detalhando os dados da Conta para transação.

            Observação:
            - Obrigatório para transações através de dados da conta.
          nullable: true
        valor:
          type: number
          description: Valor da Transação.*
          format: double
        codigoOperacaoCliente:
          type: string
          description: >-
            Identificador fornecido pelo remetente para facilitar a conciliação
            e o rastreamento da transação.
          nullable: true
        descricaoCliente:
          type: string
          description: Descrição opcional fornecida pelo Remetente.
          nullable: true
        prioridade:
          allOf:
            - $ref: '#/components/schemas/BMPSPB.Infra.Enums.PrioridadePix'
          description: |-
            Prioridade do PIX.

             Valores:
            0 - URGENTE
            1 - NORMAL
          nullable: true
        contaOrigem:
          allOf:
            - $ref: >-
                #/components/schemas/BMPSPB.Domain.Messaging.API.Shared.Conta.ContaDto
          description: Objeto detalhado da conta bancária do remetente.*
          nullable: true
        informacoesAdicionais:
          type: string
          description: Detalhes adicionais relacionados à transação Pix.*
          nullable: true
        idConciliacaoRecebedor:
          type: string
          description: Identificador de conciliação do recebedor da transação (TXID).
          nullable: true
        tpQRCode:
          allOf:
            - $ref: '#/components/schemas/BMPSPB.Infra.Enums.TipoQRCode'
          description: |-
            Tipo de QRCODE.

             Valores:
            1 - Estático
            2 - Dinâmico
            3 - Composto
          nullable: true
        codigoLeituraQRCode:
          type: string
          description: Indentificador UUID de leitura do QR Code.
          format: uuid
      additionalProperties: false
    BMPSPB.Domain.Messaging.API.Pix.Recurso.Transferir.TransferirResponse:
      type: object
      properties:
        sucesso:
          type: boolean
        mensagem:
          type: string
          nullable: true
        codigoTransacao:
          type: string
          format: uuid
      additionalProperties: false
    BMPSPB.Domain.Messaging.API.Pix.Recurso.Transferir.EnvioPorChaveRequest:
      type: object
      properties:
        ticket:
          type: string
          description: |-
            Identificador UUID para identificação da transação Pix.

            Observação:
            - Obrigatório para transações através de chave.
          format: uuid
        chave:
          type: string
          description: |-
            Chave Pix.

            Observação:
            - Obrigatório para transações através de chave.
          nullable: true
        tipoChave:
          allOf:
            - $ref: '#/components/schemas/BMPSPB.Infra.Enums.TipoChavePix'
          description: |-
            Tipo da chave.

             Valores:
            0 - CPF
            1 - CNPJ
            2 - TELEFONE
            3 - EMAIL
            4 - EVP
          nullable: true
      additionalProperties: false
    BMPSPB.Domain.Messaging.API.Pix.Recurso.Transferir.EnvioPorContaRequest:
      type: object
      properties:
        contaDestino:
          allOf:
            - $ref: >-
                #/components/schemas/BMPSPB.Domain.Messaging.API.Shared.Conta.ContaDto
          description: |-
            Objeto detalhado da conta bancária do beneficiário.

            Observação:
            - Obrigatório para transações através de dados da conta.
          nullable: true
        ispbDestino:
          type: string
          description: |-
            ISPB da instituição financeira do beneficiário.

            Observação:
            - Obrigatório para transações através de dados da conta.
          nullable: true
        nomeDestino:
          type: string
          description: Nome do titular da conta bancária do beneficiário.
          nullable: true
        documentoFederalDestino:
          type: string
          description: |-
            CPF ou CNPJ do beneficiário.

            Observação:
            - Obrigatório para transações através de dados da conta.
          nullable: true
      additionalProperties: false
    BMPSPB.Infra.Enums.PrioridadePix:
      enum:
        - 0
        - 1
      type: integer
      description: ''
      format: int32
    BMPSPB.Domain.Messaging.API.Shared.Conta.ContaDto:
      type: object
      properties:
        agencia:
          type: string
          description: |-
            Número da agência bancária.*

            Observações:
            - O número da agência pode ter no máximo 4 caracteres.
          nullable: true
        agenciaDigito:
          type: string
          description: >-
            Dígito verificador da agência bancária.


            Observações:

            - O dígito verificador da agência bancária pode ter no máximo 1
            caracter.
          nullable: true
        conta:
          type: string
          description: >-
            Número da conta bancária.


            Observações:

            - O número da conta bancária pode ter no máximo 12 caracteres.

            - Para que seja possível localizar a conta, é necessário informar o
            'número da conta com dígito' (```contaPgto```) ou o 'número da
            conta' (```conta```) e o 'dígito verificador' (```contaDigito```).

            - Caso o 'número da conta com dígito' (```contaPgto```) seja
            informado, não é necessário preencher os campos 'número da conta'
            (```conta```) e 'dígito verificador' (```contaDigito```).

            - Caso nenhum dos campos referentes ao número da conta seja
            informado, ocorrerá erro na requisição devido à falta de informação
            vital.
          nullable: true
        contaDigito:
          type: string
          description: >-
            Dígito verificador do número da conta bancária.


            Observações:

            - O dígito verificador do número da conta bancária pode ter no
            máximo 1 caracter.
          nullable: true
        contaPgto:
          type: string
          description: >-
            Número da conta bancária seguido do dígito verificador.


            Observações:

            - O número da conta seguido do dígito verificador pode ter no máximo
            20 caracteres.
          nullable: true
        tipoConta:
          allOf:
            - $ref: '#/components/schemas/BMPSPB.Infra.Enums.TipoConta'
          description: |-
            Tipo da conta.*

            Valores:
            1 - Corrente
            2 - Poupanca
            3 - Pagamento
            4 - Salario
          nullable: true
        modeloConta:
          allOf:
            - $ref: '#/components/schemas/BMPSPB.Infra.Enums.ModeloConta'
          description: |-
            Modelo da conta.*

            Valores:
            1 - Movimento
            2 - Escrow
            3 - Vinculada
          nullable: true
      additionalProperties: false
    BMPSPB.Infra.Enums.TipoQRCode:
      enum:
        - 1
        - 2
        - 3
      type: integer
      description: ''
      format: int32
    BMPSPB.Infra.Enums.TipoChavePix:
      enum:
        - 0
        - 1
        - 2
        - 3
        - 4
      type: integer
      description: ''
      format: int32
    BMPSPB.Infra.Enums.TipoConta:
      enum:
        - 1
        - 2
        - 3
        - 4
      type: integer
      description: ''
      format: int32
    BMPSPB.Infra.Enums.ModeloConta:
      enum:
        - 1
        - 2
        - 3
      type: integer
      description: ''
      format: int32
  securitySchemes:
    Bearer:
      type: apiKey
      description: Copie 'Bearer ' + token
      name: Authorization
      in: header

````