External API

Documentación para desarrolladores

Integra pagos online y POS, consulta operaciones y recibe webhooks con la API externa de Avirato Payments.

Consultas

Obtener detalle de un pago

Obtiene la informacion completa de una sesion de pago online, incluyendo todos los intentos de pago y, si la sesion esta completada, la referencia del pago autorizado (paymentReference).

Este endpoint es la forma principal de obtener el paymentReference que necesitas para realizar modificaciones (reembolsos, capturas, etc.).

Live: GET https://aviratopayments.com/external/v1/payment/session/{sessionId}?webcode={webcode}
Test: GET https://aviratopayments.com/external/v1/test/payment/session/{sessionId}?webcode={webcode}

Parametros

ParametroUbicacionTipoRequeridoDescripcion
sessionIdPathstringSiEl sessionId devuelto al crear la sesion
webcodeQuerystringSiIdentificador de tu negocio

Ejemplo

curl -X GET "https://aviratopayments.com/external/v1/payment/session/SHOP01-EXT-17195000001234?webcode=SHOP01" \
  -H "X-API-KEY: tu_api_key_live"

Respuesta (200) - Sesion completada

{
  "success": true,
  "data": {
    "sessionId": "SHOP01-EXT-17195000001234",
    "status": "completed",
    "amount": {
      "value": 15000,
      "currency": "EUR"
    },
    "countryCode": "ES",
    "shopperLocale": "es-ES",
    "deliverAt": "2026-07-15T14:00:00Z",
    "description": "Pedido #12345 - Servicio premium",
    "customReference": "ORD-2026-12345",
    "isPreAuth": false,
    "urlOk": "https://tu-sistema.com/pago-ok",
    "urlKo": "https://tu-sistema.com/pago-error",
    "createdAt": "2026-06-28 10:30:00",
    "paymentReference": "SHOP01-PXT-17195000005678",
    "completedAt": "2026-06-28 10:35:22",
    "paymentStatus": "AUTHORISED",
    "attempts": [
      {
        "paymentReference": "SHOP01-PXT-17195000003456",
        "status": "refused",
        "createdAt": "2026-06-28 10:32:00"
      },
      {
        "paymentReference": "SHOP01-PXT-17195000005678",
        "status": "authorised",
        "createdAt": "2026-06-28 10:34:00"
      }
    ]
  }
}

Respuesta (200) - Sesion pendiente

Cuando la sesion aun no se ha completado, no incluye paymentReference, completedAt ni paymentStatus:

{
  "success": true,
  "data": {
    "sessionId": "SHOP01-EXT-17195000001234",
    "status": "pending",
    "amount": {
      "value": 15000,
      "currency": "EUR"
    },
    "countryCode": "ES",
    "shopperLocale": "es-ES",
    "deliverAt": "2026-07-15T14:00:00Z",
    "description": "Pedido #12345 - Servicio premium",
    "customReference": "ORD-2026-12345",
    "isPreAuth": false,
    "urlOk": "https://tu-sistema.com/pago-ok",
    "urlKo": "https://tu-sistema.com/pago-error",
    "createdAt": "2026-06-28 10:30:00",
    "attempts": []
  }
}

Campos de respuesta

CampoSiempre presenteDescripcion
sessionIdSiIdentificador unico de la sesion
statusSiEstado de la sesion: pending, completed, failed, expired, cancelled
amountSiImporte y divisa solicitados al crear la sesion
countryCodeSiPais configurado
shopperLocaleSiIdioma configurado
deliverAtSiFecha de entrega (puede ser null)
descriptionSiDescripcion (puede ser null)
customReferenceSiTu referencia interna (puede ser null)
isPreAuthSiSi fue creada como preautorizacion
urlOk / urlKoSiURLs de retorno configuradas
createdAtSiFecha y hora de creacion de la sesion
paymentReferenceSolo si completedReferencia del pago autorizado. Usa esta para modificaciones
completedAtSolo si completedFecha en que se autorizo el pago
paymentStatusSolo si completedEstado del pago en el procesador (ej: AUTHORISED). En Live este valor puede cambiar con el tiempo si el procesador notifica eventos posteriores (chargeback, fraude, reversion). Consulta los webhooks o vuelve a llamar a este endpoint si necesitas el ultimo estado.
attemptsSiArray informativo con los intentos de pago registrados. Puede estar vacio

