Una transferencia es el envío de dinero desde tu cuenta virtual de Efipay hacia una cuenta bancaria. Es el paso final del ciclo: cobras a tus clientes, el dinero se acumula en tu cuenta virtual como movimientos, y de ahí sale al banco.
{info} La API es de solo lectura. No hay endpoint para crear una transferencia ni una dispersión: se solicitan desde el panel de Efipay. Este endpoint existe para que puedas conciliar lo que ya salió.
Descripción: Devuelve las transferencias asociadas a tus sucursales, paginadas. Todos los filtros son opcionales; sin filtros trae todo.
GET /api/v1/transfer
| Nombre del campo | Descripción | Reglas |
|---|---|---|
| start_date | Desde qué fecha, sobre la fecha de creación | ['nullable', 'date_format:Y-m-d', 'before_or_equal:finish_date'] |
| finish_date | Hasta qué fecha. No puede ser futura | ['nullable', 'date_format:Y-m-d', 'before_or_equal:today', 'after_or_equal:start_date'] |
| offices | Ids de las sucursales a incluir. Sin este filtro se incluyen todas las tuyas | ['nullable', 'array'] |
| offices.* | Cada id debe ser de una de tus sucursales | ['required', 'exists:offices,id'] |
{warning} Este endpoint no acepta
per_page: siempre devuelve 15 por página, y no garantiza un orden. Si necesitas las más recientes primero, ordena porcreated_atde tu lado después de recorrer todas las páginas.
curl -X GET \
'/api/v1/transfer?start_date=2026-07-01&finish_date=2026-07-31&offices[]=1' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Accept: application/json'
{success} Respuesta satisfactoria code:
200 { "data": [ { "id": "9b0f2a13-2c44-4a1a-9f2e-1d3b4c5d6e7f", "amount": 1500000, "transfer_charge": 7500, "gravamen": 6000, "total": 1486500, "status": "Transferido", "comments": null, "transferable_type": "Transferencia Manual", "transferable": { "amount": 1500000, "transfer_charge": 7500, "office_id": 1, "economic_group_id": null }, "bankable": { "bank_name": "Bancolombia", "account_holder": "Comercio de Prueba S.A.S.", "last_four_numbers": "4321", "identification_number": "901234567", "is_approved": true }, "created_at": "2026-07-15T09:00:00.000000Z" } ], "links": { "first": "https://sag-qa.efipay.co/api/v1/transfer?page=1", "last": "https://sag-qa.efipay.co/api/v1/transfer?page=3", "prev": null, "next": "https://sag-qa.efipay.co/api/v1/transfer?page=2" }, "meta": { "current_page": 1, "from": 1, "last_page": 3, "per_page": 15, "to": 15, "total": 42 } }
Qué es cada monto
| Campo | Significado |
|---|---|
| amount | Lo que se solicitó transferir |
| transfer_charge | Costo de la transferencia |
| gravamen | Gravamen a los movimientos financieros (4×1000), cuando aplica |
| total | Lo que efectivamente llegó al banco: amount − transfer_charge − gravamen |
| comments | Nota interna. Cuando una transferencia se cancela, aquí suele estar el motivo |
De dónde salió: transferable_type
| Valor | Qué fue |
|---|---|
Transferencia Manual |
La solicitaste tú desde el panel |
Transferencia Programada |
Salió de una programación recurrente |
Transferencia a terceros |
Una dispersión hacia cuentas que no son la tuya |
El objeto transferable cambia de forma según ese tipo, y bankable describe la cuenta
de destino (last_four_numbers son los últimos cuatro dígitos; nunca devolvemos el
número completo).
| Estado | Qué significa |
|---|---|
Recibido |
La solicitud entró y está en cola |
En Proceso |
Se está enviando al banco |
Transferido |
El dinero salió. Es el estado final de una transferencia exitosa |
Cancelado |
No se realizó. El motivo suele venir en comments |
{danger} Rango de fechas inválido code:
422 { "message": "El campo finish_date debe ser una fecha anterior o igual a hoy.", "errors": { "finish_date": [ "El campo finish_date debe ser una fecha anterior o igual a hoy." ] } }