Movimientos y recibos
Lista cada entrada y salida de tu cuenta y descarga su recibo.
GET /v1/movements es el historial de tu cuenta. GET /v1/movements/{id}/receipt da el recibo de un movimiento terminal, en PDF o en JSON.
Listar
Filtros: from, to, type y currency. Los tipos son payment, deposit, crypto, internal, card y other: cada uno se explica en Valores de type.
Variables de estas muestras: simulador público, sin cuenta
Define esto en tu terminal. Con estos valores las muestras corren tal cual contra el simulador público:
export FITAL_API="https://widget.fital.xyz/explorar/v1"
export FITAL_KEY="sk_test_sandbox_publica"En la cuenta de prueba o en producción cambia la base, la llave y el secreto, y sustituye los id de ejemplo por los tuyos. Ver Ambientes.
# CURSOR vive en tu almacenamiento durable; vacío la primera vez.
CURSOR=""
curl -sS -G "$FITAL_API/movements" \
-H "Authorization: Bearer $FITAL_KEY" \
--data-urlencode "limit=25" \
${CURSOR:+--data-urlencode "cursor=$CURSOR"}Guarda next_cursor en cada página, aunque has_more sea false: es el punto desde el que seguirás mañana. Un mismo id puede repetirse con un estado más nuevo: deduplica por id y quédate con la copia de updated_at más reciente. Ver Paginación.
Lectura parcial
read_status: "partial" significa que el dato aún no está completo. Relee ese movimiento más tarde, y no dejes que reemplace a una fila complete que ya tengas. Con partial no concluyas nada de status: suele salir processing aunque el pago ya hubiera terminado, y eso no es un retroceso.
Recibo
Con Accept: application/json obtienes los datos. Sin ese encabezado obtienes un PDF. La respuesta no se debe guardar en cachés compartidos.
curl -sS "$FITAL_API/movements/mov_2hKsV9tBq4XzM7nD1cYpL6rF/receipt" \
-H "Authorization: Bearer $FITAL_KEY" \
-H "Accept: application/json"Si el movimiento aún no es terminal, la respuesta es 409 receipt_not_available. completed_at llega en null si el movimiento no terminó en completed: un recibo de failed, returned o canceled no trae fecha de completado.
Errores comunes
- Pedir el recibo de un movimiento en
processing. - Reiniciar el cursor cada día: vuelves a leer todo.
- Guardar el cursor sólo al terminar la vuelta: si tu proceso se cae, la repites entera.
403 forbidden_scope: necesitasmovements:read.