Payout Chile

API Payouts - Chile

Esta documentación para desarrolladores proporciona toda la información necesaria para integrar el servicio de Payouts en Chile.

1. Requisitos

  • Una clave API o Token de Floid habilitada con el servicio de payouts. Para activar esto debes contactarte con el equipo comercial de Floid.
  • Entorno de Desarrollo: Configura tu entorno de desarrollo con las bibliotecas necesarias para realizar solicitudes HTTPs.
  • Saldo disponible en tu cuenta para realizar las dispersiones

👍

Recuerda que siempre vas a necesitar el token de Floid para consumir los servicios de Floid.

2. Diagrama de integración

❗️

Si el saldo de tu cuenta no es suficiente para cubrir las dispersiones, la solicitud no se realizará hasta que exista un monto suficiente.

3. Autenticación

La autenticación se realiza mediante un token de API. Este token debe ser incluido en los encabezados de todas las solicitudes.

Encabezados de Autenticación

Authorization: Bearer YOUR_API_TOKEN
Content-Type: application/json

4. Endpoints de la API

Host Producción: https://api.floid.app

Crear un Payout

URL: {{HOST}}/cl/payout/create

Postman Collection 🟠

Método: POST

Descripción: Crea un nuevo payout o dispersión para beneficiarios en Chile.

Body de la Solicitud:

{
    "beneficiary_id": "12345678-9",
    "beneficiary_name": "Juan Pérez",
    "beneficiary_account": "1234567890",
    "amount": "1000",
    "beneficiary_account_type": "1",
    "beneficiary_bank_code": "37",
    "beneficiary_email": "[email protected]",
    "description": "Pago de servicios"
}

Parámetros:

ParámetroDescripciónTipoRequeridoValidaciones
beneficiary_idRUT del beneficiario finalStringDebe ser un RUT válido
beneficiary_nameNombre del beneficiario finalStringMáximo 40 caracteres
beneficiary_accountNúmero de cuenta del beneficiarioStringMáximo 10 caracteres
amountMonto de la transferencia (sin decimales)StringMáximo 5,000,000
beneficiary_account_typeTipo de cuenta de destinoStringDebe ser "1", "2" o "3"
beneficiary_bank_codeCódigo del banco de destinoStringDebe ser un código válido
beneficiary_emailEmail del beneficiarioStringNoDebe ser email válido si se proporciona
descriptionMensaje para el beneficiarioStringNoMáximo 100 caracteres si se proporciona

Tipos de Cuenta (beneficiary_account_type):

CódigoTipo
1Cuenta Corriente
2Cuenta Vista
3Cuenta de Ahorro

Respuesta Exitosa:

{
    "code": 200,
    "msg": "OK",
    "caseid": "120564ad-6c0f-4276-ac76-16ffbe6bc5de",
    "date": "2025-08-19 16:25:50",
    "status": "SUCCESSFUL",
    "data": {
        "beneficiary_document": "12345678-9",
        "beneficiary_account": "1234567890",
        "beneficiary_name": "Juan Pérez",
        "amount": "1000",
        "beneficiary_bank": "Banco Santander",
        "reference": "Pago de servicios"
    }
}

Estados Posibles:

StatusDescripción
PENDINGLa transferencia está siendo procesada
SUCCESSFULLa transferencia se completó exitosamente
ERRORHubo un error en la transferencia
INVALIDLos datos proporcionados no son válidos

Bancos Disponibles en Chile

CódigoBanco
1Banco De Chile - Edwards
9Banco Internacional
12Banco Del Estado De Chile
14Scotiabank
16BCI (Bco de Credito e Inv)
17Banco Do Brasil S.a.
27Itau-corpbanca
28Banco Bice
31Hsbc Bank
37Banco Santander
39Itau Chile
49Banco Security
51Banco Falabella
53Banco Ripley
55Banco Consorcio
57Banco Paris
504Bbva (Bco Bilbao Vizcaya Arg)
672Coopeuch
729Prepago Los Heroes
730Tenpo Prepago S.a.
732Tapp Caja Los Andes
875Mercado Pago

5. Manejo de Errores

