Sales and transactions

Includes sensitive operations

What 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 only

tilopay_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

ParameterTypeRequiredDescription
startDatestringyesStart date "YYYY-MM-DD HH:mm:ss"
endDatestringyesEnd date "YYYY-MM-DD HH:mm:ss"
includeDeclinedboolean—Include declined transactions to measure the approval rate (true by default)
environmentstring (production | test)—"production" (default) or "test" (your account's test mode)
currencyarray<string>—Array of ISO codes, e.g. ["CRC","USD"]; empty = all

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 only

tilopay_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

ParameterTypeRequiredDescription
startDatestringyesStart date "YYYY-MM-DD HH:mm:ss"
endDatestringyesEnd date "YYYY-MM-DD HH:mm:ss"
questionstring—Specific question or focus for the analysis
environmentstring (production | test)—"production" (default) or "test" (your account's test mode)
currencyarray<string>—Array of ISO codes, e.g. ["CRC","USD"]; empty = all

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 only

tilopay_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

ParameterTypeRequiredDescription
namestring—Customer name (partial match)
amountnumber—Expected payment amount
currencystring—Currency of the amount, e.g. CRC or USD
hoursinteger—Hours to look back (24 by default)
referencestring—Order number or reference

Returns

{ found, bank_checked, payments }

payments = up to 5 matches with { source: "tilopay" | "baas", at, amount, currency, name, method, reference, email? }.

List Tilopay transactions

Read only

tilopay_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

ParameterTypeRequiredDescription
startDatestringyesStart date, e.g. "2026-08-01 00:00:00"
endDatestringyesEnd date, e.g. "2026-08-31 23:59:59"
statusstring (approved | declined | all)—approved = only approved, declined = only declined, all = all
sortstring (newest | oldest)—newest = most recent first
onlyAprovedboolean—Compatibility: false is equivalent to status: "all"
environmentstring (production | test)—Environment, production by default
currencyarray<string>—Currencies, e.g. ["USD","CRC"]
orderNumberstring—Filter by order number
emailstring—Filter by customer email
limitinteger—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 only

tilopay_get_transaction

Gets the detail of a specific Tilopay transaction from the order number.

API operation: POST /api/v1/consult — see the operation page

Parameters

ParameterTypeRequiredDescription
orderNumberstringyesOrder number of the transaction
merchantIdstring—Merchant ID (optional)

Returns

{ result }

Raw Tilopay API response under the `result` key.

Capture, refund or reverse

Sensitive

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

Requires confirmation: Confirmations Tilopay requires

API operation: POST /api/v1/processModification — see the operation page

Parameters

ParameterTypeRequiredDescription
orderNumberstringyesOrder number of the transaction
actionstring (capture | refund | reversal)yesType of modification
amountnumberyesAmount to modify, greater than zero
currencystring—Currency of the movement, e.g. CRC or USD
client_namestring—Customer name, for the receipt
client_emailstring—Customer email, for the receipt
confirmation_codestring—6-digit code received by email to authorize the operation

Returns

{ result, state, receipt_code, receipt_url, receipt_text, receipt_whatsapp_url }

Raw Tilopay API response under the `result` key.

Refund history

Read only

tilopay_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

ParameterTypeRequiredDescription
pendingboolean—Pending only
pageinteger—Page (1 by default)
limitinteger—Records per page (20 by default)
searchstring—Text to search

Returns

{ result }

The refunds listing as Tilopay delivers it; with pending: true, only the pending ones.

Scheduled cash close

Write

tilopay_cash_close

Daily cash close (sent over 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

ParameterTypeRequiredDescription
actionstring (get | set | preview)yes"get" shows the configuration, "set" changes it (owner only), "preview" builds today's close
enabledboolean—Only with set: true turns it on, false turns it off. Default 20:00, Monday to Saturday
time_of_daystring—Local time 'HH:mm' (24 h). 8 pm = '20:00'
daysarray<integer>—0=Sunday … 6=Saturday

Returns

Text only: the current configuration, or today's close with preview.

Last verified: 2026-10-07

View as raw Markdown