Errores

CodigoHTTPCausa
12001400Falta parametro webcode
10404404Sesion no encontrada
11008403La sesion no pertenece a tu webcode o entorno

---

Listar pagos

Lista todas las sesiones de pago online con filtros y paginacion basada en cursor.

Live: GET https://aviratopayments.com/external/v1/payment/sessions?webcode={webcode}
Test: GET https://aviratopayments.com/external/v1/test/payment/sessions?webcode={webcode}

Parametros de query

ParametroTipoRequeridoDescripcion
webcodestringSiIdentificador de tu negocio
statusstringNoFiltrar por estado: pending, completed, failed, expired, cancelled
created_at_startstringNoFecha de inicio (filtro)
created_at_endstringNoFecha de fin (filtro)
cursorstringNoCursor de paginacion (de la respuesta anterior)
takeintegerNoResultados por pagina (1-100, por defecto: 20)
orderstringNoOrden de resultados: asc o desc (por defecto: asc)

Ejemplo

curl -X GET "https://aviratopayments.com/external/v1/payment/sessions?webcode=SHOP01&status=completed&take=10" \
  -H "X-API-KEY: tu_api_key_live"

Respuesta (200)

{
  "success": true,
  "data": {
    "payments": [
      {
        "sessionId": "SHOP01-EXT-17195000001234",
        "status": "completed",
        "amount": { "value": 15000, "currency": "EUR" },
        "description": "Pedido #12345",
        "customReference": "ORD-2026-12345",
        "isPreAuth": false,
        "createdAt": "2026-06-28 10:30:00",
        "completedAt": "2026-06-28 10:35:22",
        "paymentReference": "SHOP01-PXT-17195000005678",
        "paymentStatus": "AUTHORISED"
      }
    ],
    "meta": {
      "cursor": "eyJpZCI6NDJ9",
      "hasMore": true,
      "total": 89
    }
  }
}

Campos de cada sesion en el listado

CampoDescripcion
sessionIdIdentificador de la sesion
statusEstado actual
amountImporte y divisa
descriptionDescripcion (puede ser null)
customReferenceTu referencia interna (puede ser null)
isPreAuthSi es preautorizacion
createdAtFecha y hora de creacion
completedAtFecha de completado (puede ser null)
paymentReferenceReferencia del pago autorizado (puede ser null si no esta completada)
paymentStatusEstado del pago: AUTHORISED, FAILED, REFUNDED, PARTIALLYREFUNDED, CANCELED, ACTIVEDEPOSIT (puede ser null). En Live el valor puede evolucionar tras webhooks posteriores (ver Webhooks).

Paginacion con cursores

La paginacion funciona con cursores opacos (no numeros de pagina):

# Primera pagina
GET .../payment/sessions?webcode=SHOP01&take=20

# Siguiente pagina (usando cursor de meta.cursor)
GET .../payment/sessions?webcode=SHOP01&take=20&cursor=eyJpZCI6NDJ9

# Repetir hasta meta.hasMore == false

Los cursores son cadenas opacas. No intentes decodificarlos ni construirlos manualmente; simplemente pasa el valor de meta.cursor tal cual.

---

Listar modificaciones de un pago

Lista todas las operaciones de modificacion (refund, capture, cancel, extend) asociadas a una sesion de pago online.

Live: GET https://aviratopayments.com/external/v1/payment/session/{sessionId}/modifications?webcode={webcode}
Test: GET https://aviratopayments.com/external/v1/test/payment/session/{sessionId}/modifications?webcode={webcode}

Parametros

ParametroUbicacionTipoRequeridoDescripcion
sessionIdPathstringSiEl sessionId de la sesion de pago
webcodeQuerystringSiIdentificador de tu negocio
typeQuerystringNoFiltrar por tipo: refund, capture, cancel, extend
cursorQuerystringNoCursor de paginacion
takeQueryintegerNoResultados por pagina (1-100, por defecto: 20)
orderQuerystringNoOrden: asc o desc (por defecto: asc)