Estructura de Respuesta de Error

{
    "code": 400,
    "error_type": "string",
    "error_code": "string",
    "error_message": "string",
    "display_message": "string",
    "caseid": "string"
}
ParámetroDescripciónTipo
codeCódigo HTTP del error.Int
error_typeCódigo específico del error definido por Floid.String
error_codeCódigo específico del error definido por Floid. Se puede usar programáticamente.String
error_messageMensaje que entrega detalles sobre el error. Puede cambiar con el tiempo por lo que no debe ser usado programáticamente.String
display_messageMensaje con detalles del error que puede ser mostrado al usuario en tu front-end . Puede cambiar con el tiempo por lo que no debe ser usado programáticamente.String
caseidIdentificador único para cada request que se realiza a la API de Floid. Se generará al inicio de la consulta y será parte del response.String

Ejemplos

{
  "code": 400,
  "error_type": "PAYOUTS",
  "error_code": "INVALID_PAYOUT_TOKEN",
  "error_message": "Payouts token is not valid.",
  "display_message": "El token de payouts no es válido",
  "caseid":"' . $caseid . '"
}
{
  "code": 400,
  "error_type": "TRANSFER",
  "error_code":  "TRANSFER_ERROR",
  "error_message": "' . $error_message . '",
  "display_message": "' . $display_message . '",
  "caseid":"' . $caseid . '"
}
{
  "code": 400,
  "error_type": "TRANSFER",
  "error_code": "TRANSFER_ERROR",
  "error_message": "There was an error making the transfer. (Tipo de Cuenta a Acreditar Inv\u00e1lido)",
  "display_message": "Ha habido un error realizando la transferencia. (Tipo de Cuenta a Acreditar Inv\u00e1lido)",
  "caseid": "673be354ae265369b630f030"
}
{
  "code": 400,
  "error_type": "API_ERROR",
  "error_code": "INVALID_REQUEST",
  "error_message": "The request is not valid. Check the body and headers and try again.",
  "display_message": "La request no es válida. Revisa el body y headers e intenta nuevamente. ' . $message . '",
  "caseid":"' . $caseid . '"
}
{
  "code": 400,
  "error_type": "API_ERROR",
  "error_code": "INVALID_REQUEST_AMOUNT",
  "error_message": "The amount to be transferred must be different from 0.00.",
  "display_message": "Monto a transferir debe ser distinto a 0.00",
  "caseid":"' . $caseid . '"
}
{
  "code": 400,
  "error_type": "SERVICE_ERROR",
  "error_code": "SERVICE_UNAVAILABLE",
  "error_message": "The service is unavailable",
  "display_message": "The service is unavailable.",
  "caseid": "xxxx - xxx - xxxx"
}
{
  "code": 400,
  "error_type": "AUTH_ERROR",
  "error_code": "METHOD_NOT_AUTH",
  "error_message": "This method is not authorized",
  "display_message": "El metodo no está autorizado",
  "caseid": "xxxx - xxx - xxxx"
}
{
  "code": 429,
  "error_type": "TOO_MANY_REQUESTS",
  "error_code": "TOO_MANY_REQUESTS",
  "error_message": "Too many Requests.",
  "display_message": "Ha superado el limite de requests.",
  "caseid": "xxxx - xxx - xxxx"
}

Códigos de Error

Errores de Servicio

Parámetro CodeMSJDescription
400INVALID_PAYOUT_TOKENEl token de payouts no es válido
400TRANSFER_ERRORNo se pudo realizar la transferencia.
400INVALID_CCIEl CCI ingresado no es válido
400INVALID_REQUESTLa request no es válida. Revisa el body y headers e intenta nuevamente.
400INVALID_REQUEST_AMOUNTMonto a transferir debe ser distinto a 0.00.

Errores Generales

