🇪🇸 EspañolAPIsEnvío entre usuarios (Send)

Envío de saldo entre usuarios (Send)

Transferencias P2P entre usuarios Colurs: envía saldo a otro usuario por username o por ID, con o sin comisión según el canal.

Todos los endpoints requieren autenticación con Authorization: Bearer [TOKEN] y x-api-key.


Visión General

Tipos de envío

TipoDescripción
Send clásicoEnvío por username del destinatario. Validaciones completas (KYC, balance, límites).
Fast SendEnvío por ID de usuario. Opción de estimar costos antes. Canales con o sin comisión.
Envío múltipleEstimar costos para enviar a varios destinatarios a la vez.

Send clásico

Crear un envío indicando el username del destinatario. El sistema valida KYC, balance suficiente y límites (para COP).

Flujo

Validar destinatario

El destinatario se identifica por to_user (username). Debe existir y estar activo.

Crear envío

POST /send/ con monto, moneda y descripción opcional.

Proceso interno

Se descuenta (monto + fees) del remitente, se acredita el monto al destinatario, se actualiza límite de balance si aplica y se envía notificación.


Crear envío (POST)

Endpoint

POST /send/

Headers

Authorization: Bearer [ACCESS_TOKEN]
x-api-key: [API_KEY]
Content-Type: application/json
Accept: application/json

Request

CampoTipoRequeridoDescripción
to_userstringUsername del usuario destinatario
amountdecimalMonto a enviar (debe ser > 0)
currency_codestringCódigo de moneda (default: COP)
latitudestringLatitud GPS (default: 0000)
longitudestringLongitud GPS (default: 0000)
descriptionstringDescripción del envío

Respuesta exitosa (200)

200 OK
{
  "to_user": "+573001234567",
  "from_user": "+573009876543",
  "created": true,
  "pk": 12345,
  "date": "2026-02-03T10:00:00Z",
  "amount": 50000.00
}

Validaciones

  • Usuario remitente activo para envíos (no bloqueado)
  • Perfil origen y destino existentes
  • Usuario con validación KYC completa
  • Monto mayor a 0
  • Balance suficiente (monto + fees)
  • Para COP: destinatario no debe exceder límite de balance
  • No auto-envío (origen ≠ destino)

Errores posibles

CódigoCausa
403Usuario bloqueado para envíos o sin validación KYC
404Perfil origen o destino no existe
400BALANCE_INSUFFICIENT — Saldo insuficiente
400LIMIT_BALANCE — Destinatario excede límite de balance
400USER_DOES_NOT_SAME — Intento de auto-envío
400AMOUNT_NOT_ZERO — Monto debe ser mayor a 0
400OPERATION_INVALID — Operación no permitida
400UNABLE_TO_CREATE_SEND — Error al crear envío

Listar envíos (GET)

Obtiene los envíos donde el usuario es remitente o destinatario.

Endpoint

GET /send/

Headers

Authorization: Bearer [ACCESS_TOKEN]
x-api-key: [API_KEY]
Accept: application/json

Respuesta (200)

Lista de envíos (formato según serializer ListSend).


Fast Send (envío rápido)

Envío por ID de usuario con opción de estimar costos antes de ejecutar. Soporta canales con y sin comisión.

Canales de envío

CanalDescripción
COLURSEnvío entre usuarios Colurs. Sin comisión (fee = 0).
DALEEnvío con comisiones aplicadas. Para COP puede incluir GMF (Gravamen a los Movimientos Financieros).

Estimar Fast Send

Calcula monto total a descontar (monto + fees) y, si aplica, GMF. No ejecuta el envío.

Endpoint

POST /send/fast/estimate/

Headers

Authorization: Bearer [ACCESS_TOKEN]
x-api-key: [API_KEY]
Content-Type: application/json
Accept: application/json

Request

CampoTipoRequeridoDescripción
amountdecimalMonto a enviar
currencystringCódigo de moneda (ej: COP, USD)
to_userintID del usuario destinatario (opcional; si se envía, puede incluirse full_name en la respuesta)
send_channelstringCanal: COLURS o DALE
is_for_quotebooleantrue solo cotización, false para ejecutar después

Respuesta (200)

200 OK
{
  "result": {
    "amount": 50000.00,
    "fee_amount": 1000.00,
    "fee_iva_amount": 190.00,
    "payed_amount": 51190.00,
    "gmf_amount": 200.00,
    "full_name": "Juan Pérez"
  }
}

Para canal COLURS: fee_amount y fee_iva_amount son 0, payed_amount = amount. Para COP en otros canales puede incluirse gmf_amount.


Ejecutar Fast Send

Crea el envío y, si el canal es COLURS, ejecuta la transferencia de saldo de inmediato y envía notificación al destinatario.

Endpoint

POST /send/fast/

Headers

Authorization: Bearer [ACCESS_TOKEN]
x-api-key: [API_KEY]
Content-Type: application/json
Accept: application/json

Request

CampoTipoRequeridoDescripción
to_userintID del usuario destinatario
amountdecimalMonto a enviar
currencystringCódigo de moneda
send_channelstringCOLURS o DALE
ipstringIP del cliente
latitudestringLatitud GPS
longitudestringLongitud GPS
descriptionstringDescripción del envío

Respuesta exitosa (201)

201 CREATED
{
  "message": "OK",
  "data": {
    "id": 12345,
    "currency": "COP",
    "fee_amount": 1000.00,
    "fee_iva_amount": 190.00,
    "amount": 50000.00,
    "payed_amount": 51190.00
  }
}

Si el canal es COLURS, el saldo se transfiere al instante y el destinatario recibe una notificación push.

Errores posibles

CódigoCausa
400BalanceInsufficient — Saldo insuficiente
404ToUserNotExist / ProfileDoesNotExist — Destinatario no existe
400ToUserDoesNotAllowBlank — to_user requerido en ejecución
404Fee o configuración no encontrada

Envío múltiple (estimación)

Calcula el costo total para enviar a varios destinatarios en una sola operación. Útil para nóminas o pagos masivos.

Endpoint

POST /send/multiple/estimate/

Headers

Authorization: Bearer [ACCESS_TOKEN]
x-api-key: [API_KEY]
Content-Type: application/json
Accept: application/json

Request

CampoTipoRequeridoDescripción
profilesarrayLista de objetos: profile_id, amount, send_channel
currencystringMoneda común para todos los envíos
is_for_quotebooleanSi es solo cotización

Ejemplo

request.json
{
  "profiles": [
    { "profile_id": 10, "amount": 100000, "send_channel": "COLURS" },
    { "profile_id": 11, "amount": 50000, "send_channel": "DALE" }
  ],
  "currency": "COP",
  "is_for_quote": true
}

Respuesta (200)

Objeto con el desglose total estimado (amount, fee_amount, fee_iva_amount, payed_amount según la lógica de múltiple send).

📊

Consulta los endpoints de Balance para verificar saldo antes de crear envíos. Para Send clásico en COP se valida además el límite de balance del destinatario.