Ejemplo

curl -X GET "https://aviratopayments.com/external/v1/payment/session/SHOP01-EXT-17195000001234/modifications?webcode=SHOP01" \
  -H "X-API-KEY: tu_api_key_live"

Respuesta (200)

{
  "success": true,
  "data": {
    "modifications": [
      {
        "operationReference": "SHOP01-RFX-17195100001234",
        "operationType": "refund",
        "paymentReference": "SHOP01-PXT-17195000005678",
        "sessionId": "SHOP01-EXT-17195000001234",
        "status": "success",
        "requestedAt": "2026-06-29 14:00:00",
        "createdAt": "2026-06-29 14:00:00",
        "resolvedAt": "2026-06-29 14:00:05",
        "amount": {
          "value": 5000,
          "currency": "EUR"
        },
        "reason": "CUSTOMER REQUEST"
      }
    ],
    "meta": {
      "cursor": null,
      "hasMore": false,
      "total": 1
    }
  }
}

Campos de cada modificacion

CampoSiempre presenteDescripcion
operationReferenceSiReferencia unica de la operacion
operationTypeSiTipo: refund, capture, cancel, extend
paymentReferenceSiReferencia del pago original sobre el que se opero
sessionIdSiSesion de pago asociada
statusSiEstado: pending, success, failed
requestedAtSiCuando se solicito la operacion
createdAtSiFecha y hora de creacion del registro
resolvedAtSiCuando se completo (o fallo). null si esta pendiente
amountSolo refund y captureImporte de la operacion
reasonSolo refundMotivo del reembolso

---

Listar modificaciones de un pago POS

Lista todas las operaciones de modificacion asociadas a un pago POS especifico.

Live: GET https://aviratopayments.com/external/v1/pos/payment/{posPaymentId}/modifications?webcode={webcode}
Test: GET https://aviratopayments.com/external/v1/test/pos/payment/{posPaymentId}/modifications?webcode={webcode}

Parametros

ParametroUbicacionTipoRequeridoDescripcion
posPaymentIdPathstringSiEl posPaymentId del pago POS
webcodeQuerystringSiIdentificador de tu negocio
typeQuerystringNoFiltrar por tipo: refund, capture, cancel, extend
cursorQuerystringNoCursor de paginacion
takeQueryintegerNoResultados por pagina (1-100, por defecto: 20)
orderQuerystringNoOrden: asc o desc (por defecto: asc)

Ejemplo

curl -X GET "https://aviratopayments.com/external/v1/pos/payment/SHOP01-POSX-17195300001234/modifications?webcode=SHOP01" \
  -H "X-API-KEY: tu_api_key_live"

Respuesta (200)

{
  "success": true,
  "data": {
    "modifications": [
      {
        "operationReference": "SHOP01-RFX-17195400001234",
        "operationType": "refund",
        "paymentReference": "SHOP01-POSX-17195300001234",
        "sessionId": "SHOP01-POSX-17195300001234",
        "status": "success",
        "requestedAt": "2026-06-30 10:00:00",
        "createdAt": "2026-06-30 10:00:00",
        "resolvedAt": "2026-06-30 10:00:03",
        "amount": {
          "value": 2000,
          "currency": "EUR"
        },
        "reason": "CUSTOMER REQUEST"
      }
    ],
    "meta": {
      "cursor": null,
      "hasMore": false,
      "total": 1
    }
  }
}

Los campos de respuesta son identicos a los de Listar modificaciones de un pago.

Errores

CodigoHTTPCausa
12001400Falta parametro webcode
10404404Pago POS no encontrado
11008403El pago POS no pertenece a tu webcode o entorno

---

Listar todas las modificaciones

Lista todas las operaciones de modificacion de tu negocio, independientemente del pago al que pertenezcan. Permite filtrar por tipo, estado, fecha y texto libre.

