Atrato Integration API

The Integration API from Atrato — 6 operation(s) for integration.

OpenAPI Specification

atrato-integration-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Atrato Partners Ecommerce Integration API
  version: '1.0'
  description: 'Atrato Partners API (api-partners) for buy-now-pay-later integration: in-store cash-in payment collection and ecommerce checkout order generation. Reconstructed verbatim from Atrato''s per-operation OpenAPI definitions published in the ReadMe developer reference at docs.atratopago.com.'
servers:
- url: https://api-sandbox.atratopago.com
  description: Sandbox
security:
- sec0: []
tags:
- name: Integration
paths:
  /api/v4/integration/login:
    post:
      summary: Autenticación
      description: ''
      operationId: autenticación
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - username
              - password
              properties:
                username:
                  type: string
                password:
                  type: string
      responses:
        '200':
          description: '200'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n  \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVC19.eyJwYXJ0bmVyIjprImlkQ29tZXJjaW8iOjEsIndsczZXJuYW1lIjoiRGllZ29aYXJhdGUiLCJpc0VkaXRvciI6dHJ1ZSwiaXNNYXN0ZXIiOnRydWUsImlzQWN0aXZlIjp0cnVlLCJpZCI6MTAsImZlY2hhQ3JlYWNpb24iOiIyMDIxLTA2LTIwVDAxOjMzOjQyLjAwMFoifSwiaWF0IjoxNjcyMDc5NzkzLCJleHAiOjE2NzIxMzAxOTN9.XNKesoKpaztn7oMRkl73dN8c-Mj4v_dH9y5obq7QTAU\",\n}"
              schema:
                type: object
                properties:
                  token:
                    type: string
                required:
                - token
        '401':
          description: '401'
          content:
            application/json:
              examples:
                Result:
                  value: "{\n  \"msg\": \"No se encontró cuenta registrada para usuario: {user}\"\n}"
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: 'No se encontró cuenta registrada para usuario: {user}'
      deprecated: false
      security: []
      tags:
      - Integration
  /api/v4/integration/cash-in/search:
    get:
      description: ''
      responses:
        '200':
          description: Usuario encontrado con créditos activos. Devuelve los datos del usuario y los créditos activos con montos disponibles para pago.
          content:
            application/json:
              schema:
                type: object
                properties:
                  userName:
                    type: string
                    default: ''
                    description: Nombre del cliente.
                  userId:
                    type: integer
                    description: ID del usuario (usar en el registro de pago).
                  credits:
                    type: object
                    properties:
                      creditId:
                        type: integer
                        description: ID del crédito (usar en el registro de pago).
                      debtToDate:
                        type: number
                        description: Deuda al día.
                      settleAmount:
                        type: number
                        description: Monto para liquidar.
                      installmentAmount:
                        type: number
                        description: Monto de la mensualidad.
                      merchantName:
                        type: string
                        description: Nombre del comercio al que pertenece el crédito.
                required:
                - userName
              examples:
                ? ''
                : summary: ''
                  value:
                    userName: string
                    userId: 0
                    credits:
                    - creditId: 0
                      debtToDate: 0
                      settleAmount: 0
                      merchantName: string
                      installmentAmount: 0
        '400':
          description: No se proporcionó ningún criterio de búsqueda. Se requiere al menos uno de los dos parámetros.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Mensaje de error.
                  details:
                    type: string
                    description: Detalles del error.
                required:
                - message
              examples:
                ? ''
                : summary: ''
                  value:
                    message: No se proporcionó ningún criterio de búsqueda
        '401':
          description: No se proporcionó el token de autenticación. Se debe usar el token obtenido con el endpoint /api/v4/integration/login.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Mensaje de error.
                  details:
                    type: string
                    description: Detalles del error.
                required:
                - message
              examples:
                ? ''
                : summary: ''
                  value:
                    message: string
                    details: string
        '404':
          description: No se encontró ningún usuario con los criterios de búsqueda proporcionados.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Mensaje de error.
                  details:
                    type: string
                    description: Detalles del error.
                required:
                - message
              examples:
                ? ''
                : summary: ''
                  value:
                    message: No se encontraron créditos activos para este usuario
      parameters:
      - in: query
        name: reference
        schema:
          type: string
          default: ''
        description: Número de referencia CIE asignado al cliente (inicia con la letra 'U').
      - in: query
        name: applicationId
        schema:
          type: integer
          default: ''
        description: ID de la solicitud de crédito.
      operationId: get_api-v4-integration-cash-in-search
      tags:
      - Integration
  /api/v4/integration/cash-in/available-stores:
    get:
      description: ''
      responses:
        '200':
          description: Lista de sucursales autorizadas.
          content:
            application/json:
              schema:
                type: object
                properties: {}
              examples:
                OK:
                  summary: OK
                  value:
                    stores:
                    - storeId: 1
                      name: Sucursal Centro
                    - storeId: 2
                      name: Sucursal Norte
        '401':
          description: No autorizado.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Mensaje de error.
                  details:
                    type: string
                    description: Detalles del error.
                required:
                - message
              examples:
                Unauthorized:
                  summary: Unauthorized
                  value:
                    message: No se encontraron sucursales autorizadas.
      parameters: []
      operationId: get_api-v4-integration-cash-in-available-stores
      tags:
      - Integration
  /api/v4/integration/cash-in/register-payment:
    post:
      description: ''
      responses:
        '201':
          description: Pago registrado correctamente. Devuelve los datos del pago registrado.
          content:
            application/json:
              schema:
                type: object
                properties:
                  globalPaymentId:
                    type: number
                    description: ID del pago registrado.
                  status:
                    type: string
                    enum:
                    - success
                    - pending_conciliation
                    - cancelled
                    description: 'success: conciliado; pending_conciliation: pendiente de conciliación; cancelled: cancelado.'
                  totalAmount:
                    type: number
                    description: Monto total del pago registrado.
                  appliedPayments:
                    type: array
                    description: Lista de créditos y montos aplicados en el pago registrado.
                    items:
                      properties:
                        creditId:
                          type: string
                          description: ID del crédito.
                        amount:
                          type: string
                          description: Monto aplicado.
                      type: object
                  message:
                    type: string
                    description: Mensaje de confirmación.
                required:
                - globalPaymentId
                - appliedPayments
                - totalAmount
                - status
              examples:
                ? ''
                : summary: ''
                  value:
                    globalPaymentId: 999
                    status: success
                    totalAmount: 800
                    appliedPayments:
                    - creditId: 100
                      amount: 500
                    - creditId: 101
                      amount: 300
                    message: Pago aplicado correctamente a 2 créditos.
        '400':
          description: 'Datos incorrectos o validación fallida. Posibles causas: validación de schema (userId, payments, montos), sucursal no autorizada, monto mayor al permitido, créditos no válidos o no pertenecen al usuario.'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Mensaje de error principal.
                  details:
                    type: string
                    description: Detalle de validación (cuando aplica).
                required:
                - message
              examples:
                UserId faltante o inválido:
                  summary: UserId faltante o inválido
                  value:
                    message: Datos incorrectos.
                    details: userId es requerido
                ? ''
                : summary: ''
                  value:
                    message: Datos incorrectos.
                    details: Debe incluir al menos un pago
                Pagos faltantes o inválidos:
                  summary: Pagos faltantes o inválidos
                  value:
                    message: Datos incorrectos.
                    details: Debe incluir al menos un pago
                Monto o id del crédito inválido dentro de payments:
                  summary: Monto o id del crédito inválido dentro de payments
                  value:
                    message: Datos incorrectos.
                    details: payments[].amount debe ser un monto mayor a cero
                La sucursal no está autorizada:
                  summary: La sucursal no está autorizada
                  value:
                    message: La sucursal 999 no está autorizada o no existe.
                El monto excede el monto a liquidar del crédito:
                  summary: El monto excede el monto a liquidar del crédito
                  value:
                    message: El monto a pagar no puede ser mayor al monto a liquidar
        '401':
          description: No autorizado.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Mensaje de error.
                  details:
                    type: string
                    description: Detalles del error.
                required:
                - message
        '404':
          description: Recurso no encontrado.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Mensaje de error.
                  details:
                    type: string
                    description: Detalles del error.
                required:
                - message
              examples:
                Resumen de créditos no encontrado:
                  summary: Resumen de créditos no encontrado
                  value:
                    message: No se encontró el resumen de los créditos para este usuario
        '500':
          description: Error al registrar el pago o operación no permitida (ej. fuera de horario de sucursal).
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Mensaje de error.
                  details:
                    type: string
                    description: Detalles del error.
                required:
                - message
              examples:
                'Fuera del horario de registro de pagos de la sucursal ':
                  summary: 'Fuera del horario de registro de pagos de la sucursal '
                  value:
                    message: El horario de registro de pagos de la sucursal es de 09:00 a 18:00 Hora de México
      parameters: []
      operationId: post_api-v4-integration-cash-in-register-payment
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                userId:
                  type: number
                  default: '12345'
                  description: ID del usuario obtenido de /api/v4/integration/cash-in/search.
                storeId:
                  type: number
                  description: ID de la sucursal en la que se recibe el pago.
                  default: '1'
                payments:
                  type: array
                  items:
                    properties:
                      creditId:
                        type: number
                        default: '100'
                        description: ID del crédito.
                      amount:
                        type: number
                        default: '500'
                        description: Monto a pagar.
                    type: object
                    required:
                    - creditId
                    - amount
                  description: Lista de créditos y montos a pagar en la sucursal. Debe incluir al menos un pago.
              required:
              - userId
              - storeId
              - payments
      x-readme: {}
      tags:
      - Integration
  /api/v4/integration/cash-in/payments:
    get:
      description: ''
      responses:
        '200':
          description: Lista de pagos.
          content:
            application/json:
              schema:
                type: object
                properties:
                  totalPayments:
                    type: integer
                    description: Total de pagos registrados según el filtro aplicado.
                  totalAmount:
                    type: number
                    description: Monto total de los pagos registrados según el filtro aplicado.
                  data:
                    type: array
                    items:
                      properties:
                        globalPaymentId:
                          type: integer
                          description: ID del pago registrado
                        status:
                          type: string
                          enum:
                          - success
                          - pending_conciliation
                          - cancelled
                        totalAmount:
                          type: string
                          description: Monto total del pago registrado.
                        paymentDate:
                          type: string
                          description: Fecha y hora del pago registrado.
                          format: date-time
                        storeName:
                          type: string
                          description: Nombre de la sucursal en la que se recibió el pago.
                      type: object
                      required:
                      - storeName
                      - paymentDate
                      - totalAmount
                      - status
                      - globalPaymentId
                required:
                - totalPayments
                - data
                - totalAmount
        '400':
          description: Párametros incorrectos.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                  details:
                    type: string
                required:
                - message
        '401':
          description: No autorizado.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                  details:
                    type: string
                required:
                - message
      parameters:
      - in: query
        name: paymentId
        schema:
          type: string
        description: Filtrar por ID de pago.
      - in: query
        name: minDate
        schema:
          type: string
          format: date
        description: Fecha mínima (YYYY-MM-DD o ISO).
      - in: query
        name: maxDate
        schema:
          type: string
          format: date
        description: Fecha máxima (YYYY-MM-DD o ISO).
      - in: query
        name: minAmount
        schema:
          type: integer
      - in: query
        name: maxAmount
        schema:
          type: integer
      - in: query
        name: stores
        schema:
          type: string
        description: 'IDs de sucursal separados por coma (ej: 1,2,3).'
      - in: query
        name: status
        schema:
          type: string
          enum:
          - success
          - pending_conciliation
          - cancelled
      - in: query
        name: page
        schema:
          type: integer
          default: '0'
      - in: query
        name: limit
        schema:
          type: integer
          default: '10'
        description: ''
      - in: query
        name: orderBy
        schema:
          type: string
          enum:
          - paymentDate
          - paymentAmount
          - paymentId
          default: paymentDate
      - in: query
        name: orderDirection
        schema:
          type: string
          enum:
          - ASC
          - DESC
          default: DESC
      operationId: get_api-v4-integration-cash-in-payments
      tags:
      - Integration
  /api/v4/integration/cash-in/payment-details/{paymentId}:
    get:
      description: ''
      responses:
        '200':
          description: Detalle del pago.
          content:
            application/json:
              schema:
                type: object
                properties:
                  globalPaymentId:
                    type: integer
                    description: ID del pago registrado.
                  status:
                    type: string
                    description: Estado del pago registrado.
                    enum:
                    - success
                    - pending_conciliation
                    - cancelled
                  totalAmount:
                    type: number
                    description: Monto total del pago registrado.
                  paymentDate:
                    type: string
                    description: Fecha y hora del pago registrado.
                    format: date-time
                  appliedPayments:
                    type: array
                    description: Lista de créditos y montos aplicados en el pago registrado.
                    items:
                      properties:
                        creditId:
                          type: integer
                          description: ID del crédito.
                        amount:
                          type: string
                          description: Monto aplicado.
                      type: object
                  storeName:
                    type: string
                    description: Nombre de la sucursal en la que se recibió el pago.
                  storeId:
                    type: number
                    description: ID de la sucursal en la que se recibió el pago.
                  receiptUrl:
                    type: string
                    description: URL del comprobante digital del pago registrado.
                required:
                - globalPaymentId
                - status
                - totalAmount
                - paymentDate
                - appliedPayments
                - storeName
                - storeId
                - receiptUrl
              examples:
                ? ''
                : summary: ''
                  value:
                    globalPaymentId: 0
                    status: success
                    totalAmount: 0
                    paymentDate: '2026-03-24T17:19:30.750Z'
                    appliedPayments:
                    - creditId: 0
                      amount: 0
                    storeName: string
                    storeId: 0
                    receiptUrl: string
        '400':
          description: Id de pago inválido.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                  details:
                    type: string
                required:
                - message
        '401':
          description: No autorizado.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                  details:
                    type: string
                required:
                - message
              examples:
                ? ''
                : summary: ''
                  value:
                    message: ID de pago inválido.
      parameters:
      - in: path
        name: paymentId
        schema:
          type: integer
        required: true
        description: ID global del pago.
      operationId: get_api-v4-integration-cash-in-payment-details-paymentid
      tags:
      - Integration
components:
  securitySchemes:
    sec0:
      type: apiKey
      in: header
      name: x-auth-token