vortexpay.me ← Sitio OpenAPI

Integrá VortexPay en minutos

Guía paso a paso para integradores B2B. Cobrá y pagá en Latam con una sola API REST.

13
Endpoints
6
Países Latam
<2s
Pay-In p99
0% completado
Flujo típico Pay-In
Cliente B2B                VortexPay API              Webhook (tu servidor)
     │                            │                            │
     │  POST /payins + HMAC       │                            │
     │ ─────────────────────────► │                            │
     │  201 { id, status }        │                            │
     │ ◄───────────────────────── │                            │
     │                            │  payin.succeeded           │
     │                            │ ─────────────────────────► │
     │  GET /payins/{id}          │                            │
     │ ─────────────────────────► │                            │
     │  200 { status: succeeded } │                            │
      

Autenticación

Todas las requests usan HTTPS. Combiná Bearer token + firma HMAC en operaciones mutantes.

1. API Keys

Recomendado para integraciones server-to-server.

Authorization: Bearer vp_test_sk_your_key_here   # Sandbox
Authorization: Bearer vp_live_sk_your_key_here   # Producción
PrefijoAmbiente
vp_test_sk_Sandbox
vp_live_sk_Producción

2. OAuth2 Client Credentials

POST https://auth.vortexpay.com/oauth2/token
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials
&client_id=vp_test_client_xxx
&client_secret=vp_test_secret_xxx
&scope=payins:write payins:read payouts:write payouts:read balance:read webhooks:write

3. Firma HMAC (POST / PUT / PATCH / DELETE)

Headers obligatorios:

HeaderDescripción
X-Vortex-TimestampUnix epoch (±5 min)
X-Vortex-NonceUUID v4 único
X-Vortex-SignatureHMAC-SHA256 hex
Payload = {timestamp}.{nonce}.{METHOD}.{path}.{sha256(body)}
Signature = HMAC-SHA256(signing_secret, Payload)

El API Explorer genera la firma automáticamente con tu signing secret.

4. Idempotencia

Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000

Obligatorio en POST. TTL 24h. Mismo key + mismo body = misma respuesta.

Scopes

ScopeEndpoints
merchant:readGET /merchant
balance:readGET /balance
payins:writePOST /payins, POST /payins/{id}/cancel
payins:readGET /payins*
payouts:writePOST /payouts, POST /payouts/{id}/cancel
payouts:readGET /payouts*
webhooks:writePOST /webhooks, DELETE /webhooks/{id}
webhooks:readGET /webhooks

POST /payins

Credenciales
Parámetros
Request body (JSON)
Código generado

      

Si el navegador bloquea CORS, copiá el cURL y ejecutalo desde su servidor.

Respuesta de ejemplo

      
Resultado (Try it)
Seleccioná "Enviar a Sandbox" para probar.
Estados PayIn / PayOut
PayInDescripciónTerminal
pendingEn colaNo
processingEn pipelineNo
requires_actionQR / acción pagadorNo
succeededExitoso
failedRechazado
canceledCancelado
Errores (RFC 7807)
HTTPcodeDescripción
400invalid_requestValidación
401invalid_signatureHMAC inválido
409idempotency_key_reusedKey duplicada
422insufficient_fundsSaldo insuficiente
429rate_limit_exceededRate limit