Live: GET https://aviratopayments.com/external/v1/modifications?webcode={webcode}
Test: GET https://aviratopayments.com/external/v1/test/modifications?webcode={webcode}

Parametros de query

ParametroTipoRequeridoDescripcion
webcodestringSiIdentificador de tu negocio
typestringNoFiltrar por tipo: refund, capture, cancel, extend
statusstringNoFiltrar por estado: pending, success, failed
dateFromstringNoFecha de inicio (formato YYYY-MM-DD)
dateTostringNoFecha de fin (formato YYYY-MM-DD)
searchstringNoBusqueda por texto libre (en referencias, razones, etc.)
cursorstringNoCursor de paginacion
takeintegerNoResultados por pagina (1-100, por defecto: 20)
orderstringNoOrden: asc o desc (por defecto: asc)

Ejemplo

curl -X GET "https://aviratopayments.com/external/v1/modifications?webcode=SHOP01&type=refund&status=success&take=10" \
  -H "X-API-KEY: tu_api_key_live"

Respuesta (200)

{
  "success": true,
  "data": {
    "modifications": [
      {
        "operationReference": "SHOP01-RFX-17195100001234",
        "operationType": "refund",
        "paymentReference": "SHOP01-PXT-17195000005678",
        "sessionId": "SHOP01-EXT-17195000001234",
        "status": "success",
        "requestedAt": "2026-06-29 14:00:00",
        "createdAt": "2026-06-29 14:00:00",
        "resolvedAt": "2026-06-29 14:00:05",
        "amount": {
          "value": 5000,
          "currency": "EUR"
        },
        "reason": "CUSTOMER REQUEST"
      },
      {
        "operationReference": "SHOP01-RFX-17195400001234",
        "operationType": "refund",
        "paymentReference": "SHOP01-POSX-17195300001234",
        "sessionId": "SHOP01-POSX-17195300001234",
        "status": "success",
        "requestedAt": "2026-06-30 10:00:00",
        "createdAt": "2026-06-30 10:00:00",
        "resolvedAt": "2026-06-30 10:00:03",
        "amount": {
          "value": 2000,
          "currency": "EUR"
        },
        "reason": "CUSTOMER REQUEST"
      }
    ],
    "meta": {
      "cursor": "eyJpZCI6NDJ9",
      "hasMore": false,
      "total": 2
    }
  }
}

Este endpoint devuelve modificaciones de todos los pagos (online y POS). Puedes identificar el tipo de pago por la referencia: -PXT- (pago online Live), -PXTT- (pago online Test), -POSX- (POS Live), -POSXT- (POS Test).

---

Paginacion

Todos los endpoints de listado usan paginacion basada en cursores. Los cursores son cadenas opacas que representan la posicion actual en el conjunto de resultados.

Como funciona

  1. Primera peticion: Llama al endpoint sin parametro cursor. Recibiras los primeros resultados y un meta.cursor
  2. Siguiente pagina: Si meta.hasMore es true, usa el valor de meta.cursor como parametro cursor en la siguiente peticion
  3. Fin: Cuando meta.hasMore es false, no hay mas resultados

Campos de meta

CampoDescripcion
cursorCursor para obtener la siguiente pagina. null si no hay mas
hasMoretrue si hay mas resultados disponibles
totalNumero total de registros que coinciden con los filtros

Ejemplo de navegacion

# Pagina 1
curl ".../payment/sessions?webcode=SHOP01&take=10"
# meta: { "cursor": "eyJpZCI6MTB9", "hasMore": true, "total": 45 }

# Pagina 2
curl ".../payment/sessions?webcode=SHOP01&take=10&cursor=eyJpZCI6MTB9"
# meta: { "cursor": "eyJpZCI6MjB9", "hasMore": true, "total": 45 }

# Pagina 3
curl ".../payment/sessions?webcode=SHOP01&take=10&cursor=eyJpZCI6MjB9"
# meta: { "cursor": null, "hasMore": false, "total": 45 }

Importante: Los cursores son opacos. No intentes decodificarlos, modificarlos ni construirlos manualmente. Simplemente pasa el valor tal cual lo recibes.