Sales and transactions
DestructiveWhat it covers#
This group covers reading transactions and analysing your sales, plus modifying a transaction: capture, refund or reversal. The modification moves real money and is marked as sensitive.
Tools#
Sales summary and trends
Read onlytilopay_sales_summary
Computes sales metrics from the transactions: totals by currency, average ticket, approval rate, sales by day, weekday and hour, top customers, decline reasons and trend.
API operation: POST /api/v1/consultTransactions (y cálculo local) — see the operation page
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
startDate | string | yes | Start date "YYYY-MM-DD HH:mm:ss" |
endDate | string | yes | End date "YYYY-MM-DD HH:mm:ss" |
includeDeclined | boolean | — | Include declined transactions to measure the approval rate (true by default) |
environment | string (production | test) | — | — |
currency | array<string> | — | — |
Returns
{ summary, trends, environmentNote }
summary carries range, timezoneNote, totalRows, payments {total, approved, declined, approvalRate}, refunds {total, approved, failed, successRate}, byCurrency per currency with payments, itemised costs (commission, iva_commission, cost, cost_iva, retention_iva, retention_rent, totalDeducted, taxWithholdings, pspCost), netToLiquidate, reconciles and reconciliationDelta; refunds; and netForPeriod. It also returns daily, sample, byWeekday, byHour, topCustomers, declineReasons, refundFailureReasons and transactionTypes. byWeekday, byHour and topCustomers come back null when the sample is too small (fewer than 30 rows or fewer than 5 distinct days). trends comes back null in that same case. Hours and days are in UTC.
Sales analyst agent
Read onlytilopay_analyze_sales
Agent that analyses the transactions in a date range and returns a natural-language report: performance, trends, seasonality, approval quality, risks and actionable recommendations.
API operation: POST /api/v1/consultTransactions (y análisis con modelo) — see the operation page
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
startDate | string | yes | Start date "YYYY-MM-DD HH:mm:ss" |
endDate | string | yes | End date "YYYY-MM-DD HH:mm:ss" |
question | string | — | Specific question or focus for the analysis |
environment | string (production | test) | — | — |
currency | array<string> | — | — |
Returns
{ report, summary, trends, environmentNote }
report is the natural-language report; summary and trends are the same ones from tilopay_sales_summary. When there are no transactions in the range it returns only a text saying so, with no structuredContent.
Did they pay me yet?
Read onlytilopay_find_payment
Checks whether a customer already paid: it reviews the Tilopay charges and, if the banking session is open, also the incoming entries of the bank account. Use it for questions like 'did Ana pay me yet?' or 'did the ₡25,000 payment come in?'.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | — | Nombre del cliente (coincidencia parcial) |
amount | number | — | Monto del pago esperado |
currency | string | — | Moneda del monto, ej. CRC o USD |
hours | integer | — | Horas hacia atrás a revisar (por defecto 24) |
reference | string | — | Número de orden o referencia |
Returns
List Tilopay transactions
Read onlytilopay_list_transactions
Queries Tilopay transactions in a date range. It can filter by currency, order number, customer email and environment.
API operation: POST /api/v1/consultTransactions — see the operation page
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
startDate | string | yes | Start date, e.g. "2026-08-01 00:00:00" |
endDate | string | yes | End date, e.g. "2026-08-31 23:59:59" |
status | string (approved | declined | all) | — | approved = only approved, declined = only declined, all = all |
sort | string (newest | oldest) | — | newest = most recent first |
onlyAproved | boolean | — | Compatibility: false is equivalent to status: "all" |
environment | string (production | test) | — | Environment, production by default |
currency | array<string> | — | Currencies, e.g. ["USD","CRC"] |
orderNumber | string | — | Filter by order number |
email | string | — | Filter by customer email |
limit | integer | — | Maximum rows to return (100 by default, 500 maximum) |
Returns
{ total, transactions[], environmentNote }
total = rows found before applying limit; transactions = the rows returned; environmentNote warns when the queried environment returned no rows.
Get one transaction
Read onlytilopay_get_transaction
Gets the detail of a specific Tilopay transaction from your order number.
API operation: POST /api/v1/consult — see the operation page
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
orderNumber | string | yes | Order number of the transaction |
merchantId | string | — | Merchant ID (optional) |
Returns
{ result }
Raw Tilopay API response under the `result` key.
Capture, refund or reverse
Sensitivetilopay_modify_transaction
Modifies a Tilopay transaction: capture, refund or reversal for the given amount. The amount can never exceed that of the original sale: if the user asks for more, tell them the real sale amount and ask whether to refund that amount or part of it; do not ask for confirmation of a larger amount. It only refunds approved sales, never an order that is already a refund (it starts with «Re-»). When Tilopay confirms the refund, a text receipt ready to forward to the customer is generated. Sensitive operation: it affects real money and requires a second factor. Call it first without `confirmation_code`: a 6-digit code is sent to the merchant's email and the response includes `requires_confirmation`. Repeat the same call, with the same parameters, adding `confirmation_code`. Report the result exactly as the tool returns it (state): if it is pending or not confirmed, never say the refund was already made.
API operation: POST /api/v1/processModification — see the operation page
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
orderNumber | string | yes | Order number of the transaction |
action | string (capture | refund | reversal) | yes | Type of modification |
amount | number | yes | Amount to modify, greater than zero |
currency | string | — | Moneda del movimiento, ej. CRC o USD |
client_name | string | — | Nombre del cliente, para el comprobante |
client_email | string | — | Correo del cliente, para el comprobante |
confirmation_code | string | — | 6-digit code received by email to authorize the operation |
Returns
{ result }
Raw Tilopay API response under the `result` key.
Refund history
Read onlytilopay_refunds_list
The merchant's refunds. pending=true returns the refunds pending processing; otherwise, the history. Query only: to refund use tilopay_modify_transaction.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
pending | boolean | — | Solo pendientes |
page | integer | — | Página (por defecto 1) |
limit | integer | — | Registros por página (por defecto 20) |
search | string | — | Texto a buscar |
Returns
Scheduled cash close
Writetilopay_cash_close
Daily cash close by WhatsApp: the day's sales per currency, declines grouped by reason and the next Tilopay settlement. Action 'get' shows the configuration; 'set' changes it (enabled, time_of_day 'HH:mm' in local time, days 0=Sunday…6=Saturday; 'Monday to Saturday' = [1,2,3,4,5,6]); 'preview' builds today's close right now. For 'turn off the close' use set with enabled=false. Only the owner can configure it.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string (get | set | preview) | yes | — |
enabled | boolean | — | — |
time_of_day | string | — | Hora local 'HH:mm' (24 h). 8 pm = '20:00' |
days | array<integer> | — | 0=domingo … 6=sábado |
Returns
Last verified: 2026-10-07 · Owner: equipo-integraciones