Send a banking API transfer

Includes sensitive operations

This 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.

These tools are enabled on request and only work for users with Tilopay banking API credentials. They are not part of the default MCP access: Tilopay enables the group case by case. Requires: Tilopay banking API credentials registered by Tilopay for that user.
Sensitive

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

ParameterTypeRequiredDescription
amountnumberyesAmount to transfer
currencystringyesISO 4217 currency (CRC, USD)
contactNamestring—Name of the saved contact (alternative to destinationAccountValue; one of the two is required)
destinationAccountTypestring (PHONE | IBAN)—PHONE = SINPE Móvil (default), IBAN = account transfer
destinationAccountValuestring—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.
destinationNamestring—Recipient name (if not validated via contact)
detailReferencestring—Transfer concept (minimum 15 characters)
assignmentIdstring—Not used in this flow
allowDuplicateboolean—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

View as raw Markdown