Módulo Send

Send · Transferencias

Transferencias del wallet Argentive a CVU, CBU o alias arbitrario en LATAM. Threshold configurable + aprobación por WhatsApp para montos altos.

Estado: Beta
Send corre sobre Pomelo Pay para transferencias vía Transferencias 3.0 (Argentina) y SPEI (México). Otros países en roadmap Q4 2026.

Overview

El módulo Send convierte un intent del agente en una transferencia real. Cada request pasa por 3 etapas:

pipeline
1. Validation      → CVU/CBU/alias existe y es válido
2. Approval gate   → según monto: auto | whatsapp | biometric | blocked
3. Rail execution  → Pomelo Pay → confirmación webhook

POST /v1/send/transfers

Crea una solicitud de transferencia.

curl
curl -X POST https://api.argentive.ai/v1/send/transfers \
  -H "Authorization: Bearer sk_test_..." \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: agent-req-123" \
  -d '{
    "to": {
      "type":  "alias",
      "value": "jose.mercadopago"
    },
    "amount":   25000,
    "currency": "ARS",
    "concept":  "alquiler julio",
    "from_sub_wallet": "swal_01HW3F..."
  }'

Response 202 (approval pending)

response
{
  "id":              "tx_01HW3F...",
  "status":          "pending_approval",
  "approval": {
    "channel":       "whatsapp",
    "phone":         "+549XXXX....",
    "sent_at":       "2026-07-01T12:04:33Z",
    "expires_at":    "2026-07-01T12:19:33Z"
  },
  "to": { "type": "alias", "value": "jose.mercadopago", "name": "José Pérez" },
  "amount":          25000,
  "currency":        "ARS",
  "concept":         "alquiler julio"
}

Response 202 (auto-approved, ejecutando)

response
{
  "id":         "tx_01HW3F...",
  "status":     "processing",
  "approval":   { "channel": "auto", "reason": "under_threshold" },
  "estimated_settlement": "2026-07-01T12:04:38Z"
}

Response 200 (idempotencia hit)

Si el Idempotency-Key ya existe, devolvemos la transacción original sin re-crearla. Un agente que reintenta no genera duplicados.

GET /v1/send/transfers/:id

curl
curl -X GET https://api.argentive.ai/v1/send/transfers/tx_01HW3F... \
  -H "Authorization: Bearer sk_test_..."

Response 200

response
{
  "id":         "tx_01HW3F...",
  "status":     "settled",
  "amount":     25000,
  "currency":   "ARS",
  "from": { "wallet_id": "wal_01HW3F...", "sub_wallet": "swal_01HW3F..." },
  "to":   { "type": "alias", "value": "jose.mercadopago", "name": "José Pérez" },
  "concept":    "alquiler julio",
  "created_at": "2026-07-01T12:04:33Z",
  "settled_at": "2026-07-01T12:04:38Z",
  "rail":       { "provider": "pomelo-pay", "external_id": "pomelo_tx_9873" },
  "receipt_url":"https://argentive.ai/tx/tx_01HW3F..."
}

Estados posibles

  • pending_approval — esperando tap del user en WhatsApp
  • approved — user aprobó, encolada al rail
  • processing — enviada al rail, esperando confirmación
  • settled — plata acreditada en destino
  • rejected — user tocó "rechazar" o approval expiró
  • failed — rail devolvió error (fondos insuficientes, CVU inválido, etc)

POST /v1/send/transfers/:id/cancel

Cancela una transfer en estado pending_approval. No sirve una vez que pasó a approved o processing.

Formatos de destino

destinations
{ "type": "cvu",    "value": "0000034411112222333344" }
{ "type": "cbu",    "value": "0070007700000000123456" }
{ "type": "alias",  "value": "jose.mercadopago" }
{ "type": "email",  "value": "jose@example.com"   }   // requires beneficiary onboarding

Errores comunes

errores
400  invalid_destination        CVU/CBU con checksum inválido
403  approval_required          Monto sobre threshold; user no aprobó
403  panic_limit_reached        Excede el cap 24h del sub-wallet
409  insufficient_balance       Saldo insuficiente en la wallet/sub-wallet
409  duplicate_idempotency_key  Idempotency-Key ya asociada a otra tx
422  destination_not_found      El alias/CBU no existe en el sistema bancario

Webhooks

  • send.approval_requested — WA enviado al user
  • send.approved — user aprobó, encolada al rail
  • send.rejected — user rechazó o expiró
  • send.settled — dinero acreditado en destino
  • send.failed — rail devolvió error