Send a banking API transfer
Includes sensitive operationsThis tool moves real money. It does not send the payment yet: it creates the intent in the Banca Cliente portal, which validates the destination and sends a 6-digit code to the merchant's email (valid for 30 minutes). The payment only executes when calling baas_confirm_transfer with that code.
baas_send_transfer
Creates the intent of a transfer from the merchant's bank account in the Banca Cliente portal (not the payment yet). The portal validates the destination and sends a 6-digit code to the merchant's email; the payment only executes when baas_confirm_transfer is called with that code (valid for 30 minutes). Default method: SINPE Móvil (destination by phone); for an account transfer, destinationAccountType=IBAN. baas_validate_destination is optional to show the holder beforehand; this tool validates the destination on its own.
Requires confirmation: Confirmations Tilopay requires
API operation: POST /api/public/v1/transactions/payments — see the operation page
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
amount | number | yes | Amount to transfer |
currency | string | yes | ISO 4217 currency (CRC, USD) |
contactName | string | — | Name of the saved contact (alternative to destinationAccountValue; one of the two is required) |
destinationAccountType | string (PHONE | IBAN) | — | PHONE = SINPE Móvil (default), IBAN = account transfer |
destinationAccountValue | string | — | Phone: +50688887777, 506 8888-7777 or 88887777 are accepted and normalized to 8 digits; IBAN in uppercase without spaces. Alternative to contactName: one of the two is required. |
destinationName | string | — | Recipient name (if not validated via contact) |
detailReference | string | — | Transfer concept (minimum 15 characters) |
assignmentId | string | — | Not used in this flow |
allowDuplicate | boolean | — | Only true when the user literally confirmed they want to repeat a recent identical transfer (e.g. 'yes, it is another one'). Never enabled on the agent's own initiative. |
Returns
{ requires_transfer_code: true, channel: "email", via: "portal", resumen: { beneficiario_nombre, beneficiario_confirmado_por_banco, beneficiario_identificacion_enmascarada, entidad_financiera, destino_tipo, destino_legible, monto, moneda, concepto, origen, datos_no_informados[] }, requires_approval, message }
It does not return an intentId: the intent stays stored on the server. Special responses: requires_duplicate_confirmation (same destination, amount and currency within 120 s; repeat with allowDuplicate: true only if the user literally confirmed it) and requires_open_intent_resolution (there is already an open intent: confirm it with baas_confirm_transfer or cancel it with baas_cancel_transfer).
Last verified: 2026-10-20