Parámetro CodeMSJDescription
400INVALID_REQUESTLa solicitud contiene parámetros inválidos o faltantes.
400INVALID_CREDENTIALSCredenciales de la cuenta inválidas.
400METHOD_NOT_AUTHEl token de API es inválido o ha expirado para consumir el servicio.
400NOT_FOUNDEl recurso solicitado no fue encontrado.
400SERVICE_UNAVAILABLEEl servicio de la API de Floid no está disponible en el momento de la consulta.
400INVALID_PAYOUT_TOKENEl token de payouts no es válido
429TOO_MANY_REQUESTSHa superado el límite de requests por segundo.
481DATA_FAILEDError al intentar obtener la respuesta a la consulta.
500INTERNAL_ERROROcurrió un error interno en el servidor.

6. Webhooks

Para recibir notificaciones en tiempo real sobre cambios en los estados de los payouts, agrega el parámetro callbackurl al body de tu solicitud.

Ejemplo con Webhook:

{
    "beneficiary_id": "12345678-9",
    "beneficiary_name": "Juan Pérez",
    "beneficiary_account": "1234567890",
    "amount": "1000",
    "beneficiary_account_type": "1",
    "beneficiary_bank_code": "37",
    "callbackurl": "https://tu-webhook.com/endpoint"
}

Verificación de Webhooks:

Para verificar la autenticidad de los webhooks, puedes configurar una secret key. Contacta con nuestro equipo técnico para configurar esto.

7. Sandbox Payouts

Para pruebas, utiliza los siguientes datos de prueba:

Transferencia Exitosa:

{
    "beneficiary_id": "111111111",
    "beneficiary_name": "Usuario Prueba",
    "beneficiary_account": "123456789",
    "amount": "1000",
    "beneficiary_account_type": "1",
    "beneficiary_bank_code": "28"
}

Respuesta Exitosa:

{
    "code": 200,
    "msg": "OK",
    "caseid": "120564ad-6c0f-4276-ac76-16ffbe6bc5de",
    "date": "2025-08-19 16:25:50",
    "status": "SUCCESSFUL",
    "data": {
        "beneficiary_document": "111111111",
        "beneficiary_account": "1234567890",
        "beneficiary_name": "Usuario Prueba",
        "amount": "1000",
        "beneficiary_bank": "Banco Santander",
        "reference": "Pago de servicios"
    }
}

Transferencia con Error:

{
    "beneficiary_id": "222222222",
    "beneficiary_name": "Usuario Prueba",
    "beneficiary_account": "987654321",
    "amount": "1000",
    "beneficiary_account_type": "1",
    "beneficiary_bank_code": "28"
}

Error en transferencia:

{
    "code": 200,
    "msg": "OK",
    "caseid": "120564ad-6c0f-4276-ac76-16ffbe6bc5de",
    "date": "2025-08-19 16:25:50",
    "status": "ERROR",
    "data": {
        "beneficiary_document": "111111111",
        "beneficiary_account": "1234567890",
        "beneficiary_name": "Usuario Prueba",
        "beneficiary_bank": "Banco Santander",
        "error_message": "Error al crear la transferencia"
    }
}

Error por fondos insuficientes desde la cuenta origen

{
  "code": 400,
  "msg": "OK",
  "caseid": "8aeea2fb-5923-424b-b8f3-24asd2cab10ba2",
  "date": "2025-11-10 17:07:25",
  "status": "ERROR",
  "data": {
    "ErrorMsg": "Insufficient funds to complete the operation"
  },
  "consumerId": "-"
}

8. Ejemplos de llamados

Crear Payout

curl -X POST "https://api.floid.app/cl/payout/create" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "beneficiary_id": "12345678-9",
    "beneficiary_name": "Juan Pérez",
    "beneficiary_account": "1234567890",
    "amount": "1000",
    "beneficiary_account_type": "1",
    "beneficiary_bank_code": "37",
    "beneficiary_email": "[email protected]",
    "description": "Pago de servicios"
  }'

Validaciones Importantes

  • RUT: Debe tener formato válido chileno
  • Nombre: No puede exceder 40 caracteres
  • Cuenta: No puede exceder 10 caracteres
  • Monto: No puede exceder 5,000,000
  • Tipo de cuenta: Solo acepta valores "1", "2" o "3"
  • Código de banco: Debe existir en la lista de bancos disponibles
  • Email: Debe ser una dirección de email válida (opcional)
  • Descripción: No puede exceder 100 caracteres (opcional)