QvaPay API
P2P

Calificar Oferta P2P

Calificar a la contraparte después de completar una oferta P2P.

POST /p2p/:uuid/rate

Califica a la contraparte de una oferta P2P completada. Solo los participantes (creador o peer) pueden calificar, y cada uno solo puede calificar una vez por oferta. Durante las 72 horas siguientes puedes cambiar tu valoración.

Autenticación

Bearer Token (Authorization: Bearer <token> en headers).

También puedes llamar a esta ruta con app-id / app-secret en vez de un token de cuenta. Ver Operar con credenciales de app.

Request

curl -X POST "https://api.qvapay.com/p2p/7c9e6679-7425-40de-944b-e07fc1f90ae7/rate" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "rating": 5,
    "comment": "Excelente operación, muy rápido",
    "tags": ["rapido", "confiable"]
  }'

Parámetros (URL)

ParámetroTipoRequeridoDescripción
uuidstringSíUUID de la oferta P2P

Parámetros (body JSON)

ParámetroTipoRequeridoDescripción
ratingnumberSíCalificación de 1 a 5
commentstringNoComentario sobre la operación (máx. 120 caracteres)
tagsarrayNoEtiquetas rápidas: rapido, confiable, comunicacion
orderstringEn ofertas por rangoUUID de la orden que valoras (también vale ?order= en la URL)

Ofertas por rango

En una oferta por rango cada orden es un trato propio, así que se valora la orden, no la oferta: el creador y el tomador de una orden en estado completed pueden valorarse entre sí una vez por orden, aunque la oferta siga abierta. Sin order la respuesta es 400 con code: "ORDER_REQUIRED"; con una orden que aún no está completada, 400 con code: "ORDER_NOT_COMPLETED". El detalle de la oferta (GET /p2p/:uuid) devuelve en cada orden my_rating (tu valoración, o null).

Response (200)

{
  "message": "Rating created",
  "ratingId": "12345",
  "rating": 5,
  "editable_until": "2026-10-22T18:04:11.000Z"
}

editable_until es la fecha hasta la que puedes cambiar esta valoración con PATCH.

Errores

CódigoDescripción
400Datos inválidos, rating no proporcionado, P2P no habilitado, ORDER_REQUIRED u ORDER_NOT_COMPLETED (ofertas por rango)
400code: "ALREADY_RATED": ya calificaste esta oferta u orden. Trae editable_until (o null si el plazo pasó): dentro del plazo, usa PATCH para cambiarla
401Token de autenticación inválido o ausente
403No eres participante de esta oferta (o de esa orden)
404Oferta P2P no encontrada, o la orden no pertenece a la oferta

PATCH /p2p/:uuid/rate

Cambiar una valoración

Quien valoró puede cambiar su valoración durante las 72 horas siguientes a enviarla. Editar no reinicia el plazo, y una valoración no se puede borrar. Mismas reglas que el POST: solo los participantes, y en ofertas por rango la orden debe ir en order.

curl -X PATCH "https://api.qvapay.com/p2p/7c9e6679-7425-40de-944b-e07fc1f90ae7/rate" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "rating": 4,
    "comment": "Bien, pero tardó en confirmar",
    "tags": ["confiable"],
    "order": "0b8f2c1e-5a7d-4c1e-9f3a-2d6b8e4f1a90"
  }'
ParámetroTipoRequeridoDescripción
ratingnumberNoNueva calificación de 1 a 5
commentstring | nullNoNuevo comentario (máx. 120). "" o null lo borra
tagsarray | nullNoNuevas etiquetas (reemplazan a las anteriores). [] o null las borra
orderstringEn ofertas por rangoUUID de la orden (también vale ?order=)

Un campo que no envías no cambia. Hace falta al menos uno de rating, comment o tags.

Response (200)

{
  "message": "Rating updated",
  "ratingId": "12345",
  "rating": 4,
  "comment": "Bien, pero tardó en confirmar",
  "tags": ["confiable"],
  "created_at": "2026-10-19T18:04:11.000Z",
  "updated_at": "2026-10-20T09:12:40.000Z",
  "editable_until": "2026-10-22T18:04:11.000Z"
}

Errores

CódigoDescripción
400Datos inválidos, NOTHING_TO_UPDATE (ningún campo que cambiar), ORDER_REQUIRED u ORDER_NOT_COMPLETED
403code: "RATING_EDIT_EXPIRED": pasaron las 72 horas (trae editable_until). También si no eres participante
404code: "RATING_NOT_FOUND": aún no has valorado esta oferta u orden. También si la oferta no existe o la orden no le pertenece