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

# Crear deposito QR

> Crea una transaccion de payin por QR y devuelve la imagen QR en base64. La confirmacion del pago se notifica por webhook (transaction_updated).

### Campos segun fundingSource

| Campo | balance | conversion |
| --- | --- | --- |
| fiatAmount | Requerido | Opcional |
| cryptoAmount | Opcional | Requerido |
| depositAddress | Opcional | Requerido y no vacio |

Siempre se requieren fundingSource, referenceId y fiatCurrency (BOB). asset y blockchain son opcionales en ambos casos y usan USDC y Polygon por defecto. country usa BO y qrExpirationTime usa 00:15:00 por defecto.

Los campos opcionales pueden omitirse, pero si se envian deben cumplir sus validaciones; no se acepta null. Con conversion, fiatAmount se calcula a partir de cryptoAmount, el tipo de cambio y las comisiones, aunque se envie fiatAmount.



## OpenAPI

````yaml /openapi-v3.yaml post /v3/transactions/deposit/qr
openapi: 3.0.0
info:
  title: YP API Partner
  description: Documentación de integración para partners de YP API.
  version: v3
  contact: {}
servers:
  - url: https://sandbox-rampa.mesadepagos.com/api
    description: Sandbox
security: []
tags:
  - name: Auth
    description: ''
  - name: Quotes
    description: ''
  - name: Payin
    description: ''
  - name: Payout
    description: ''
  - name: Wallet
    description: ''
  - name: Consultas
    description: ''
  - name: Webhooks
    description: ''
  - name: Fees
    description: ''
  - name: Clients
    description: ''
  - name: Client verifications
    description: Las verificaciones que habilitan a un cliente a cobrar a su nombre.
  - name: Virtual accounts
    description: 'Las cuentas de cobro: las del partner y las de sus clientes.'
paths:
  /v3/transactions/deposit/qr:
    post:
      tags:
        - Payin
      summary: Crear deposito QR
      description: >-
        Crea una transaccion de payin por QR y devuelve la imagen QR en base64.
        La confirmacion del pago se notifica por webhook (transaction_updated).


        ### Campos segun fundingSource


        | Campo | balance | conversion |

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

        | fiatAmount | Requerido | Opcional |

        | cryptoAmount | Opcional | Requerido |

        | depositAddress | Opcional | Requerido y no vacio |


        Siempre se requieren fundingSource, referenceId y fiatCurrency (BOB).
        asset y blockchain son opcionales en ambos casos y usan USDC y Polygon
        por defecto. country usa BO y qrExpirationTime usa 00:15:00 por defecto.


        Los campos opcionales pueden omitirse, pero si se envian deben cumplir
        sus validaciones; no se acepta null. Con conversion, fiatAmount se
        calcula a partir de cryptoAmount, el tipo de cambio y las comisiones,
        aunque se envie fiatAmount.
      operationId: createDepositQrV3
      parameters: []
      requestBody:
        required: true
        description: Datos necesarios para generar el QR de deposito.
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/CreateDepositQrRequestV3Doc'
              oneOf:
                - type: object
                  properties:
                    fundingSource:
                      type: string
                      enum:
                        - balance
                  required:
                    - fiatAmount
                - type: object
                  properties:
                    fundingSource:
                      type: string
                      enum:
                        - conversion
                    depositAddress:
                      type: string
                      minLength: 1
                  required:
                    - cryptoAmount
                    - depositAddress
            examples:
              balance:
                summary: Deposito QR con balance
                value:
                  fundingSource: balance
                  referenceId: ORDER-1001
                  fiatCurrency: BOB
                  fiatAmount: 100
              conversion:
                summary: Deposito QR con conversion
                value:
                  fundingSource: conversion
                  referenceId: ORDER-1002
                  fiatCurrency: BOB
                  cryptoAmount: 10
                  depositAddress: '0x0000000000000000000000000000000000000000'
      responses:
        '201':
          description: Deposito QR creado exitosamente.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateDepositQrResponseV3Doc'
        '400':
          description: >-
            Request invalido, o un campo rechazado por el proveedor de pagos.
            Siempre es un unico 400 con la ruta de cada campo.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorV3ResponseDoc'
              example:
                statusCode: 400
                error: Bad Request
                message:
                  - path:
                      - fiatAmount
                    message: The value was rejected by the payment provider.
        '401':
          description: Token ausente, invalido o expirado.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponseDoc'
        '404':
          description: El proveedor de pagos no encontro la transaccion.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppErrorResponseDoc'
              example:
                statusCode: 404
                code: TRANSACTION_NOT_FOUND
                message: The transaction was not found.
        '422':
          description: El proveedor de pagos rechazo el QR de forma definitiva.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppErrorResponseDoc'
              example:
                statusCode: 422
                code: INSUFFICIENT_FUNDS
                message: There are insufficient funds to complete this transaction.
        '500':
          description: Error interno (por ejemplo, configuracion del comercio).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppErrorResponseDoc'
              example:
                statusCode: 500
                code: INTERNAL_SERVER_ERROR
                message: >-
                  An unexpected internal server error occurred. Please try again
                  later.
        '503':
          description: >-
            El proveedor de pagos no respondio (timeout, caida o error 5xx). Se
            puede reintentar.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppErrorResponseDoc'
              example:
                statusCode: 503
                code: PAYMENT_PROVIDER_UNAVAILABLE
                message: >-
                  The payment provider is temporarily unavailable. Please try
                  again later.
      security:
        - bearer: []
