{
  "info": {
    "name": "MetrePay API",
    "description": "# MetrePay API v1.9\n\nColección de consultas para la API de MetrePay. Incluye todos los endpoints disponibles para la gestión de links de pago, suscripciones, cuotas y transferencias.\n\n## Autenticación\n\nTodas las peticiones requieren el header `Api-Token` con un token UUID proporcionado por MetrePay.\n\n## Ambientes\n\n| Ambiente | URL Base |\n| :--- | :--- |\n| Pruebas (nacional) | `https://test.metrepay.com/api/` |\n| Producción (nacional) | `https://portal.metrepay.com/api/` |\n| Pruebas (internacional) | `https://intl-test.metrepay.com/api/` |\n| Producción (internacional) | `https://internacional.metrepay.com/api/` |\n\n## Variables de Colección\n\n- `base_url`: URL base de la API según el ambiente.\n- `api_token`: Token de autenticación en formato UUID.\n\nÚltima actualización: Mayo 2026.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "variable": [
    {
      "key": "base_url",
      "value": "https://test.metrepay.com/api",
      "type": "string"
    },
    {
      "key": "api_token",
      "value": "378f1be7-daeb-4d75-a6d6-a4bcc431225e",
      "type": "string"
    },
    {
      "key": "callback_url",
      "value": "https://miapp.com/webhooks/metrepay",
      "type": "string"
    }
  ],
  "item": [
    {
      "name": "Links de Pago",
      "description": "Endpoints para la creación y consulta de links de pago.",
      "item": [
        {
          "name": "Generar Link de Pago (Pago Único)",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Api-Token", "value": "{{api_token}}", "type": "text" },
              { "key": "Content-Type", "value": "application/json", "type": "text" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"label\": \"Cuota social del mes de Enero\",\n  \"amount\": 200000,\n  \"handleValue\": \"juanperez@metrepay.com\",\n  \"handleLabel\": \"Juan Pérez\",\n  \"customIdentifier2\": \"4000124\",\n  \"singlePayment\": true,\n  \"creditAndDebitCard\": true\n}"
            },
            "url": {
              "raw": "{{base_url}}/saleitems/add",
              "host": ["{{base_url}}"],
              "path": ["saleitems", "add"]
            },
            "description": "Genera un link de pago único. El cliente realiza un solo pago sin generar recurrencia.\n\n### Campos del cuerpo\n\n| Campo | Condición | Descripción |\n| :--- | :--- | :--- |\n| `label` | Requerido | Concepto del pago. |\n| `amount` | Requerido | Monto a pagar. |\n| `handleValue` | Requerido | Email o teléfono del cliente. |\n| `handleLabel` | Requerido | Nombre del cliente. |\n| `customIdentifier` | Opcional | Identificador personalizado. |\n| `customIdentifier2` | Opcional | Segundo identificador. |\n| `singlePayment` | Requerido | `true` para pago único. |\n| `creditAndDebitCard` | Requerido | `true` para habilitar tarjetas. |\n| `recurrentPayment` | Requerido | `false` para pago único. |\n| `payWaitHours` | Opcional | Horas de vigencia (0=ilimitada). |\n| `redirectUrl` | Opcional | URL de redirección post-pago. |\n| `noLoginRequired` | Opcional | `true` si el comercio tiene habilitada la omisión de login. |\n| `documentNumber` | Opcional | Número de documento (requerido si `noLoginRequired` es `true`). |\n| `paymentMethods` | Opcional | Array de procesadoras (ej: `[\"PARAGUAY.BANCARD\"]`). |"
          },
          "response": [
            {
              "name": "Respuesta Exitosa",
              "status": "OK",
              "code": 200,
              "header": [{ "key": "Content-Type", "value": "application/json" }],
              "body": "{\n  \"id\": 7,\n  \"currency\": \"PYG\",\n  \"ammount\": \"4000000.00\",\n  \"statusId\": 90,\n  \"slug\": \"p5e56fc8b9d793\",\n  \"publicPayUrl\": \"https://test.metrepay.com/pay/prueba/item/p5e56fc8b9d793\"\n}"
            }
          ]
        },
        {
          "name": "Generar Link de Pago (Suscripción STATIC)",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Api-Token", "value": "{{api_token}}", "type": "text" },
              { "key": "Content-Type", "value": "application/json", "type": "text" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"label\": \"Cuota social\",\n  \"amount\": 200000,\n  \"handleValue\": \"juanperez@metrepay.com\",\n  \"handleLabel\": \"Juan Pérez\",\n  \"customIdentifier\": \"11\",\n  \"customIdentifier2\": \"22\",\n  \"singlePayment\": false,\n  \"creditAndDebitCard\": true,\n  \"recurrentPayment\": true,\n  \"installmentAmount\": 180000,\n  \"totalPeriods\": 24,\n  \"dayOfMonth\": 28,\n  \"monthForSecondInstallment\": 1,\n  \"payWaitHours\": 96\n}"
            },
            "url": {
              "raw": "{{base_url}}/saleitems/add",
              "host": ["{{base_url}}"],
              "path": ["saleitems", "add"]
            },
            "description": "Genera un link de pago con suscripción de débito automático de tipo STATIC (cuotas pre-programadas con monto fijo).\n\n### Campos adicionales para suscripción STATIC\n\n| Campo | Condición | Descripción |\n| :--- | :--- | :--- |\n| `recurrentPayment` | Requerido | `true` para habilitar recurrencia. |\n| `recurrentPaymentType` | Opcional | `\"STATIC\"` (valor por defecto). |\n| `installmentAmount` | Requerido | Monto desde la 2da cuota. |\n| `totalPeriods` | Requerido | Cantidad total de cuotas (incluyendo la 1ra). |\n| `dayOfMonth` | Requerido | Día del mes para débitos (1-28). |\n| `monthForSecondInstallment` | Requerido | Mes de la 2da cuota: `0`=mismo mes, `1`=mes siguiente, etc. |"
          },
          "response": [
            {
              "name": "Respuesta Exitosa",
              "status": "OK",
              "code": 200,
              "header": [{ "key": "Content-Type", "value": "application/json" }],
              "body": "{\n  \"id\": 15,\n  \"currency\": \"PYG\",\n  \"ammount\": \"200000.00\",\n  \"statusId\": 100,\n  \"slug\": \"a1b2c3d4e5f6\",\n  \"publicPayUrl\": \"https://test.metrepay.com/pay/prueba/item/a1b2c3d4e5f6\"\n}"
            }
          ]
        },
        {
          "name": "Generar Link de Pago (Suscripción DYNAMIC)",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Api-Token", "value": "{{api_token}}", "type": "text" },
              { "key": "Content-Type", "value": "application/json", "type": "text" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"label\": \"Cuota social - Montos dinámicos\",\n  \"amount\": 100,\n  \"handleValue\": \"juanperez@metrepay.com\",\n  \"handleLabel\": \"Juan Pérez - Montos dinámicos\",\n  \"customIdentifier\": \"4000123-1\",\n  \"customIdentifier2\": \"4000123-2\",\n  \"singlePayment\": false,\n  \"creditAndDebitCard\": true,\n  \"recurrentPayment\": true,\n  \"payWaitHours\": 96,\n  \"recurrentPaymentType\": \"DYNAMIC\"\n}"
            },
            "url": {
              "raw": "{{base_url}}/saleitems/add",
              "host": ["{{base_url}}"],
              "path": ["saleitems", "add"]
            },
            "description": "Genera un link de pago con suscripción de tipo DYNAMIC (montos variables por número de factura).\n\n> ⚠️ **Solo SaaS:** Este tipo de suscripción está disponible exclusivamente para comercios con contrato **SaaS**. Para otros tipos de contrato, la petición será rechazada."
          },
          "response": [
            {
              "name": "Respuesta Exitosa",
              "status": "OK",
              "code": 200,
              "header": [{ "key": "Content-Type", "value": "application/json" }],
              "body": "{\n  \"id\": 20,\n  \"currency\": \"PYG\",\n  \"ammount\": \"100.00\",\n  \"statusId\": 100,\n  \"slug\": \"d5e6f7a8b9c0\",\n  \"publicPayUrl\": \"https://test.metrepay.com/pay/prueba/item/d5e6f7a8b9c0\"\n}"
            }
          ]
        },
        {
          "name": "Generar Link de Pago (con Usuario Autenticado)",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Api-Token", "value": "{{api_token}}", "type": "text" },
              { "key": "Content-Type", "value": "application/json", "type": "text" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"label\": \"Cuota social\",\n  \"amount\": 200000,\n  \"handleValue\": \"juanperez@example.com\",\n  \"handleLabel\": \"Juan Pérez\",\n  \"customIdentifier\": \"11\",\n  \"customIdentifier2\": \"22\",\n  \"singlePayment\": false,\n  \"creditAndDebitCard\": true,\n  \"recurrentPayment\": true,\n  \"installmentAmount\": 180000,\n  \"totalPeriods\": 24,\n  \"dayOfMonth\": 28,\n  \"monthForSecondInstallment\": 1,\n  \"payWaitHours\": 96,\n  \"signedInUser\": {\n    \"email\": \"juanperez@example.com\",\n    \"firstName\": \"Juan\",\n    \"lastName\": \"Pérez\"\n  }\n}"
            },
            "url": {
              "raw": "{{base_url}}/ext-app/payrequests/signed-in-user",
              "host": ["{{base_url}}"],
              "path": ["ext-app", "payrequests", "signed-in-user"]
            },
            "description": "Genera un link de pago indicando el usuario ya autenticado en la aplicación del comercio. Al abrirse el link, MetrePay omite el proceso de login propio y abre directamente la vista de pago con la sesión del usuario indicado.\n\n> ⚠️ **Solo SaaS:** Este endpoint está disponible exclusivamente para comercios con contrato **SaaS**. Para otros tipos de contrato, la petición será rechazada.\n\n### Campos adicionales\n\n| Campo | Condición | Descripción |\n| :--- | :--- | :--- |\n| `signedInUser` | Requerido | Objeto JSON con los datos del usuario autenticado. |\n| `signedInUser.email` | Requerido | Email del usuario. Debe tener formato válido; de lo contrario se retorna `400`. |\n| `signedInUser.firstName` | Requerido | Nombre del usuario. |\n| `signedInUser.lastName` | Requerido | Apellido del usuario. |\n\n### Campos de la respuesta\n\n| Campo | Descripción |\n| :--- | :--- |\n| `id` | Número del ticket MP. |\n| `currency` | Tipo de moneda. |\n| `amount` | Monto del link de pago. |\n| `expireTime` | Fecha y hora de vencimiento del link. |\n| `statusId` | Código del estado del pago. |\n| `slug` | Prefijo del link de pago. |\n| `publicPayUrl` | Link de pago. Al abrirse, la sesión del usuario indicado se inicia automáticamente. |\n| `userId` | ID del usuario en MetrePay. Si no existía, se crea y activa automáticamente. |"
          },
          "response": [
            {
              "name": "Respuesta Exitosa",
              "status": "OK",
              "code": 200,
              "header": [{ "key": "Content-Type", "value": "application/json" }],
              "body": "{\n  \"id\": 10914,\n  \"currency\": \"PYG\",\n  \"amount\": \"200000.00\",\n  \"expireTime\": \"2026-05-18 11:50:07\",\n  \"statusId\": 100,\n  \"slug\": \"p6a05ef2fdd17f\",\n  \"publicPayUrl\": \"https://test.metrepay.com/pay/tu-comercio/item/p6a05ef2fdd17f\",\n  \"userId\": 1233\n}"
            }
          ]
        },
        {
          "name": "Generar Link de Pago (con Procesadora Específica)",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Api-Token", "value": "{{api_token}}", "type": "text" },
              { "key": "Content-Type", "value": "application/json", "type": "text" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"label\": \"Prueba 002\",\n  \"amount\": 20000,\n  \"handleValue\": \"juanperez@metrepay.com\",\n  \"handleLabel\": \"Juan Pérez\",\n  \"customIdentifier\": \"4000124\",\n  \"singlePayment\": true,\n  \"creditAndDebitCard\": true,\n  \"noLoginRequired\": true,\n  \"paymentMethods\": [\"PARAGUAY.BANCARD\"]\n}"
            },
            "url": {
              "raw": "{{base_url}}/saleitems/add",
              "host": ["{{base_url}}"],
              "path": ["saleitems", "add"]
            },
            "description": "Genera un link de pago habilitando únicamente procesadoras específicas. El campo `paymentMethods` acepta un array con valores como `\"PARAGUAY.BANCARD\"` o `\"PARAGUAY.BEPSA\"`. Si no se envía, se habilitan todas las procesadoras disponibles."
          },
          "response": [
            {
              "name": "Respuesta Exitosa",
              "status": "OK",
              "code": 200,
              "header": [{ "key": "Content-Type", "value": "application/json" }],
              "body": "{\n  \"id\": 25,\n  \"currency\": \"PYG\",\n  \"ammount\": \"20000.00\",\n  \"statusId\": 100,\n  \"slug\": \"f1a2b3c4d5e6\",\n  \"publicPayUrl\": \"https://test.metrepay.com/pay/prueba/item/f1a2b3c4d5e6\"\n}"
            }
          ]
        },
        {
          "name": "Recuperar Link de Pago",
          "request": {
            "method": "GET",
            "header": [
              { "key": "Api-Token", "value": "{{api_token}}", "type": "text" }
            ],
            "url": {
              "raw": "{{base_url}}/payrequests/15",
              "host": ["{{base_url}}"],
              "path": ["payrequests", "15"]
            },
            "description": "Consulta los datos de un link de pago existente.\n\n### Parámetros de Ruta\n\n| Campo | Condición | Descripción |\n| :--- | :--- | :--- |\n| `id` | Requerido | Identificador del link de pago (obtenido al generar el link con `saleitems/add`). |"
          },
          "response": [
            {
              "name": "Respuesta Exitosa",
              "status": "OK",
              "code": 200,
              "header": [{ "key": "Content-Type", "value": "application/json" }],
              "body": "{\n  \"id\": 7,\n  \"currency\": \"PYG\",\n  \"ammount\": \"4000000.00\",\n  \"statusId\": 90,\n  \"slug\": \"p5e56fc8b9d793\",\n  \"publicPayUrl\": \"https://test.metrepay.com/pay/prueba/item/p5e56fc8b9d793\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Suscripciones",
      "description": "Endpoints para la gestión de suscripciones a nivel general: cancelaciones y modificaciones masivas.",
      "item": [
        {
          "name": "Cancelar Cuota por Monto",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Api-Token", "value": "{{api_token}}", "type": "text" },
              { "key": "Content-Type", "value": "application/json", "type": "text" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"customIdentifier\": \"11\",\n  \"amount\": 10000,\n  \"quantity\": 1\n}"
            },
            "url": {
              "raw": "{{base_url}}/subscriptions/cancel-by-amount",
              "host": ["{{base_url}}"],
              "path": ["subscriptions", "cancel-by-amount"]
            },
            "description": "Cancela una o más cuotas programadas identificándolas por su monto. Las cuotas quedan en estado cancelado, pero la suscripción sigue activa mientras existan otras cuotas pendientes.\n\nCaso de uso habitual: el cliente abonó su(s) cuota(s) a través de otro medio de pago.\n\n### Campos del cuerpo\n\n| Campo | Condición | Descripción |\n| :--- | :--- | :--- |\n| `customIdentifier` | Requerido si no se indica `customIdentifier2` | Identificador único de la suscripción. |\n| `customIdentifier2` | Requerido si no se indica `customIdentifier` | Segundo identificador personalizado. |\n| `amount` | Requerido | Monto de la cuota a cancelar. |\n| `quantity` | Requerido | Cantidad de cuotas del mismo monto a cancelar. |"
          },
          "response": [
            {
              "name": "Respuesta Exitosa",
              "status": "OK",
              "code": 200,
              "header": [{ "key": "Content-Type", "value": "application/json" }],
              "body": "{\n  \"customIdentifier\": \"123456654321\",\n  \"ammount\": 4000,\n  \"quantity\": 2,\n  \"status\": \"OK\",\n  \"quantityCancelled\": 1\n}"
            }
          ]
        },
        {
          "name": "Cancelar Cuota por Factura (DYNAMIC)",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Api-Token", "value": "{{api_token}}", "type": "text" },
              { "key": "Content-Type", "value": "application/json", "type": "text" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"customIdentifier\": \"11\",\n  \"customIdentifier2\": \"22\",\n  \"invoiceNumber\": \"001-003\"\n}"
            },
            "url": {
              "raw": "{{base_url}}/subscriptions/cancel-by-invoice",
              "host": ["{{base_url}}"],
              "path": ["subscriptions", "cancel-by-invoice"]
            },
            "description": "Cancela una o más cuotas programadas identificándolas por el número de factura indicado en la planilla de subida. Exclusivo para comercios que utilicen la modalidad de montos dinámicos (`recurrentPaymentType: \"DYNAMIC\"`). No tiene efecto para suscripciones con cuotas pre-programadas.\n\n### Campos del cuerpo\n\n| Campo | Condición | Descripción |\n| :--- | :--- | :--- |\n| `customIdentifier` | Requerido si no se indica `customIdentifier2` | Identificador único de la suscripción. |\n| `customIdentifier2` | Requerido si no se indica `customIdentifier` | Segundo identificador personalizado. |\n| `invoiceNumber` | Requerido | Número de factura a cancelar. |"
          },
          "response": [
            {
              "name": "Respuesta Exitosa",
              "status": "OK",
              "code": 200,
              "header": [{ "key": "Content-Type", "value": "application/json" }],
              "body": "{\n  \"customIdentifier\": \"123456654321\",\n  \"invoiceNumber\": \"001-001-000001\",\n  \"status\": \"OK\"\n}"
            }
          ]
        },
        {
          "name": "Cancelar Suscripción Completa",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Api-Token", "value": "{{api_token}}", "type": "text" },
              { "key": "Content-Type", "value": "application/json", "type": "text" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"customIdentifier\": \"11\",\n  \"customIdentifier2\": \"22\"\n}"
            },
            "url": {
              "raw": "{{base_url}}/subscriptions/cancel-all",
              "host": ["{{base_url}}"],
              "path": ["subscriptions", "cancel-all"]
            },
            "description": "Cancela todas las cuotas pendientes de una suscripción y la da por finalizada.\n\nCaso de uso habitual: el cliente se da de baja del servicio.\n\n### Campos del cuerpo\n\n| Campo | Condición | Descripción |\n| :--- | :--- | :--- |\n| `customIdentifier` | Requerido si no se indica `customIdentifier2` | Identificador único de la suscripción. |\n| `customIdentifier2` | Requerido si no se indica `customIdentifier` | Segundo identificador personalizado. |"
          },
          "response": [
            {
              "name": "Respuesta Exitosa",
              "status": "OK",
              "code": 200,
              "header": [{ "key": "Content-Type", "value": "application/json" }],
              "body": "{\n  \"customIdentifier\": \"123456654321\",\n  \"status\": \"OK\"\n}"
            }
          ]
        },
        {
          "name": "Modificar Monto de Cuota (por Monto)",
          "request": {
            "method": "PUT",
            "header": [
              { "key": "Api-Token", "value": "{{api_token}}", "type": "text" },
              { "key": "Content-Type", "value": "application/json", "type": "text" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"customIdentifier\": \"123456789\",\n  \"quantity\": 1,\n  \"currentAmount\": 201000,\n  \"newAmount\": 200000\n}"
            },
            "url": {
              "raw": "{{base_url}}/subscriptions/modify-by-amount",
              "host": ["{{base_url}}"],
              "path": ["subscriptions", "modify-by-amount"]
            },
            "description": "Modifica el monto de una o más cuotas programadas, reemplazando un monto determinado por otro.\n\n### Campos del cuerpo\n\n| Campo | Condición | Descripción |\n| :--- | :--- | :--- |\n| `customIdentifier` | Requerido si no se indica `customIdentifier2` | Identificador único de la suscripción. |\n| `customIdentifier2` | Requerido si no se indica `customIdentifier` | Segundo identificador personalizado. |\n| `quantity` | Requerido | Cantidad de cuotas del mismo monto a modificar. |\n| `currentAmount` | Requerido | Monto actual de la cuota a modificar. |\n| `newAmount` | Requerido | Nuevo monto a establecer. |"
          },
          "response": [
            {
              "name": "Respuesta Exitosa",
              "status": "OK",
              "code": 200,
              "header": [{ "key": "Content-Type", "value": "application/json" }],
              "body": "{\n  \"customIdentifier\": \"123456654321\",\n  \"currentAmount\": 150000,\n  \"newAmount\": 200000,\n  \"quantity\": 2,\n  \"status\": \"OK\",\n  \"quantityModified\": 2\n}"
            }
          ]
        },
        {
          "name": "Modificar Monto de Todas las Cuotas",
          "request": {
            "method": "PUT",
            "header": [
              { "key": "Api-Token", "value": "{{api_token}}", "type": "text" },
              { "key": "Content-Type", "value": "application/json", "type": "text" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"customIdentifier2\": \"22\",\n  \"newAmount\": 17000\n}"
            },
            "url": {
              "raw": "{{base_url}}/subscriptions/modify-all",
              "host": ["{{base_url}}"],
              "path": ["subscriptions", "modify-all"]
            },
            "description": "Modifica el monto de todas las cuotas pendientes de una suscripción.\n\n### Campos del cuerpo\n\n| Campo | Condición | Descripción |\n| :--- | :--- | :--- |\n| `customIdentifier` | Requerido si no se indica `customIdentifier2` | Identificador único de la suscripción. |\n| `customIdentifier2` | Requerido si no se indica `customIdentifier` | Segundo identificador personalizado. |\n| `newAmount` | Requerido | Nuevo monto para todas las cuotas pendientes. |"
          },
          "response": [
            {
              "name": "Respuesta Exitosa",
              "status": "OK",
              "code": 200,
              "header": [{ "key": "Content-Type", "value": "application/json" }],
              "body": "{\n  \"customIdentifier\": \"123456654321\",\n  \"newAmount\": 200000,\n  \"status\": \"OK\",\n  \"quantityModified\": 2\n}"
            }
          ]
        },
        {
          "name": "Modificar Fecha de Débito",
          "request": {
            "method": "PUT",
            "header": [
              { "key": "Api-Token", "value": "{{api_token}}", "type": "text" },
              { "key": "Content-Type", "value": "application/json", "type": "text" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"customIdentifier\": \"11\",\n  \"customIdentifier2\": \"22\",\n  \"newDate\": 10\n}"
            },
            "url": {
              "raw": "{{base_url}}/subscriptions/modify-dates",
              "host": ["{{base_url}}"],
              "path": ["subscriptions", "modify-dates"]
            },
            "description": "Modifica el día del mes en que se debitarán las cuotas pendientes de una suscripción.\n\n### Campos del cuerpo\n\n| Campo | Condición | Descripción |\n| :--- | :--- | :--- |\n| `customIdentifier` | Requerido si no se indica `customIdentifier2` | Identificador único de la suscripción. |\n| `customIdentifier2` | Requerido si no se indica `customIdentifier` | Segundo identificador personalizado. |\n| `newDate` | Requerido (numérico) | Nuevo día del mes (1-28) o `-1` para último día del mes. |"
          },
          "response": [
            {
              "name": "Respuesta Exitosa",
              "status": "OK",
              "code": 200,
              "header": [{ "key": "Content-Type", "value": "application/json" }],
              "body": "{\n  \"customIdentifier\": \"123456654321\",\n  \"newDate\": 10,\n  \"status\": \"OK\",\n  \"quantityModified\": 2\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Gestión de Cuotas",
      "description": "Endpoints para la gestión detallada de cuotas individuales dentro de suscripciones (v2).",
      "item": [
        {
          "name": "Consultar Cuotas de Suscripción",
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          },
          "request": {
            "method": "GET",
            "header": [
              { "key": "Api-Token", "value": "{{api_token}}", "type": "text" },
              { "key": "Content-Type", "value": "application/json", "type": "text" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"customIdentifier\": \"123-4\"\n}"
            },
            "url": {
              "raw": "{{base_url}}/subscriptions/installments",
              "host": ["{{base_url}}"],
              "path": ["subscriptions", "installments"]
            },
            "description": "Retorna las cuotas pendientes de suscripciones activas para la combinación de identificadores proporcionados.\n\n### Campos del cuerpo\n\n| Campo | Condición | Descripción |\n| :--- | :--- | :--- |\n| `customIdentifier` | Requerido si no se indica `customIdentifier2` | Identificador único de la suscripción. |\n| `customIdentifier2` | Requerido si no se indica `customIdentifier` | Segundo identificador personalizado. |\n\n### Notas\n- Solo se retornan cuotas pendientes de suscripciones activas.\n- Se requiere al menos uno de los dos identificadores."
          },
          "response": [
            {
              "name": "Respuesta Exitosa",
              "status": "OK",
              "code": 200,
              "header": [{ "key": "Content-Type", "value": "application/json" }],
              "body": "{\n  \"installments\": [\n    {\n      \"id\": \"123456\",\n      \"amount\": 75000.00,\n      \"payment_date\": \"2025-07-01\"\n    },\n    {\n      \"id\": \"123457\",\n      \"amount\": 75000.00,\n      \"payment_date\": \"2025-08-01\"\n    },\n    {\n      \"id\": \"123458\",\n      \"amount\": 75000.00,\n      \"payment_date\": \"2025-09-01\"\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "Modificar Cuota de Suscripción",
          "request": {
            "method": "PATCH",
            "header": [
              { "key": "Api-Token", "value": "{{api_token}}", "type": "text" },
              { "key": "Content-Type", "value": "application/json", "type": "text" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"amount\": 16000.00,\n  \"payment_date\": \"2025-07-23\"\n}"
            },
            "url": {
              "raw": "{{base_url}}/subscriptions/installments/12345",
              "host": ["{{base_url}}"],
              "path": ["subscriptions", "installments", "12345"]
            },
            "description": "Modifica el monto y/o la fecha de una cuota específica dentro de una suscripción. Permite modificar cualquiera de los campos de forma independiente, o ambos a la vez.\n\n### Parámetros de Ruta\n\n| Campo | Condición | Descripción |\n| :--- | :--- | :--- |\n| `installment_id` | Requerido | Identificador de la cuota a modificar (obtenido desde consulta de cuotas). |\n\n### Campos del cuerpo\n\n| Campo | Condición | Tipo | Descripción |\n| :--- | :--- | :--- | :--- |\n| `amount` | Opcional | Numérico (2 decimales) | Nuevo monto de la cuota. |\n| `payment_date` | Opcional | Texto (yyyy-MM-dd) | Nueva fecha de la cuota. |\n\nAl menos uno de los dos campos debe estar presente. El monto debe ser mayor a cero."
          },
          "response": [
            {
              "name": "Respuesta Exitosa",
              "status": "OK",
              "code": 200,
              "header": [{ "key": "Content-Type", "value": "application/json" }],
              "body": "{\n  \"message\": \"Cuota modificada exitosamente.\"\n}"
            }
          ]
        },
        {
          "name": "Cancelar Cuota de Suscripción",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Api-Token", "value": "{{api_token}}", "type": "text" },
              { "key": "Content-Type", "value": "application/json", "type": "text" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{}"
            },
            "url": {
              "raw": "{{base_url}}/subscriptions/installments/29465/cancel",
              "host": ["{{base_url}}"],
              "path": ["subscriptions", "installments", "29465", "cancel"]
            },
            "description": "Cancela una cuota específica de una suscripción, identificándola por su ID.\n\n### Parámetros de Ruta\n\n| Campo | Condición | Descripción |\n| :--- | :--- | :--- |\n| `installment_id` | Requerido | Identificador de la cuota a cancelar (obtenido desde consulta de cuotas). |\n\n### Cuerpo\n\nNo se requieren campos en el cuerpo. Enviar `{}`.\n\n### Notas\n- Solo se aplica sobre cuotas pendientes de suscripciones activas.\n- La suscripción se mantiene activa mientras existan otras cuotas pendientes."
          },
          "response": [
            {
              "name": "Respuesta Exitosa",
              "status": "OK",
              "code": 200,
              "header": [{ "key": "Content-Type", "value": "application/json" }],
              "body": "{\n  \"message\": \"Cuota cancelada exitosamente.\"\n}"
            }
          ]
        },
        {
          "name": "Agregar Cuotas a Suscripción",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Api-Token", "value": "{{api_token}}", "type": "text" },
              { "key": "Content-Type", "value": "application/json", "type": "text" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"custom_identifier\": \"11\",\n  \"custom_identifier2\": \"22\",\n  \"installments\": [\n    {\n      \"payment_date\": \"2028-06-10\",\n      \"amount\": 76000\n    },\n    {\n      \"payment_date\": \"2028-07-10\",\n      \"amount\": 76000\n    }\n  ]\n}"
            },
            "url": {
              "raw": "{{base_url}}/subscriptions/installments",
              "host": ["{{base_url}}"],
              "path": ["subscriptions", "installments"]
            },
            "description": "Inserta cuotas adicionales a una suscripción activa.\n\n### Campos del cuerpo\n\n| Campo | Condición | Tipo | Descripción |\n| :--- | :--- | :--- | :--- |\n| `custom_identifier` | Requerido si no se indica `custom_identifier2` | Texto | Identificador único de la suscripción. |\n| `custom_identifier2` | Requerido si no se indica `custom_identifier` | Texto | Segundo identificador personalizado. |\n| `installments` | Requerido | Array | Lista de cuotas a agregar. |\n| `installments[].payment_date` | Requerido | Texto (yyyy-MM-dd) | Fecha de la cuota nueva. |\n| `installments[].amount` | Requerido | Numérico (2 decimales) | Monto de la cuota nueva. |\n\n### Notas\n- El campo `installments` debe ser siempre un array JSON, incluso para una sola cuota.\n- Solo se aplica sobre suscripciones activas.\n- Los montos deben ser mayores a cero."
          },
          "response": [
            {
              "name": "Respuesta Exitosa",
              "status": "OK",
              "code": 200,
              "header": [{ "key": "Content-Type", "value": "application/json" }],
              "body": "{\n  \"message\": \"Cuotas agregadas exitosamente.\"\n}"
            }
          ]
        },
        {
          "name": "Modificación Masiva de Cuotas",
          "request": {
            "method": "PATCH",
            "header": [
              { "key": "Api-Token", "value": "{{api_token}}", "type": "text" },
              { "key": "Content-Type", "value": "application/json", "type": "text" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"operations\": [\n    {\n      \"custom_identifier\": \"123123\",\n      \"updates\": [\n        {\n          \"payment_date\": \"2026-02-28\",\n          \"amount\": 275000.00\n        },\n        {\n          \"payment_date\": \"2026-04-28\",\n          \"amount\": 299900.00\n        }\n      ]\n    },\n    {\n      \"custom_identifier\": \"11\",\n      \"custom_identifier2\": \"11\",\n      \"updates\": [\n        {\n          \"payment_date\": \"2026-02-01\",\n          \"amount\": 42000.00\n        }\n      ]\n    }\n  ]\n}"
            },
            "url": {
              "raw": "{{base_url}}/subscriptions/installments/bulk",
              "host": ["{{base_url}}"],
              "path": ["subscriptions", "installments", "bulk"]
            },
            "description": "Permite modificar cuotas de múltiples suscripciones en una sola operación. Soporta hasta 200 suscripciones por petición y hasta 60 cuotas por suscripción.\n\n### Campos del cuerpo\n\n| Campo | Condición | Tipo | Descripción |\n| :--- | :--- | :--- | :--- |\n| `operations` | Requerido | Array | Lista de operaciones por suscripción (máximo 200). |\n| `operations[].custom_identifier` | Opcional | Texto | Identificador único de la suscripción. |\n| `operations[].custom_identifier2` | Opcional | Texto | Segundo identificador personalizado. |\n| `operations[].updates` | Requerido | Array | Lista de cuotas a modificar (máximo 60 por suscripción). |\n| `operations[].updates[].payment_date` | Requerido | Texto (yyyy-MM-dd) | Fecha de la cuota a modificar. |\n| `operations[].updates[].amount` | Requerido | Numérico (2 decimales) | Nuevo monto de la cuota. |\n\n### Límites\n- Máximo 200 suscripciones en el array `operations`.\n- Máximo 60 cuotas en el array `updates` por suscripción."
          },
          "response": [
            {
              "name": "Respuesta Exitosa",
              "status": "OK",
              "code": 200,
              "header": [{ "key": "Content-Type", "value": "application/json" }],
              "body": "{\n  \"summary\": {\n    \"subscriptions_received\": 2,\n    \"subscriptions_processed\": 2,\n    \"updates_applied\": 2,\n    \"updates_failed\": 1\n  },\n  \"results\": [\n    {\n      \"custom_identifier\": \"123123\",\n      \"status\": \"success\",\n      \"updates\": [\n        {\n          \"payment_date\": \"2026-02-28\",\n          \"status\": \"updated\",\n          \"installment_id\": 29100,\n          \"updated_fields\": {\n            \"amount\": 275000.00\n          }\n        },\n        {\n          \"payment_date\": \"2026-04-28\",\n          \"status\": \"failed\"\n        }\n      ]\n    },\n    {\n      \"custom_identifier\": \"11\",\n      \"custom_identifier2\": \"11\",\n      \"status\": \"success\",\n      \"updates\": [\n        {\n          \"payment_date\": \"2026-02-01\",\n          \"status\": \"updated\",\n          \"installment_id\": 29465,\n          \"updated_fields\": {\n            \"amount\": 42000.00\n          }\n        }\n      ]\n    }\n  ]\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Transferencias",
      "description": "Endpoints para la notificación de transferencias bancarias.",
      "item": [
        {
          "name": "Notificación de Transferencia Bancaria",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Api-Token", "value": "{{api_token}}", "type": "text" },
              { "key": "Content-Type", "value": "application/json", "type": "text" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"nroDocumentoRemitente\": \"1234567\",\n  \"bancoRemitente\": \"Familiar\",\n  \"nroCuentaRemitente\": \"3169297\",\n  \"nroCuentaBeneficiario\": \"43434\",\n  \"nombreBeneficiario\": \"impulso\",\n  \"monto\": 3500,\n  \"refOperacion\": \"123123123\"\n}"
            },
            "url": {
              "raw": "{{base_url}}/bank-notification/add",
              "host": ["{{base_url}}"],
              "path": ["bank-notification", "add"]
            },
            "description": "Registra una notificación de transferencia bancaria realizada por un cliente. Permite informar a MetrePay sobre pagos realizados mediante transferencia fuera de la plataforma.\n\n### Campos del cuerpo\n\n| Campo | Condición | Descripción |\n| :--- | :--- | :--- |\n| `nroDocumentoRemitente` | Requerido | Número de documento del remitente. |\n| `bancoRemitente` | Requerido | Nombre del banco del remitente. |\n| `nroCuentaRemitente` | Requerido | Número de cuenta del remitente. |\n| `nroCuentaBeneficiario` | Requerido | Número de cuenta del beneficiario. |\n| `nombreBeneficiario` | Requerido | Nombre del beneficiario. |\n| `monto` | Requerido | Monto de la transferencia. |\n| `refOperacion` | Requerido | Referencia de la operación bancaria. |"
          },
          "response": [
            {
              "name": "Respuesta Exitosa",
              "status": "OK",
              "code": 200,
              "header": [{ "key": "Content-Type", "value": "application/json" }],
              "body": "{\n  \"message\": \"Notificación de transferencia registrada exitosamente.\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Webhooks",
      "description": "Documentación de las notificaciones automáticas (callbacks) que MetrePay envía al comercio ante eventos relevantes. Estos no son endpoints para invocar, sino payloads que el comercio debe estar preparado para recibir.\n\n### Configuración\n\nLa configuración de webhooks se realiza a través del portal web del comercio, en el menú **Configuración / Notificaciones**.\n\n### Eventos Configurables\n\n| Evento | Significado |\n| :--- | :--- |\n| `PAYMENT_SUCCESS` | Pago exitoso |\n| `SUBSCRIPTION_FINALIZED` | Débito automático finalizado |\n\n### Parámetros Requeridos\n\n| Parámetro | Descripción |\n| :--- | :--- |\n| Evento | `PAYMENT_SUCCESS` o `SUBSCRIPTION_FINALIZED` |\n| Callback URL | URL del endpoint destinado a recibir las notificaciones |\n| Método HTTP | `POST`, `PUT` o `PATCH` |",
      "item": [
        {
          "name": "Notificación PAYMENT_SUCCESS (Estándar)",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"event\": \"PAYMENT_SUCCESS\",\n  \"data\": {\n    \"txId\": \"30370\",\n    \"payRequestId\": 988,\n    \"currency\": \"PYG\",\n    \"amount\": \"80000.00\",\n    \"statusId\": 200,\n    \"customIdentifier\": \"123123\",\n    \"customIdentifier2\": \"456456\",\n    \"label\": \"Cuota Social - Plan A\",\n    \"email\": \"juanperez@mail.com\",\n    \"name\": \"Juan Pérez\"\n  }\n}"
            },
            "url": {
              "raw": "{{callback_url}}",
              "host": ["{{callback_url}}"]
            },
            "description": "Payload estándar de notificación de pago exitoso enviado por MetrePay al callback URL del comercio.\n\n### Campos de `data`\n\n| Campo | Descripción |\n| :--- | :--- |\n| `txId` | Identificador de la transacción. |\n| `payRequestId` | Número de ticket MP (referencia de comprobante). |\n| `currency` | Moneda del pago. |\n| `amount` | Monto del pago (siempre con dos decimales). |\n| `statusId` | Código del estado (`200` = Pagado). |\n| `customIdentifier` | Identificador personalizado del comercio. |\n| `customIdentifier2` | Segundo identificador personalizado. |\n| `label` | Concepto del pago. |\n| `email` | Correo del cliente utilizado en la generación del link. |\n| `name` | Nombre del cliente utilizado en la generación del link. |"
          },
          "response": [
            {
              "name": "Respuesta Esperada del Comercio",
              "status": "OK",
              "code": 200,
              "header": [{ "key": "Content-Type", "value": "text/plain" }],
              "body": "OK"
            }
          ]
        },
        {
          "name": "Notificación PAYMENT_SUCCESS (con Conciliación)",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"event\": \"PAYMENT_SUCCESS\",\n  \"data\": {\n    \"txId\": \"30370\",\n    \"payRequestId\": 988,\n    \"currency\": \"PYG\",\n    \"amount\": \"80000.00\",\n    \"processor\": \"PARAGUAY.BANCARD\",\n    \"payment_method\": \"DEBIT_CARD\",\n    \"statusId\": 200,\n    \"customIdentifier\": \"123123\",\n    \"customIdentifier2\": \"456456\",\n    \"label\": \"Cuota Social - Plan A\",\n    \"email\": \"juanperez@mail.com\",\n    \"name\": \"Juan Pérez\"\n  }\n}"
            },
            "url": {
              "raw": "{{callback_url}}",
              "host": ["{{callback_url}}"]
            },
            "description": "Payload de notificación de pago exitoso con campos adicionales de conciliación. Estos campos se incluyen solo para comercios con el parámetro **\"Realiza sus propias conciliaciones\"** activado.\n\n### Campos Adicionales de Conciliación\n\n| Campo | Descripción | Valores Posibles |\n| :--- | :--- | :--- |\n| `processor` | Procesadora de origen de la transacción. | `\"PARAGUAY.BANCARD\"`, `\"PARAGUAY.BEPSA\"` |\n| `payment_method` | Tipo de tarjeta utilizada. | `\"CREDIT_CARD\"`, `\"DEBIT_CARD\"` |"
          },
          "response": [
            {
              "name": "Respuesta Esperada del Comercio",
              "status": "OK",
              "code": 200,
              "header": [{ "key": "Content-Type", "value": "text/plain" }],
              "body": "OK"
            }
          ]
        },
        {
          "name": "Notificación SUBSCRIPTION_FINALIZED",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"event\": \"SUBSCRIPTION_FINALIZED\",\n  \"data\": {\n    \"customIdentifier\": \"123123\",\n    \"customIdentifier2\": \"456456\",\n    \"label\": \"Cuota Social - Plan A\",\n    \"email\": \"juanperez@mail.com\",\n    \"name\": \"Juan Pérez\"\n  }\n}"
            },
            "url": {
              "raw": "{{callback_url}}",
              "host": ["{{callback_url}}"]
            },
            "description": "Payload de notificación enviado por MetrePay al callback URL del comercio cuando un débito automático (suscripción) ha finalizado, es decir, cuando se han procesado todas las cuotas programadas.\n\n### Campos de `data`\n\n| Campo | Descripción |\n| :--- | :--- |\n| `customIdentifier` | Identificador personalizado del comercio asociado a la suscripción. |\n| `customIdentifier2` | Segundo identificador personalizado. |\n| `label` | Concepto del pago utilizado en la suscripción. |\n| `email` | Correo del cliente utilizado en la generación del link original. |\n| `name` | Nombre del cliente utilizado en la generación del link original. |"
          },
          "response": [
            {
              "name": "Respuesta Esperada del Comercio",
              "status": "OK",
              "code": 200,
              "header": [{ "key": "Content-Type", "value": "text/plain" }],
              "body": "OK"
            }
          ]
        }
      ]
    }
  ]
}
