QvaPay API
Transactions

Listar Transacciones

Obtener el listado paginado de transacciones del usuario autenticado.

GET /transaction

Retorna el listado de transacciones del usuario autenticado, con soporte para filtros, paginación y descarga en formato Excel.

Autenticación

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

Request

curl -X GET "https://api.qvapay.com/transaction?take=20&page=1&status=paid" \
  -H "Authorization: Bearer <token>"

Parámetros (query string)

ParámetroTipoRequeridoDescripción
takenumberNoCantidad de resultados por página (1-30, por defecto 20)
pagenumberNoPágina a consultar (por defecto 1)
statusstringNoFiltrar por estado: paid, pending, cancelled (por defecto paid)
searchstringNoBúsqueda por descripción, UUID, remote_id o ID
querystringNoAlias de search
uuidstringNoBuscar por UUID exacto de la transacción
user_uuidstringNoFiltrar transacciones con un usuario específico
orderstringNoOrden de resultados: asc o desc (por defecto desc)
orderBystringNoCampo de ordenamiento (por defecto created_at)
min_amountnumberNoMonto mínimo
max_amountnumberNoMonto máximo
date_fromstringNoFecha de inicio (formato ISO 8601)
date_tostringNoFecha de fin (formato ISO 8601)
include_totalstringNoSi es true, incluye el total de transacciones para paginación
downloadstringNoSi es true, descarga las transacciones en formato Excel (.xlsx)

Response

[
  {
    "uuid": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
    "app_id": 1,
    "paid_by_user_id": "12345",
    "amount": 25.00,
    "description": "Pago de servicio",
    "remote_id": "order-12345",
    "status": "paid",
    "created_at": "2024-06-20T14:30:00.000Z",
    "updated_at": "2024-06-20T14:30:00.000Z",
    "App": {
      "logo": "https://example.com/logo.png",
      "url": "https://example.com",
      "name": "Mi App"
    },
    "PaidBy": {
      "uuid": "550e8400-e29b-41d4-a716-446655440000",
      "username": "johndoe",
      "name": "John",
      "image": "https://example.com/avatar.png",
      "kyc": true,
      "vip": false,
      "golden_check": false
    },
    "User": {
      "uuid": "660e8400-e29b-41d4-a716-446655440001",
      "username": "janedoe",
      "name": "Jane",
      "image": "https://example.com/avatar2.png",
      "kyc": true,
      "vip": false,
      "golden_check": false
    },
    "Wallet": {
      "id": 1,
      "wallet_type": "crypto",
      "Coin": {
        "tick": "BTC",
        "logo": "https://example.com/btc.png"
      }
    },
    "P2P": {
      "id": 1,
      "uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "amount": 50.00,
      "coin": "USDT",
      "receive": 45.00,
      "status": "completed"
    },
    "Withdraw": {
      "id": 1,
      "payment_method": "paypal",
      "amount": 25.00,
      "receive": 23.50,
      "status": "paid"
    },
    "BuyedService": {
      "id": 1,
      "service_id": 10,
      "status": "completed"
    }
  }
]

Cuando include_total es true, la respuesta tiene esta estructura:

{
  "transactions": [ ... ],
  "total": 150
}

Cuando download es true, la respuesta es un archivo Excel (.xlsx) con las transacciones.

Campos de transacción

CampoTipoDescripción
uuidstringUUID de la transacción
app_idnumberID de la aplicación asociada
paid_by_user_idstringID del usuario que pagó
amountnumberMonto de la transacción
descriptionstringDescripción de la transacción
remote_idstringIdentificador externo
statusstringEstado: pending, paid, cancelled
created_atstringFecha de creación
updated_atstringFecha de última actualización
Appobject | nullInformación de la app asociada
PaidByobject | nullUsuario que realizó el pago
Userobject | nullUsuario que recibe el pago
Walletobject | nullInformación de la wallet: id, wallet_type, Coin (tick, logo)
P2Pobject | nullInformación del P2P: id, uuid, amount, coin, receive, status
Withdrawobject | nullInformación del retiro: id, payment_method, amount, receive, status
BuyedServiceobject | nullServicio comprado: id, service_id, status

Errores

CódigoDescripción
400El parámetro take debe ser entre 1 y 30
401Token de autenticación inválido o ausente
429Demasiadas solicitudes (límite: 3 cada 5 segundos)