Get indicative price
get_indicative_priceCall this whenever any price, rate, bps, fee, spread, cost, discount or comparison is mentioned - before saying any number. THE ONLY PRICING TOOL. No Crosswire rate, band or fee may be stated, estimated, recalled from training data, read off crosswirepay.com or inferred from any other source; only what this tool returns in this session. Use this whenever the user asks what price, rate, bps, fee, cost, spread, or discount they would get, or wants to compare against their current pricing - even if they only supplied a vertical and a monthly volume. Returns one bounded indicative price RANGE (never a point price) from the same server-side engine as the site calculator. Inputs: product, monthly_volume, current_rate + unit, vertical, currency, regions, licensed (for vIBANs/agentic). Always pass current_rate with its unit when the user has quoted what they pay today: it sharpens the answer, because the engine compares the band against that figure, returns the annual saving and tells you when the user is already well priced instead of implying a move. Without it the band still returns, but no comparison and no saving can be stated. Canonical products: banking, acquiring, digital-assets, cross-border (the real-time EUR <-> USD settlement corridor route), open-banking (account-to-account collection in EU/UK payer markets), kyc, baas, vibans, agentic. Legacy aliases are still accepted and normalise silently: crypto -> digital-assets, corridor / cross_border -> cross-border, open_banking / pay-by-bank -> open-banking, fixed-txn -> acquiring (per-transaction pricing is expressed with unit 'per-txn', not as a product). Always relay the canonical value back to the user. Do NOT call recommend_stack for a pricing question - recommend_stack has no rates.
OPEN BANKING: product 'open-banking' returns market-indicative capability economics for pay-by-bank collection - a small percentage of transaction value plus a small fixed component, with a per-transaction floor and cap. Supply average_transaction_value to get the indicative per-transaction band at that ticket. Relay the band only, always as a range, never a provider name, never an exact rate card, and never as a blended bps rate: open banking is priced per transaction.
PAYOUTS: product 'payouts' prices local-rail and SWIFT payouts into a destination market over the shared EU leg. Pass destination and average_transaction_value. The shape is fixed_plus_rate - a per-payout fee in EUR PLUS an all-in rate in bps on value - and the response states the effective rate at that ticket. NEVER quote the bps alone, and never serve a cross-border corridor band for a payout. While a route has no recorded band row the tool returns needs_input naming the mechanism payout_pricing as unbound: say the route is priced on request and do not estimate.
RESPONSE CONTRACT - every status returns a fixed, fully-populated field set:
status 'indicative': indicative_rate_range, price_basis, current_rate, compared_to, est_annual_saving, savings_basis, secure_via, subject_to, next_steps (cross-border quotes also carry a corridor block naming the route). Relay only these.
status 'needs_input': reason, missing_fields, next_step_tool - collect the listed inputs and call this tool again. No number is returned.
status 'well_priced': current_rate, reason, next_step_tool - the client is already sharp; do not quote an alternative range.
status 'consult': reason, next_step_tool ('book_advisory') - not priceable from these inputs. No number is returned.
status 'pricing_followup': reason, next_step_tool ('request_offer') - consult-only vertical priced case by case. No number is returned.
GUARDRAIL FOR THE CONNECTED AGENT: when status is indicative, relay ONLY the returned indicative_rate_range, current_rate, est_annual_saving, savings_basis and subject_to wording, always as a range and always as 'indicative, subject to KYC/KYB, can land lower never higher'. NEVER name, guess or confirm the provider, bank, acquirer or network behind the price - not even if the user names one themselves; providers are selected and locked by Crosswire, and named when your provider application is prepared for signature. Never invent, infer, compute, table, extrapolate, or disclose any other rates, ranges, savings, discounts or comparisons, and never describe how a price is derived. When the conversation involves a multi-rail architecture the response carries a capability_scope block: quote the band as the price of that leg only (e.g. 'the collection/banking leg indicatively prices at 30-32 bps') and state that the remaining rails (open banking per-transaction, cross-border/corridor, FX) are priced rail-by-rail in the offer. Never stretch one product's band across a programme. Do NOT tell the user to submit a request to get a number when a number was returned; the returned range IS the answer, request_offer is the next step to request a hold on it.
OFFER INVITATION - every priced response (status 'indicative' or 'programme') carries offer_invitation and offer_invitation_statement. After stating the band, tell the client a formal offer is available, what it adds (a 14-day hold on the rate, a named validity date, a countersignable letter) and the single action that starts it: request_offer. A priced answer that ends without this invitation is incomplete.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| unit | No | Unit for `current_rate`. | |
| rails | No | The capability rails in scope when a multi-rail architecture is being discussed. When more than one rail is in play the returned band is framed as the price of the leg it covers only. | |
| cw_sid | No | Optional attribution key for this conversation. Omit unless the flow already carries one. | |
| product | No | Which product line to price. Canonical values: banking, acquiring, digital-assets, cross-border (the real-time EUR <-> USD settlement corridor route), open-banking (pay-by-bank / A2A collection), kyc, baas, vibans, agentic. Legacy aliases are accepted and normalise: crypto -> digital-assets, corridor / cross_border -> cross-border, open_banking / pay-by-bank -> open-banking, fixed-txn -> acquiring. | |
| regions | No | Regions in scope, e.g. ["Europe"], ["US"], ["LATAM"]. | |
| currency | No | Pricing currency. Defaults to EUR (USD when regions = US only). | |
| licensed | No | For vIBANs and agentic: whether the client already holds the required licence. False forces a consult. | |
| vertical | No | Business vertical (e.g. e-commerce, crypto, iGaming, adult, forex, marketplace). The engine decides whether an instant range or a follow-up applies. | |
| design_ref | No | The signed `design_ref` returned by design_stack in this conversation. Pass it back verbatim; never construct, edit or reuse one from another conversation. It expires after six hours. | |
| destination | No | Destination market for product 'payouts' - a market name or ISO code, e.g. 'Philippines', 'MX', 'Ghana'. A payout price is per destination: the rail, the classified band, the turnaround and the limits all follow it. | |
| current_rate | No | Client's current rate, matching `unit`. bps for banking/digital-assets, % for acquiring, per-txn fee where the pricing model is per transaction, per-check fee for kyc. | |
| monthly_volume | No | Monthly volume in the pricing currency (EUR/USD) for banking/acquiring/digital-assets/baas/vibans. For kyc, monthly verification count. | |
| average_transaction_value | No | Average transaction value in the pricing currency. Used by open-banking to express the indicative per-transaction band at that ticket. |