---
title: "Primer pago"
description: "Recorrido mínimo desde una cuenta nueva hasta un pago confirmado y su webhook."
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.pagofast.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Primer pago

# Primer pago

Esta guía muestra el recorrido completo de una integración de negocio. Usá primero el ambiente `test`; las credenciales y métodos de `test` están aislados de `live`.

## Antes de empezar

Necesitás:

- la URL base del ambiente;
- un usuario de management;
- una API key de prueba con `payment_methods:read`, `payments:create` y `payments:read`;
- al menos un método de pago `test` activo y habilitado para esa key;
- una URL HTTPS capaz de recibir webhooks, si necesitás actualizaciones asíncronas.

Si todavía no existe el método, un usuario debe crearlo desde [Métodos de pago de la cuenta](/resources/account-payment-methods) y vincularlo con la API key.

## 1. Verificar los métodos disponibles

```bash
curl --request GET "$PAGOFAST_BASE_URL/v1/payment-methods" \
  --header "Authorization: Bearer $PAGOFAST_API_KEY"
```

Elegí un elemento `active` que incluya la capability `payments`. Guardá su `id`; es el valor que se envía como `payment_method`.

## 2. Crear el pago

Generá una clave de idempotencia estable para este intento lógico. Si se pierde la respuesta, repetí el mismo body con la misma clave.

```bash
curl --request POST "$PAGOFAST_BASE_URL/v1/payments" \
  --header "Authorization: Bearer $PAGOFAST_API_KEY" \
  --header "Content-Type: application/json" \
  --header "Idempotency-Key: order-9821-payment-1" \
  --data '{
"amount": { "value": "12500.00", "currency": "ARS" },
"external_reference": "order-9821",
"description": "Pedido #9821",
"payment_method": "019f704f-89d7-7e83-b3e1-f07c33801024",
"webhook_url": "https://merchant.example.com/webhooks/pagofast"
  }'
```

No interpretes un `2xx` como aprobación automática. Leé siempre `data.status`:

- `approved`: el pago terminó aprobado;
- `pending` o `processing`: el resultado todavía puede cambiar;
- `declined`: hubo una respuesta concluyente de rechazo;
- `failed`: la operación falló sin aprobación.

Si `action.type` es `display_qr`, mostrale `action.qr_data` al pagador y esperá la confirmación por webhook o consulta.

## 3. Consultar el resultado

```bash
curl --request GET \
  "$PAGOFAST_BASE_URL/v1/payments/019f7061-2010-7698-8827-e32f86e14298" \
  --header "Authorization: Bearer $PAGOFAST_API_KEY"
```

La consulta sirve como reconciliación y como respaldo si un webhook se demora. No generes un segundo pago solo porque venció el timeout de tu cliente: primero repetí idempotentemente o consultá el pago conocido.

## 4. Procesar webhooks

Verificá la firma usando el body crudo, deduplicá por `id` y respondé `2xx` después de persistir el evento. Los eventos pueden repetirse y llegar fuera de orden; aplicá el cambio usando `payment.updated_at` y una máquina de estados válida.

Leé [Eventos de webhook](/webhooks/overview) y [Firma](/webhooks/signatures) antes de habilitar producción.

## 5. Pasar a producción

Creá credenciales y métodos nuevos en `live`; no reutilices valores de `test`. Antes del corte comprobá:

- secretos almacenados en un gestor seguro y nunca en frontend;
- timeouts y retries que respetan idempotencia;
- firma de webhooks verificada sobre el body crudo;
- manejo de `pending`, duplicados y eventos fuera de orden;
- logs con `X-Request-Id`, sin API keys ni datos sensibles;
- conciliación periódica mediante `GET /v1/payments/{payment_id}`.

## Siguiente paso

La referencia completa está en [Pagos](/resources/payments). Para errores recuperables y no recuperables, consultá [Errores](/errors).

Source: https://docs.pagofast.com/getting-started/index.mdx
