> ## 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 - Transferir Recurso

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

Por meio deste endpoint, o parceiro pode efetuar transferências de valores através de uma chave Pix, dados bancários ou por QrCode.

<Info> Em produção a utilização de HandShake e HMAC é obrigatória. </Info>

<Warning>
  Transferência via Chave PIX: Neste modelo para que o cliente obtenha sucesso na requisição é necessário realizar a consulta da chave no endpoint /api/Chave/Consultar para obter o “ticket” nesse caso é obrigatória a informação da chave que receberá a transferência do recurso.

  Transferência via Dados Bancários: Neste modelo para que o cliente obtenha sucesso na requisição é necessário informar os dados da conta destino, incluindo agencia, conta, tipo de conta, modelo de conta, ISPB do destino, nome e documento federal beneficiário.

  Transferência via QrCode: Neste modelo para que o cliente obtenha sucesso na requisição é necessário realizar a consulta da chave no endpoint /api/QRCode/Ler para obter o “codigoLeituraQRCode
</Warning>

<Expandable title="Mensagens de requisições com erro">
  O retorno de uma requisição com status HTTP 400 (Bad Request) pode incluir as seguintes mensagens de erro:

  | Endpoint       | Mensagem de erro                                                 |
  | -------------- | ---------------------------------------------------------------- |
  | api/QRCode/Ler | Já existe um agendamento cadastrado para esse pagamento          |
  | api/QRCode/Ler | Pagamento pendente de aprovação, realize o aceite para finalizar |
</Expandable>


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

````