components:
  schemas:
    CreateDepositQrRequestV3Doc:
      type: object
      properties:
        fundingSource:
          type: string
          enum:
            - balance
            - conversion
          example: balance
          description: Origen de fondos usado para la operacion.
        referenceId:
          type: string
          example: ORDER-1001
          description: Referencia externa del partner.
          minLength: 1
          maxLength: 100
        country:
          type: string
          enum:
            - BO
          default: BO
          example: BO
          description: Pais donde se genera el QR.
        fiatCurrency:
          type: string
          enum:
            - BOB
          example: BOB
          description: Moneda fiat del QR.
        fiatAmount:
          type: number
          example: 100
          description: >-
            Monto fiat del QR. Requerido con fundingSource "balance"; opcional
            con "conversion". Debe ser mayor que 0 y multiplo de 0.01.
          minimum: 0
          exclusiveMinimum: true
          multipleOf: 0.01
        cryptoAmount:
          type: number
          example: 10
          description: >-
            Monto crypto a acreditar. Requerido con fundingSource "conversion";
            opcional con "balance". Debe ser mayor que 0.
          minimum: 0
          exclusiveMinimum: true
        asset:
          type: string
          enum:
            - USDC
            - USDT
          default: USDC
          example: USDC
          description: Asset crypto usado para la transaccion.
        blockchain:
          type: string
          enum:
            - Polygon
            - Ethereum
            - TRON
          default: Polygon
          example: Polygon
          description: Blockchain del asset.
        depositAddress:
          type: string
          example: '0x0000000000000000000000000000000000000000'
          description: >-
            Direccion crypto de destino. Requerida y no vacia con fundingSource
            "conversion"; opcional con "balance".
        description:
          type: string
          example: Pago orden 1001
          description: Descripcion visible para conciliacion.
          maxLength: 60
        qrExpirationTime:
          type: string
          example: '00:15:00'
          default: '00:15:00'
          description: Tiempo de expiracion del QR en formato HH:MM:SS.
          pattern: ^([01]\d|2[0-3]):[0-5]\d:[0-5]\d$
      required:
        - fundingSource
        - referenceId
        - fiatCurrency
    CreateDepositQrResponseV3Doc:
      type: object
      properties:
        transactionId:
          type: string
          example: 550e8400-e29b-41d4-a716-446655440000
          description: Identificador unico de la transaccion.
        type:
          type: string
          enum:
            - deposit_express
          example: deposit_express
          description: Tipo de transaccion creada.
        transactionStatus:
          type: string
          example: pending_transaction
          description: Estado inicial de la transaccion.
        requestedCryptoAmount:
          type: string
          example: '10'
          description: Monto crypto solicitado.
        calculatedFiatAmount:
          type: string
          example: '69.60'
          description: Monto fiat calculado para el QR.
        exchangeRate:
          type: string
          example: '6.96'
          description: Tipo de cambio aplicado.
        feeAmount:
          type: string
          example: '0.00'
          description: Fee aplicado a la operacion.
        asset:
          type: string
          example: USDC
          description: Asset de la transaccion.
        country:
          type: string
          example: BO
          description: Codigo del pais.
        countryName:
          type: string
          example: Bolivia
          description: Nombre del pais.
        qrCodeBase64:
          type: string
          example: iVBORw0KGgoAAAANSUhEUgAA...
          description: Imagen QR codificada en base64.
        referenceId:
          type: string
          example: ORDER-1001
          description: Referencia externa enviada por el partner.
        fiatCurrency:
          type: string
          example: BOB
          description: Moneda fiat del QR.
      required:
        - transactionId
        - type
        - transactionStatus
        - requestedCryptoAmount
        - calculatedFiatAmount
        - exchangeRate
        - asset
        - country
        - countryName
        - qrCodeBase64
        - referenceId
        - fiatCurrency
    ValidationErrorV3ResponseDoc:
      type: object
      properties:
        statusCode:
          type: number
          example: 400
        error:
          type: string
          example: Bad Request
        message:
          description: Un elemento por cada campo invalido.
          type: array
          items:
            $ref: '#/components/schemas/ValidationErrorPathV3Doc'
      required:
        - statusCode
        - error
        - message
    UnauthorizedResponseDoc:
      type: object
      properties:
        statusCode:
          type: number
          example: 401
        message:
          type: string
          example: Unauthorized
      required:
        - statusCode
        - message
    AppErrorResponseDoc:
      type: object
      properties:
        statusCode:
          type: number
          example: 503
        code:
          type: string
          enum:
            - QR_EXPIRED
            - TRANSACTION_REJECTED
            - ACH_PAYMENT_UNAVAILABLE
            - INSUFFICIENT_FUNDS
            - INTERNAL_SERVER_ERROR
            - PAYMENT_PROVIDER_UNAVAILABLE
            - TRANSACTION_NOT_FOUND
            - INTERNAL_ERROR_SERVER
          example: PAYMENT_PROVIDER_UNAVAILABLE
          description: Codigo de error estable para manejar el caso en el partner.
        message:
          type: string
          example: >-
            The payment provider is temporarily unavailable. Please try again
            later.
          description: Mensaje fijo en ingles asociado al codigo.
      required:
        - statusCode
        - code
        - message
    ValidationErrorPathV3Doc:
      type: object
      properties:
        path:
          example:
            - transaction
            - bank_code
          description: Ruta del campo rechazado dentro del request.
          type: array
          items:
            type: string
        message:
          type: string
          example: The value was rejected by the payment provider.
          description: Motivo del rechazo del campo.
      required:
        - path
        - message
  securitySchemes:
    bearer:
      scheme: bearer
      bearerFormat: JWT
      type: http
      description: JWT obtenido desde /v2/auth/login o /v3/auth/login

````

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