openapi: 3.1.0 info: title: Atrato Partners Ecommerce 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: Ecommerce paths: /api/v4/ecommerce/integration/{partner-key}/login: post: summary: Obtener token description: '' operationId: obtener-token parameters: - name: partner-key in: path description: Código de validación de sucursal, se obtiene del dashboard de partner schema: type: string required: true requestBody: content: application/json: schema: type: object required: - username - password properties: username: type: string description: Usuario del partner dashboard password: type: string description: Password del partner dashboard examples: Request Example: value: username: username password: password responses: '200': description: '200' content: application/json: examples: Result: value: "{\n \"token\": \"token\"\n}" schema: type: object properties: token: type: string example: token '400': description: '400' content: application/json: examples: Result: value: "{\n \"message\": \"No se proporcionaron los parámetros necesarios\"\n}" schema: type: object properties: message: type: string example: No se proporcionaron los parámetros necesarios '500': description: '500' content: application/json: examples: Result: value: "{\n \"message\": \"Error desconocido al intentar la autenticación\"\n}" schema: type: object properties: message: type: string example: Error desconocido al intentar la autenticación deprecated: false security: [] tags: - Ecommerce /api/v4/ecommerce/integration/{partner-key}/application: post: summary: Generar orden description: '' operationId: generar-orden parameters: - name: partner-key in: path description: Código de validación de sucursal, se obtiene del dashboard de partner schema: type: string required: true - name: x-auth-token in: header description: Token de autenticación required: true schema: type: string requestBody: content: application/json: schema: type: object required: - orderId - requestedAmount - productDescription - customerName - customerEmail - customerPhone properties: orderId: type: string description: Número de orden interna del Partner default: '0000' requestedAmount: type: number description: Monto requerido default: 0 format: float productDescription: type: string description: Descripción del producto default: Producto customerName: type: string description: Nombre del cliente default: Jhon Doe customerEmail: type: string description: e-mail del cliente default: emailname@email.com customerPhone: type: string description: Número telefónico del cliente default: '3331112233' successUrl: type: string description: Url de redirección para flujo de crédito autorizado default: https://url failureUrl: type: string description: Url de redirección para flujo de solicitud cancelada default: https://url responses: '200': description: '200' content: application/json: examples: Result: value: "{\n \"message\": \"Información\",\n \"url\": \"Url de solicitud\",\n \"atrato_id\": 0000\n}" '400': description: '400' content: application/json: examples: Result: value: "{\n \"message\": \"Parámetros incorrectos\"\n}" schema: type: object properties: message: type: string example: Parámetros incorrectos '401': description: '401' content: application/json: examples: Result: value: "{\n \"msg\": \"Token no válido\"\n}" schema: type: object properties: msg: type: string example: Token no válido '422': description: '422' content: application/json: examples: Result: value: "{\n \"message\": \"El monto no está dentro del rango permitido\"\n}" schema: type: object properties: message: type: string example: El monto no está dentro del rango permitido '500': description: '500' content: application/json: examples: Result: value: "{\n \"message\": \"Error desconocido al evaluar financiamiento\"\n}" schema: type: object properties: message: type: string example: Error desconocido al evaluar financiamiento deprecated: false security: [] tags: - Ecommerce /api/v4/ecommerce/integration/{partner-key}/order/{order-id}: get: summary: Consultar orden description: '' operationId: consulta-de-orden parameters: - name: partner-key in: path description: Código de validación de sucursal, se obtiene del dashboard de partner schema: type: string required: true - name: order-id in: path description: Número de orden interna del Partner schema: type: string required: true - name: x-auth-token in: header description: Token de autenticación required: true schema: type: string responses: '200': description: '200' content: application/json: examples: Result: value: "{\n \"event_type\": \"query\",\n \"event_data\": {\n \"atrato_id\": 2922,\n \"atrato_application_id\": 8144,\n \"status\": \"Desembolsado\",\n \"status_id\": 19,\n \"status_code\": \"DESEMBOLSADO\",\n \"order_id\": \"AAAA-BBBBB-CCCC-DDDD-EEEEE70703\",\n \"order_number\": \"AAAA-BBBBB-CCCC-DDDD-EEEEE70703\",\n \"customer\": {\n \"name\": \"RAMON LOPEZ PEREZ\",\n \"email\": \"ramon.lopez@email.com\",\n \"phone\": \"+523331230000\",\n \"address\": {\n \"street\": \"Calle Juarez\",\n \"ext_number\": \"12\",\n \"int_number\": null,\n \"district\": \"Roma\",\n \"postal_code\": \"28000\",\n \"city\": \"Guadalajara\"\n }\n },\n \"credit\": {\n \"creditId\": 2818,\n \"purchaseAmount\": 1000,\n \"totalFinanced\": 1000,\n \"merchantComision\": 0,\n \"interesRate\": 75,\n \"installments\": 6,\n \"installmentValue\": 211.41,\n \"biweekly\": false,\n \"creditTotalValue\": 1268.46\n },\n \"disbursement\": {\n \"transactionId\": 464,\n \"trackingKey\": \"SUC261TX464\"\n },\n \"timestamp\": 1729023133264,\n \"observations\": \"\"\n }\n}" schema: type: object properties: event_type: type: string example: query event_data: type: object properties: atrato_id: type: integer example: 2922 default: 0 atrato_application_id: type: integer example: 8144 default: 0 status: type: string example: Desembolsado status_id: type: integer example: 19 default: 0 status_code: type: string example: DESEMBOLSADO order_id: type: string example: AAAA-BBBBB-CCCC-DDDD-EEEEE70703 order_number: type: string example: AAAA-BBBBB-CCCC-DDDD-EEEEE70703 customer: type: object properties: name: type: string example: RAMON LOPEZ PEREZ email: type: string example: ramon.lopez@email.com phone: type: string example: '+523331230000' address: type: object properties: street: type: string example: Calle Juarez ext_number: type: string example: '12' int_number: {} district: type: string example: Roma postal_code: type: string example: '28000' city: type: string example: Guadalajara credit: type: object properties: creditId: type: integer example: 2818 default: 0 purchaseAmount: type: integer example: 1000 default: 0 totalFinanced: type: integer example: 1000 default: 0 merchantComision: type: integer example: 0 default: 0 interesRate: type: integer example: 75 default: 0 installments: type: integer example: 6 default: 0 installmentValue: type: number example: 211.41 default: 0 biweekly: type: boolean example: false default: true creditTotalValue: type: number example: 1268.46 default: 0 disbursement: type: object properties: transactionId: type: integer example: 464 default: 0 trackingKey: type: string example: SUC261TX464 timestamp: type: integer example: 1729023133264 default: 0 observations: type: string example: '' '400': description: '400' content: application/json: examples: Result: value: "{\n \"message\": \"Parámetros incorrectos\"\n}" schema: type: object properties: message: type: string example: Parámetros incorrectos '401': description: '401' content: application/json: examples: Result: value: "{\n \"msg\": \"Unauthorized\"\n}" schema: type: object properties: msg: type: string example: Unauthorized '404': description: '404' content: application/json: examples: Result: value: "{\n \"message\": \"No se encontró la orden\"\n}" schema: type: object properties: message: type: string example: No se encontró la orden '500': description: '500' content: application/json: examples: Result: value: "{\n \"message\": \"Mensaje\"\n}" schema: type: object properties: message: type: string example: Mensaje deprecated: false security: [] tags: - Ecommerce /api/v4/ecommerce/integration/{partner-key}/order/{order-id}/delivery: post: summary: Registrar entrega description: '' operationId: registrar-entrega parameters: - name: partner-key in: path description: Código de validación de sucursal, se obtiene del dashboard de partner schema: type: string required: true - name: order-id in: path description: Número de orden interna del Partner schema: type: string required: true - name: x-auth-token in: header description: Token de autenticación required: true schema: type: string requestBody: content: application/json: schema: type: object required: - name - product - id_internal_folio_partner properties: name: type: string description: Nombre de usuario que registra la entrega product: type: string description: Descripción o nombre del producto entregado id_internal_folio_partner: type: string description: Folio de control interno del partner responses: '200': description: '200' content: application/json: examples: Result: value: "{\n \"message\": \"Producto marcado como entregado\"\n}" schema: type: object properties: message: type: string example: Producto marcado como entregado '400': description: '400' content: application/json: examples: Result: value: "{\n \"message\": \"Parámetros incorrectos\"\n}" schema: type: object properties: message: type: string example: Parámetros incorrectos '401': description: '401' content: application/json: examples: Result: value: "{\n \"msg\": \"Unauthorized\"\n}" schema: type: object properties: msg: type: string example: Unauthorized '404': description: '404' content: application/json: examples: Result: value: "{\n \"message\": \"No se encontró la orden\"\n}" schema: type: object properties: message: type: string example: No se encontró la orden '500': description: '500' content: application/json: examples: Result: value: "{\n \"message\": \"Error desconocido al entregar producto\"\n}" schema: type: object properties: message: type: string example: Error desconocido al entregar producto deprecated: false security: [] tags: - Ecommerce /api/v4/ecommerce/integration/{partner-key}/order/{order-id}/cancel: post: summary: Solicitar cancelación description: '' operationId: solicitar-cancelacion parameters: - name: partner-key in: path description: Código de validación de sucursal, se obtiene del dashboard de partner schema: type: string required: true - name: order-id in: path description: Número de orden interna del Partner schema: type: string required: true - name: x-auth-token in: header description: Token de autenticación required: true schema: type: string requestBody: content: application/json: schema: type: object required: - name - reason properties: name: type: string description: Nombre de usuario quien solicita reason: type: string description: Motivo de cancelación responses: '200': description: '200' content: application/json: examples: Result: value: "{\n \"message\": \"Solicitud de cancelación enviada\"\n}" schema: type: object properties: message: type: string example: Solicitud de cancelación enviada '400': description: '400' content: application/json: examples: Result: value: "{\n \"message\": \"Parámetros incorrectos\"\n}" schema: type: object properties: message: type: string example: Parámetros incorrectos '401': description: '401' content: application/json: examples: Result: value: "{\n \"msg\": \"Unauthorized\"\n}" schema: type: object properties: msg: type: string example: Unauthorized '404': description: '404' content: application/json: examples: Result: value: "{\n \"message\": \"No se encontró la orden\"\n}" schema: type: object properties: message: type: string example: No se encontró la orden '500': description: '500' content: application/json: examples: Result: value: "{\n \"message\": \"Error desconocido al cancelar la solicitud\"\n}" schema: type: object properties: message: type: string example: Error desconocido al cancelar la solicitud deprecated: false security: [] tags: - Ecommerce /api/v4/ecommerce/integration/{partner-key}/disbursement: get: summary: Consulta de desembolsos description: '' operationId: consulta-de-desembolsos parameters: - name: partner-key in: path description: Código de validación de sucursal, se obtiene del dashboard de partner schema: type: string required: true - name: startDate in: query description: Fecha inicial del periodo de consulta, formato YYYY-MM-DD schema: type: string - name: endDate in: query description: Fecha final del periodo de consulta, formato YYYY-MM-DD schema: type: string - name: page in: query description: Número de página a consultar schema: type: integer format: int32 - name: recordsPerPage in: query description: Registros por página schema: type: integer format: int32 - name: x-auth-token in: header description: Token de autenticación required: true schema: type: string responses: '200': description: '200' content: application/json: examples: Result: value: "{\n \"data\": [\n {\n \"atrato_id\": 2660,\n \"order_id\": \"AAAA-BBBBB-CCCC-DDDD-EEEEE18\",\n \"atrato_application_id\": 7745,\n \"disbursed\": 1,\n \"transfer_date\": \"2024-09-13T22:10:56.000Z\",\n \"amount_disbursed\": 1000,\n \"tracking_key\": \"SUC261TX429\",\n \"transactionId\": 429,\n \"merchant\": \"Ecommerce merchant\",\n \"store\": \"Ecommerce store\",\n \"disbursement_status\": \"Aplicada\"\n },\n {\n \"atrato_id\": 2662,\n \"order_id\": \"AAAA-BBBBB-CCCC-DDDD-EEEEE21\",\n \"atrato_application_id\": 7747,\n \"disbursed\": 1,\n \"transfer_date\": \"2024-09-13T22:10:56.000Z\",\n \"amount_disbursed\": 1000,\n \"tracking_key\": \"SUC261TX429\",\n \"transactionId\": 429,\n \"merchant\": \"Ecommerce merchant\",\n \"store\": \"Ecommerce store\",\n \"disbursement_status\": \"Aplicada\"\n },\n {\n \"atrato_id\": 2658,\n \"order_id\": \"AAAA-BBBBB-CCCC-DDDD-EEEEE16\",\n \"atrato_application_id\": 7744,\n \"disbursed\": 1,\n \"transfer_date\": \"2024-09-13T21:41:37.000Z\",\n \"amount_disbursed\": 1111,\n \"tracking_key\": \"SUC261TX428\",\n \"transactionId\": 428,\n \"merchant\": \"Ecommerce merchant\",\n \"store\": \"Ecommerce store\",\n \"disbursement_status\": \"Aplicada\"\n },\n {\n \"atrato_id\": 2657,\n \"order_id\": \"AAAA-BBBBB-CCCC-DDDD-EEEEE15\",\n \"atrato_application_id\": 7743,\n \"disbursed\": 1,\n \"transfer_date\": \"2024-09-13T17:55:28.000Z\",\n \"amount_disbursed\": 1111,\n \"tracking_key\": \"SUC261TX427\",\n \"transactionId\": 427,\n \"merchant\": \"Ecommerce merchant\",\n \"store\": \"Ecommerce store\",\n \"disbursement_status\": \"Aplicada\"\n },\n {\n \"atrato_id\": 2656,\n \"order_id\": \"AAAA-BBBBB-CCCC-DDDD-EEEEE14\",\n \"atrato_application_id\": 7741,\n \"disbursed\": 1,\n \"transfer_date\": \"2024-09-13T14:47:16.000Z\",\n \"amount_disbursed\": 1111,\n \"tracking_key\": \"SUC261TX426\",\n \"transactionId\": 426,\n \"merchant\": \"Ecommerce merchant\",\n \"store\": \"Ecommerce store\",\n \"disbursement_status\": \"Aplicada\"\n },\n {\n \"atrato_id\": 2649,\n \"order_id\": \"AAAA-BBBBB-CCCC-DDDD-EEEEE12\",\n \"atrato_application_id\": 7731,\n \"disbursed\": 1,\n \"transfer_date\": \"2024-09-12T16:25:11.000Z\",\n \"amount_disbursed\": 1111,\n \"tracking_key\": \"SUC261TX425\",\n \"transactionId\": 425,\n \"merchant\": \"Ecommerce merchant\",\n \"store\": \"Ecommerce store\",\n \"disbursement_status\": \"Aplicada\"\n },\n {\n \"atrato_id\": 2648,\n \"order_id\": \"AAAA-BBBBB-CCCC-DDDD-EEEEE11\",\n \"atrato_application_id\": 7730,\n \"disbursed\": 1,\n \"transfer_date\": \"2024-09-12T16:18:38.000Z\",\n \"amount_disbursed\": 1111,\n \"tracking_key\": \"SUC261TX424\",\n \"transactionId\": 424,\n \"merchant\": \"Ecommerce merchant\",\n \"store\": \"Ecommerce store\",\n \"disbursement_status\": \"Aplicada\"\n },\n {\n \"atrato_id\": 2647,\n \"order_id\": \"123000001234\",\n \"atrato_application_id\": 7729,\n \"disbursed\": 1,\n \"transfer_date\": \"2024-09-12T15:59:01.000Z\",\n \"amount_disbursed\": 1111,\n \"tracking_key\": \"SUC261TX423\",\n \"transactionId\": 423,\n \"merchant\": \"Ecommerce merchant\",\n \"store\": \"Ecommerce store\",\n \"disbursement_status\": \"Aplicada\"\n }\n ],\n \"totalRecords\": 7,\n \"recordsPerPage\": 10,\n \"currentPage\": 1,\n \"totalPages\": 1\n}" schema: type: object properties: data: type: array items: type: object properties: atrato_id: type: integer example: 2660 default: 0 order_id: type: string example: AAAA-BBBBB-CCCC-DDDD-EEEEE18 atrato_application_id: type: integer example: 7745 default: 0 disbursed: type: integer example: 1 default: 0 transfer_date: type: string example: '2024-09-13T22:10:56.000Z' amount_disbursed: type: integer example: 1000 default: 0 tracking_key: type: string example: SUC261TX429 transactionId: type: integer example: 429 default: 0 merchant: type: string example: Ecommerce merchant store: type: string example: Ecommerce store disbursement_status: type: string example: Aplicada totalRecords: type: integer example: 7 default: 0 recordsPerPage: type: integer example: 10 default: 0 currentPage: type: integer example: 1 default: 0 totalPages: type: integer example: 1 default: 0 '400': description: '400' content: application/json: examples: Result: value: "{\n \"message\": \"Valor de fechas incorrecto\"\n}" schema: oneOf: - type: object properties: message: type: string example: Parámetros incorrectos - type: object properties: message: type: string example: Valor de fechas incorrecto '500': description: '500' content: application/json: examples: Result: value: "{\n \"message\": \"La consulta no pudo ser procesada satisfactoriamente\"\n}" schema: type: object properties: message: type: string example: La consulta no pudo ser procesada satisfactoriamente deprecated: false security: [] tags: - Ecommerce /api/v4/ecommerce/integration/{partner-key}/disbursement/{transaction-id}: get: summary: Consulta de desembolsos por número de transacción description: '' operationId: consulta-de-desembolsos-orden parameters: - name: partner-key in: path description: Código de validación de sucursal, se obtiene del dashboard de partner schema: type: string required: true - name: transaction-id in: path description: Número de transacción de desembolso schema: type: string required: true - name: x-auth-token in: header description: Token de autenticación required: true schema: type: string responses: '200': description: '200' content: application/json: examples: Result: value: "{\n \"amount\": 1000,\n \"transactionId\": 464,\n \"trackingKey\": \"SUC261TX464\",\n \"balance\": [\n {\n \"id\": 354,\n \"creationDate\": \"2024-10-15 18:48:54\",\n \"type\": \"CONTRIBUTION\",\n \"status\": \"APPLIED\",\n \"amount\": 1000,\n \"previousBalance\": 0,\n \"actualBalance\": 1000,\n \"credit\": {\n \"orderId\": \"AAAA-BBBBB-CCCC-DDDD-EEEEE70703\",\n \"atratoCreditId\": 2818,\n \"atratoApplicationId\": 8144,\n \"amountPurchase\": 1000,\n \"amountGranted\": 1000,\n \"merchantComission\": \"0%\",\n \"comissionAmount\": 0,\n \"ivaAmount\": 0,\n \"disbursementAmount\": 1000\n }\n }\n ]\n}" schema: type: object properties: amount: type: integer example: 1000 default: 0 transactionId: type: integer example: 464 default: 0 trackingKey: type: string example: SUC261TX464 balance: type: array items: type: object properties: id: type: integer example: 354 default: 0 creationDate: type: string example: '2024-10-15 18:48:54' type: type: string example: CONTRIBUTION status: type: string example: APPLIED amount: type: integer example: 1000 default: 0 previousBalance: type: integer example: 0 default: 0 actualBalance: type: integer example: 1000 default: 0 credit: type: object properties: orderId: type: string example: AAAA-BBBBB-CCCC-DDDD-EEEEE70703 atratoCreditId: type: integer example: 2818 default: 0 atratoApplicationId: type: integer example: 8144 default: 0 amountPurchase: type: integer example: 1000 default: 0 amountGranted: type: integer example: 1000 default: 0 merchantComission: type: string example: 0% comissionAmount: type: integer example: 0 default: 0 ivaAmount: type: integer example: 0 default: 0 disbursementAmount: type: integer example: 1000 default: 0 '400': description: '400' content: application/json: examples: Result: value: "{\n \"message\": \"Valor de fechas incorrecto\"\n}" schema: oneOf: - type: object properties: message: type: string example: Parámetros incorrectos - type: object properties: message: type: string example: Valor de fechas incorrecto '500': description: '500' content: application/json: examples: Result: value: "{\n \"message\": \"La consulta no pudo ser procesada satisfactoriamente\"\n}" schema: type: object properties: message: type: string example: La consulta no pudo ser procesada satisfactoriamente deprecated: false security: [] tags: - Ecommerce components: securitySchemes: sec0: type: apiKey in: header name: x-auth-token