1import{i as e,r as t,t as n}from"./jsx-runtime-DUAcabCT.js";import{q as r}from"./link-B2knkdfk.js";var i=e(r(),1),a=`--- 2title: WhatsApp assistant 3kind: guide 4status: stable 5last_verified: 2026-09-23 6verified_by: equipo-integraciones 7owner: equipo-integraciones 8sources: 9 - "Tilopay Insight Engine, WhatsApp linking flow and web fallback screen (code, commit 55ba257a), verified 2026-09-23" 10locales: [es, en] 11related: [agentes, agentes/mcp, agentes/mcp/adquirencia, agentes/mcp/api-bancario] 12description: "What the Tilopay WhatsApp assistant is, how it is enabled, how to use it and what it can do: sales, transactions, payment links, catalog, micro-store and orders, receipts, subscriptions, saved cards, reminders and alerts." 13--- 14 15## What it is [#que-es] 16 17The Tilopay assistant on WhatsApp is the same Tilopay MCP server wired to a WhatsApp chat. Instead 18of configuring an MCP client, the merchant writes to it in plain language from the WhatsApp they 19already use, and the assistant runs the tools against their Tilopay account. 20 21The capabilities are the ones the MCP exposes: whatever an agent can do through the 22[acquiring tools](/developers/agentes/mcp/adquirencia) and, on request, the 23[banking tools](/developers/agentes/mcp/api-bancario), the assistant can do from the chat. 24 25It is not a canned-response chatbot: it reads and operates on real account data, and answers in 26plain text meant to be read on a phone. 27 28## How it is enabled [#activacion] 29 30Linking takes place from the WhatsApp chat itself and takes about a minute. The merchant must be 31affiliated with Tilopay, and the person needs their Tilopay email and password. 32 331. Send any message to Tilopay's official number. If the number is not linked yet, the chat shows a 34 welcome message with a **Vincular mi cuenta** button. You can also write âvincular mi cuentaâ to 35 request the button again. 362. Tap **Vincular mi cuenta**. Enter credentials and codes in the secure form that opens, never as 37 messages in the chat. 383. Enter the same email and password you use to sign in to the Tilopay dashboard. 394. If your account has two-step verification, enter the code Tilopay sends to the method shown on 40 the screen. 415. Enter the 6-digit code sent to your Tilopay email. This final code is always required to confirm 42 the link. 436. If your user has more than one merchant, choose the one you want to use. When finished, close the 44 form; you can now ask the assistant to query or operate on that account. 45 46For security, the WhatsApp number must match one of these account details: a phone configured for 47two-step verification, the phone number of one of the available merchants, or a number previously 48authorized by the merchant administrator. If it does not match, the account is not linked. Update 49the phone in the Tilopay dashboard or ask the administrator to authorize that number in the 50assistant dashboard, then write âvincular mi cuentaâ again. 51 52An unlinked number cannot run queries or operations. The linking welcome is sent at most once per 53day; even if it does not appear again that day, you can request the button by writing âvincular mi 54cuenta.â 55 56## Link the account again [#revincular] 57 58If the session stops working or the password changes, write âvincular mi cuentaâ and complete the same 59process. Linking the same number again updates the existing connection: it does not create another 60profile or disconnect MCP clients that are already linked. Each channel keeps its own session, so a 61problem in WhatsApp does not automatically close sessions in Claude, ChatGPT, Cursor or other MCP 62clients. 63 64## How to use it [#uso] 65 66There are no commands or menus. You write as you would to a teammate: 67 68- "how are sales going over the last 30 days?" 69- "charge Ana 25 thousand colones for the appointment and send it to me on WhatsApp" 70- "look up order 10432" 71- "every day at 8pm send me today's sales summary" 72 73The assistant remembers the last messages of the thread, so you can keep going without repeating 74data ("send it by email too", "delete that link"). 75 76## What it can do [#capacidades] 77 78| Area | What it solves from the chat | 79| -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | 80| Sales | Summaries and trends by day, week or month, plus analysis with average ticket, approval rate, top customers and decline reasons. | 81| Transactions | List and look up transactions, and capture, refund or reverse a charge. | 82| Payment links | Create a link, share it on WhatsApp or by email, see its detail and delete it. | 83| Catalog | List products or services, see their detail, create, change or delete an item. | 84| Micro-store | Build a store with a cart from the catalog products, list the active stores and deactivate one. | 85| Orders | Turn on order management with the store name and logo, see the summary, list orders by status, see the paid but undelivered one
85s and mark them as delivered. | 86| Receipts | List the receipts of approved charges and resend a customer the receipt for their payment. | 87| Contacts | Save, list and delete contacts so you can charge them by name. | 88| Recurring charges | Create, edit and delete plans, build them step by step from the chat, generate the subscription link, review subscribers and their payments, edit, pause, reactivate or delete a subscriber, see failed charges, generate the link to settle a declined charge and manage coupons. | 89| Saved cards | Tokenize a customer's card, list or delete their cards, check payment methods and installments, charge a saved card and review groups, affiliates and bulk charges. | 90| Reminders | Schedule one-off, daily, weekly or monthly reminders that can also run an assistant query when they fire; list them and cancel them. Up to 20 active. | 91| Alerts | Turn the merchant's alerts on and off and review them: approved charges, declined charges, orders and the daily summary at the chosen time. | 92| Profile and recipes | Save the business profile and get automation recommendations based on what it sells. | 93| Support | Find the official guide for a topic, run the connection diagnostics and review an integration error. | 94| Banking (on request) | Accounts, balances, payments, statements and movement analysis; and, with email confirmation, validate a destination account, send a transfer and check its status. Only with banking API credentials. | 95 96There are 86 tools across 13 groups today. Parameter detail and the access level of each one live in 97the [MCP server](/developers/agentes/mcp) pages. 98 99The assistant also accepts **images** in the chat: a product photo for the catalog, or the logo shown 100in the micro-store and on receipts. 101 102## Authorizing sensitive operations [#autorizacion] 103 104Operations that move money or alter charges â refunds, captures, reversals, saved-card charges, 105subscriber changes, deleting links, products or plans, and sending a bank transfer â ask for a 1066-digit code that Tilopay sends to the user's 107registered email. Without that code the assistant does not run them. 108 109The merchant's keys never travel through the chat, and the assistant never reveals credentials, 110tokens or internal identifiers. Every query and operation is audited with user, tool, date and 111result, with per-account usage limits. 112 113## Messages the assistant sends on its own [#avisos] 114 115- **Payment received:** when a customer pays a link created from the assistant, a WhatsApp message 116 arrives with amount, customer, description, reference and order number. 117- **Scheduled reports:** the summary or query you scheduled, with the data pulled at send time. 118- **Reminders:** the reminder you scheduled, with the query result attached if you asked for an 119 action. Reminders about charges or links always go to the merchant's WhatsApp, never to the 120 customer. 121- **Pending orders:** the daily reminder of paid orders still to be delivered, when order management 122 is on. 123 124## If you prefer your own agent [#mcp] 125 126The same tools are available over MCP for Claude, ChatGPT, Cursor or any other client: start with 127[Connect your agent](/developers/agentes/mcp/conectar) and 128[Permissions](/developers/agentes/mcp/permisos). 129`,o=`--- 130title: Machine-readable documentation 131kind: guide 132status: stable
133last_verified: 2026-08-29 134verified_by: equipo-integraciones 135owner: equipo-integraciones 136sources: 137 - "Servidor MCP de Tilopay (manifiesto y código), verificado 29-08-2026" 138 - "Respuestas de TecnologÃa, 29-08-2026" 139locales: [es, en] 140related: [agentes, agentes/mcp, api/autenticacion, sdk] 141description: "The artifacts the portal publishes for agents: llms.txt, raw Markdown on any URL, openapi.json and mcp.json." 142--- 143 144## Indexes for models [#llms] 145 146- [www.tilopay.com/llms.txt](https://www.tilopay.com/llms.txt) â Spanish site index, with the URL and a description of every 147 page. 148- [www.tilopay.com/llms-full.txt](https://www.tilopay.com/llms-full.txt) â the same index with the full content. 149- [www.tilopay.com/en/llms.txt](https://www.tilopay.com/en/llms.txt) and [www.tilopay.com/en/llms-full.txt](https://www.tilopay.com/en/llms-full.txt) â the 150 English versions, with \`/en\` URLs. 151 152## Raw Markdown [#markdown] 153 154Any URL on the site returns its Markdown by adding \`.md\`: for example 155[www.tilopay.com/en/developers/sdk/instalacion.md](https://www.tilopay.com/en/developers/sdk/instalacion.md) or 156[www.tilopay.com/en/tarifas.md](https://www.tilopay.com/en/tarifas.md). It is served as \`text/markdown\`, with a metadata header 157(page kind, status, version and last verification date). A URL that does not exist returns 404, not 158HTML. 159 160## API spec [#openapi] 161 162- [\`openapi.json\`](/developers/openapi.json) â OpenAPI 3.1 spec of the Tilopay API: endpoints, 163 parameters, responses and examples. It is the source of truth for the API. 164- [\`openapi.yaml\`](/developers/openapi.yaml) â the same content in YAML. 165 166Both routes answer with \`Access-Control-Allow-Origin: *\`, so they can be read from the browser. 167 168## MCP catalog [#mcp-json] 169 170[\`mcp.json\`](/developers/mcp.json) describes the MCP server: its URL, the access model and the full 171tool catalog with parameters, output and access level. When a tool wraps an API operation, the 172entry includes that endpoint. 173 174The root-level \`verified_at\` field carries the date (\`YYYY-MM-DD\`) on which the catalog was compared 175against the server. The server version does not change when tools are added, so that is the signal 176to check whether a cached copy is stale. 177`,s=`--- 178title: Acquiring tools 179kind: mcp-index 180status: stable 181last_verified: 2026-09-03 182verified_by: equipo-integraciones 183owner: equipo-integraciones 184sources: 185 - "Tilopay MCP server (manifest and code), verified 2026-09-03" 186locales: [es, en] 187related: [agentes/mcp, agentes/mcp/permisos, agentes/mcp/api-bancario] 188description: "Summary of the MCP tool groups over the acquiring API: sales, payment links, catalog, contacts, business profile, micro-store and orders, alerts, receipts, reminders, recurring charges, stored cards and support." 189--- 190 191## What it covers [#que-cubre] 192 193These are the tools that work over Tilopay's **acquiring API**: card payments, payment links and 194the data around them. They come enabled with standard MCP access, with no extra request, and they 195always operate on the merchant tied to the MCP user. 196 197The [banking API](/developers/agentes/mcp/api-bancario) tools are a separate case: they are 198enabled on request and require banking API credentials. 199 200## Groups [#grupos] 201 202<McpGroupIndex slugs="ventas, enlaces-de-pago, catalogo, contactos, perfil, microtienda, avisos, comprobantes, recordatorios, recurrentes, tarjetas-guardadas, soporte" /> 203 204The access level of each tool and the detail of its parameters live on its group page; the 205permissions summary is in [Permissions](/developers/agentes/mcp/permisos). 206`,c=`--- 207title: Banking API payments analyst 208kind: mcp-tool 209access: read 210status: stable 211last_verified: 2026-09-03 212verified_by: equipo-integraciones 213owner: equipo-integraciones 214sources: 215 - "Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo baas), verificado 03-09-2026" 216locales: [es, en] 217related: [agentes/mcp, agentes/mcp/api-bancario, agentes/mcp/permisos] 218description: "Analyses, read only, the payments of an account in a date range and returns a natural-language report: success, failures, reversals, net amounts and recommendations. It runs a language model over the computed figures." 219--- 220 221<McpTool name="baas_analyze_payments" /> 222`,l=`--- 223title: Payment detail 224kind: mcp-tool 225access: read 226status: stable
227last_verified: 2026-09-03 228verified_by: equipo-integraciones 229owner: equipo-integraciones 230sources: 231 - "Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo baas), verificado 03-09-2026" 232locales: [es, en] 233related: [agentes/mcp, agentes/mcp/api-bancario, agentes/mcp/permisos] 234description: "Gets the detail of a banking API payment from its internal UUID, read only." 235--- 236 237<McpTool name="baas_get_payment" /> 238`,u=`--- 239title: Banking API transfer status 240kind: mcp-tool 241access: read 242status: stable 243last_verified: 2026-09-14 244verified_by: equipo-integraciones 245owner: equipo-integraciones 246sources: 247 - "Tilopay MCP server (Tilopay Insight Engine code, baas group), verified 2026-09-14" 248locales: [es, en] 249related: [agentes/mcp, agentes/mcp/api-bancario, agentes/mcp/api-bancario/send-transfer] 250description: "Checks the current status of a transfer by its payment_id: status, result, amount, currency, destination and date." 251--- 252 253<McpTool name="baas_get_transfer_status" /> 254`,d=`--- 255title: Banking API account balances 256kind: mcp-tool 257access: read 258status: stable 259last_verified: 2026-09-03 260verified_by: equipo-integraciones 261owner: equipo-integraciones 262sources: 263 - "Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo baas), verificado 03-09-2026" 264locales: [es, en] 265related: [agentes/mcp, agentes/mcp/api-bancario, agentes/mcp/permisos] 266description: "Lists the real-time balances of the accessible accounts: account, amounts and cut-off date." 267--- 268 269<McpTool name="baas_list_balances" /> 270`,f=`--- 271title: List banking API payments 272kind: mcp-tool 273access: read 274status: stable 275last_verified: 2026-09-03 276verified_by: equipo-integraciones 277owner: equipo-integraciones 278sources: 279 - "Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo baas), verificado 03-09-2026" 280locales: [es, en] 281related: [agentes/mcp, agentes/mcp/api-bancario, agentes/mcp/permisos] 282description: "Reads the payments of an owned account identified by IBAN, with date, status, currency, method and direction filters. Cursor pagination." 283--- 284 285<McpTool name="baas_list_payments" /> 286`,p=`--- 287title: Other BaaS operations 288kind: mcp-tool 289access: read 290status: stable 291last_verified: 2026-09-03 292verified_by: equipo-integraciones 293owner: equipo-integraciones 294sources: 295 - "Tilopay MCP server (code of the Tilopay Insight Engine project, baas group), verified 2026-09-03" 296locales: [es, en] 297related: [agentes/mcp, agentes/mcp/api-bancario, agentes/mcp/permisos] 298description: "Assignments, credential diagnostics, account listing, balance of one account and status of a statement request, on a single page." 299--- 300 301<McpTools names="baas_list_assignments, baas_diagnostics, baas_list_accounts, baas_get_balance, baas_get_statement_status" /> 302`,ee=`--- 303title: Request an account statement 304kind: mcp-tool 305access: write 306status: stable 307last_verified: 2026-09-03 308verified_by: equipo-integraciones 309owner: equipo-integraciones 310sources: 311 - "Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo baas), verificado 03-09-2026" 312locales: [es, en] 313related: [agentes/mcp, agentes/mcp/api-bancario, agentes/mcp/permisos] 314description: "Requests the generation of an account statement for a banking API account, with a 60-day maximum range. It moves no money: it generates a read-only document and returns request_id with status PENDING." 315--- 316 317<McpTool name="baas_request_statement" /> 318`,te=`--- 319title: Find a payment 320kind: mcp-tool 321access: read 322status: stable 323last_verified: 2026-09-03 324verified_by: equipo-integraciones 325owner: equipo-integraciones 326sources: 327 - "Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo baas), verificado 03-09-2026" 328locales: [es, en] 329related: [agentes/mcp, agentes/mcp/api-bancario, agentes/mcp/permisos] 330description: "Finds a payment inside an account by exactly one of: paymentId (UUID), publicId (number) or clientReference. Sending more than one returns an error." 331--- 332 333<McpTool name="baas_search_payment" /> 334`,ne=`---
335title: Send a banking API transfer 336kind: mcp-tool 337access: destructive 338status: stable 339last_verified: 2026-09-14 340verified_by: equipo-integraciones 341owner: equipo-integraciones 342sources: 343 - "Tilopay MCP server (Tilopay Insight Engine code, baas group), verified 2026-09-14" 344locales: [es, en] 345related: [agentes/mcp, agentes/mcp/api-bancario, agentes/mcp/api-bancario/validate-destination] 346description: "Sends a transfer from one of the merchant's bank accounts. It validates the destination account first and requires a confirmation code sent to the merchant's email." 347--- 348 349<Callout type="warn"> 350 **This tool moves real money.** It validates the destination account before sending, and executing 351 the transfer requires a **confirmation code** sent to the merchant's email. Without that code the 352 operation is not sent. 353</Callout> 354 355<McpTool name="baas_send_transfer" /> 356`,re=`--- 357title: Validate a banking API destination account 358kind: mcp-tool 359access: read 360status: stable 361last_verified: 2026-09-14 362verified_by: equipo-integraciones 363owner: equipo-integraciones 364sources: 365 - "Tilopay MCP server (Tilopay Insight Engine code, baas group), verified 2026-09-14" 366locales: [es, en] 367related: [agentes/mcp, agentes/mcp/api-bancario, agentes/mcp/api-bancario/send-transfer] 368description: "Checks a destination account before sending a transfer to it: holder, account type, currency and status. It does not move money." 369--- 370 371<McpTool name="baas_validate_destination" /> 372`,ie=`--- 373title: Banking tools 374kind: mcp-tool 375access: write 376status: stable 377last_verified: 2026-09-03 378verified_by: equipo-integraciones 379owner: equipo-integraciones 380sources: 381 - "Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo baas), verificado 03-09-2026" 382locales: [es, en] 383related: [agentes/mcp, agentes/mcp/permisos, api-bancario, api-bancario/cuentas, api-bancario/pagos] 384description: "MCP tools to read the Tilopay banking API: accounts, balances, payments and statements. Enabled on request and only for users with banking API credentials." 385--- 386 387<Callout type="warn"> 388 **These tools are not enabled by default.** They are turned on **on request** and only work for 389 users with **Tilopay banking API credentials** registered by Tilopay on the server side. Standard 390 MCP access does not include the group; and if a tool is called without those credentials, it 391 replies that they do not exist. To request it, [contact us](/en/contacto) and state that you 392 need the banking API. 393</Callout> 394 395## What it covers [#que-cubre] 396 397Fourteen tools over the [banking API](/en/developers/api-bancario): contexts (assignments), 398credential diagnostics, accounts, balances, payments, statements, an analytical payments report, 399validating a destination account and sending a transfer with its status lookup. 400 401**Eleven of the fourteen only read information.** \`baas_request_statement\` generates a read-only 402document and moves no money. The one tool that moves money is \`baas_send_transfer\`: it validates 403the destination account first and requires a confirmation code sent to the merchant's email, so it 404cannot run on the model's decision alone. 405 406Accounts are identified with \`accountType: "IBAN"\` plus \`accountValue\`, dates are RFC 3339 407(\`2026-01-01T00:00:00Z\`) and \`assignmentId\` is only needed when the user has several contexts. 408 409## Tools [#herramientas] 410 411<McpToolIndex slug="api-bancario" /> 412`,ae=`--- 413title: Alerts and notifications 414kind: mcp-tool 415access: write 416status: stable 417last_verified: 2026-09-14 418verified_by: equipo-integraciones 419owner: equipo-integraciones 420sources: 421 - "Tilopay MCP server (Tilopay Insight Engine code, notifications group), verified 2026-09-14" 422locales: [es, en] 423related: [agentes/mcp, agentes/mcp/recordatorios, agentes/asistente-whatsapp] 424description: "MCP tools to read and change the merchant's WhatsApp alerts: approved charges, declined charges, daily summary and orders." 425--- 426 427## What it covers [#que-cubre] 428 429The agent can notify the merchant over WhatsApp when a charge comes in, when a charge is declined, 430when an order arrives, and send a daily summary at the chosen time. These two tools read and change 431those settings. 432 433They do not send messages on their own: they only turn alerts on and off and report the current 434settings. Fields that are not sent are preserved. 435 436## Tools [#herramientas] 437 438<McpToolGroup slug="avisos" /> 439`,oe=`--- 440title: Catalog 441kind: mcp-tool 442access: read 443status: stable
444last_verified: 2026-08-29 445verified_by: equipo-integraciones 446owner: equipo-integraciones 447sources: 448 - "Servidor MCP de Tilopay (manifiesto y código), verificado 29-08-2026" 449 - "Respuestas de TecnologÃa, 29-08-2026" 450locales: [es, en] 451related: [agentes/mcp, agentes/mcp/permisos, agentes/mcp/recetas] 452description: MCP tools to read the merchant catalog of products and services. 453--- 454 455## What it covers [#que-cubre] 456 457Read only: it lists the products or services the merchant already created as payment links and returns the detail of one. 458 459## Tools [#herramientas] 460 461<McpToolGroup slug="catalogo" /> 462`,se=`--- 463title: Payment receipts 464kind: mcp-tool 465access: write 466status: stable 467last_verified: 2026-09-14 468verified_by: equipo-integraciones 469owner: equipo-integraciones 470sources: 471 - "Tilopay MCP server (Tilopay Insight Engine code, receipts group), verified 2026-09-14" 472locales: [es, en] 473related: [agentes/mcp, agentes/mcp/microtienda, agentes/mcp/enlaces-de-pago] 474description: MCP tools to list receipts of approved charges and resend a customer the receipt for their payment. 475--- 476 477## What it covers [#que-cubre] 478 479Every approved charge that goes through the agent produces a receipt with its own code, a page to 480view it and an image to share. With these two tools the merchant lists the receipts for a period 481and resends one to the customer over WhatsApp. 482 483The receipt is an informational document about the charge. It is not an electronic invoice. 484 485## Tools [#herramientas] 486 487<McpToolGroup slug="comprobantes" /> 488`,ce=`--- 489title: Connect your AI agent 490kind: guide 491status: stable 492last_verified: 2026-09-23 493verified_by: equipo-integraciones 494owner: equipo-integraciones 495sources: 496 - "Tilopay MCP server code (Tilopay Insight Engine), verified 2026-09-23" 497locales: [es, en] 498related: [agentes/mcp, agentes/mcp/permisos, agentes/mcp/recetas, agentes] 499description: How to connect Claude, ChatGPT, GitHub Copilot, Cursor, Gemini or any other MCP client to the Tilopay MCP server. 500--- 501 502Every agent connects to the same server through the same flow: you add a remote MCP server with 503the Tilopay URL and authorize the session in the browser. The only thing that changes per agent is 504where you add it. 505 506\`\`\`text 507https://mcp.tilopay.com/mcp 508\`\`\` 509 510The MCP server version in production is **0.3.0**. 511 512## Before connecting [#antes] 513 5141. There is no form and no prior approval: an active Tilopay account is enough. 5152. During authorization you sign in with your Tilopay dashboard email and password and confirm the 516 verification code Tilopay sends. The assistant user is created automatically at that moment and 517 tied to the merchant. 5183. Review [what an agent can do](/en/developers/agentes/mcp/permisos) before connecting it, especially 519 the tools marked as sensitive. 520 521<Callout type="warn"> 522 Never paste the merchant's \`apiKey\`, \`apiUser\` or \`apiPassword\` into the agent or its config file. 523 Merchant credentials live encrypted on the Tilopay server: the agent only handles its own OAuth 524 session. 525</Callout> 526 527## Claude [#claude] 528 529Claude supports remote connectors, both in the desktop app and on the web. 530 5311. Add a remote custom connector with the server URL. 5322. Claude opens the Tilopay authorization screen: sign in with your Tilopay credentials and 533 confirm the verification code. 5343. Review the consent screen (requesting application, return URL and permissions) and approve. 5354. Back in the conversation, the Tilopay tools are available. 536 537There is no token to paste: the connector registers itself. 538 539## ChatGPT [#chatgpt] 540 541ChatGPT connects as a remote connector using the same URL. 542 5431. Add the server as a remote connector with the URL above. 5442. Authorization completes in the browser with your Tilopay credentials and the verification code. 5453. Once approved, the connector is active and the model can call the tools. 546 547## GitHub Copilot and VS Code [#copilot] 548 549In VS Code (with Copilot in agent mode) you declare a remote HTTP MCP server. 550 5511. Declare the server with the URL, no token or credentials in the config file. 5522. On first use, the editor opens the browser to authorize. 5533. After approving, the tools show up in the agent's tool list. 554 555## Cursor and other editors [#cursor] 556 557Cursor and equivalent editors use the same scheme: a remote MCP server over HTTP. 558 5591. Add the remote server with the URL, no token in the configuration. 5602. Authorize in the browser when the editor asks. 5613. Enable the tools for the editor's chat or agent. 562 563## Gemini [#gemini] 564 565Gemini clients that support remote MCP connect the same way: register the server URL and authorize 566in the browser. If the client only supports local stdio MCP servers, you need a bridge that speaks 567Streamable HTTP against the Tilopay URL. 568 569## Other MCP clients [#otros] 570 571For a custom client or any other agent, the requirement is support for **Streamable HTTP** 572transport and **OAuth 2.0 with dynamic client registration**. The sequence is: 573 5741. The client calls the server and gets a \`401\` with \`WWW-Authenticate\`, pointing to 575 \`/.well-known/oauth-protected-resource\`. 5762. The client discovers the identity provider endpoints. 5773. It registers dynamically and opens the authorization screen. 5784. The user signs in and approves the consent screen. 5795. The client stays connected with \`authorization_code\` and \`refresh_token\`. 580 581The only thing you configure is the server URL. 582 583## Verify the connection [#verificar] 584 585Ask the agent to list the available tools: the Tilopay ones should appear, grouped into 586[sales and transactions](/en/developers/agentes/mcp/ventas), 587[payment links](/en/developers/agentes/mcp/enlaces-de-pago), 588[catalog](/en/developers/agentes/mcp/catalogo), 589[contacts](/en/developers/agentes/mcp/contactos), 590[recurring billing](/en/developers/agentes/mcp/recurrentes), 591[support and diagnostics](/en/developers/agentes/mcp/soporte). 592The [banking API (BaaS)](/en/developers/agentes/mcp/api-bancario) group is enabled on request and 593only works for users with Tilopay banking API credentials. 594 595A safe first test is a read-only query, for example asking for transactions in a date range. For
596full flows see the [recipes](/en/developers/agentes/mcp/recetas). 597 598## If something fails [#problemas] 599 600- **The client never opens authorization**: check the server is declared as remote over HTTP, not 601 as a local server. 602- **Authorization never completes**: sign in with your Tilopay dashboard email and password, and 603 confirm the verification code sent to your email. 604- **The agent sees no tools**: several clients require enabling them for the conversation or for 605 agent mode after connecting. 606- **A tool returns empty**: it may be the queried environment; several tools default to 607 \`production\`. 608`,le=`--- 609title: Contacts 610kind: mcp-tool 611access: destructive 612status: stable 613last_verified: 2026-08-29 614verified_by: equipo-integraciones 615owner: equipo-integraciones 616sources: 617 - "Servidor MCP de Tilopay (manifiesto y código), verificado 29-08-2026" 618 - "Respuestas de TecnologÃa, 29-08-2026" 619locales: [es, en] 620related: [agentes/mcp, agentes/mcp/permisos, agentes/mcp/recetas] 621description: "MCP tools for the merchant address book: view, save and delete contacts." 622--- 623 624## What it covers [#que-cubre] 625 626The address book lets the agent reuse phone and email when sending a payment link, without asking again. Deleting a contact is irreversible. 627 628## Tools [#herramientas] 629 630<McpToolGroup slug="contactos" /> 631`,ue=`--- 632title: Payment links 633kind: mcp-tool 634access: destructive 635status: stable 636last_verified: 2026-08-29 637verified_by: equipo-integraciones 638owner: equipo-integraciones 639sources: 640 - "Servidor MCP de Tilopay (manifiesto y código), verificado 29-08-2026" 641 - "Respuestas de TecnologÃa, 29-08-2026" 642locales: [es, en] 643related: [agentes/mcp, agentes/mcp/permisos, agentes/mcp/recetas] 644description: MCP tools to create, read and delete payment links, and prepare their delivery. 645--- 646 647## What it covers [#que-cubre] 648
649With this group the agent creates a payment link, reads its detail, deletes it and prepares delivery to the customer over WhatsApp or email. WhatsApp delivery does not send the message: it returns a link ready to send. 650 651## Tools [#herramientas] 652 653<McpToolGroup slug="enlaces-de-pago" /> 654`,de=`--- 655title: Micro-store and orders 656kind: mcp-tool 657access: destructive 658status: stable 659last_verified: 2026-09-14 660verified_by: equipo-integraciones 661owner: equipo-integraciones 662sources: 663 - "Tilopay MCP server (Tilopay Insight Engine code, store group), verified 2026-09-14" 664locales: [es, en] 665related: [agentes/mcp, agentes/mcp/catalogo, agentes/mcp/comprobantes] 666description: MCP tools to build micro-stores with a cart from the catalog and manage the orders they generate. 667--- 668 669## What it covers [#que-cubre] 670 671From the products in the [catalog](/developers/agentes/mcp/catalogo) the agent builds a 672**micro-store with a cart**: a public page with several products where the customer picks 673quantities and pays for everything at once. Each micro-store has its own link. 674 675The second half of the group is **order management**: it is set up once (store name, optional logo 676and the time of the daily reminder), and from then on the merchant can see the summary, list orders 677by status, see the ones paid but not delivered and mark them as delivered. 678 679Order statuses are \`pending\` (awaiting payment), \`paid\` (paid, not delivered) and \`delivered\`. 680Deactivating a micro-store or turning off order management does not delete catalog products or 681orders already recorded. 682 683These tools do not call the Tilopay API: they work on the MCP server's own data, except the 684payment itself, which goes through each product's payment link. 685 686## Tools [#herramientas] 687 688<McpToolGroup slug="microtienda" /> 689`,fe=`--- 690title: Business profile and recipes 691kind: mcp-tool 692access: write 693status: stable 694last_verified: 2026-09-14 695verified_by: equipo-integraciones 696owner: equipo-integraciones 697sources: 698 - "Tilopay MCP server (Tilopay Insight Engine code, profile group), verified 2026-09-14" 699locales: [es, en] 700related: [agentes/mcp, agentes/mcp/adquirencia, agentes/mcp/recetas] 701description: MCP tools to read and complete the business profile and to get automation recipes from it. 702--- 703 704## What it covers [#que-cubre] 705 706The agent keeps a short business profile: what the business does, what it sells, where it sells, 707what its charges look like and what it wants to improve. From that profile it builds the 708automation recipes it proposes to the merchant, and it knows which question is still pending (the 709questionnaire is four questions at most). 710 711The profile is saved field by field: whatever is not sent is preserved. Recipes change with the 712modules the user has enabled: banking recipes only appear when the 713[banking API](/developers/agentes/mcp/api-bancario) is enabled. 714 715These tools do not call the Tilopay API: they work on the MCP server's own data. 716 717## Tools [#herramientas] 718 719<McpToolGroup slug="perfil" /> 720`,pe=`--- 721title: What an agent can do 722kind: guide 723status: stable 724last_verified: 2026-08-29 725verified_by: equipo-integraciones 726owner: equipo-integraciones 727sources: 728 - "Servidor MCP de Tilopay (manifiesto y código), verificado 29-08-2026" 729 - "Respuestas de TecnologÃa, 29-08-2026" 730locales: [es, en] 731related: [agentes/mcp, agentes/mcp/ventas, agentes/mcp/recetas] 732description: "The real scope of an agent connected to the MCP server: which tools read, which tools change state, and which controls exist." 733--- 734 735## Scope of the tools [#alcance] 736 737<McpCounts /> 738 739The ones marked as sensitive are refunds and captures, charges with stored cards, deleting payment 740links, deleting contacts and managing subscribers. 741 742One group has no published reference: charges with stored cards. It is active on the server and 743counts towards these numbers, so a connected agent can use its tools, but the portal does not 744publish the per-tool detail. Ask support if you need it. 745 746## Permission inheritance [#herencia-de-permisos] 747 748The server uses the merchant API credentials, so it inherits exactly its permissions: it does not 749impose additional barriers per tool. An active user can issue refunds and run bulk charges. 750 751## Controls that do exist [#controles] 752 753- A per-user activation switch, which cuts access without deleting the account. 754- A separate administrator role, which only serves to manage users and credentials. 755- A rate limit of 60 calls per minute per user. 756 757## Human confirmation [#confirmacion-humana] 758 759<Callout type="warn"> 760 Human confirmation before a sensitive operation depends on the MCP client, not on Tilopay. Always 761 require it for write tools, and do not negotiate it for refunds or bulk charges. 762</Callout> 763 764The per-tool detail, with parameters and output, lives on each group page and in the 765[\`mcp.json\`](/developers/mcp.json). 766`,me=`--- 767title: Recipes 768kind: guide 769status: stable
770last_verified: 2026-09-04 771verified_by: equipo-integraciones 772owner: equipo-integraciones 773sources: 774 - "Servidor MCP de Tilopay (manifiesto y código), verificado 29-08-2026" 775 - "Respuestas de TecnologÃa, 29-08-2026" 776 - "Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine y manifiesto generado), verificado 02-09-2026" 777 - "Catálogo de herramientas del servidor MCP (mcp.tilopay.com), verificado 04-09-2026" 778locales: [es, en] 779related: 780 [ 781 agentes/mcp, 782 agentes/mcp/ventas, 783 agentes/mcp/enlaces-de-pago, 784 agentes/mcp/recurrentes, 785 agentes/mcp/soporte, 786 agentes/mcp/permisos, 787 ] 788description: "Fourteen end-to-end flows with the MCP server: insights dashboard, selling over WhatsApp, recovering failed recurring charges, B2B collections, cash projection with banking data, anomaly detection, month-end close, refunds, recurring subscriptions, plan optimisation, stored-card charges, integration debugging and Tilopay as a tool for other agents." 789--- 790 791## Build a real-time insights dashboard [#dashboard-insights] 792 7931. \`tilopay_sales_summary\` brings totals, costs and net for the period you want to monitor. 7942. \`tilopay_analyze_sales\` turns those numbers into a narrative summary with trends and observations. 7953. \`tilopay_list_transactions\` lists recent transactions to complete the board. 7964. \`tilopay_get_transaction\` opens the detail of any operation that needs review. 797 798<Callout type="warn"> 799 The summary uses UTC, not local time. If the merchant has low volume, trends and top customers may 800 come back empty. 801</Callout> 802 803### Example dashboard questions [#ejemplos-dashboard] 804 805- âHow did I do today?â â \`tilopay_sales_summary\` + \`tilopay_analyze_sales\`. 806- âWhat are my best-selling products or services this week?â â \`tilopay_analyze_sales\` over the 807 last 7 days. 808- âDo I have failed or pending transactions?â â \`tilopay_list_transactions\` filtered by status, 809 then \`tilopay_get_transaction\` for each case. 810- âHow are my net earnings evolving versus last month?â â compare two \`tilopay_sales_summary\` 811 calls with different date windows. 812 813## Sell over WhatsApp from the catalogue [#cobrar-por-whatsapp] 814 8151. \`tilopay_catalog_list_items\` lists the merchant's products or services so the agent answers 816 the customer with real names and prices. 8172. \`tilopay_catalog_get_item\` opens the chosen item when price, currency or description must be 818 confirmed before building the order. 8193. The agent builds the order, computes the total and confirms it with the customer before charging. 8204. \`tilopay_save_contact\` stores the buyer (name, email, phone) to attach them to the charge and 821 reuse them in future sales. 8225. \`tilopay_create_payment_link\` creates the link for the order total, with a description that 823 identifies the order. 8246. \`tilopay_send_payment_link_whatsapp\` prepares the message to the customer. 8257. \`tilopay_get_payment_link\` checks the link status to confirm payment and close the conversation 826 with the receipt. 827 828\`tilopay_send_payment_link_whatsapp\` does not send the message: it returns a \`wa.me\` link with the 829text ready to send in one tap. If there is no phone and no saved contact with that name, the tool 830asks for it. The agent can keep polling \`tilopay_get_payment_link\` to notify the merchant as soon as 831the link is paid. 832 833<Callout type="info"> 834 With this recipe a merchant without an online store sells end to end inside the chat: catalogue, 835 order, charge and confirmation, with no human intervention beyond what the merchant chooses to 836 require. 837</Callout> 838 839## Recover failed recurring charges (smart dunning) [#dunning-inteligente] 840 8411. \`tilopay_recurring_list_plans\` lists the merchant's active plans. 8422. \`tilopay_recurring_subscriber_payments\` walks the payments of each plan's subscribers and 843 separates the period's declined charges. 8443. \`tilopay_get_transaction\` opens each decline to read the response code and classify the cause: 845 insufficient funds, expired card, blocked card, suspected fraud. 8464. Based on the cause, the agent decides the action and proposes it to the merchant: wait for the 847 plan's retry when the decline is transient (insufficient funds), or ask the customer for a new 848 payment method when it is final (expired or blocked card). 8495. \`tilopay_create_payment_link\` creates a link for the outstanding amount when the customer must 850 pay the instalment with another card. 8516. \`tilopay_send_payment_link_whatsapp\` or \`tilopay_send_payment_link_email\` prepares the message 852 to the customer with wording adapted to the decline reason. 8537. \`tilopay_get_payment_link\` confirms when the customer paid, and \`tilopay_recurring_get_subscriber\` 854 verifies the subscriber's status after recovery. 855 856An agent running this recipe every morning turns the decline list into two queues: the one that 857resolves itself with the plan's retry and the one that needs a message to the customer. The merchant 858only receives the summary: how many charges were recovered and which remain pending. 859 860<Callout type="warn"> 861 Do not use \`tilopay_recurring_manage_subscriber\` to "punish" a decline: \`pause\` and \`delete\` 862 affect future charges and \`delete\` cannot be undone. Pausing or removing a subscriber is a 863 merchant decision with explicit human confirmation, never an automatic reaction to a failed 864 charge. 865</Callout> 866 867## B2B collections with accounts receivable [#cobranza-b2b] 868 8691. \`tilopay_list_contacts\` brings the merchant's business customers; \`tilopay_save_contact\` 870 registers the missing ones with the payer's name, email and ph
870one. 8712. \`tilopay_create_payment_link\` creates a link per outstanding invoice, with the invoice number in 872 the description and a due date. 8733. \`tilopay_send_payment_link_email\` prepares the first send; \`tilopay_send_payment_link_whatsapp\` 874 prepares the reminder when the invoice is still unpaid. 8754. \`tilopay_get_payment_link\` checks each link's status to update the receivables list without 876 opening the panel. 8775. \`baas_search_payment\` or \`baas_list_payments\` look in the merchant's bank accounts for a direct 878 transfer (SINPE or bank transfer) matching the amount and customer, to mark as paid an invoice 879 the customer settled outside the link. 8806. \`tilopay_delete_payment_link\` removes the link of an invoice already paid by transfer, to avoid 881 a double charge. 882 883This recipe answers the "have they paid me yet?" that eats administrative hours in businesses that 884invoice companies: one list with invoices, links, status and payments received through any channel. 885 886<Callout type="info"> 887 The \`baas_*\` tools are read-only and require support to have registered the merchant's banking API 888 credentials. If they are not configured, the tool says so and the recipe keeps working with 889 payment links alone. 890</Callout> 891 892## Project cash with gateway and bank data (pocket CFO) [#cfo-de-bolsillo] 893 8941. \`tilopay_sales_summary\` brings the last weeks of sales to estimate expected income for the next 895 period. 8962. \`tilopay_recurring_list_plans\` and \`tilopay_recurring_get_plan\` quantify committed recurring 897 charges and their dates. 8983. \`baas_list_balances\` or \`baas_get_balance\` bring the real balance of each of the merchant's bank 899 accounts. 9004. \`baas_list_payments\` lists the last months of transfers to detect recurring outflows: payroll, 901 rent, suppliers. 9025. \`baas_analyze_payments\` summarises those movements in natural language to identify patterns and 903 peak dates. 9046. The agent combines balance, expected inflows and expected outflows into a daily projection, 905 flags the days with minimum or negative balance and proposes actions. 9067. \`tilopay_create_payment_link\` and \`tilopay_send_payment_link_email\` put outstanding invoices out 907 for collection when the merchant approves that action. 908 909The value is in crossing two sources that normally live apart: the gateway knows what is coming in 910and the bank knows what is there and what goes out. A weekly routine produces a short briefing with 911the projection and the alerts, before the business opens. 912 913<Callout type="warn"> 914 The \`baas_*\` tools never initiate, approve or reverse transfers. If the projection suggests moving 915 funds between accounts, a person executes that at the bank; the agent only recommends and records 916 it. The projection is an estimate, not a financial statement. 917</Callout> 918 919## Detect anomalies and act [#detector-anomalias] 920 9211. \`tilopay_sales_summary\` compares the current window (for example the last hour or the day) 922 against the same reference period to detect approval drops, decline spikes or sudden changes in 923 average ticket. 9242. \`tilopay_list_transactions\` filters by status to see whether declines concentrate on one payment 925 method, one currency or a pattern of repeated attempts. 9263. \`tilopay_get_transaction\` opens representative cases to read the response codes. 9274. \`tilopay_diagnostics\` checks credentials and endpoint availability to separate a problem in the 928 merchant's integration from a problem with customers or issuers. 9295. \`tilopay_help_guides\` searches the official guides for the explanation and the fix that match the 930 response code or the symptom. 9316. The agent raises the alert with the diagnosis already done: what changed, since when, probable 932 cause and suggested action. 933 934<Callout type="warn"> 935 The sales summary uses UTC. When comparing short windows, align the hours; a "drop" at local 936 midnight may just be the UTC day cut. Many declined attempts in a few minutes with small amounts 937 and different cards may indicate stolen-card testing: report it to support instead of retrying. 938</Callout> 939 940## Close the month sales [#cierre-de-mes] 941 9421. \`tilopay_sales_summary\` returns totals, costs and net for the peri
942od. 9432. \`tilopay_analyze_sales\` produces the natural-language report. 9443. \`tilopay_get_transaction\` brings the detail of the transactions that need review. 945 946<Callout type="warn"> 947 The hours and days in the summary are in UTC, not local time. Trends and top customers come back 948 empty when the sample is small. 949</Callout> 950 951## Refund with human confirmation [#reembolso] 952 9531. \`tilopay_list_transactions\` locates the transaction in the date range. 9542. \`tilopay_get_transaction\` shows the detail to confirm it is the right one. 9553. The agent asks the user for confirmation. That step is enforced by the MCP client, not by Tilopay. 9564. \`tilopay_modify_transaction\` runs the modification with the action and the amount. 957 958## Review a recurring subscription [#suscripcion-recurrente] 959 9601. \`tilopay_recurring_list_plans\` lists the merchant recurring billing plans. 9612. \`tilopay_recurring_get_plan\` opens the plan you care about by its ID. 9623. \`tilopay_recurring_get_subscriber\` shows the subscriber detail. 9634. \`tilopay_recurring_subscriber_payments\` lists that subscriber payments to see which went through 964 and which did not. 965 966Useful to answer "why does this customer show no charge this month?" without opening the dashboard. 967 968## Optimise subscription plans [#optimizar-planes] 969 9701. \`tilopay_recurring_list_plans\` lists the active plans with price and frequency. 9712. \`tilopay_recurring_get_plan\` opens each plan for its subscriber count and configuration. 9723. \`tilopay_recurring_subscriber_payments\` walks payments per subscriber to compute, per plan, the 973 successful-charge rate, the month when most subscribers stop paying and the average tenure. 9744. \`tilopay_recurring_get_subscriber\` reviews the outliers the analysis flags. 9755. The agent presents the comparison between plans: retention, revenue per subscriber and churn 976 point, and proposes changes to price, frequency or content. 9776. \`tilopay_create_payment_link\` lets you test a new offer with a small segment of contacts before 978 modifying a plan. 979 980This is pricing analysis with real charge data. The agent does not modify plans: it proposes, and 981the merchant decides in the panel. 982 983## Pause or cancel a subscriber [#pausar-suscriptor] 984 9851. \`tilopay_recurring_get_subscriber\` confirms the subscriber is the right one. 9862. The agent asks the user for confirmation, with the name and the plan in plain sight. 9873. \`tilopay_recurring_manage_subscriber\` runs \`pause\`, \`reactivate\` or \`delete\`. 988 989<Callout type="warn"> 990 \`tilopay_recurring_manage_subscriber\` is marked sensitive: it affects future charges and \`delete\` 991 cannot be undone. Never run it without explicit human confirmation. 992</Callout> 993 994## Charge a group with stored cards [#cobro-masivo] 995 9961. \`tilopay_saved_cards_list_groups\` lists the collection groups. 9972. \`tilopay_saved_cards_list_affiliates\` shows the affiliates of the chosen group, so you know how 998 many cards will be charged. 9993. The agent summarises amount, currency, reason and number of affiliates, and asks for confirmation. 10004. \`tilopay_saved_cards_create_payments\` creates the charges. 10015. \`tilopay_saved_cards_list_collections\` and \`tilopay_saved_cards_collection_detail\` review the 1002 result: the second one needs the \`code\` returned by the first. 1003 1004<Callout type="warn"> 1005 \`tilopay_saved_cards_create_payments\` moves real money from the stored cards. Treat it as a 1006 one-shot operation: confirm before, and verify after with the collection detail. 1007</Callout> 1008 1009## Debug an integration and support a developer [#depurar-integracion] 1010 10111. \`tilopay_diagnostics\` tests the credentials and one endpoint per API group, to separate a 1012 credentials problem from a request problem. 10132. \`tilopay_debug_code\` receives the code snippet, log or stack trace and returns diagnosis, root 1014 cause, fix and risks. 10153. \`tilopay_help_guides\` answers panel usage questions with the official guides. 10164. \`tilopay_list_transactions\` and \`tilopay_get_transaction\` confirm whether the operation the 1017 developer believes failed actually reached Tilopay, and with what result. 1018 1019\`tilopay_debug_code\` does not read the repository or run the code: it analyses only what you pass 1020in. Strip credentials from the snippet before sending;
1020 the tool masks what it recognises as a secret, 1021but that does not replace your review. 1022 1023With these four tools a support agent handles the whole technical onboarding: verifies the account, 1024finds the cause of the error, delivers the fix with the official guide and confirms against real 1025transactions. Repeated questions are the signal of which guide or example the portal still needs. 1026 1027<Callout type="info"> 1028 Sandbox test cards are in the portal's testing guide. Sandbox mode is switched from the account; 1029 there is no separate host. 1030</Callout> 1031 1032## Tilopay as a tool for other agents [#tilopay-como-herramienta] 1033 10341. The merchant requests MCP server access with the portal form (name of the responsible person, 1035 merchant email and merchant name); support confirms approval and the terms of use. 10362. The external agent (an ERP assistant, an online-store bot, an accounting agent) connects the MCP 1037 server with those credentials and runs \`tilopay_diagnostics\` to verify the connection. 10383. With the tool catalogue loaded, the external agent uses the read tools (\`tilopay_sales_summary\`, 1039 \`tilopay_list_transactions\`, \`tilopay_recurring_*\`, \`baas_*\`) to answer business questions inside 1040 its own conversation. 10414. For actions that create or move money (\`tilopay_create_payment_link\`, 1042 \`tilopay_modify_transaction\`, \`tilopay_saved_cards_create_payments\`, 1043 \`tilopay_recurring_manage_subscriber\`) the external agent applies the confirmation policy 1044 described on the permissions page before executing. 1045 1046This recipe changes the MCP's position: it is not just an assistant inside Tilopay, it is the 1047payments layer any agent can call. Every other recipe on this page works the same when a third-party 1048agent runs it. 1049 1050<Callout type="warn"> 1051 MCP usage may carry additional costs depending on volume; support details them when validating the 1052 merchant's transaction volume. Tools marked as sensitive require human confirmation in whichever 1053 MCP client runs them, Tilopay's or a third party's. 1054</Callout> 1055`,he=`--- 1056title: Reminders 1057kind: mcp-tool 1058access: destructive 1059status: stable 1060last_verified: 2026-09-14 1061verified_by: equipo-integraciones 1062owner: equipo-integraciones 1063sources: 1064 - "Tilopay MCP server (Tilopay Insight Engine code, reminders group), verified 2026-09-14" 1065locales: [es, en] 1066related: [agentes/mcp, agentes/mcp/avisos, agentes/asistente-whatsapp] 1067description: MCP tools to create, list and cancel WhatsApp reminders, with or without an agent action when they fire. 1068--- 1069 1070## What it covers [#que-cubre] 1071 1072A reminder is a scheduled WhatsApp message: one-off, daily, weekly or monthly. It can be plain text 1073or carry an **action** the agent runs when it fires, written in natural language ("give me today's 1074sales summary", "list the pending payment links"), and the result is attached to the message. 1075 1076Rules worth knowing: 1077 1078- Times are the merchant's local time, based on the country of their WhatsApp number. 1079- There is a maximum of 20 active reminders. 1080- Reminders about payment links or charges **always** go to the merchant's WhatsApp, never to the 1081 customer. 1082- To send to another number, save it first as a [contact](/developers/agentes/mcp/contactos). 1083 1084## Tools [#herramientas] 1085 1086<McpToolGroup slug="recordatorios" /> 1087`,ge=`--- 1088title: Recurring billing 1089kind: mcp-tool 1090access: destructive 1091status: stable 1092last_verified: 2026-09-02 1093verified_by: equipo-integraciones 1094owner: equipo-integraciones 1095sources: 1096 - "Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine y manifiesto generado), verificado 02-09-2026" 1097locales: [es, en] 1098related: [agentes/mcp, agentes/mcp/permisos, agentes/mcp/recetas] 1099description: MCP tools to read recurring plans, subscribers and their payments, and to pause, reactivate or delete a subscriber. 1100--- 1101 1102## What it covers [#que-cubre] 1103 1104Four read-only tools over recurring billing plans and their subscribers, plus one sensitive tool that pauses, reactivates or deletes a subscriber. That last one affects future charges: ask for human confirmation before running it. 1105 1106## Tools [#herramientas] 1107 1108<McpToolGroup slug="recurrentes" /> 1109`,_e=`---
1110title: Support and diagnostics 1111kind: mcp-tool 1112access: read 1113status: stable 1114last_verified: 2026-09-02 1115verified_by: equipo-integraciones 1116owner: equipo-integraciones 1117sources: 1118 - "Servidor MCP de Tilopay (manifiesto y código), verificado 29-08-2026" 1119 - "Respuestas de TecnologÃa, 29-08-2026" 1120locales: [es, en] 1121related: [agentes/mcp, agentes/mcp/permisos, agentes/mcp/recetas] 1122description: MCP tools to answer with the official guides and test the API connection. 1123--- 1124 1125## What it covers [#que-cubre] 1126 1127Three read tools: one answers dashboard usage questions with the official guides at tilopay.com/guias, another tests the credentials and one endpoint of each API group to know which part responds when something fails, and the third analyses a code snippet or stack trace you pass it and returns a diagnosis, root cause, fix and risks. That last one does not read repositories and does not run code. 1128 1129## Tools [#herramientas] 1130 1131<McpToolGroup slug="soporte" /> 1132`,ve=`--- 1133title: Stored cards and bulk collections 1134kind: mcp-tool 1135access: destructive 1136status: stable 1137last_verified: 2026-09-14 1138verified_by: equipo-integraciones 1139owner: equipo-integraciones 1140sources: 1141 - "Tilopay MCP server (Tilopay Insight Engine code, saved-cards group), verified 2026-09-14" 1142locales: [es, en] 1143related: [agentes/mcp, agentes/mcp/recurrentes, agentes/mcp/permisos] 1144description: MCP tools to store a customer card, charge it, remove it and work with bulk collection groups. 1145--- 1146 1147## What it covers [#que-cubre] 1148 1149This group works with the cards the merchant's customers already authorised to store 1150(tokenization) and with bulk collections against those cards. 1151 1152How storing works: the agent generates a **secure link** and shares it with the customer; the 1153customer types their card there. Neither the agent, nor the model, nor the merchant sees the full 1154number: the read tools return the brand and the last digits. 1155 1156The sensitive operations in this group â charging a stored card, removing a card and creating bulk 1157collections â require a **confirmation code** sent to the merchant's email. 1158 1159<Callout type="note"> 1160 The API routes used by bulk collections live outside the portal reference, so these pages do not 1161 publish them. What is documented is what each tool does, what it takes and what it returns. 1162</Callout> 1163 1164## Tools [#herramientas] 1165 1166<McpToolGroup slug="tarjetas-guardadas" /> 1167`,ye=`---
1168title: Sales and transactions 1169kind: mcp-tool 1170access: destructive 1171status: stable 1172last_verified: 2026-08-29 1173verified_by: equipo-integraciones 1174owner: equipo-integraciones 1175sources: 1176 - "Servidor MCP de Tilopay (manifiesto y código), verificado 29-08-2026" 1177 - "Respuestas de TecnologÃa, 29-08-2026" 1178locales: [es, en] 1179related: [agentes/mcp, agentes/mcp/permisos, agentes/mcp/recetas] 1180description: MCP tools to query transactions, measure sales and modify a transaction. 1181--- 1182 1183## What it covers [#que-cubre] 1184 1185This group covers reading transactions and analysing the merchant sales, plus modifying a transaction: capture, refund or reversal. The modification moves real money and is marked as sensitive. 1186 1187## Tools [#herramientas] 1188 1189<McpToolGroup slug="ventas" /> 1190`,be=`--- 1191title: MCP server 1192kind: mcp-index 1193status: stable 1194last_verified: 2026-09-23 1195verified_by: equipo-integraciones 1196owner: equipo-integraciones 1197sources: 1198 - "Tilopay MCP server code (Tilopay Insight Engine), verified 2026-09-23" 1199locales: [es, en] 1200related: [agentes, agentes/mcp/permisos, agentes/mcp/recetas, agentes/mcp/ventas] 1201description: How to connect an MCP client to the Tilopay server with OAuth and the same Tilopay account credentials. 1202--- 1203 1204## How access works [#acceso] 1205 1206Access is self-service: there is no registration form and no manual approval. The merchant 1207installs the connector with the server URL and, in the authorization window, signs in with the 1208**same credentials as their Tilopay account** (email and password) and confirms the verification 1209code Tilopay sends. That automatically creates the assistant user, ties it to the merchant, and 1210registers the merchant's API credentials encrypted on the server side. 1211 1212Three things worth knowing: 1213 12141. The session is authorized with the Tilopay dashboard email and password, plus the verification 1215 code. The assistant never sees or stores that password: the connection runs on OAuth 2.0. 12162. Because the user is tied to one merchant, the agent only reaches the data and the operations of 1217 that merchant. 12183. The merchant never pastes its \`apiKey\`, \`apiUser\` or \`apiPassword\` into the MCP client. 1219 1220<Callout type="warn"> 1221 The merchant API credentials live encrypted on the Tilopay server and are decrypted on every call. 1222 They are not pasted into the MCP client, nor into the assistant configuration file, and they are 1223 never handed to the model. That is the security argument behind the whole design. 1224</Callout> 1225 1226## Connection [#conexion] 1227 1228The server is \`https://mcp.tilopay.com/mcp\`. To connect: 1229 12301. Add the server in the MCP client with that URL. 12312. The client discovers authentication from the 401 with \`WWW-Authenticate\`, which points to 1232 \`/.well-known/oauth-protected-resource\`. 12333. The client registers dynamically and opens the authorization screen. 12344. The user signs in with their Tilopay account credentials, confirms the verification code and 1235 sees a consent screen with the application requesting access, the return URL and the 1236 permissions. 12375. On approval, the client is connected. 1238 1239The model is OAuth 2.0 with \`authorization_code\` and \`refresh_token\`. The client discovers the 1240identity provider endpoints on its own: the only thing to configure is the server URL. 1241 1242## From the most used MCP clients [#clientes] 1243 1244- **Claude** (desktop and web): add a remote connector with the server URL and complete sign-in in 1245 the window it opens. <ExternalLink href="https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=Tilopay&connectorUrl=https://mcp.tilopay.com/mcp">Connect with Claude</ExternalLink> 1246- **ChatGPT**: add the server as a remote connector with that same URL; authorization completes in 1247 the browser. 1248- **Cursor, VS Code and other editors**: declare a remote HTTP MCP server with the URL, with no 1249 token in the configuration file; the editor opens the browser to authorize. 1250- **Your own client**: use an MCP client with Streamable HTTP transport and OAuth 2.0 support with 1251 dynamic registration. The sequence is the one above: 401, discovery, registration, authorization, 1252 connection. 1253 1254The transport is Streamable HTTP. The available tools are listed by group: 1255[sales and transactions](/en/developers/agentes/mcp/ventas), 1256[payment links](/en/developers/agentes/mcp/enlaces-de-pago), 1257[catalog](/en/developers/agentes/mcp/catalogo), 1258[contacts](/en/developers/agentes/mcp/contactos), 1259[recurring billing](/en/developers/agentes/mcp/recurrentes), 1260[support and diagnostics](/en/developers/agentes/mcp/soporte). 1261The [banking API (BaaS)](/en/developers/agentes/mcp/api-bancario) group is enabled on request and 1262only works for users with Tilopay banking API credentials. 1263Before connecting an agent, read [what it can do](/en/developers/agentes/mcp/permisos).
1264`,xe=`--- 1265title: AI agents 1266kind: guide 1267status: stable 1268last_verified: 2026-08-29 1269verified_by: equipo-integraciones 1270owner: equipo-integraciones 1271sources: 1272 - "Servidor MCP de Tilopay (manifiesto y código), verificado 29-08-2026" 1273 - "Respuestas de TecnologÃa, 29-08-2026" 1274locales: [es, en] 1275related: [agentes/mcp, agentes/mcp/permisos, agentes/documentacion-legible, agentes/mcp/recetas] 1276description: "The three planes Tilopay offers an AI agent: reading the documentation, operating the account through the MCP server, and integrating with the API and the SDK." 1277--- 1278 1279## Read [#leer] 1280 1281The whole portal is available in machine-readable form: the 1282[\`llms.txt\`](https://www.tilopay.com/en/llms.txt) index, the raw Markdown of any URL on the site 1283by adding \`.md\`, the API [\`openapi.json\`](/developers/openapi.json) and the MCP server 1284[\`mcp.json\`](/developers/mcp.json). 1285 1286## Act on behalf of the merchant [#actuar] 1287 1288The [MCP server](/en/developers/agentes/mcp) lets an assistant operate the merchant account: 1289query sales, create payment links, issue refunds. Access is self-service â you sign in with your 1290Tilopay credentials â and the merchant credentials never leave the Tilopay server. 1291 1292## Integrate into a product [#integrar] 1293 1294When you are building a product that charges, the path is the [JavaScript SDK](/en/developers/sdk) 1295and the [Acquiring API](/en/developers/api/autenticacion), not the MCP. 1296 1297## Which one to choose [#cual-elegir] 1298 1299- Operate the account from an assistant â [MCP server](/en/developers/agentes/mcp). 1300- Build a product that charges â [API](/en/developers/api/autenticacion) and [SDK](/en/developers/sdk). 1301- Feed an agent with the documentation â [machine-readable documentation](/en/developers/agentes/documentacion-legible). 1302 1303MCP access is self-service: install the connector and sign in with your Tilopay credentials, as 1304the [MCP server page](/en/developers/agentes/mcp) explains. 1305`,Se=`--- 1306title: "API · Get API token" 1307kind: api-operation 1308status: stable 1309api_version: v1 1310last_verified: 2026-08-29 1311verified_by: equipo-integraciones 1312owner: equipo-integraciones 1313sources:
1314 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 1315locales: [es, en] 1316related: [api/autenticacion, api/procesos-operativos/errors] 1317description: "API login operation: returns the bearer token that signs every other call." 1318gaps: 1319 - "Present in the collection example but absent from the endpoint description." 1320--- 1321 1322\`\`\`http 1323POST /api/v1/login 1324\`\`\` 1325 1326## What it does [#que-hace] 1327 1328Returns the security token needed to consume the API services. The API user and password come from [Admin · Tilopay Checkout](https://admin.tilopay.com/admin/checkout). 1329 1330## Authentication [#autenticacion] 1331 1332It does not require a token: this is the operation that issues it. See [authentication](/developers/api/autenticacion). 1333 1334## Parameters [#parametros] 1335 1336<Param id="token-api-parametro-apiuser" name="apiuser" type="string"> 1337Merchant API user, obtained in Admin · Tilopay Checkout. 1338</Param> 1339 1340<Param id="token-api-parametro-password" name="password" type="string"> 1341Merchant API password, obtained in Admin · Tilopay Checkout. 1342</Param> 1343 1344## Request example [#request] 1345 1346The \`<...>\` values are placeholders: replace them with your own credentials and data. 1347 1348\`\`\`json 1349{ 1350 "apiuser": "<api_user>", 1351 "password": "<api_password>" 1352} 1353\`\`\` 1354 1355## Response [#respuesta] 1356 1357\`\`\`json 1358{ 1359 "access_token": "<jwt>", 1360 "token_type": "bearer", 1361 "expires_in": 86400 1362} 1363\`\`\` 1364 1365To interpret a response that is not a success, see [how to read an error response](/developers/api/procesos-operativos/errors). 1366`,Ce=`--- 1367title: "API · Get SDK token" 1368kind: api-operation 1369status: stable 1370api_version: v1 1371last_verified: 2026-08-29 1372verified_by: equipo-integraciones 1373owner: equipo-integraciones 1374sources:
1375 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 1376locales: [es, en] 1377related: [api/autenticacion, api/procesos-operativos/errors] 1378description: "SDK login: returns the token that Tilopay.Init() uses in the browser." 1379gaps: 1380 - "Present in the collection example but absent from the endpoint description." 1381--- 1382 1383\`\`\`http 1384POST /api/v1/loginSdk 1385\`\`\` 1386 1387## What it does [#que-hace] 1388 1389Returns the security token needed to consume the SDK. All three credentials come from [Admin · Tilopay Checkout](https://admin.tilopay.com/admin/checkout). 1390 1391## Authentication [#autenticacion] 1392 1393It does not require a token: this is the operation that issues it. See [authentication](/developers/api/autenticacion). 1394 1395## Parameters [#parametros] 1396 1397<Param id="token-sdk-parametro-apiuser" name="apiuser" type="string"> 1398Merchant API user. 1399</Param> 1400 1401<Param id="token-sdk-parametro-password" name="password" type="string"> 1402Merchant API password. 1403</Param> 1404 1405<Param id="token-sdk-parametro-key" name="key" type="string"> 1406Merchant api key. 1407</Param> 1408 1409## Request example [#request] 1410 1411The \`<...>\` values are placeholders: replace them with your own credentials and data. 1412 1413\`\`\`json 1414{ 1415 "apiuser": "<api_user>", 1416 "password": "<api_password>", 1417 "key": "<api_key>" 1418} 1419\`\`\` 1420 1421## Response [#respuesta] 1422 1423\`\`\`json 1424{ 1425 "access_token": "351d477adaaa51cdbb33ae4b4b8c843aa759f131c1c38415180b5035543d59d2f23f4e049706f5fa71c5f0d9ff763960a3cd035b4c1cefa428c90bedb672f780", 1426 "token_type": "bearer", 1427 "expires_in": "2023-06-05 13:32:06" 1428} 1429\`\`\` 1430 1431To interpret a response that is not a success, see [how to read an error response](/developers/api/procesos-operativos/errors). 1432`,we=`--- 1433title: API · Authentication 1434kind: api-operation 1435status: stable 1436api_version: v1 1437last_verified: 2026-08-28 1438verified_by: equipo-integraciones 1439owner: equipo-integraciones 1440sources: 1441 - "Respuestas de TecnologÃa, 28-08-2026" 1442locales: [es, en] 1443related: [entornos, sdk/instalacion, api/hosted-payment-page] 1444description: How to get the API token and the SDK token, how long each lasts, and how to send them on every call. 1445--- 1446 1447The whole API and the SDK live on a single host: \`https://app.tilopay.com\`. There is no 1448separate host for testing â see [environments](/developers/entornos). 1449 1450## The two operations [#operaciones] 1451 1452| Operation | Path | What for | 1453|---|---|---| 1454| API token | \`POST /api/v1/login\` | Server-to-server API calls | 1455| SDK token | \`POST /api/v1/loginSdk\` | The token passed to \`Tilopay.Init()\` | 1456 1457\`loginSdk\` is the method the previous article called "GetTokenSdk". It is the same one. 1458 1459## Get the API token [#token-api] 1460 1461\`\`\`bash 1462curl -X POST https://app.tilopay.com/api/v1/login \\ 1463 -H "Content-Type: application/json" \\ 1464 -d '{ "apiuser": "YOUR_APIUSER", "password": "YOUR_PASSWORD" }' 1465\`\`\` 1466 1467### Body [#cuerpo] 1468 1469<Param id="login-apiuser" name="apiuser" type="string" required> 1470The merchant API user. 1471</Param> 1472 1473<Param id="login-password" name="password" type="string" required> 1474The merchant API password. 1475</Param> 1476 1477### Response [#respuesta] 1478 1479<Param id="login-access-token" name="access_token" type="string"> 1480The token to send on subsequent calls. 1481</Param> 1482 1483<Param id="login-token-type" name="token_type" type="string"> 1484Always \`bearer\`. 1485</Param> 1486 1487<Param id="login-expires-in" name="expires_in" type="integer"> 1488Token lifetime. The exact value comes in this response: do not assume it on the client. 1489</Param> 1490 1491## Get the SDK token [#token-sdk] 1492 1493\`\`\`bash 1494curl -X POST https://app.tilopay.com/api/v1/loginSdk \\ 1495 -H "Content-Type: application/json" \\ 1496 -d '{ "apiuser": "YOUR_APIUSER", "password": "YOUR_PASSWORD" }' 1497\`\`\` 1498 1499The resulting token is the one passed to the \`token\` parameter of 1500[\`Tilopay.Init()\`](/developers/sdk/reference/init). 1501 1502## Lifetime [#vigencia] 1503 1504- **API token: 24 hours.** 1505- **SDK token: 1 hour.** 1506 1507The exact value always arrives in \`expires_in\`. Cache it server-side and renew on expiry. 1508 1509## How it is sent [#envio] 1510 1511\`\`\`http 1512Authorization: bearer <token> 1513\`\`\` 1514 1515## Revocation and limits [#revocacion] 1516 1517- **Tokens cannot be revoked.** If a token leaks there is no operation to invali
1517date it: 1518 treat the leak as an incident and rotate credentials with Tilopay. 1519- **There is no limit** on concurrent tokens per merchant. You can request one per process 1520 without invalidating the previous ones. 1521 1522## Where credentials come from [#credenciales] 1523 1524\`apiuser\`, \`password\` and \`key\` are obtained in the merchant panel at 1525\`admin.tilopay.com/admin/checkout\`. If you do not have access yet, start with 1526[developer registration](/developers/registro). 1527 1528<Callout type="warn"> 1529Never put \`apiuser\` or \`password\` in the browser. The login runs on your server; only the 1530SDK token reaches the browser. 1531</Callout> 1532`,Te=`--- 1533title: "API · processTokenize" 1534kind: api-operation 1535status: stable 1536api_version: v1 1537last_verified: 2026-08-29 1538verified_by: equipo-integraciones 1539owner: equipo-integraciones 1540sources: 1541 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 1542locales: [es, en] 1543related: [api/autenticacion, api/cof, api/procesos-operativos/errors] 1544description: "Card tokenization with processTokenize: parameters, request and response." 1545gaps: 1546 - "These error examples were saved without an HTTP status code. It is not possible to tell from the collection whether the API returns HTTP 4xx or HTTP 200 with an error body." 1547--- 1548 1549\`\`\`http 1550POST /api/v1/processTokenize 1551\`\`\` 1552 1553## What it does [#que-hace] 1554 1555Tokenizes a card: returns the URL of the tokenization form. 1556 1557## Authentication [#autenticacion] 1558 1559Requires the API bearer token in the \`Authorization\` header â see [authentication](/developers/api/autenticacion). 1560 1561## Parameters [#parametros] 1562 1563<Param id="process-tokenize-parametro-redirect" name="redirect" type="string"> 1564Site where you wait for the transaction response. 1565</Param> 1566 1567<Param id="process-tokenize-parametro-key" name="key" type="string"> 1568Key associated with the merchant. 1569</Param> 1570 1571<Param id="process-tokenize-parametro-email" name="email" type="string"> 1572Cardholder email. 1573</Param> 1574 1575<Param id="process-tokenize-parametro-language" name="language" type="string"> 1576Language [es, en]. 1577</Param> 1578 1579<Param id="process-tokenize-parametro-firstname" name="firstName" type="string"> 1580Cardholder first name. 1581</Param> 1582 1583<Param id="process-tokenize-parametro-lastname" name="lastName" type="string"> 1584Cardholder last name. 1585</Param> 1586 1587<Param id="process-tokenize-parametro-token-version" name="token_version" type="string"> 1588Send as value "v2". 1589</Param> 1590 1591## Request example [#request] 1592 1593The \`<...>\` values are placeholders: replace them with your own credentials and data. 1594 1595\`\`\`json 1596{ 1597 "redirect": "https://urlToRedirect.com", 1598 "key": "<api_key>", 1599 "email": "[email protected]", 1600 "language": "es", 1601 "firstName": "name", 1602 "lastName": "lastname", 1603 "token_version": "v2" 1604} 1605\`\`\` 1606 1607## Response [#respuesta] 1608 1609\`\`\`json 1610{ 1611 "type": "100", 1612 "url": "https://secure.tilopay.com/htmls/TOK-5063-740506121440_1648145457file.html" 1613} 1614\`\`\` 1615 1616To interpret a response that is not a success, see [how to read an error response](/developers/api/procesos-operativos/errors). 1617`,Ee=`--- 1618title: "API · CoF · Charge" 1619kind: api-operation 1620status: stable 1621api_version: v1 1622last_verified: 2026-08-29 1623verified_by: equipo-integraciones 1624owner: equipo-integraciones 1625sources:
1626 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 1627locales: [es, en] 1628related: [api/autenticacion, api/cof, api/procesos-operativos/errors] 1629description: "Server-to-server charge with a v2 card token through Credential on File." 1630gaps: 1631 - "These error examples were saved without an HTTP status code. It is not possible to tell from the collection whether the API returns HTTP 4xx or HTTP 200 with an error body." 1632--- 1633 1634\`\`\`http 1635POST /api/v1/processRecurrentPayment 1636\`\`\` 1637 1638## What it does [#que-hace] 1639 1640Processes a charge with an already tokenized card, without a form. 1641 1642## Authentication [#autenticacion] 1643 1644Requires the API bearer token in the \`Authorization\` header â see [authentication](/developers/api/autenticacion). 1645 1646## Parameters [#parametros] 1647 1648<Param id="realizar-cobro-parametro-key" name="key" type="string" required> 1649Key associated with the customer. It is obtained in Admin · Tilopay Checkout. 1650</Param> 1651 1652<Param id="realizar-cobro-parametro-amount" name="amount" type="string" required> 1653Purchase amount. 1654</Param> 1655 1656<Param id="realizar-cobro-parametro-currency" name="currency" type="string" required> 1657Purchase currency in ISO format, for example USD, CRC, GTQ. 1658</Param> 1659 1660<Param id="realizar-cobro-parametro-ordernumber" name="orderNumber" type="string" required> 1661Order number, it can be alphanumeric. 1662</Param> 1663 1664<Param id="realizar-cobro-parametro-capture" name="capture" type="string" required> 1665Capture and authorize: 1 yes, 0 no. 1666</Param> 1667 1668<Param id="realizar-cobro-parametro-email" name="email" type="string" required> 1669Cardholder email. 1670</Param> 1671 1672<Param id="realizar-cobro-parametro-card" name="card" type="string" required> 1673Card token. It must be the v2 token. 1674</Param> 1675 1676## Request example [#request] 1677 1678The \`<...>\` values are placeholders: replace them with your own credentials and data. 1679 1680\`\`\`json 1681{ 1682 "key": "<api_key>", 1683 "amount": "10.00", 1684 "currency": "USD", 1685 "orderNumber": "1213", 1686 "capture": "1", 1687 "email": "[email protected]", 1688 "card": "511111_00GOB1111" 1689} 1690\`\`\` 1691 1692## Response [#respuesta] 1693 1694\`\`\`json 1695{ 1696 "type": "200", 1697 "response": "1", 1698 "description": "Transacción aprobada", 1699 "auth": "123456", 1700 "tpt": 734329, 1701 "order_id": "12135", 1702 "tilopayTransaction": 734329, 1703 "orderHash": "f3ad85046d249bc7a781eed5285a5ded92045a2e11108063504deec72ec9b338" 1704} 1705\`\`\` 1706 1707To interpret a response that is not a success, see [how to read an error response](/developers/api/procesos-operativos/errors). 1708`,De=`--- 1709title: "API · Remove card" 1710kind: api-operation 1711status: stable 1712api_version: v1 1713last_verified: 2026-08-29 1714verified_by: equipo-integraciones 1715owner: equipo-integraciones 1716sources:
1717 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 1718locales: [es, en] 1719related: [api/autenticacion, api/cof, api/procesos-operativos/errors] 1720description: "Removal of a saved card token from the merchant's private vault." 1721gaps: 1722 - "No response example available." 1723--- 1724 1725\`\`\`http 1726POST /api/v1/user/card-remove 1727\`\`\` 1728 1729## What it does [#que-hace] 1730 1731Removes a saved card token. **Requirement:** the merchant must have a private token vault. 1732 1733## Authentication [#autenticacion] 1734 1735Requires the API bearer token in the \`Authorization\` header â see [authentication](/developers/api/autenticacion). 1736 1737## Parameters [#parametros] 1738 1739<Param id="remove-card-parametro-key" name="key" type="string" required> 1740Key associated with the merchant. 1741</Param> 1742 1743<Param id="remove-card-parametro-email" name="email" type="string" required> 1744Customer email associated with the token. 1745</Param> 1746 1747<Param id="remove-card-parametro-token" name="token" type="string"> 1748Token to remove. 1749</Param> 1750 1751## Request example [#request] 1752 1753The \`<...>\` values are placeholders: replace them with your own credentials and data. 1754 1755\`\`\`json 1756{ 1757 "key": "1234-1234-1234-1234-1234", 1758 "email": "[email protected]", 1759 "token": "411111.......1111" 1760} 1761\`\`\` 1762 1763To interpret a response that is not a success, see [how to read an error response](/developers/api/procesos-operativos/errors). 1764`,Oe=`--- 1765title: "API · Credential on File (CoF)" 1766kind: api-index 1767status: stable 1768api_version: v1 1769last_verified: 2026-08-29 1770verified_by: equipo-integraciones 1771owner: equipo-integraciones 1772sources:
1773 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 1774locales: [es, en] 1775related: [api/autenticacion, api/procesos-operativos/errors] 1776description: "Credential on File (CoF) operations of the Tilopay API, with parameters and examples." 1777--- 1778 1779## Operations [#operaciones] 1780 17813 operations: 1782 1783- [Tokenize card](/developers/api/cof/process-tokenize) â 1 1784- [Remove card](/developers/api/cof/remove-card) â 1 1785- [Charge](/developers/api/cof/realizar-cobro) â 1 1786 1787Every operation lives on \`https://app.tilopay.com\` and, except for the login operations, requires the API token â see [authentication](/developers/api/autenticacion). 1788`,ke=`--- 1789title: "API · Response conventions" 1790kind: concept 1791status: stable 1792api_version: v1 1793last_verified: 2026-09-02 1794verified_by: equipo-integraciones 1795owner: equipo-integraciones 1796sources: 1797 - "Respuestas de TecnologÃa, 02-09-2026 (hoja de preguntas v2, validada)" 1798locales: [es, en] 1799related: [api/autenticacion, api/procesos-operativos/errors, reintentos-seguros] 1800description: "How amounts are typed, where a JSON payload hides inside a string and why the same entity changes shape between fetching one and listing many." 1801--- 1802 1803The acquiring API responses have three details that you cannot infer by reading each 1804operation on its own, and that break typed integrations. They live here because they apply 1805to several operations at once. 1806 1807For error handling, see [how to read an error response](/developers/api/procesos-operativos/errors). 1808 1809## Amounts come as strings, not numbers [#montos-cadena] 1810 1811<Callout type="warn"> 1812Amounts, discounts and totals are serialized as strings: \`"discount": "40.00"\`, 1813\`"amount": "0.00"\`, \`"first_amount": "0.00"\`, \`"amount_max_daily": "1000.00"\`. 1814</Callout> 1815 1816Any typed deserialization that declares those fields as numbers fails. Declare them as 1817strings and convert them yourself, with your language's decimal type, not with floating 1818point. 1819 1820It shows up, among others, in [get a coupon](/developers/api/recurrentes/cupones/get-coupon), 1821[list coupons](/developers/api/recurrentes/cupones/get-coupons), 1822[list plans](/developers/api/recurrentes/planes/get-plans) and 1823[subscriber payments](/developers/api/recurrentes/suscriptores/suscriptor-payments). 1824 1825## There is a JSON payload inside a string [#doble-encoding] 1826 1827In [subscriber payments](/developers/api/recurrentes/suscriptores/suscriptor-payments), the 1828\`data\` field of each payment **is not an object: it is a string containing JSON**. 1829 1830\`\`\`json 1831"data": "{\\"first\\":1,\\"expire\\":\\"2024-12-28T19:05:29.572648Z\\",\\"amount\\":0,\\"activeAmount\\":0,\\"originalAmount\\":0,\\"key\\":\\"XXXX-XXXX-XXXX-XXXX-XXXX\\"}" 1832\`\`\` 1833 1834You have to deserialize twice: first the response, then the contents of \`data\`. Treat that 1835second deserialization the way you treat any external input: wrap it and log the raw string 1836when it does not parse. 1837 1838## The same entity changes shape between "get one" and "list" [#uno-vs-lista] 1839 1840This is not a documentation slip: the two operations return different shapes of the same 1841coupon, and each needs its own mapping. 1842 1843| | [\`getCoupon\`](/developers/api/recurrentes/cupones/get-coupon) (one) | [\`getRepeatCoupons\`](/developers/api/recurrentes/cupones/get-coupons) (list) | 1844| --- | --- | --- | 1845| Creation date | \`created_at\`, ISO format | \`create\`, \`Y-m-d H:i:s\` format | 1846| Other fields | includes \`recurrent_id\`, \`updated_at\` and \`deleted_at\` | does not include them | 1847 1848The same happens in 1849[subscriber payments](/developers/api/recurrentes/suscriptores/suscriptor-payments), which 1850also uses \`create\` with the \`Y-m-d H:i:s\` format. 1851 1852## Two ways of saying "not configured" [#no-configurado] 1853 1854In [list plans](/developers/api/recurrentes/planes/get-plans), a plan's webhook fields come 1855as an empty string when they are not configured, while \`return_url\` comes as \`null\`. Those 1856are two representations of the same state in the same object: when checking whether a 1857webhook is configured, treat the empty string and \`null\` as the same case. 1858`,Ae=`--- 1859title: "API · processPayment" 1860kind: api-operation 1861status: stable 1862api_version: v1
1863last_verified: 2026-08-29 1864verified_by: equipo-integraciones 1865owner: equipo-integraciones 1866sources: 1867 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 1868locales: [es, en] 1869related: [api/autenticacion, api/hosted-payment-page, api/procesos-operativos/errors] 1870description: "Parameters, request example and response of processPayment, the operation that opens the payment form." 1871gaps: 1872 - "These error examples were saved without an HTTP status code. It is not possible to tell from the collection whether the API returns HTTP 4xx or HTTP 200 with an error body." 1873--- 1874 1875\`\`\`http 1876POST /api/v1/processPayment 1877\`\`\` 1878 1879## What it does [#que-hace] 1880 1881Returns the URL of the payment form for a purchase. 1882 1883## Authentication [#autenticacion] 1884 1885Requires the API bearer token in the \`Authorization\` header â see [authentication](/developers/api/autenticacion). 1886 1887## Parameters [#parametros] 1888 1889<Param id="process-payment-parametro-redirect" name="redirect" type="string" required> 1890Site where you wait for the transaction response, for example \`mywebsite.com\`. It must support the **GET** method. Example response to the redirect: \`mywebsite.com?code=1&description=Transaction%20is%20approved.&auth=123456&order=TPYS-881WROIBQA1405468&tpt=4300&crd=&tilopay-transaction=4300&OrderHash=b02927cb...&returnData=Tilopay-dataReturn123456789&form_update=ok\`. When \`code = 1\` the transaction is approved; anything else is declined. \`OrderHash\` is a unique string per transaction: to use it on the merchant side, write to \`[email protected]\` for instructions. 1891</Param> 1892 1893<Param id="process-payment-parametro-key" name="key" type="string" required> 1894Key associated with the customer. It is obtained in Admin · Tilopay Checkout. 1895</Param> 1896 1897<Param id="process-payment-parametro-amount" name="amount" type="string" required> 1898Purchase amount. 1899</Param> 1900 1901<Param id="process-payment-parametro-currency" name="currency" type="string" required> 1902Purchase currency in ISO format, for example USD, CRC, GTQ. 1903</Param> 1904 1905<Param id="process-payment-parametro-ordernumber" name="orderNumber" type="string" required> 1906Order number, it can be alphanumeric. 1907</Param> 1908 1909<Param id="process-payment-parametro-capture" name="capture" type="string" required> 1910Capture and authorize: 1 yes, 0 no. 1911</Param> 1912 1913<Param id="process-payment-parametro-billtofirstname" name="billToFirstName" type="string" required> 1914First name. 1915</Param> 1916 1917<Param id="process-payment-parametro-billtolastname" name="billToLastName" type="string" required> 1918Last names. 1919</Param> 1920 1921<Param id="process-payment-parametro-billtoaddress" name="billToAddress" type="string" required> 1922Address. 1923</Param> 1924 1925<Param id="process-payment-parametro-billtoaddress2" name="billToAddress2" type="string" required> 1926Address 2. 1927</Param> 1928 1929<Param id="process-payment-parametro-billtocity" name="billToCity" type="string" required> 1930City. 1931</Param> 1932 1933<Param id="process-payment-parametro-billtostate" name="billToState" type="string" required> 1934State in ISO format, for example CR-SJ (San José, Costa Rica) or US-CA (California, USA). 1935</Param> 1936 1937<Param id="process-payment-parametro-billtozippostcode" name="billToZipPostCode" type="string" required> 1938Post code. 1939</Param> 1940 1941<Param id="process-payment-parametro-billtocountry" name="billToCountry" type="string" required> 1942Country in ISO Alpha-2 code, for example CR (Costa Rica), US (USA) or GT (Guatemala). 1943</Param> 1944 1945<Param id="process-payment-parametro-billtotelephone" name="billToTelephone" type="string" required> 1946Telephone. 1947</Param> 1948 1949<Param id="process-payment-parametro-billtoemail" name="billToEmail" type="string" required> 1950Buyer email. 1951</Param> 1952 1953<Param id="process-payment-parametro-shiptofirstname" name="shipToFirstName" type="string" required> 1954First name. 1955</Param> 1956 1957<Param id="process-payment-parametro-shiptolastname" name="shipToLastName" type="string" required> 1958Last names. 1959</Param> 1960 1961<Param id="process-payment-parametro-shiptoaddress" name="shipToAddress" type="string" required> 1962Address. 1963</Param> 1964 1965<Param id="process-payment-parametro-shiptoaddress2" name="shipToAddress2" type="string" required> 1966Address 2. 1967</Param> 1968 1969<Param id="process-payment-parametro-shiptocity" name="shipToCity" type="string" required> 1970City. 1971</Param> 1972 1973<Param id="process-payment-parametro-shiptostate" name="shipToState" t
1973ype="string" required> 1974State in ISO format, for example CR-SJ (San José, Costa Rica) or US-CA (California, USA). 1975</Param> 1976 1977<Param id="process-payment-parametro-shiptozippostcode" name="shipToZipPostCode" type="string" required> 1978Post code. 1979</Param> 1980 1981<Param id="process-payment-parametro-shiptocountry" name="shipToCountry" type="string" required> 1982Country in ISO Alpha-2 code, for example CR (Costa Rica), US (USA) or GT (Guatemala). 1983</Param> 1984 1985<Param id="process-payment-parametro-shiptotelephone" name="shipToTelephone" type="string" required> 1986Telephone. 1987</Param> 1988 1989<Param id="process-payment-parametro-subscription" name="subscription" type="string" required> 19901 to force the customer to save the card in Tilopay, 0 not to. 1991</Param> 1992 1993<Param id="process-payment-parametro-platform" name="platform" type="string" required> 1994Name of the platform where the transaction is generated. 1995</Param> 1996 1997<Param id="process-payment-parametro-returndata" name="returnData" type="string"> 1998Value that Tilopay returns in the final response. Sending a base 64 string is recommended. 1999</Param> 2000 2001<Param id="process-payment-parametro-hashversion" name="hashVersion" type="string"> 2002Only used when implementing hash verification. Possible values [V1, V2]; V1 by default. 2003</Param> 2004 2005<Param id="process-payment-parametro-token-version" name="token_version" type="string"> 2006Send as value "v2". 2007</Param> 2008 2009## Request example [#request] 2010 2011The \`<...>\` values are placeholders: replace them with your own credentials and data. 2012 2013\`\`\`json 2014{ 2015 "redirect": "https://www.urlToRedirect.com", 2016 "key": "<api_key>", 2017 "amount": "1.00", 2018 "currency": "USD", 2019 "orderNumber": "1212122", 2020 "capture": "1", 2021 "billToFirstName": "DEMO", 2022 "billToLastName": "DEMO", 2023 "billToAddress": "San Jose", 2024 "billToAddress2": "Catedral", 2025 "billToCity": "JS", 2026 "billToState": "SJ", 2027 "billToZipPostCode": "10061", 2028 "billToCountry": "CR", 2029 "billToTelephone": "88888888", 2030 "billToEmail": "[email protected]", 2031 "shipToFirstName": "DEMO", 2032 "shipToLastName": "DEMO", 2033 "shipToAddress": "San Jose", 2034 "shipToAddress2": "Catedral", 2035 "shipToCity": "JS", 2036 "shipToState": "SJ", 2037 "shipToZipPostCode": "10061", 2038 "shipToCountry": "CR", 2039 "shipToTelephone": "88888888", 2040 "subscription": "0", 2041 "platform": "api", 2042 "returnData": "dXNlcl9pZD0xMg==", 2043 "hashVersion": "V2", 2044 "token_version": "v2" 2045} 2046\`\`\` 2047 2048## Response [#respuesta] 2049 2050\`\`\`json 2051{ 2052 "type": "100", 2053 "html": "Use url redirect", 2054 "url": "https://secure.tilopay.com/htmls/1212122_574572148file.html" 2055} 2056\`\`\` 2057 2058To interpret a response that is not a success, see [how to read an error response](/developers/api/procesos-operativos/errors). 2059`,je=`--- 2060title: "API · Create payment link" 2061kind: api-operation 2062status: stable 2063api_version: v1 2064last_verified: 2026-08-29 2065verified_by: equipo-integraciones 2066owner: equipo-integraciones 2067sources:
2068 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 2069locales: [es, en] 2070related: [api/autenticacion, api/links-de-pago, api/procesos-operativos/errors] 2071description: "Payment link creation through the API, with response callback and webhook." 2072--- 2073 2074\`\`\`http 2075POST /api/v1/createLinkPayment 2076\`\`\` 2077 2078## What it does [#que-hace] 2079 2080Creates a payment link with amount, currency and usage behaviour. 2081 2082## Authentication [#autenticacion] 2083 2084Requires the API bearer token in the \`Authorization\` header â see [authentication](/developers/api/autenticacion). 2085 2086## Parameters [#parametros] 2087 2088<Param id="create-link-payment-parametro-key" name="key" type="string" required> 2089Tilopay integration key. 2090</Param> 2091 2092<Param id="create-link-payment-parametro-amount" name="amount" type="string" required> 2093Amount of the payment link. 2094</Param> 2095 2096<Param id="create-link-payment-parametro-currency" name="currency" type="string" required> 2097Currency code in ISO 4217 format. 2098</Param> 2099 2100<Param id="create-link-payment-parametro-reference" name="reference" type="string"> 2101Reference of the payment link. 2102</Param> 2103 2104<Param id="create-link-payment-parametro-type" name="type" type="integer"> 2105Link type: 0 unlimited, 1 single use. 2106</Param> 2107 2108<Param id="create-link-payment-parametro-description" name="description" type="string"> 2109Payment description. 2110</Param> 2111 2112<Param id="create-link-payment-parametro-client" name="client" type="string"> 2113Customer name. It only applies when \`type\` is 1. 2114</Param> 2115 2116<Param id="create-link-payment-parametro-callback-url" name="callback_url" type="string"> 2117Optional field. URL, over **GET**, the customer is redirected to with the response once the payment is completed. Example of the data sent: \`code=Val&description=Val&auth=Val&tilopayLinkId=Val&orderNumber=Val&tilopayOrderId=Val&creditCardToken=Val&creditCardBrand=Val&last4CreditCardNumber=Val&orderHash=Val\` 2118</Param> 2119 2120<Param id="create-link-payment-parametro-webhook-url" name="webhook_url" type="string"> 2121Optional field. URL to send the response webhook to once the payment is completed. 2122It must accept the **POST** method to receive the data. Example of the data sent: 2123 2124\`\`\`json 2125{ 2126 "code": "1", 2127 "codeDescription": "Aprobada", 2128 "auth": "123456", 2129 "tilopayLinkId": 54421, 2130 "orderNumber": "TPT123", 2131 "tilopayOrderId": 12233, 2132 "creditCardToken": "41111******11111", 2133 "creditCardBrand": "Visa", 2134 "last4CreditCardNumber": "1111", 2135 "linkDescription": "Descripcion del link de pago", 2136 "orderHash": "" 2137} 2138\`\`\` 2139</Param> 2140 2141## Request example [#request] 2142 2143The \`<...>\` values are placeholders: replace them with your own credentials and data. 2144 2145\`\`\`json 2146{ 2147 "key": "<api_key>", 2148 "amount": "10", 2149 "currency": "USD", 2150 "reference": "123456", 2151 "type": 0, 2152 "description": "Description", 2153 "client": "Client name", 2154 "callback_url": "", 2155 "webhook_url": "" 2156} 2157\`\`\` 2158 2159## Response [#respuesta] 2160 2161\`\`\`json 2162{ 2163 "type": "200", 2164 "message": "Success", 2165 "url": "https://app.tilopay.com/link/MjMwMjQ=", 2166 "id": 1 2167} 2168\`\`\` 2169 2170To interpret a response that is not a success, see [how to read an error response](/developers/api/procesos-operativos/errors). 2171`,Me=`--- 2172title: "API · Delete a payment link" 2173kind: api-operation 2174status: stable 2175api_version: v1 2176last_verified: 2026-08-29 2177verified_by: equipo-integraciones 2178owner: equipo-integraciones 2179sources:
2180 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 2181locales: [es, en] 2182related: [api/autenticacion, api/links-de-pago, api/procesos-operativos/errors] 2183description: "Deletion of a payment link by id." 2184--- 2185 2186\`\`\`http 2187POST /api/v1/deleteLinkPayment 2188\`\`\` 2189 2190## What it does [#que-hace] 2191 2192Deletes an existing payment link. 2193 2194## Authentication [#autenticacion] 2195 2196Requires the API bearer token in the \`Authorization\` header â see [authentication](/developers/api/autenticacion). 2197 2198## Parameters [#parametros] 2199 2200<Param id="delete-link-payment-parametro-key" name="key" type="string" required> 2201Tilopay integration key. 2202</Param> 2203 2204<Param id="delete-link-payment-parametro-id" name="id" type="string" required> 2205Payment link id. 2206</Param> 2207 2208## Request example [#request] 2209 2210The \`<...>\` values are placeholders: replace them with your own credentials and data. 2211 2212\`\`\`json 2213{ 2214 "key": "<api_key>", 2215 "id": "35" 2216} 2217\`\`\` 2218 2219## Response [#respuesta] 2220 2221\`\`\`json 2222{ 2223 "type": "200", 2224 "status": 1, 2225 "message": "Success" 2226} 2227\`\`\` 2228 2229To interpret a response that is not a success, see [how to read an error response](/developers/api/procesos-operativos/errors). 2230`,Ne=`--- 2231title: "API · Payment link detail" 2232kind: api-operation 2233status: stable 2234api_version: v1 2235last_verified: 2026-08-29 2236verified_by: equipo-integraciones 2237owner: equipo-integraciones 2238sources:
2239 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 2240locales: [es, en] 2241related: [api/autenticacion, api/links-de-pago, api/procesos-operativos/errors] 2242description: "Detail of a payment link and its payments, queried by id." 2243gaps: 2244 - "Type, format and constraints are not documented in the collection." 2245--- 2246 2247\`\`\`http 2248GET /api/v1/getDetailLinkPayment/{link_payment_id}/{api_key} 2249\`\`\` 2250 2251## What it does [#que-hace] 2252 2253Returns the detail of a payment link and its associated payments. It takes no body: the data travels in the path. 2254 2255## Authentication [#autenticacion] 2256 2257Requires the API bearer token in the \`Authorization\` header â see [authentication](/developers/api/autenticacion). 2258 2259## Parameters [#parametros] 2260 2261Path parameters, in the order they appear in the URL: 2262 2263<Param id="detail-link-payment-parametro-link-payment-id" name="link_payment_id" type="string · path" required> 2264Id of the payment link to query. 2265</Param> 2266 2267<Param id="detail-link-payment-parametro-api-key" name="api_key" type="string · path" required> 2268Merchant api key. 2269</Param> 2270 2271## Response [#respuesta] 2272 2273\`\`\`json 2274{ 2275 "type": "200", 2276 "message": "Success", 2277 "detail": { 2278 "id": 6201, 2279 "amount": "45.00", 2280 "currency": "USD", 2281 "reference": "Producto de prueba 1 TP-Shop", 2282 "client": "NA", 2283 "type": "Unlimited", 2284 "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", 2285 "callback_url": null, 2286 "create": "2022-10-24 08:45:14" 2287 }, 2288 "payments": [] 2289} 2290\`\`\` 2291 2292To interpret a response that is not a success, see [how to read an error response](/developers/api/procesos-operativos/errors). 2293`,Pe=`--- 2294title: "API · Get a payment link by id" 2295kind: api-operation 2296status: stable 2297api_version: v1 2298last_verified: 2026-08-29 2299verified_by: equipo-integraciones 2300owner: equipo-integraciones 2301sources:
2302 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 2303locales: [es, en] 2304related: [api/autenticacion, api/links-de-pago, api/procesos-operativos/errors] 2305description: "Query of a single payment link by its id." 2306gaps: 2307 - "No description in the source collection." 2308 - "Type, format and constraints are not documented in the collection." 2309--- 2310 2311\`\`\`http 2312GET /api/v1/getLinkPaymentById/{link_payment_id}/{api_key} 2313\`\`\` 2314 2315## What it does [#que-hace] 2316 2317Returns a single payment link. It takes no body: the data travels in the path. 2318 2319## Authentication [#autenticacion] 2320 2321Requires the API bearer token in the \`Authorization\` header â see [authentication](/developers/api/autenticacion). 2322 2323## Parameters [#parametros] 2324 2325Path parameters, in the order they appear in the URL: 2326 2327<Param id="payment-by-id-parametro-link-payment-id" name="link_payment_id" type="string · path" required> 2328Id of the payment link to query. 2329</Param> 2330 2331<Param id="payment-by-id-parametro-api-key" name="api_key" type="string · path" required> 2332Merchant api key. 2333</Param> 2334 2335## Response [#respuesta] 2336 2337\`\`\`json 2338{ 2339 "type": "200", 2340 "message": "Success", 2341 "data": { 2342 "id": 1, 2343 "amount": "45.00", 2344 "currency": "USD", 2345 "reference": "Producto de prueba 1 TP-Shop", 2346 "url": "https://admin.tilopay.com/link/loNj8E2MA==", 2347 "callback_url": null, 2348 "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", 2349 "times_used": null, 2350 "picture": "https://storage.googleapis.com/tilo-uploads/items/51087219_.png", 2351 "create": "2022-10-24 08:45:14", 2352 "payments": [] 2353 } 2354} 2355\`\`\` 2356 2357To interpret a response that is not a success, see [how to read an error response](/developers/api/procesos-operativos/errors). 2358`,Fe=`--- 2359title: "API · List payment links" 2360kind: api-operation 2361status: stable 2362api_version: v1 2363last_verified: 2026-08-29 2364verified_by: equipo-integraciones 2365owner: equipo-integraciones 2366sources:
2367 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 2368locales: [es, en] 2369related: [api/autenticacion, api/links-de-pago, api/procesos-operativos/errors] 2370description: "Paginated listing of the merchant's payment links." 2371gaps: 2372 - "No description in the source collection." 2373 - "Type, format and constraints are not documented in the collection." 2374--- 2375 2376\`\`\`http 2377GET /api/v1/getLinkPaymentList/{api_key}/{limit} 2378\`\`\` 2379 2380## What it does [#que-hace] 2381 2382Returns the paginated list of the merchant's payment links. It takes no body: the data travels in the path. 2383 2384## Authentication [#autenticacion] 2385 2386Requires the API bearer token in the \`Authorization\` header â see [authentication](/developers/api/autenticacion). 2387 2388## Parameters [#parametros] 2389 2390Path parameters, in the order they appear in the URL: 2391 2392<Param id="payment-item-list-parametro-api-key" name="api_key" type="string · path" required> 2393Merchant api key. 2394</Param> 2395 2396<Param id="payment-item-list-parametro-limit" name="limit" type="string · path" required> 2397Number of records per page. 2398</Param> 2399 2400## Response [#respuesta] 2401 2402\`\`\`json 2403{ 2404 "type": "200", 2405 "message": "Success", 2406 "data": { 2407 "current_page": 1, 2408 "first_page_url": "http://app.tilopay.com/api/v1/getLinkPaymentList/<api_key>/10?page=1", 2409 "from": 1, 2410 "last_page": 2, 2411 "last_page_url": "http://app.tilopay.com/api/v1/getLinkPaymentList/<api_key>/10?page=2", 2412 "next_page_url": "http://app.tilopay.com/api/v1/getLinkPaymentList/<api_key>/10?page=2", 2413 "path": "http://app.tilopay.com/api/v1/getLinkPaymentList/<api_key>/10", 2414 "per_page": 10, 2415 "prev_page_url": null, 2416 "to": 10, 2417 "total": 16, 2418 "payment_link": [ 2419 { 2420 "id": 1, 2421 "amount": "45.00", 2422 "currency": "USD", 2423 "reference": "Producto de prueba 1 TP-Shop", 2424 "url": "https://admin.tilopay.com/link/3dNjE2MA3sdd==", 2425 "callback_url": null, 2426 "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", 2427 "times_used": null, 2428 "picture": "https://storage.googleapis.com/tilo-uploads/items/51087219_.png", 2429 "create": "2022-10-24 08:45:14" 2430 }, 2431 { 2432 "id": 2, 2433 "amount": "35.00", 2434 "currency": "USD", 2435 "reference": "Producto de prueba 2", 2436 "url": "https://admin.tilopay.com/link/dwNjE2see3MA==", 2437 "callback_url": null, 2438 "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", 2439 "times_used": null, 2440 "picture": "https://storage.googleapis.com/tilo-uploads/items/64156766_.png", 2441 "create": "2022-10-24 08:45:14" 2442 }, 2443 { 2444 "id": 3, 2445 "amount": "45.00", 2446 "currency": "USD", 2447 "reference": "Producto de prueba 3", 2448 "url": "https://admin.tilopay.com/link/f4NjE2MwsdA==", 2449 "callback_url": null, 2450 "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", 2451 "times_used": null, 2452 "picture": "https://storage.googleapis.com/tilo-uploads/items/88435879_.png", 2453 "create": "2022-10-24 08:45:14" 2454 }, 2455 { 2456 "id": 4, 2457 "amount": "45.00", 2458 "currency": "USD", 2459 "reference": "test", 2460 "url": "https://admin.tilopay.com/link/ceNjE2sxw2MA==", 2461 "callback_url": null, 2462 "description": "ddd", 2463 "times_used": null, 2464 "picture": "https://storage.googleapis.com/tilo-uploads/items/37716065_.png", 2465 "create": "2022-10-24 08:45:14" 2466 }, 2467 { 2468 "id": 5, 2469 "amount": "45.00", 2470 "currency": "USD", 2471 "reference": "test", 2472 "url": "https://admin.tilopay.com/link/cweNjE2Mfd5A==", 2473 "callback_url": null, 2474 "description": "ddd", 2475 "times_used": null, 2476 "picture": "https://storage.googleapis.com/tilo-uploads/items/37716065_.png", 2477 "create": "2022-10-24 08:45:14" 2478 }, 2479 { 2480 "id": 6, 2481 "amount": "45.00", 2482 "currency": "USD", 2483 "reference": "test", 2484 "url": "https://admin.tilopay.com/link/ce3NjE2fg5eMA==", 2485 "callback_url": null, 2486 "description": "ddd", 2487 "times_used": null, 2488 "picture": "https://storage.googleapis.com/tilo-uploads/items/37716065_.png", 2489 "create": "2022-10-24 08:45:14" 2490 }, 2491 { 2492 "id": 7,
2493 "amount": "45.00", 2494 "currency": "USD", 2495 "reference": "test", 2496 "url": "https://admin.tilopay.com/link/dsNjE2MAd32==", 2497 "callback_url": null, 2498 "description": "ddd", 2499 "times_used": null, 2500 "picture": "https://storage.googleapis.com/tilo-uploads/items/37716065_.png", 2501 "create": "2022-10-24 08:45:14" 2502 }, 2503 { 2504 "id": 8, 2505 "amount": "45.00", 2506 "currency": "USD", 2507 "reference": "test", 2508 "url": "https://admin.tilopay.com/link/NjE2sd32MA==", 2509 "callback_url": null, 2510 "description": "ddd", 2511 "times_used": null, 2512 "picture": "https://storage.googleapis.com/tilo-uploads/items/37716065_.png", 2513 "create": "2022-10-24 08:45:14" 2514 }, 2515 { 2516 "id": 9, 2517 "amount": "45.00", 2518 "currency": "USD", 2519 "reference": "test", 2520 "url": "https://admin.tilopay.com/link/sd3NjE2MA==", 2521 "callback_url": null, 2522 "description": "ddd", 2523 "times_used": null, 2524 "picture": "https://storage.googleapis.com/tilo-uploads/items/37716065_.png", 2525 "create": "2022-10-24 08:45:14" 2526 }, 2527 { 2528 "id": 10, 2529 "amount": "45.00", 2530 "currency": "USD", 2531 "reference": "test", 2532 "url": "https://admin.tilopay.com/link/d3dNjE2MA==", 2533 "callback_url": null, 2534 "description": "ddd", 2535 "times_used": null, 2536 "picture": "https://storage.googleapis.com/tilo-uploads/items/37716065_.png", 2537 "create": "2022-10-24 08:45:14" 2538 } 2539 ] 2540 } 2541} 2542\`\`\` 2543 2544To interpret a response that is not a success, see [how to read an error response](/developers/api/procesos-operativos/errors). 2545`,Ie=`--- 2546title: "API · Payment links" 2547kind: api-index 2548status: stable 2549api_version: v1 2550last_verified: 2026-08-29 2551verified_by: equipo-integraciones 2552owner: equipo-integraciones 2553sources:
2554 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 2555locales: [es, en] 2556related: [api/autenticacion, api/procesos-operativos/errors] 2557description: "Payment links operations of the Tilopay API, with parameters and examples." 2558--- 2559 2560## Operations [#operaciones] 2561 2562- [Create payment link](/developers/api/links-de-pago/create-link-payment) 2563- [Payment link detail](/developers/api/links-de-pago/detail-link-payment) 2564- [Delete a payment link](/developers/api/links-de-pago/delete-link-payment) 2565- [List payment links](/developers/api/links-de-pago/payment-item-list) 2566- [Get a payment link by id](/developers/api/links-de-pago/payment-by-id) 2567 2568Every operation lives on \`https://app.tilopay.com\` and, except for the login operations, requires the API token â see [authentication](/developers/api/autenticacion). 2569`,Le=`--- 2570title: "API · consultTransactions" 2571kind: api-operation 2572status: stable 2573api_version: v1 2574last_verified: 2026-08-29 2575verified_by: equipo-integraciones 2576owner: equipo-integraciones 2577sources: 2578 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 2579locales: [es, en] 2580related: [api/autenticacion, api/procesos-operativos, api/procesos-operativos/errors] 2581description: "Bulk transaction query by date range, currency, order or email." 2582--- 2583 2584\`\`\`http 2585POST /api/v1/consultTransactions 2586\`\`\` 2587 2588## What it does [#que-hace] 2589 2590Queries transactions by date range, with optional filters. 2591 2592## Authentication [#autenticacion] 2593 2594Requires the API bearer token in the \`Authorization\` header â see [authentication](/developers/api/autenticacion). 2595 2596## Parameters [#parametros] 2597 2598<Param id="consult-transactions-parametro-key" name="key" type="string" required> 2599Tilopay integration key. 2600</Param> 2601 2602<Param id="consult-transactions-parametro-startdate" name="startDate" type="string" required> 2603Start date, \`Y-m-d H:i:s\` format â for example "2022-01-15 00:00:00". 2604</Param> 2605 2606<Param id="consult-transactions-parametro-enddate" name="endDate" type="string" required> 2607End date, \`Y-m-d H:i:s\` format â for example "2022-08-01 23:59:59". 2608</Param> 2609 2610<Param id="consult-transactions-parametro-onlyaproved" name="onlyAproved" type="integer"> 2611Whether to return only approved transactions. 2612 2613| Code | Value | 2614| --- | --- | 2615| 0 | Any | 2616| 1 | Approved only | 2617</Param> 2618 2619<Param id="consult-transactions-parametro-environment" name="environment" type="integer"> 2620Environment of the transactions to return. 2621 2622| Code | Value | 2623| --- | --- | 2624| 0 | Production | 2625| 1 | Test | 2626</Param> 2627 2628<Param id="consult-transactions-parametro-currency" name="currency" type="array"> 2629Array of currencies to return, for example ["USD", "CRC"]. 2630</Param> 2631 2632<Param id="consult-transactions-parametro-merchantid" name="merchantId" type="string"> 2633Merchant id. 2634</Param> 2635 2636<Param id="consult-transactions-parametro-ordernumber" name="orderNumber" type="string"> 2637Order number. 2638</Param> 2639 2640<Param id="consult-transactions-parametro-email" name="email" type="string"> 2641Customer email. 2642</Param> 2643 2644<Param id="consult-transactions-parametro-auth" name="auth" type="string"> 2645Authorization number. 2646</Param> 2647 2648## Request example [#request] 2649 2650The \`<...>\` values are placeholders: replace them with your own credentials and data. 2651 2652\`\`\`json 2653{ 2654 "key": "<api_key>", 2655 "startDate": "2023-06-01 00:00:00", 2656 "endDate": "2023-06-30 23:59:59", 2657 "onlyAproved": 1, 2658 "environment": 1, 2659 "currency": [ 2660 "USD", 2661 "CRC" 2662 ], 2663 "merchantId": "<merchantId>", 2664 "orderNumber": "12135", 2665 "email": "[email protected]", 2666 "auth": "123456" 2667} 2668\`\`\` 2669 2670## Response [#respuesta] 2671 2672\`\`\`json 2673{ 2674 "type": "200", 2675 "message": "", 2676 "response": [ 2677 { 2678 "id": 734329, 2679 "orderNumber": "12135", 2680 "amount": "5.00", 2681 "taxes": "0.00", 2682 "discount": "0.00", 2683 "discount_name": "", 2684 "currency": "USD", 2685 "merchantId": "<merchantId>", 2686 "code": "1", 2687 "response": "Transacción aprobada", 2688 "auth": "123456", 2689 "card": "4021", 2690 "last": "5221", 2691 "email": "[email protected]", 2692 "commission": 0.18, 2693 "iva_commission": 0.02, 2694 "retention_iva": 0.27, 2695 "retention_rent": 0.09, 2696 "cost": 0.35, 2697 "cost_iva": 0.05, 2698 "net_to_liquidate": 4.04, 2699 "capture": "Capture", 2700 "type": "Payment", 2701 "environment": "Production", 2702 "date": "2024-07-31 16:59:20" 2703 }, 2704 { 2705 "id": 734330, 2706 "orderNumber": "12136", 2707 "amount": "5.00", 2708 "taxes": "0.00", 2709 "discount": "0.00", 2710 "discount_name": "", 2711 "currency": "USD", 2712 "merchantId": "<merchantId>", 2713 "code": "1", 2714 "response": "Transacción aprobada", 2715 "auth": "123456", 2716 "card": "4021", 2717 "last": "5221", 2718 "email": "[email protected]", 2719 "commission": 0.18, 2720 "iva_commission": 0.02, 2721 "retention_iva": 0.27, 2722 "retention_rent": 0.09, 2723 "cost": 0.35, 2724 "cost_iva": 0.05, 2725 "net_to_liquidate": 4.04, 2726 "capture": "Capture", 2727 "type": "Payment", 2728 "environment": "Production", 2729 "date": "2024-07-31 17:25:35" 2730 } 2731 ] 2732} 2733\`\`\` 2734 2735To interpret a response that is not a success, see [how to read an error response](/developers/api/procesos-operativos/errors). 2736`,Re=`--- 2737title: "API · consult" 2738kind: api-operation 2739status: stable 2740api_version: v1
2741last_verified: 2026-08-29 2742verified_by: equipo-integraciones 2743owner: equipo-integraciones 2744sources: 2745 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 2746locales: [es, en] 2747related: [api/autenticacion, api/procesos-operativos, api/procesos-operativos/errors] 2748description: "Query the status and processed amount of a single transaction." 2749gaps: 2750 - "Present in the collection example but absent from the endpoint description." 2751--- 2752 2753\`\`\`http 2754POST /api/v1/consult 2755\`\`\` 2756 2757## What it does [#que-hace] 2758 2759Queries a specific transaction: returns the processed amount and the status of the transaction. 2760 2761## Authentication [#autenticacion] 2762 2763Requires the API bearer token in the \`Authorization\` header â see [authentication](/developers/api/autenticacion). 2764 2765## Parameters [#parametros] 2766 2767<Param id="consult-parametro-key" name="key" type="string"> 2768Tilopay integration key. 2769</Param> 2770 2771<Param id="consult-parametro-ordernumber" name="orderNumber" type="string"> 2772Order number being queried. 2773</Param> 2774 2775<Param id="consult-parametro-merchantid" name="merchantId" type="string"> 2776Merchant id. 2777</Param> 2778 2779## Request example [#request] 2780 2781The \`<...>\` values are placeholders: replace them with your own credentials and data. 2782 2783\`\`\`json 2784{ 2785 "key": "<api_key>", 2786 "orderNumber": "1212122", 2787 "merchantId": "" 2788} 2789\`\`\` 2790 2791## Response [#respuesta] 2792 2793\`\`\`json 2794{ 2795 "type": "200", 2796 "message": "", 2797 "response": [ 2798 { 2799 "id_tilopay": 734312, 2800 "orderNumber": "1212122", 2801 "amount": "5.00", 2802 "currency": "USD", 2803 "merchantId": "88803956", 2804 "code": "1", 2805 "response": "Transacción aprobada", 2806 "auth": "123456", 2807 "commission": 0.18, 2808 "iva_commission": 0.02, 2809 "retention_iva": 0.27, 2810 "retention_rent": 0.09, 2811 "cost": 0.35, 2812 "cost_iva": 0.05, 2813 "net_to_liquidate": "4.04", 2814 "capture": "Capture", 2815 "card": "4021", 2816 "last": "5221", 2817 "environment": "Test", 2818 "type": "Payment", 2819 "date": "2024-07-31 16:59:20" 2820 } 2821 ] 2822} 2823\`\`\` 2824 2825To interpret a response that is not a success, see [how to read an error response](/developers/api/procesos-operativos/errors). 2826`,ze=`--- 2827title: "API · How to read an error response" 2828kind: concept 2829status: stable 2830api_version: v1 2831last_verified: 2026-08-28 2832verified_by: equipo-integraciones 2833owner: equipo-integraciones 2834sources: 2835 - "Respuestas de TecnologÃa, 28-08-2026" 2836locales: [es, en] 2837related: [reintentos-seguros, api/webhooks] 2838gaps: 2839 - "Issuer decline code catalogue: no verified list exists." 2840description: An HTTP 200 does not mean success. Where the issuer decline arrives and how to write error handling. 2841--- 2842 2843## The issuer decline [#rechazo] 2844 2845When the issuer declines a transaction, the response carries two fields: 2846 2847<Param id="error-code" name="code" type="string"> 2848The issuer decline code. 2849</Param> 2850 2851<Param id="error-description" name="description" type="string"> 2852The decline text. 2853</Param> 2854 2855## An HTTP 200 does not mean success [#estado-http] 2856 2857<Callout type="warn"> 2858**There is no defined standard for when the API responds HTTP 4xx and when it responds HTTP 200 2859with the error in the body.** Both forms coexist, and there are **four different error envelopes 2860depending on the endpoint**. 2861 2862Practical consequence: your error handling must always look at the body, not only the status 2863code, and tolerate more than one body shape. 2864</Callout> 2865 2866## How to write error handling [#como-manejar] 2867 2868- Treat \`code\` and \`description\` as data to log and display, not as an enumeration to branch on. 2869- Do not write \`if (status === 200) success\`. Check the body. 2870- Store the raw response of every decline: it is what lets you reconstruct your merchant's 2871 decline pattern. 2872- To determine the real state of a transaction after a failure, use 2873 [safe retries](/developers/reintentos-seguros). 2874`,Be=`--- 2875title: "API · processModification" 2876kind: api-operation 2877status: stable 2878api_version: v1 2879last_verified: 2026-08-29 2880verified_by: equipo-integraciones 2881owner: equipo-integraciones 2882sources:
2883 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 2884 - "Respuestas de TecnologÃa, 28-08-2026" 2885locales: [es, en] 2886related: [api/autenticacion, api/procesos-operativos, api/procesos-operativos/errors] 2887description: "Capture, refund and reversal of a transaction with processModification." 2888gaps: 2889 - "Present in the collection example but absent from the endpoint description." 2890 - "No response example available." 2891 - "Falta la lista completa de valores del campo type: se sabe que existen 1, 2 y 3, pero no la equivalencia con captura, reembolso y reversión." 2892--- 2893 2894\`\`\`http 2895POST /api/v1/processModification 2896\`\`\` 2897 2898## What it does [#que-hace] 2899 2900Modifies an already processed transaction: capture, refund or reversal. 2901 2902## Authentication [#autenticacion] 2903 2904Requires the API bearer token in the \`Authorization\` header â see [authentication](/developers/api/autenticacion). 2905 2906## Parameters [#parametros] 2907 2908<Param id="process-modification-parametro-ordernumber" name="orderNumber" type="string"> 2909Example: \`1214352\` 2910</Param> 2911 2912<Param id="process-modification-parametro-type" name="type" type="string"> 2913Example: \`2\` 2914</Param> 2915 2916<Param id="process-modification-parametro-amount" name="amount" type="string"> 2917Example: \`1.00\` 2918</Param> 2919 2920<Param id="process-modification-parametro-key" name="key" type="string"> 2921Key associated with the customer. It is obtained in Admin · Tilopay Checkout. 2922</Param> 2923 2924## Request example [#request] 2925 2926The \`<...>\` values are placeholders: replace them with your own credentials and data. 2927 2928\`\`\`json 2929{ 2930 "orderNumber": "1214352", 2931 "type": "2", 2932 "amount": "1.00", 2933 "key": "<api_key>" 2934} 2935\`\`\` 2936 2937## Response [#respuesta-modificacion] 2938 2939<Param id="modification-type" name="type" type="string"> 2940Type of modification applied. 2941</Param> 2942 2943<Param id="modification-transactionid" name="transactionId" type="string"> 2944Transaction identifier. 2945</Param> 2946 2947<Param id="modification-reasoncode" name="ReasonCode" type="string"> 2948Result code of the modification. 2949</Param> 2950 2951<Param id="modification-reasoncodedescription" name="ReasonCodeDescription" type="string"> 2952Result text. 2953</Param> 2954 2955<Param id="modification-orderhash" name="OrderHash" type="string"> 2956Order hash. See the note about \`orderHash\` in [webhooks](/developers/api/webhooks#verificacion). 2957</Param> 2958 2959To interpret a response that is not a success, see [how to read an error response](/developers/api/procesos-operativos/errors). 2960`,Ve=`--- 2961title: "API · Split settlement" 2962kind: api-operation 2963status: stable 2964api_version: v1 2965last_verified: 2026-08-29 2966verified_by: equipo-integraciones 2967owner: equipo-integraciones 2968sources:
2969 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 2970locales: [es, en] 2971related: [api/autenticacion, api/procesos-operativos, api/procesos-operativos/errors] 2972description: "Splitting the settlement of an order among several facilitated merchants." 2973gaps: 2974 - "Present in the collection example but absent from the endpoint description." 2975--- 2976 2977\`\`\`http 2978POST /api/v1/orders/liquidation/split 2979\`\`\` 2980 2981## What it does [#que-hace] 2982 2983Splits the settlement of an order among several merchants. It only applies to merchants that use Tilopay as a payment facilitator, and the resulting orders are identified by the \`SL|\` prefix. 2984 2985Rules: 2986 2987- The merchants must be approved and be from the same country. 2988- If the split is lower than the total amount of the order, the remainder is assigned to the merchant that made the original transaction. 2989- It only applies to fully approved orders. 2990 2991## Authentication [#autenticacion] 2992 2993Requires the API bearer token in the \`Authorization\` header â see [authentication](/developers/api/autenticacion). 2994 2995## Parameters [#parametros] 2996 2997<Param id="split-parametro-order-id" name="order_id" type="string"> 2998Id of the order approved in Tilopay. 2999</Param> 3000 3001<Param id="split-parametro-commerces" name="commerces" type="array"> 3002Associative array with the \`email\` and \`amount\` keys of every merchant the settlement is divided with. Including the owner merchant is optional: when its amount is not specified the remainder of the split is assigned to it, and when it is included and there is a remainder, the remainder is added to it. 3003</Param> 3004 3005<Param id="split-parametro-lang" name="lang" type="string"> 3006Request language. 3007</Param> 3008 3009## Request example [#request] 3010 3011The \`<...>\` values are placeholders: replace them with your own credentials and data. 3012 3013\`\`\`json 3014{ 3015 "order_id": "1", 3016 "commerces": [ 3017 { 3018 "email": "[email protected]", 3019 "amount": "7.5" 3020 }, 3021 { 3022 "email": "[email protected]", 3023 "amount": "5.5" 3024 } 3025 ], 3026 "lang": "en" 3027} 3028\`\`\` 3029 3030## Response [#respuesta] 3031 3032\`\`\`json 3033{ 3034 "type": "200", 3035 "message": "Great", 3036 "description": "Order splitted successfully", 3037 "response": { 3038 "total_order_splitted": 3, 3039 "order_id": 1, 3040 "order_number": "PFC000069-TYP785237_313", 3041 "order_key": "<api_key>", 3042 "order_currency": "USD", 3043 "order_amount": "33.00", 3044 "splitted_orders": [ 3045 { 3046 "id": 1, 3047 "amount": 20, 3048 "commerce_name": "Commerce owner name", 3049 "commerce_email": "[email protected]" 3050 }, 3051 { 3052 "id": 2, 3053 "amount": 7.5, 3054 "commerce_name": "Commerce name", 3055 "commerce_email": "[email protected]" 3056 }, 3057 { 3058 "id": 3, 3059 "amount": 5.5, 3060 "commerce_name": "Commerce name", 3061 "commerce_email": "[email protected]" 3062 } 3063 ] 3064 } 3065} 3066\`\`\` 3067 3068To interpret a response that is not a success, see [how to read an error response](/developers/api/procesos-operativos/errors). 3069`,He=`--- 3070title: "API · Operational processes" 3071kind: api-index 3072status: stable 3073api_version: v1 3074last_verified: 2026-08-29 3075verified_by: equipo-integraciones 3076owner: equipo-integraciones 3077sources:
3078 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 3079locales: [es, en] 3080related: [api/autenticacion, api/procesos-operativos/errors] 3081description: "Operational processes operations of the Tilopay API, with parameters and examples." 3082--- 3083 3084## Operations [#operaciones] 3085 3086- [processModification](/developers/api/procesos-operativos/process-modification) 3087- [consult](/developers/api/procesos-operativos/consult) 3088- [consultTransactions](/developers/api/procesos-operativos/consult-transactions) 3089- [Split settlement](/developers/api/procesos-operativos/split) 3090 3091These operations are cross-cutting: they work for any of the four [integration paths](/developers), no matter how the charge was originated. 3092 3093To interpret a response that is not a success, see [how to read an error response](/developers/api/procesos-operativos/errors). 3094 3095Every operation lives on \`https://app.tilopay.com\` and, except for the login operations, requires the API token â see [authentication](/developers/api/autenticacion). 3096`,Ue=`--- 3097title: "API · Create coupon" 3098kind: api-operation 3099status: stable 3100api_version: v1 3101last_verified: 2026-08-29 3102verified_by: equipo-integraciones 3103owner: equipo-integraciones 3104sources:
3105 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 3106locales: [es, en] 3107related: [api/autenticacion, api/recurrentes/cupones, api/procesos-operativos/errors] 3108description: "Creation of discount coupons for recurring plans." 3109gaps: 3110 - "No response example available." 3111--- 3112 3113\`\`\`http 3114POST /api/v1/createCoupon 3115\`\`\` 3116 3117## What it does [#que-hace] 3118 3119Creates a discount coupon for a recurring plan: discount type, expiration, user and email permissions, and usage limits. 3120 3121## Authentication [#autenticacion] 3122 3123Requires the API bearer token in the \`Authorization\` header â see [authentication](/developers/api/autenticacion). 3124 3125## Parameters [#parametros] 3126 3127<Param id="create-coupon-parametro-key" name="key" type="string" required> 3128Tilopay integration key. 3129</Param> 3130 3131<Param id="create-coupon-parametro-planid" name="planId" type="integer" required> 3132Recurring plan id. 3133</Param> 3134 3135<Param id="create-coupon-parametro-active-users" name="active_users" type="integer" required> 3136User permission. 3137 3138| Code | Value | 3139| --- | --- | 3140| 0 | Allow new users only | 3141| 1 | Allow already registered users | 3142</Param> 3143 3144<Param id="create-coupon-parametro-type-discount" name="type_discount" type="integer" required> 3145Discount type. 3146 3147| Code | Value | 3148| --- | --- | 3149| 1 | Percentage | 3150| 2 | Fixed amount | 3151</Param> 3152 3153<Param id="create-coupon-parametro-discount" name="discount" type="integer" required> 3154Numeric value of the discount. 3155</Param> 3156 3157<Param id="create-coupon-parametro-expire" name="expire" type="string" required> 3158Coupon expiration date, \`Y-m-d\` format (for example 2025-10-20). 3159</Param> 3160 3161<Param id="create-coupon-parametro-email-group" name="email_group" type="integer" required> 3162Email permission. 3163 3164| Code | Value | 3165| --- | --- | 3166| 1 | Specific emails | 3167| 2 | Any email | 3168</Param> 3169 3170<Param id="create-coupon-parametro-email" name="email" type="string"> 3171Comma-separated list of emails. Required when \`email_group\` is sent as 1. 3172</Param> 3173 3174<Param id="create-coupon-parametro-usage" name="usage" type="integer"> 3175Total number of uses. 3176</Param> 3177 3178<Param id="create-coupon-parametro-renews" name="renews" type="integer"> 3179Total number of valid renewals. 3180</Param> 3181 3182<Param id="create-coupon-parametro-renews-by-user" name="renews_by_user" type="integer"> 3183Total uses by the same user. 3184</Param> 3185 3186## Request example [#request] 3187 3188The \`<...>\` values are placeholders: replace them with your own credentials and data. 3189 3190\`\`\`json 3191{ 3192 "key": "<api_key>", 3193 "planId": 10, 3194 "active_users": 1, 3195 "type_discount": 1, 3196 "discount": 40, 3197 "expire": "2025-10-20", 3198 "email_group": 1, 3199 "email": "[email protected], [email protected]", 3200 "usage": 1, 3201 "renews": 2, 3202 "renews_by_user": 2 3203} 3204\`\`\` 3205 3206To interpret a response that is not a success, see [how to read an error response](/developers/api/procesos-operativos/errors). 3207`,We=`--- 3208title: "API · Delete coupon" 3209kind: api-operation 3210status: stable 3211api_version: v1 3212last_verified: 2026-08-29 3213verified_by: equipo-integraciones 3214owner: equipo-integraciones 3215sources:
3216 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 3217locales: [es, en] 3218related: [api/autenticacion, api/recurrentes/cupones, api/procesos-operativos/errors] 3219description: "Deletion of a recurring coupon by id." 3220gaps: 3221 - "No response example available." 3222--- 3223 3224\`\`\`http 3225POST /api/v1/deleteCoupon 3226\`\`\` 3227 3228## What it does [#que-hace] 3229 3230Deletes a coupon. 3231 3232## Authentication [#autenticacion] 3233 3234Requires the API bearer token in the \`Authorization\` header â see [authentication](/developers/api/autenticacion). 3235 3236## Parameters [#parametros] 3237 3238<Param id="delete-coupon-parametro-key" name="key" type="string" required> 3239Tilopay integration key. 3240</Param> 3241 3242<Param id="delete-coupon-parametro-id" name="id" type="string" required> 3243Coupon id. 3244</Param> 3245 3246## Request example [#request] 3247 3248The \`<...>\` values are placeholders: replace them with your own credentials and data. 3249 3250\`\`\`json 3251{ 3252 "key": "<api_key>", 3253 "id": "1" 3254} 3255\`\`\` 3256 3257To interpret a response that is not a success, see [how to read an error response](/developers/api/procesos-operativos/errors). 3258`,Ge=`--- 3259title: "API · Get a coupon" 3260kind: api-operation 3261status: stable 3262api_version: v1 3263last_verified: 2026-08-29 3264verified_by: equipo-integraciones 3265owner: equipo-integraciones 3266sources:
3267 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 3268locales: [es, en] 3269related: [api/autenticacion, api/recurrentes/cupones, api/procesos-operativos/errors] 3270description: "Query of a recurring coupon by id." 3271gaps: 3272 - "No response example available." 3273--- 3274 3275\`\`\`http 3276POST /api/v1/getCoupon 3277\`\`\` 3278 3279## What it does [#que-hace] 3280 3281Returns a single coupon. 3282 3283## Authentication [#autenticacion] 3284 3285Requires the API bearer token in the \`Authorization\` header â see [authentication](/developers/api/autenticacion). 3286 3287## Parameters [#parametros] 3288 3289<Param id="get-coupon-parametro-key" name="key" type="string" required> 3290Tilopay integration key. 3291</Param> 3292 3293<Param id="get-coupon-parametro-id" name="id" type="string" required> 3294Coupon id. 3295</Param> 3296 3297## Request example [#request] 3298 3299The \`<...>\` values are placeholders: replace them with your own credentials and data. 3300 3301\`\`\`json 3302{ 3303 "key": "<api_key>", 3304 "id": "1" 3305} 3306\`\`\` 3307 3308To interpret a response that is not a success, see [how to read an error response](/developers/api/procesos-operativos/errors). 3309`,Ke=`--- 3310title: "API · List coupons of a plan" 3311kind: api-operation 3312status: stable 3313api_version: v1 3314last_verified: 2026-08-29 3315verified_by: equipo-integraciones 3316owner: equipo-integraciones 3317sources:
3318 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 3319locales: [es, en] 3320related: [api/autenticacion, api/recurrentes/cupones, api/procesos-operativos/errors] 3321description: "Listing of the coupons of a recurring plan." 3322gaps: 3323 - "No response example available." 3324--- 3325 3326\`\`\`http 3327POST /api/v1/getRepeatCoupons 3328\`\`\` 3329 3330## What it does [#que-hace] 3331 3332Returns the coupons associated with a recurring plan. 3333 3334## Authentication [#autenticacion] 3335 3336Requires the API bearer token in the \`Authorization\` header â see [authentication](/developers/api/autenticacion). 3337 3338## Parameters [#parametros] 3339 3340<Param id="get-coupons-parametro-key" name="key" type="string" required> 3341Tilopay integration key. 3342</Param> 3343 3344<Param id="get-coupons-parametro-id" name="id" type="string" required> 3345Recurring plan id. 3346</Param> 3347 3348## Request example [#request] 3349 3350The \`<...>\` values are placeholders: replace them with your own credentials and data. 3351 3352\`\`\`json 3353{ 3354 "key": "<api_key>", 3355 "id": "1" 3356} 3357\`\`\` 3358 3359To interpret a response that is not a success, see [how to read an error response](/developers/api/procesos-operativos/errors). 3360`,qe=`--- 3361title: "API · Recurring · Coupons" 3362kind: api-index 3363status: stable 3364api_version: v1 3365last_verified: 2026-08-29 3366verified_by: equipo-integraciones 3367owner: equipo-integraciones 3368sources:
3369 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 3370locales: [es, en] 3371related: [api/autenticacion, api/procesos-operativos/errors] 3372description: "Recurring · Coupons operations of the Tilopay API, with parameters and examples." 3373--- 3374 3375## Operations [#operaciones] 3376 3377- [Create coupon](/developers/api/recurrentes/cupones/create-coupon) 3378- [List coupons of a plan](/developers/api/recurrentes/cupones/get-coupons) 3379- [Get a coupon](/developers/api/recurrentes/cupones/get-coupon) 3380- [Delete coupon](/developers/api/recurrentes/cupones/delete-coupon) 3381 3382Every operation lives on \`https://app.tilopay.com\` and, except for the login operations, requires the API token â see [authentication](/developers/api/autenticacion). 3383`,Je=`--- 3384title: "API · Create recurring plan" 3385kind: api-operation 3386status: stable 3387api_version: v1 3388last_verified: 2026-08-29 3389verified_by: equipo-integraciones 3390owner: equipo-integraciones 3391sources: 3392 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 3393locales: [es, en] 3394related: [api/autenticacion, api/recurrentes/planes, api/procesos-operativos/errors] 3395description: "Recurring plan creation: frequencies, free trial, modalities and webhooks." 3396--- 3397 3398\`\`\`http 3399POST /api/v1/createPlanRepeat 3400\`\`\` 3401 3402## What it does [#que-hace] 3403 3404Creates a subscription plan: charge frequency, currency, trial period, modalities and webhooks. 3405 3406## Authentication [#autenticacion] 3407 3408Requires the API bearer token in the \`Authorization\` header â see [authentication](/developers/api/autenticacion). 3409 3410## Parameters [#parametros] 3411 3412<Param id="create-plan-parametro-key" name="key" type="string" required> 3413Tilopay integration key. 3414</Param> 3415 3416<Param id="create-plan-parametro-title" name="title" type="string" required> 3417Recurring plan title. 3418</Param> 3419 3420<Param id="create-plan-parametro-description" name="description" type="string"> 3421Plan description. 3422</Param> 3423 3424<Param id="create-plan-parametro-frecuency" name="frecuency" type="integer"> 3425Charge frequency. 3426 3427| Code | Value | 3428| --- | --- | 3429| 1 | Daily | 3430| 2 | Weekly | 3431| 3 | Monthly | 3432| 4 | Yearly | 3433| 5 | Fortnightly | 3434| 6 | Every two months | 3435| 7 | Quarterly | 3436| 8 | Every four months | 3437| 9 | Every six months | 3438</Param> 3439 3440<Param id="create-plan-parametro-currency" name="currency" type="string" required> 3441Currency code in ISO 4217 format. 3442</Param> 3443 3444<Param id="create-plan-parametro-first-amount" name="first_amount" type="integer" required> 3445Initial payment amount. 3446</Param> 3447 3448<Param id="create-plan-parametro-trial" name="trial" type="integer" required> 3449Enables the free trial period: 0 no, 1 yes. 3450</Param> 3451 3452<Param id="create-plan-parametro-trial-days" name="trial_days" type="integer" required> 3453Days of the free trial period. 3454</Param> 3455 3456<Param id="create-plan-parametro-attempts" name="attempts" type="integer" required> 3457Number of retries for failed charges. 3458</Param> 3459 3460<Param id="create-plan-parametro-modality" name="modality" type="array" required> 3461Array of plan modalities. 3462</Param> 3463 3464<Param id="create-plan-parametro-thanks-url" name="thanks_url" type="string"> 3465Optional field. The merchant's own thank-you URL; it must support the **GET** method. 3466</Param> 3467 3468<Param id="create-plan-parametro-webhook-subscribe" name="webhook_subscribe" type="string"> 3469Optional field. Webhook URL, over **POST**, that receives the callback in the request body when a customer successfully takes out a subscription. Example of the data sent: \`{'id_plan' : 1, 'email' : '[email protected]', 'modality' : 'ModalityName', 'amount' : 25, 'frequency' : '', 'coupon' : '5HT5W8YT', 'free_trial' : 1, 'next_payment_date' : '2023-02-25'}\` 3470</Param> 3471 3472<Param id="create-plan-parametro-webhook-payment" name="webhook_payment" type="string"> 3473Optional field. Webhook URL, over **POST**, that receives the callback in the request body when the customer is charged successfully. Example of the data sent: \`{'id_plan' : 1, 'email' : '[email protected]', 'amount' : 25, 'auth' : '123456', 'orderNumber' : 'PRE123456'}\` 3474</Param> 3475 3476<Param id="create-plan-parametro-webhook-rejected" name="webhook_rejected" type="string"> 3477Optional field. Webhook URL, over **POST**, that receives the callback in the request body when a payment fails. Example of the data sent: \`{'id_plan' : 1, 'email' : '[email protected]', 'amount' : 25}\` 3478</Param> 3479
3480<Param id="create-plan-parametro-webhook-unsubscribe" name="webhook_unsubscribe" type="string"> 3481Optional field. Webhook URL, over **POST**, that receives the callback in the request body when a customer cancels the subscription to one of their plans. Example of the data sent: \`{'id_plan' : 1, 'email' : '[email protected]', 'expire' : '2023-02-25'}\` 3482</Param> 3483 3484<Param id="create-plan-parametro-webhook-reactive" name="webhook_reactive" type="string"> 3485Optional field. Webhook URL, over **POST**, that receives the callback in the request body when a customer reactivates the subscription to one of their plans. Example of the data sent: \`{'id_plan' : 1, 'email' : '[email protected]', 'next_payment_date' : '2023-02-25'}\` 3486</Param> 3487 3488<Param id="create-plan-parametro-end-at" name="end_at" type="string"> 3489End date of the recurring plan, \`d-m-Y\` format (for example 25-09-2022). When the plan has no end date, send it empty. 3490</Param> 3491 3492<Param id="create-plan-parametro-notify" name="notify" type="integer"> 3493Set to 1 it adds the \`notify_detail\` and \`notify_note\` text to the notification email. Set to 0 it adds neither. 3494</Param> 3495 3496<Param id="create-plan-parametro-notify-detail-es" name="notify_detail_es" type="string"> 3497Detail text in Spanish. Optional when \`notify\` is 0. 3498</Param> 3499 3500<Param id="create-plan-parametro-notify-detail-en" name="notify_detail_en" type="string"> 3501Detail text in English. Optional when \`notify\` is 0. 3502</Param> 3503 3504<Param id="create-plan-parametro-notify-note-es" name="notify_note_es" type="string"> 3505Notes text in Spanish. Optional when \`notify\` is 0. 3506</Param> 3507 3508<Param id="create-plan-parametro-notify-note-en" name="notify_note_en" type="string"> 3509Notes text in English. Optional when \`notify\` is 0. 3510</Param> 3511 3512## Request example [#request] 3513 3514The \`<...>\` values are placeholders: replace them with your own credentials and data. 3515 3516\`\`\`json 3517{ 3518 "key": "<api_key>", 3519 "title": "Plan title", 3520 "description": "Plan description", 3521 "frecuency": 1, 3522 "currency": "USD", 3523 "first_amount": 0, 3524 "trial": 0, 3525 "trial_days": 0, 3526 "attempts": 1, 3527 "modality": [ 3528 { 3529 "title": "Basic", 3530 "amount": 10 3531 }, 3532 { 3533 "title": "Premium", 3534 "amount": 30 3535 } 3536 ], 3537 "thanks_url": "", 3538 "webhook_subscribe": "", 3539 "webhook_payment": "", 3540 "webhook_rejected": "", 3541 "webhook_unsubscribe": "", 3542 "webhook_reactive": "", 3543 "end_at": "25-10-2023", 3544 "notify": 0, 3545 "notify_detail_es": "", 3546 "notify_detail_en": "", 3547 "notify_note_es": "", 3548 "notify_note_en": "" 3549} 3550\`\`\` 3551 3552## Response [#respuesta] 3553 3554\`\`\`json 3555{ 3556 "type": "200", 3557 "status": 1, 3558 "message": "Success", 3559 "id": 624, 3560 "url": "https://app.tilopay.com/link/TmpJMHwx" 3561} 3562\`\`\` 3563 3564To interpret a response that is not a success, see [how to read an error response](/developers/api/procesos-operativos/errors). 3565`,Ye=`--- 3566title: "API · Delete recurring plan" 3567kind: api-operation 3568status: stable 3569api_version: v1 3570last_verified: 2026-08-29 3571verified_by: equipo-integraciones 3572owner: equipo-integraciones 3573sources:
3574 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 3575locales: [es, en] 3576related: [api/autenticacion, api/recurrentes/planes, api/procesos-operativos/errors] 3577description: "Deletion of a recurring plan by id." 3578--- 3579 3580\`\`\`http 3581POST /api/v1/deletePlanRepeat 3582\`\`\` 3583 3584## What it does [#que-hace] 3585 3586Deletes a recurring plan. 3587 3588## Authentication [#autenticacion] 3589 3590Requires the API bearer token in the \`Authorization\` header â see [authentication](/developers/api/autenticacion). 3591 3592## Parameters [#parametros] 3593 3594<Param id="delete-plan-parametro-key" name="key" type="string" required> 3595Tilopay integration key. 3596</Param> 3597 3598<Param id="delete-plan-parametro-id" name="id" type="string" required> 3599Recurring plan id. 3600</Param> 3601 3602## Request example [#request] 3603 3604The \`<...>\` values are placeholders: replace them with your own credentials and data. 3605 3606\`\`\`json 3607{ 3608 "key": "<api_key>", 3609 "id": "625" 3610} 3611\`\`\` 3612 3613## Response [#respuesta] 3614 3615\`\`\`json 3616{ 3617 "type": "200", 3618 "status": 1, 3619 "message": "Success" 3620} 3621\`\`\` 3622 3623To interpret a response that is not a success, see [how to read an error response](/developers/api/procesos-operativos/errors). 3624`,Xe=`--- 3625title: "API · Edit recurring plan" 3626kind: api-operation 3627status: stable 3628api_version: v1 3629last_verified: 2026-08-29 3630verified_by: equipo-integraciones 3631owner: equipo-integraciones 3632sources:
3633 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 3634locales: [es, en] 3635related: [api/autenticacion, api/recurrentes/planes, api/procesos-operativos/errors] 3636description: "Editing a recurring plan and its status." 3637--- 3638 3639\`\`\`http 3640POST /api/v1/editPlanRepeat 3641\`\`\` 3642 3643## What it does [#que-hace] 3644 3645Edits an existing plan, including its status. 3646 3647## Authentication [#autenticacion] 3648 3649Requires the API bearer token in the \`Authorization\` header â see [authentication](/developers/api/autenticacion). 3650 3651## Parameters [#parametros] 3652 3653<Param id="edit-plan-parametro-key" name="key" type="string" required> 3654Tilopay integration key. 3655</Param> 3656 3657<Param id="edit-plan-parametro-id" name="id" type="integer" required> 3658Recurring plan id. 3659</Param> 3660 3661<Param id="edit-plan-parametro-title" name="title" type="string" required> 3662Recurring plan title. 3663</Param> 3664 3665<Param id="edit-plan-parametro-description" name="description" type="string"> 3666Plan description. 3667</Param> 3668 3669<Param id="edit-plan-parametro-frecuency" name="frecuency" type="integer"> 3670Charge frequency. 3671 3672| Code | Value | 3673| --- | --- | 3674| 1 | Daily | 3675| 2 | Weekly | 3676| 3 | Monthly | 3677| 4 | Yearly | 3678| 5 | Fortnightly | 3679| 6 | Every two months | 3680| 7 | Quarterly | 3681| 8 | Every four months | 3682| 9 | Every six months | 3683</Param> 3684 3685<Param id="edit-plan-parametro-currency" name="currency" type="string" required> 3686Currency code in ISO 4217 format. 3687</Param> 3688 3689<Param id="edit-plan-parametro-first-amount" name="first_amount" type="integer" required> 3690Initial payment amount. 3691</Param> 3692 3693<Param id="edit-plan-parametro-trial" name="trial" type="integer" required> 3694Enables the free trial period: 0 no, 1 yes. 3695</Param> 3696 3697<Param id="edit-plan-parametro-trial-days" name="trial_days" type="integer" required> 3698Days of the free trial period. 3699</Param> 3700 3701<Param id="edit-plan-parametro-attempts" name="attempts" type="integer" required> 3702Number of retries for failed charges. 3703</Param> 3704 3705<Param id="edit-plan-parametro-status" name="status" type="integer" required> 3706Status of the recurring plan. 3707 3708| Code | Value | 3709| --- | --- | 3710| 0 | Inactive | 3711| 1 | Active | 3712| 2 | Active but with no new sign-ups | 3713</Param> 3714 3715<Param id="edit-plan-parametro-thanks-url" name="thanks_url" type="string"> 3716Optional field. The merchant's own thank-you URL; it must support the **GET** method. 3717</Param> 3718 3719<Param id="edit-plan-parametro-webhook-subscribe" name="webhook_subscribe" type="string"> 3720Optional field. Webhook URL, over **POST**, that receives the callback in the request body when a customer successfully takes out a subscription. Example of the data sent: \`{'id_plan' : 1, 'email' : '[email protected]', 'modality' : 'ModalityName', 'amount' : 25, 'frequency' : '', 'coupon' : '5HT5W8YT', 'free_trial' : 1, 'next_payment_date' : '2023-02-25'}\` 3721</Param> 3722 3723<Param id="edit-plan-parametro-webhook-payment" name="webhook_payment" type="string"> 3724Optional field. Webhook URL, over **POST**, that receives the callback in the request body when the customer is charged successfully. Example of the data sent: \`{'id_plan' : 1, 'email' : '[email protected]', 'amount' : 25, 'auth' : '123456', 'orderNumber' : 'PRE123456'}\` 3725</Param> 3726 3727<Param id="edit-plan-parametro-webhook-rejected" name="webhook_rejected" type="string"> 3728Optional field. Webhook URL, over **POST**, that receives the callback in the request body when a payment fails. Example of the data sent: \`{'id_plan' : 1, 'email' : '[email protected]', 'amount' : 25}\` 3729</Param> 3730 3731<Param id="edit-plan-parametro-webhook-unsubscribe" name="webhook_unsubscribe" type="string"> 3732Optional field. Webhook URL, over **POST**, that receives the callback in the request body when a customer cancels the subscription to one of their plans. Example of the data sent: \`{'id_plan' : 1, 'email' : '[email protected]', 'expire' : '2023-02-25'}\` 3733</Param> 3734 3735<Param id="edit-plan-parametro-webhook-reactive" name="webhook_reactive" type="string"> 3736Optional field. Webhook URL, over **POST**, that receives the callback in the request body when a customer reactivates the subscription to one of their plans. Example of the data sent: \`{'id_plan' : 1, 'email' : '[email protected]', 'next_payment_date' : '2023-02-25'}\` 3737</Param> 3738 3739<Param id="edit-plan-parametro-end-at" name="end_at" type="string"> 3740End date of the recurring plan, \`d-m-Y\` format (for example 25-09-2022). When the plan has no end date, send it empty. 3741</Param> 3742 3743## Request example [#request] 3744 3745The \`<...>\` values are placeholders: replace them with your own credentials and data. 3746 3747\`\`\`json 3748{ 3749 "key": "<api_key>", 3750 "id": 3, 3751 "title": "Plan title", 3752 "description": "Plan description", 3753 "frecuency": 2, 3754 "currency": "USD", 3755 "first_amount": 0, 3756 "trial": 0, 3757 "trial_days": 0, 3758 "attempts": 5, 3759 "status": 1, 3760 "thanks_url": "", 3761 "webhook_subscribe": "", 3762 "webhook_payment": "", 3763 "webhook_rejected": "", 3764 "webhook_unsubscribe": "", 3765 "webhook_reactive": "", 3766 "end_at": "25-10-2023" 3767} 3768\`\`\` 3769 3770To interpret a response that is not a success, see [how to read an error response](/developers/api/procesos-operativos/errors). 3771`,Ze=`--- 3772title: "API · Get a recurring plan" 3773kind: api-operation 3774status: stable 3775api_version: v1
3776last_verified: 2026-08-29 3777verified_by: equipo-integraciones 3778owner: equipo-integraciones 3779sources: 3780 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 3781locales: [es, en] 3782related: [api/autenticacion, api/recurrentes/planes, api/procesos-operativos/errors] 3783description: "Query of a recurring plan by id." 3784--- 3785 3786\`\`\`http 3787POST /api/v1/getPlanRepeat 3788\`\`\` 3789 3790## What it does [#que-hace] 3791 3792Returns a single recurring plan. 3793 3794## Authentication [#autenticacion] 3795 3796Requires the API bearer token in the \`Authorization\` header â see [authentication](/developers/api/autenticacion). 3797 3798## Parameters [#parametros] 3799 3800<Param id="get-plan-parametro-key" name="key" type="string" required> 3801Tilopay integration key. 3802</Param> 3803 3804<Param id="get-plan-parametro-id" name="id" type="string" required> 3805Recurring plan id. 3806</Param> 3807 3808## Request example [#request] 3809 3810The \`<...>\` values are placeholders: replace them with your own credentials and data. 3811 3812\`\`\`json 3813{ 3814 "key": "<api_key>", 3815 "id": "3" 3816} 3817\`\`\` 3818 3819## Response [#respuesta] 3820 3821\`\`\`json 3822{ 3823 "type": "200", 3824 "message": "Success", 3825 "plan": { 3826 "id": 232, 3827 "title": "Prueba repeat", 3828 "description": "Plan repeat de prueba mensual", 3829 "frequency": 3, 3830 "currency": "USD", 3831 "first_amount": "5.00", 3832 "trial": 0, 3833 "trial_days": 0, 3834 "attempts": 5, 3835 "thanks_url": null, 3836 "webhook_subscribe": null, 3837 "webhook_payment": null, 3838 "webhook_rejected": null, 3839 "webhook_unsubscribe": null, 3840 "webhook_reactive": null, 3841 "modality": [ 3842 { 3843 "id": 292, 3844 "title": "Pago mensual prueba repeat modalidad", 3845 "amount": "10.00" 3846 } 3847 ], 3848 "end_at": null 3849 } 3850} 3851\`\`\` 3852 3853To interpret a response that is not a success, see [how to read an error response](/developers/api/procesos-operativos/errors). 3854`,Qe=`--- 3855title: "API · List recurring plans" 3856kind: api-operation 3857status: stable 3858api_version: v1 3859last_verified: 2026-08-29 3860verified_by: equipo-integraciones 3861owner: equipo-integraciones 3862sources:
3863 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 3864locales: [es, en] 3865related: [api/autenticacion, api/recurrentes/planes, api/procesos-operativos/errors] 3866description: "Listing of the integration's recurring plans." 3867gaps: 3868 - "No response example available." 3869--- 3870 3871\`\`\`http 3872POST /api/v1/getPlansRepeat 3873\`\`\` 3874 3875## What it does [#que-hace] 3876 3877Returns the merchant's recurring plans. 3878 3879## Authentication [#autenticacion] 3880 3881Requires the API bearer token in the \`Authorization\` header â see [authentication](/developers/api/autenticacion). 3882 3883## Parameters [#parametros] 3884 3885<Param id="get-plans-parametro-key" name="key" type="string" required> 3886Tilopay integration key. 3887</Param> 3888 3889## Request example [#request] 3890 3891The \`<...>\` values are placeholders: replace them with your own credentials and data. 3892 3893\`\`\`json 3894{ 3895 "key": "<api_key>" 3896} 3897\`\`\` 3898 3899To interpret a response that is not a success, see [how to read an error response](/developers/api/procesos-operativos/errors). 3900`,$e=`--- 3901title: "API · Recurring · Plans" 3902kind: api-index 3903status: stable 3904api_version: v1 3905last_verified: 2026-08-29 3906verified_by: equipo-integraciones 3907owner: equipo-integraciones 3908sources:
3909 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 3910locales: [es, en] 3911related: [api/autenticacion, api/procesos-operativos/errors] 3912description: "Recurring · Plans operations of the Tilopay API, with parameters and examples." 3913--- 3914 3915## Operations [#operaciones] 3916 3917- [Create recurring plan](/developers/api/recurrentes/planes/create-plan) 3918- [Edit recurring plan](/developers/api/recurrentes/planes/edit-plan) 3919- [Get a recurring plan](/developers/api/recurrentes/planes/get-plan) 3920- [List recurring plans](/developers/api/recurrentes/planes/get-plans) 3921- [Delete recurring plan](/developers/api/recurrentes/planes/delete-plan) 3922 3923Every operation lives on \`https://app.tilopay.com\` and, except for the login operations, requires the API token â see [authentication](/developers/api/autenticacion). 3924`,et=`--- 3925title: "API · Registration and renewal URL" 3926kind: api-operation 3927status: stable 3928api_version: v1 3929last_verified: 2026-08-29 3930verified_by: equipo-integraciones 3931owner: equipo-integraciones 3932sources: 3933 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 3934locales: [es, en] 3935related: [api/autenticacion, api/recurrentes/suscriptores, api/procesos-operativos/errors] 3936description: "Registration or renewal URL of a recurring plan for a given email." 3937--- 3938 3939\`\`\`http 3940POST /api/v1/recurrentUrl 3941\`\`\` 3942 3943## What it does [#que-hace] 3944 3945Returns the registration URL of a recurring plan for a new user, or the renewal URL when the email is already registered. 3946 3947## Authentication [#autenticacion] 3948 3949Requires the API bearer token in the \`Authorization\` header â see [authentication](/developers/api/autenticacion). 3950 3951## Parameters [#parametros] 3952 3953<Param id="consult-url-parametro-key" name="key" type="string" required> 3954Tilopay integration key. 3955</Param> 3956 3957<Param id="consult-url-parametro-id" name="id" type="string" required> 3958Recurring plan id. 3959</Param> 3960 3961<Param id="consult-url-parametro-email" name="email" type="string"> 3962Email of the user the registration link is created for. 3963</Param> 3964 3965## Request example [#request] 3966 3967The \`<...>\` values are placeholders: replace them with your own credentials and data. 3968 3969\`\`\`json 3970{ 3971 "key": "<api_key>", 3972 "id": "1", 3973 "email": "[email protected]" 3974} 3975\`\`\` 3976 3977## Response [#respuesta] 3978 3979\`\`\`json 3980{ 3981 "type": "200", 3982 "message": "", 3983 "url_register": "https://app.tilopay.com/admin/recurrent/register/[email protected]", 3984 "url_renew": "" 3985} 3986\`\`\` 3987 3988To interpret a response that is not a success, see [how to read an error response](/developers/api/procesos-operativos/errors). 3989`,tt=`--- 3990title: "API · Delete subscriber" 3991kind: api-operation 3992status: stable 3993api_version: v1 3994last_verified: 2026-08-29 3995verified_by: equipo-integraciones 3996owner: equipo-integraciones 3997sources:
3998 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 3999locales: [es, en] 4000related: [api/autenticacion, api/recurrentes/suscriptores, api/procesos-operativos/errors] 4001description: "Deletion of a subscriber from a recurring plan." 4002--- 4003 4004\`\`\`http 4005POST /api/v1/deleteSuscriptorRepeat 4006\`\`\` 4007 4008## What it does [#que-hace] 4009 4010Deletes a subscriber from a recurring plan. 4011 4012## Authentication [#autenticacion] 4013 4014Requires the API bearer token in the \`Authorization\` header â see [authentication](/developers/api/autenticacion). 4015 4016## Parameters [#parametros] 4017 4018<Param id="delete-suscriptor-plan-parametro-key" name="key" type="string" required> 4019Tilopay integration key. 4020</Param> 4021 4022<Param id="delete-suscriptor-plan-parametro-id-suscriptor" name="id_suscriptor" type="string" required> 4023Subscriber id. 4024</Param> 4025 4026## Request example [#request] 4027 4028The \`<...>\` values are placeholders: replace them with your own credentials and data. 4029 4030\`\`\`json 4031{ 4032 "key": "<api_key>", 4033 "id_suscriptor": "1" 4034} 4035\`\`\` 4036 4037## Response [#respuesta] 4038 4039\`\`\`json 4040{ 4041 "type": "200", 4042 "status": 1, 4043 "message": "Success" 4044} 4045\`\`\` 4046 4047To interpret a response that is not a success, see [how to read an error response](/developers/api/procesos-operativos/errors). 4048`,nt=`--- 4049title: "API · Edit subscriber" 4050kind: api-operation 4051status: stable 4052api_version: v1 4053last_verified: 2026-08-29 4054verified_by: equipo-integraciones 4055owner: equipo-integraciones 4056sources:
4057 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 4058locales: [es, en] 4059related: [api/autenticacion, api/recurrentes/suscriptores, api/procesos-operativos/errors] 4060description: "Editing the status and expiration of a subscriber." 4061--- 4062 4063\`\`\`http 4064POST /api/v1/editSuscriptorRepeat 4065\`\`\` 4066 4067## What it does [#que-hace] 4068 4069Changes the status or the expiration date of a subscriber. 4070 4071## Authentication [#autenticacion] 4072 4073Requires the API bearer token in the \`Authorization\` header â see [authentication](/developers/api/autenticacion). 4074 4075## Parameters [#parametros] 4076 4077<Param id="edit-suscriptor-plan-parametro-key" name="key" type="string" required> 4078Tilopay integration key. 4079</Param> 4080 4081<Param id="edit-suscriptor-plan-parametro-id" name="id" type="string" required> 4082Subscriber id. 4083</Param> 4084 4085<Param id="edit-suscriptor-plan-parametro-status" name="status" type="string"> 4086Status of the subscriber. 4087 4088| Code | Value | 4089| --- | --- | 4090| 1 | Active | 4091| 3 | Paused | 4092| 4 | Deleted | 4093</Param> 4094 4095<Param id="edit-suscriptor-plan-parametro-expire" name="expire" type="string"> 4096Plan expiration date, \`yy-m-d\` format. 4097</Param> 4098 4099## Request example [#request] 4100 4101The \`<...>\` values are placeholders: replace them with your own credentials and data. 4102 4103\`\`\`json 4104{ 4105 "key": "<api_key>", 4106 "id": "2", 4107 "status": "2", 4108 "expire": "2023-10-25" 4109} 4110\`\`\` 4111 4112## Response [#respuesta] 4113 4114\`\`\`json 4115{ 4116 "type": "200", 4117 "status": 1, 4118 "message": "Success" 4119} 4120\`\`\` 4121 4122To interpret a response that is not a success, see [how to read an error response](/developers/api/procesos-operativos/errors). 4123`,rt=`--- 4124title: "API · Subscribers of a plan" 4125kind: api-operation 4126status: stable 4127api_version: v1 4128last_verified: 2026-08-29 4129verified_by: equipo-integraciones 4130owner: equipo-integraciones 4131sources:
4132 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 4133locales: [es, en] 4134related: [api/autenticacion, api/recurrentes/suscriptores, api/procesos-operativos/errors] 4135description: "Query of the subscribers of a recurring plan." 4136--- 4137 4138\`\`\`http 4139POST /api/v1/getSuscriptorRepeat 4140\`\`\` 4141 4142## What it does [#que-hace] 4143 4144Returns the subscribers associated with a recurring plan. 4145 4146## Authentication [#autenticacion] 4147 4148Requires the API bearer token in the \`Authorization\` header â see [authentication](/developers/api/autenticacion). 4149 4150## Parameters [#parametros] 4151 4152<Param id="get-suscriptor-plan-parametro-key" name="key" type="string" required> 4153Tilopay integration key. 4154</Param> 4155 4156<Param id="get-suscriptor-plan-parametro-id" name="id" type="string" required> 4157Recurring plan id. 4158</Param> 4159 4160## Request example [#request] 4161 4162The \`<...>\` values are placeholders: replace them with your own credentials and data. 4163 4164\`\`\`json 4165{ 4166 "key": "<api_key>", 4167 "id": "2" 4168} 4169\`\`\` 4170 4171## Response [#respuesta] 4172 4173\`\`\`json 4174{ 4175 "type": "200", 4176 "message": "Success", 4177 "suscriptor": [ 4178 { 4179 "id": 360, 4180 "name": "Jhon 1", 4181 "lastname": "D", 4182 "email": "[email protected]", 4183 "modality": "Pago mensual prueba repeat modalidad", 4184 "amount": "10.00", 4185 "expire": "2023-03-26", 4186 "coupon": "", 4187 "status": "Delete", 4188 "create": "2022-10-19 12:48:59" 4189 }, 4190 { 4191 "id": 33364, 4192 "name": "Jhon 2", 4193 "lastname": "D", 4194 "email": "[email protected]", 4195 "modality": "Pago mensual prueba repeat modalidad", 4196 "amount": "10.00", 4197 "expire": "2023-08-05", 4198 "coupon": "", 4199 "status": "Active", 4200 "create": "2023-06-05 14:24:18" 4201 } 4202 ] 4203} 4204\`\`\` 4205 4206To interpret a response that is not a success, see [how to read an error response](/developers/api/procesos-operativos/errors). 4207`,it=`--- 4208title: "API · Pause subscriber" 4209kind: api-operation 4210status: stable 4211api_version: v1 4212last_verified: 2026-08-29 4213verified_by: equipo-integraciones 4214owner: equipo-integraciones 4215sources:
4216 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 4217locales: [es, en] 4218related: [api/autenticacion, api/recurrentes/suscriptores, api/procesos-operativos/errors] 4219description: "Pausing a subscriber's subscription." 4220--- 4221 4222\`\`\`http 4223POST /api/v1/pauseSuscriptorRepeat 4224\`\`\` 4225 4226## What it does [#que-hace] 4227 4228Pauses a subscriber's subscription. 4229 4230## Authentication [#autenticacion] 4231 4232Requires the API bearer token in the \`Authorization\` header â see [authentication](/developers/api/autenticacion). 4233 4234## Parameters [#parametros] 4235 4236<Param id="pause-suscriptor-plan-parametro-key" name="key" type="string" required> 4237Tilopay integration key. 4238</Param> 4239 4240<Param id="pause-suscriptor-plan-parametro-id-suscriptor" name="id_suscriptor" type="string" required> 4241Subscriber id. 4242</Param> 4243 4244## Request example [#request] 4245 4246The \`<...>\` values are placeholders: replace them with your own credentials and data. 4247 4248\`\`\`json 4249{ 4250 "key": "<api_key>", 4251 "id_suscriptor": "1" 4252} 4253\`\`\` 4254 4255## Response [#respuesta] 4256 4257\`\`\`json 4258{ 4259 "type": "200", 4260 "status": 1, 4261 "message": "Success" 4262} 4263\`\`\` 4264 4265To interpret a response that is not a success, see [how to read an error response](/developers/api/procesos-operativos/errors). 4266`,at=`--- 4267title: "API · Reactivate subscriber" 4268kind: api-operation 4269status: stable 4270api_version: v1 4271last_verified: 2026-08-29 4272verified_by: equipo-integraciones 4273owner: equipo-integraciones 4274sources:
4275 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 4276locales: [es, en] 4277related: [api/autenticacion, api/recurrentes/suscriptores, api/procesos-operativos/errors] 4278description: "Reactivation of a subscriber's subscription." 4279--- 4280 4281\`\`\`http 4282POST /api/v1/reactiveSuscriptorRepeat 4283\`\`\` 4284 4285## What it does [#que-hace] 4286 4287Reactivates a paused subscriber's subscription. 4288 4289## Authentication [#autenticacion] 4290 4291Requires the API bearer token in the \`Authorization\` header â see [authentication](/developers/api/autenticacion). 4292 4293## Parameters [#parametros] 4294 4295<Param id="reactive-suscriptor-plan-parametro-key" name="key" type="string" required> 4296Tilopay integration key. 4297</Param> 4298 4299<Param id="reactive-suscriptor-plan-parametro-id-suscriptor" name="id_suscriptor" type="string" required> 4300Subscriber id. 4301</Param> 4302 4303## Request example [#request] 4304 4305The \`<...>\` values are placeholders: replace them with your own credentials and data. 4306 4307\`\`\`json 4308{ 4309 "key": "<api_key>", 4310 "id_suscriptor": "1" 4311} 4312\`\`\` 4313 4314## Response [#respuesta] 4315 4316\`\`\`json 4317{ 4318 "type": "200", 4319 "status": 1, 4320 "message": "Success" 4321} 4322\`\`\` 4323 4324To interpret a response that is not a success, see [how to read an error response](/developers/api/procesos-operativos/errors). 4325`,ot=`--- 4326title: "API · Subscriber payments" 4327kind: api-operation 4328status: stable 4329api_version: v1 4330last_verified: 2026-08-29 4331verified_by: equipo-integraciones 4332owner: equipo-integraciones 4333sources:
4334 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 4335locales: [es, en] 4336related: [api/autenticacion, api/recurrentes/suscriptores, api/procesos-operativos/errors] 4337description: "Payment history of the subscribers of a recurring plan." 4338gaps: 4339 - "No response example available." 4340--- 4341 4342\`\`\`http 4343POST /api/v1/getSuscriptorPayments 4344\`\`\` 4345 4346## What it does [#que-hace] 4347 4348Returns the payments of the subscribers of a recurring plan. 4349 4350## Authentication [#autenticacion] 4351 4352Requires the API bearer token in the \`Authorization\` header â see [authentication](/developers/api/autenticacion). 4353 4354## Parameters [#parametros] 4355 4356<Param id="suscriptor-payments-parametro-key" name="key" type="string" required> 4357Tilopay integration key. 4358</Param> 4359 4360<Param id="suscriptor-payments-parametro-id" name="id" type="string" required> 4361Recurring plan id. 4362</Param> 4363 4364## Request example [#request] 4365 4366The \`<...>\` values are placeholders: replace them with your own credentials and data. 4367 4368\`\`\`json 4369{ 4370 "key": "<api_key>", 4371 "id": "1" 4372} 4373\`\`\` 4374 4375To interpret a response that is not a success, see [how to read an error response](/developers/api/procesos-operativos/errors). 4376`,st=`--- 4377title: "API · Recurring · Subscribers" 4378kind: api-index 4379status: stable 4380api_version: v1 4381last_verified: 2026-08-29 4382verified_by: equipo-integraciones 4383owner: equipo-integraciones 4384sources:
4385 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 4386locales: [es, en] 4387related: [api/autenticacion, api/procesos-operativos/errors] 4388description: "Recurring · Subscribers operations of the Tilopay API, with parameters and examples." 4389--- 4390 4391## Operations [#operaciones] 4392 4393- [Subscribers of a plan](/developers/api/recurrentes/suscriptores/get-suscriptor-plan) 4394- [Edit subscriber](/developers/api/recurrentes/suscriptores/edit-suscriptor-plan) 4395- [Pause subscriber](/developers/api/recurrentes/suscriptores/pause-suscriptor-plan) 4396- [Reactivate subscriber](/developers/api/recurrentes/suscriptores/reactive-suscriptor-plan) 4397- [Delete subscriber](/developers/api/recurrentes/suscriptores/delete-suscriptor-plan) 4398- [Registration and renewal URL](/developers/api/recurrentes/suscriptores/consult-url) 4399- [Subscriber payments](/developers/api/recurrentes/suscriptores/suscriptor-payments) 4400 4401Every operation lives on \`https://app.tilopay.com\` and, except for the login operations, requires the API token â see [authentication](/developers/api/autenticacion). 4402`,ct=`--- 4403title: "API · Recurring charges" 4404kind: api-index 4405status: stable 4406api_version: v1 4407last_verified: 2026-08-29 4408verified_by: equipo-integraciones 4409owner: equipo-integraciones 4410sources:
4411 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 4412locales: [es, en] 4413related: [api/autenticacion, api/procesos-operativos/errors] 4414description: "Recurring charges operations of the Tilopay API, with parameters and examples." 4415--- 4416 4417## Operations [#operaciones] 4418 441916 operations in three subgroups: 4420 4421- [Plans](/developers/api/recurrentes/planes) â 5 4422- [Subscribers](/developers/api/recurrentes/suscriptores) â 7 4423- [Coupons](/developers/api/recurrentes/cupones) â 4 4424 4425Every operation lives on \`https://app.tilopay.com\` and, except for the login operations, requires the API token â see [authentication](/developers/api/autenticacion). 4426`,lt=`--- 4427title: API · Webhooks 4428kind: concept 4429status: stable 4430api_version: v1 4431last_verified: 2026-08-28 4432verified_by: equipo-integraciones 4433owner: equipo-integraciones 4434sources: 4435 - "Respuestas de TecnologÃa, 28-08-2026" 4436locales: [es, en] 4437related: [api/procesos-operativos/errors, reintentos-seguros] 4438gaps: 4439 - "orderHash algorithm: not public, delivered through [email protected]." 4440 - "processPayment webhook contract: delivered on request, not publishable." 4441description: Which events exist, how many retries there are, in what format they arrive and how to confirm the state of a charge. 4442--- 4443 4444## Recurrence [#recurrencia] 4445 4446Six fields configured when **creating or editing a plan**. All optional. 4447 4448| Field | What it is | 4449|---|---| 4450| \`webhook_subscribe\` | Subscription webhook | 4451| \`webhook_payment\` | Charge webhook | 4452| \`webhook_rejected\` | Rejected charge webhook | 4453| \`webhook_unsubscribe\` | Unsubscribe webhook | 4454| \`webhook_reactive\` | Reactivation webhook | 4455| \`thanks_url\` | **Not a webhook:** it is a GET callback | 4456 4457## Payment links [#links-de-pago] 4458 4459\`webhook_url\` is configured when creating the link. 4460 4461## Retries [#reintentos] 4462 4463| Source | Attempts | When it retries | 4464|---|---|---| 4465| Recurrence | 5 | When your response is 400, 404, 502, 504 or 403 | 4466| Purchases | 1 | â | 4467 4468Delivery is considered successful on an **HTTP 200**. Respond 200 as soon as you receive the 4469event and process it separately: anything else counts as a failure, and purchases have no second 4470attempt. 4471 4472## Format [#formato] 4473 4474JSON. 4475 4476## The card token [#token] 4477 4478| Source | Token | 4479|---|---| 4480| Recurrence | **Not sent** | 4481| Purchases | Sent and **usable** | 4482 4483## Origin verification [#verificacion] 4484 4485<Callout type="warn"> 4486The only origin verification available is the \`orderHash\`, and **its algorithm is not public**: 4487it is delivered to merchants who request it by writing to \`[email protected]\`. 4488 4489Until you have the algorithm, do not take irreversible business decisions from webhook content 4490alone: confirm the state against the API before shipping or releasing a service. 4491</Callout> 4492 4493## Main flow webhook [#processpayment] 4494 4495<Callout type="info"> 4496\`processPayment\` also has a webhook. Its contract **is delivered to merchants who request it**: 4497write to \`[email protected]\` to receive it. 4498</Callout> 4499`,ut='---\ntitle: Banking API authentication\nkind: concept\nstatus: stable\napi_version: 1.0.0\nlast_verified: 2026-09-02\nverified_by: equipo-integraciones\nowner: equipo-integraciones\nsources:\n - "Tilopay_API_BaaS.yaml â Banking API OpenAPI 3.0.3 spec, version 1.0.0"\nlocales: [es, en]\ndescription: "Login, token exchange and Bearer JWT usage in Tilopay\'s Banking API."\n---\n\nThe Banking API uses a two-step flow: first you authenticate the customer with email and\npassword, then you exchange the resulting token for a JWT access token that signs every\nother call.\n\nThe three endpoints in the `Auth` group are the only ones that carry **no**\n`Authorization` header. Every other endpoint requires\n`Authorization: Bearer <access_token>`.\n\n## Step 1 â Login [#login]\n\n```http\nPOST /api/public/v1/auth/login\n```\n\nRequired body: `email` (email format) and `password`.\n\n```json\n{\n "email": "[email protected]",\n "password": "â¢â¢â¢â¢â¢â¢â¢â¢"\n}\n```\n\nThe `200` response returns in `data`:\n\n| Field | Type | Description |\n|---|---|---|\n| `gidp_id_token` | string | Identity token for step 2. |\n| `assignments` | array | Available customer contexts. |\n\nEach `assignments` item carries `assignment_id`, `owner_type`, `owner_id`, `tenant_id`,\n`tenant_code`, `country_code`, `role`, `roles` and `status`. Pick the `assignment_id` of\nthe context you will operate with.\n\n## Step 2 â Token exchange [#exchange]\n\n```http\nPOST /api/public/v1/auth/token/exchange\n```\n\nRequired body: `gidp_id_token` (from step 1) and `assignment_id` (the chosen context).\n\n```json\n{\n "gidp_id_token": "eyJhbGciOi...",\n "assignment_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"\n}\n```\n\nThe `200` response returns in `data`:\n\n| Field | Type | Description |\n|---|---|---|\n| `token` | str
4499ing | JWT access token. |\n| `expires_in` | integer | Token lifetime in seconds. |\n| `claims` | object | Resolved token context. |\n\n`claims` includes `sub`, `subject_kind`, `user_type`, `tenant_id`, `owner_type`,\n`owner_id`, `roles`, `scopes`, `country_code`, `locale`, `channel`, `idp`, `idp_sub` and\n`idempotency_key`.\n\n## Step 3 â Use the Bearer token [#bearer]\n\nThe declared security scheme is `BearerAuth`: HTTP bearer with JWT format.\n\n```http\nAuthorization: Bearer <access_token>\n```\n\nContext travels **inside** the token: business operations do not take `tenant_id`,\n`owner_id` or `owner_type` as parameters. The token alone scopes which accounts and\npayments you can reach.\n\nWhen the token is absent, expired or invalid, the response is `401` with\n`response_code: UNAUTHORIZED`. If the token is valid but the context does not authorize\nthe resource, it is `403` with `FORBIDDEN`. Repeat step 2 to renew the access token\nbefore `expires_in` elapses.\n\n## Passwords [#password]\n\n```http\nPOST /api/public/v1/auth/request-set-password\n```\n\nStarts the set/reset password process for the given email. It requires no prior\nauthentication and always responds the same way whether or not the account exists, so it\nnever reveals if an email is registered.\n\n```json\n{\n "email": "[email protected]"\n}\n```\n',dt=`--- 4500title: Banking API catalogs 4501kind: api-operation 4502status: stable 4503api_version: 1.0.0 4504last_verified: 2026-09-02 4505verified_by: equipo-integraciones 4506owner: equipo-integraciones 4507sources: 4508 - "Tilopay_API_BaaS.yaml â Banking API OpenAPI 3.0.3 spec, version 1.0.0" 4509locales: [es, en] 4510description: "Customer identification type catalog per country in the Banking API." 4511--- 4512 4513The \`Catalogs\` group publishes the values your integration must use in customer 4514identification fields, instead of hardcoding them. 4515 4516\`\`\`http 4517GET /api/public/v1/catalogs/customer-identification-types 4518\`\`\` 4519 4520Filter by two-letter \`country_code\` to get the types in force in that country. Fetch the 4521catalog when you start the integration and cache the result; read it again before adding a 4522new country. 4523 4524## Operations [#operaciones] 4525 4526<BaasOperations slug="api-bancario/catalogos" /> 4527`,ft=`--- 4528title: Banking API conventions 4529kind: concept 4530status: stable 4531api_version: 1.0.0 4532last_verified: 2026-09-02 4533verified_by: equipo-integraciones 4534owner: equipo-integraciones 4535sources: 4536 - "Tilopay_API_BaaS.yaml â Banking API OpenAPI 3.0.3 spec, version 1.0.0" 4537locales: [es, en] 4538description: "Response envelope, correlation, safe retries, pagination and date format in the Banking API." 4539--- 4540 4541Every Banking API operation shares the same response shape, the same pagination rules 4542and the same date format. This page describes what the spec declares across all 4543endpoints. 4544 4545## Response envelope [#envelope] 4546 4547Every response, successful or not, travels in the same envelope: 4548 4549\`\`\`json 4550{ 4551 "success": true, 4552 "http_status_code": 200, 4553 "response_code": "OK", 4554 "message": "The request was processed successfully.", 4555 "correlation_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", 4556 "data": {} 4557} 4558\`\`\` 4559 4560| Field | Type | Description | 4561|---|---|---| 4562| \`success\` | boolean | \`true\` on successful responses; \`false\` on errors. | 4563| \`http_status_code\` | integer | Repeats the HTTP status inside the body. | 4564| \`response_code\` | string | Code from the [\`response_code\` catalog](/developers/api-bancario/errores). | 4565| \`message\` | string | Human-readable response message. | 4566| \`correlation_id\` | string | Call identifier. | 4567| \`data\` | object | Operation payload. | 4568 4569Error responses also carry \`errors\`, a detail object that may include arbitrary fields 4570such as \`code\`, \`message\` or \`detail\`. 4571 4572Branch your logic on \`response_code\`, never on the \`message\` text. 4573 4574## Correlation [#correlacion] 4575 4576Send \`X-Correlation-Id\` on the request to propagate your own identifier; the value comes 4577back as \`correlation_id\` in the envelope. Keep it in your logs: it is what support uses 4578to trace a specific call. 4579 4580## Safe retries [#reintentos] 4581 4582Two operations accept the \`Idempotency-Key\` header: 4583 4584\`\`\`http 4585POST /api/public/v1/transactions/payments 4586POST /api/public/v1/accounts/statements 4587\`\`\` 4588 4589Resending the same key with the same body returns the original result instead of 4590creating a second record, so a network timeout can be retried without duplicating. If 4591you reuse a key with a different body, the response is \`409\` with 4592\`response_code: IDEMPOTENCY_CONFLICT\`. 4593 4594Generate one key per business intent (for example a UUID per order), not one per retry. 4595Every other operation is a read and can be repeated with no additional effects. 4596 4597## Pagination [#paginacion] 4598 4599The API uses two schemes depending on the resource. 4600 4601**Cursor, on the payment list.** \`GET /api/public/v1/transactions/payments\` accepts 4602\`limit\` (default 20, maximum 100) and \`cursor\`. The response carries 4603\`pagination.next_cursor\`: pass it as \`cursor\` on the next request. When it is empty or 4604omitted, there are no more pages. 4605 4606**Offset, on accounts.** \`GET /api/public/v1/accounts\` and 4607\`GET /api/public/v1/accounts/balances\` accept \`limit\` (1 to 100) and \`offset\` (from 0), 4608and return \`pagination\` with \`limit\`, \`offset\` and \`total\`. 4609 4610## Dates and amounts [#formatos] 4611 4612Date parameters and fields use RFC 3339, for example \`2026-09-02T15:04:05Z\`. The 4613\`date_from\` and \`date_to\` filters on the payment list follow that same format. 4614 4615## Host health and documentation [#host] 4616 4617The host itself exposes three service routes: 4618 4619\`\`\`http 4620GET /api/public/v1/healthz 4621GET /openapi.yaml 4622GET /docs 4623\`\`\` 4624 4625\`healthz\` is for availability checks, \`openapi.yaml\` returns the raw spec and \`/docs\` the 4626service's documentation UI. In this portal the same spec is available at 4627[openapi.json](/developers/api-bancario/openapi.json) and 4628[openapi.yaml](/developers/api-bancario/openapi.yaml). 4629`,pt=`--- 4630title: Banking API accounts 4631kind: api-operation 4632status: stable 4633api_version: 1.0.0
4634last_verified: 2026-09-02 4635verified_by: equipo-integraciones 4636owner: equipo-integraciones 4637sources: 4638 - "Tilopay_API_BaaS.yaml â Banking API OpenAPI 3.0.3 spec, version 1.0.0" 4639locales: [es, en] 4640description: "Banking API account operations: validation, listing, balances and statements." 4641--- 4642 4643The \`Accounts\` group covers the account as a resource: validate a destination account 4644before transferring, list accessible accounts, check balances and request statements. 4645 4646\`\`\`http 4647POST /api/public/v1/accounts/validate 4648GET /api/public/v1/accounts 4649GET /api/public/v1/accounts/balances 4650GET /api/public/v1/accounts/balance 4651POST /api/public/v1/accounts/statements 4652GET /api/public/v1/accounts/statements/{request_id} 4653\`\`\` 4654 4655## Resource rules [#reglas] 4656 4657**Scope.** The listing returns only the accounts the token authorizes; \`tenant_id\` and 4658\`owner_id\` are never sent as parameters. 4659 4660**Validate first.** Validate the destination account before creating a payment: the 4661operation confirms the account exists and is eligible, and returns the holder data the 4662service exposes. 4663 4664**Asynchronous statements.** Generation is requested with a \`POST\` that accepts 4665\`Idempotency-Key\` and returns a \`request_id\`; you then poll that \`request_id\` until the 4666result is available. See 4667[safe retries](/developers/api-bancario/convenciones#reintentos). 4668 4669**Pagination.** \`GET /api/public/v1/accounts\` and \`GET /api/public/v1/accounts/balances\` 4670use \`limit\` and \`offset\`, and return \`pagination\` with \`limit\`, \`offset\` and \`total\`. 4671 4672## Operations [#operaciones] 4673 4674<BaasOperations slug="api-bancario/cuentas" /> 4675`,mt=`--- 4676title: Banking API response codes 4677kind: concept 4678status: stable 4679api_version: 1.0.0 4680last_verified: 2026-09-02 4681verified_by: equipo-integraciones 4682owner: equipo-integraciones 4683sources: 4684 - "Tilopay_API_BaaS.yaml â Banking API OpenAPI 3.0.3 spec, version 1.0.0" 4685locales: [es, en] 4686description: "Full response_code catalog for Tilopay's Banking API and how to react to each family." 4687--- 4688 4689Every Banking API error arrives in the 4690[standard envelope](/developers/api-bancario/convenciones#envelope), with \`success: false\`, 4691the HTTP status in \`http_status_code\` and a \`response_code\` from the catalog. Branch on 4692\`response_code\`. 4693 4694## How to react per family [#familias] 4695 4696**Request \`4xx\`.** The body or parameters are invalid, or the resource does not exist. 4697Fix the call before resending it: retrying as-is returns the same error. This covers 4698\`INVALID_REQUEST\`, \`VALIDATION_ERROR\`, \`NOT_FOUND\` and business codes such as 4699\`INSUFFICIENT_FUNDS\` or \`LIMIT_EXCEEDED\`. 4700 4701**\`401\` and \`403\`.** The token is absent, expired, or its context does not authorize the 4702resource. Renew the access token with the 4703[token exchange](/developers/api-bancario/autenticacion#exchange); if it persists with a 4704fresh token, that context has no permission over the resource. 4705 4706**\`409 IDEMPOTENCY_CONFLICT\`.** You reused an \`Idempotency-Key\` with a different body. Use 4707a new key for the new intent; see 4708[safe retries](/developers/api-bancario/convenciones#reintentos). 4709 4710**\`429\`.** You exceeded the call limit. Space out requests and retry with backoff. 4711 4712**\`5xx\`.** Service-side failure. Retry with backoff, and on \`POST\` calls resend the 4713**same** \`Idempotency-Key\` so the record is not duplicated. Keep the \`correlation_id\` 4714before escalating to support. 4715 4716## Full catalog [#catalogo] 4717 4718These are the 28 values the spec declares in the \`ResponseCode\` enum, with the HTTP 4719statuses they appear under. \`OK\` is the code of successful responses. 4720 4721<BaasResponseCodes /> 4722 4723A \`response_code\` outside this list is not part of the API's 1.0.0 contract: treat it as a 4724generic error based on its HTTP status and report it with the \`correlation_id\`. 4725`,ht=`--- 4726title: Banking API payments 4727kind: api-operation 4728status: stable 4729api_version: 1.0.0 4730last_verified: 2026-09-02 4731verified_by: equipo-integraciones 4732owner: equipo-integraciones 4733sources: 4734 - "Tilopay_API_BaaS.yaml â Banking API OpenAPI 3.0.3 spec, version 1.0.0" 4735locales: [es, en] 4736description: "Banking API payment operations: create, fetch, list and search PIN and
4736SINPE Móvil payments." 4737--- 4738 4739The \`Payments\` group covers a payment's full cycle: create it, fetch it by identifier, 4740list it with filters and search it by any of its references. 4741 4742\`\`\`http 4743POST /api/public/v1/transactions/payments 4744GET /api/public/v1/transactions/payments 4745GET /api/public/v1/transactions/payments/{payment_id} 4746POST /api/public/v1/transactions/payments/search 4747\`\`\` 4748 4749## Resource rules [#reglas] 4750 4751**Methods.** \`payment_method_code\` accepts \`PIN\` and \`SINPE_MOVIL\`. **Direction.** 4752\`direction\` accepts \`OUT\` (outbound) and \`IN\` (inbound). **Destination account.** it is 4753identified by \`IBAN\` or by \`PHONE\`, depending on the method. 4754 4755**Your own reference.** \`client_reference\` is your payment identifier and is unique per 4756tenant: two payments of the same customer cannot share it. Use it to look a payment up 4757without storing the \`payment_id\`. 4758 4759**Safe retries.** Creation accepts \`Idempotency-Key\`; resending the same key with the same 4760body returns the original payment instead of creating another one. See 4761[safe retries](/developers/api-bancario/convenciones#reintentos). 4762 4763## States [#estados] 4764 4765A payment moves through five states: \`pending\`, \`processing\`, \`confirmed\`, \`posted\` and 4766\`failed\`. 4767 4768A reversal is **not a state**: a reversed payment stays in \`posted\` and is recognized by 4769\`result: reversed\` and \`has_reversal: true\`, plus the 4770[\`payment.reversed\`](/developers/api-bancario/webhooks) event. Always check those two 4771fields before treating a payment as final. 4772 4773## Operations [#operaciones] 4774 4775<BaasOperations slug="api-bancario/pagos" /> 4776`,gt=`--- 4777title: Banking API webhooks 4778kind: api-operation 4779status: stable 4780api_version: 1.0.0 4781last_verified: 2026-09-02 4782verified_by: equipo-integraciones 4783owner: equipo-integraciones 4784sources: 4785 - "Tilopay_API_BaaS.yaml â Banking API OpenAPI 3.0.3 spec, version 1.0.0" 4786locales: [es, en] 4787description: "Destination registration, subscribable features and payload contracts for Banking API webhooks." 4788--- 4789 4790The \`Webhooks\` group lets you register the HTTPS destination where you receive events, see 4791which features you can subscribe to per payment method and fetch each event's payload 4792contract before writing the receiver. 4793 4794\`\`\`http 4795POST /api/public/v1/webhook/destination 4796GET /api/public/v1/webhook/features 4797GET /api/public/v1/webhook/event-contracts/{event_type} 4798\`\`\` 4799 4800## Events [#eventos] 4801 4802The spec declares four event types: 4803 4804| Event | When it arrives | 4805|---|---| 4806| \`payin.posted\` | An inbound movement was credited. | 4807| \`payment.succeeded\` | The payment finished successfully. | 4808| \`payment.failed\` | The payment finished with a failure. | 4809| \`payment.reversed\` | The payment was reversed. | 4810 4811A reversed payment keeps the \`posted\` state and is told apart by \`result: reversed\` and 4812\`has_reversal: true\`; see [payment states](/developers/api-bancario/pagos#estados). 4813 4814## Receiver best practices [#receptor] 4815 4816Respond \`2xx\` as soon as you receive the event and process it separately: a slow receiver 4817causes redeliveries. Treat events as potentially repeated and deduplicate by the payment 4818identifier. And do not trust the final state to the webhook alone: confirm it with 4819[the payment lookup](/developers/api-bancario/pagos#operaciones). 4820 4821## Operations [#operaciones] 4822 4823<BaasOperations slug="api-bancario/webhooks" /> 4824
4825## Payload contracts [#contratos] 4826 4827Each event declares its own field contract. These are the ones the spec publishes: 4828 4829<BaasWebhookContracts /> 4830`,_t=`--- 4831title: Tilopay Banking API 4832kind: api-index 4833status: stable 4834api_version: 1.0.0 4835last_verified: 2026-09-02 4836verified_by: equipo-integraciones 4837owner: equipo-integraciones 4838sources: 4839 - "Tilopay_API_BaaS.yaml â Banking API OpenAPI 3.0.3 spec, version 1.0.0" 4840locales: [es, en] 4841related: [server-to-server] 4842description: "Reference for Tilopay's Banking API (BaaS), generated from its OpenAPI 3.0.3 spec, version 1.0.0." 4843--- 4844 4845Tilopay's Banking API lets an integrated client initiate payments (PIN and SINPE Móvil), 4846check their status, manage accounts and subscribe to payment event webhooks, always 4847limited to the accounts the access token authorizes. 4848 4849**It is a separate product from the payment gateway.** It runs on its own 4850infrastructure, with its own host, credentials and authentication. A merchant already 4851integrated with the acquiring API does not get access to this one automatically. 4852 4853This reference is generated from the Banking API OpenAPI 3.0.3 spec, version **1.0.0**. 4854 4855## What it can do [#que-permite] 4856 4857**Payments.** Create a payment, fetch it by identifier, list it by account and search it 4858by \`payment_id\`, \`public_id\` or \`client_reference\`; the declared methods are \`PIN\` and 4859\`SINPE_MOVIL\`, in \`OUT\` or \`IN\` direction. 4860[See payment operations](/developers/api-bancario/pagos). 4861 4862**Accounts.** Validate a destination account before transferring, list accessible 4863accounts with or without balances, check an account balance and request statements 4864asynchronously. 4865[See account operations](/developers/api-bancario/cuentas). 4866 4867**Webhooks.** Register an encrypted HTTPS destination, list the features you can 4868subscribe to per payment method and fetch each event's payload contract. 4869[See webhook operations](/developers/api-bancario/webhooks). 4870 4871**Catalogs.** Customer identification person types per country. 4872[See catalogs](/developers/api-bancario/catalogos). 4873 4874The API also exposes \`GET /api/public/v1/healthz\` for health checks, plus \`GET 4875/openapi.yaml\` and \`GET /docs\` for the raw spec and the host's own documentation UI. 4876 4877### Platform capabilities outside public API v1 [#fuera-de-alcance] 4878 4879Tilopay's banking platform offers commercial capabilities that **public API v1 does not 4880declare**: DTR transfers, VISA or Mastercard card issuing and collections management. 4881There are no operations for them in this version of the API; to evaluate them, write to 4882**[email protected]**. 4883 4884## Environments [#entornos] 4885 4886The spec declares a single server, the sandbox one: 4887 4888\`\`\`text 4889https://api-baas-sandbox.tilopay.com 4890\`\`\` 4891 4892The production host and each environment's credentials are handed over when access is 4893enabled. Routes and contracts are the same in both environments. 4894 4895## Machine-readable artifacts [#artefactos] 4896 4897The full spec is served, with open CORS, in two formats: 4898 4899- [openapi.json](/developers/api-bancario/openapi.json) 4900- [openapi.yaml](/developers/api-bancario/openapi.yaml) 4901 4902It is a different artifact from the acquiring API spec 4903([/developers/openapi.json](/developers/openapi.json)): they are two separate APIs. 4904 4905## How to get access [#acceso] 4906 4907Access is restricted and granted on request, for operations in Costa Rica. To learn 4908about the product and request it: [baas.tilopay.com](https://baas.tilopay.com), stating 4909estimated monthly volume, use case and systems to integrate. 4910 4911## Where to go next [#siguiente] 4912 49131. [Authentication](/developers/api-bancario/autenticacion) â login, token exchange and Bearer. 49142. [Conventions](/developers/api-bancario/convenciones) â envelope, correlation, safe retries, pagination and dates. 49153. [Response codes](/developers/api-bancario/errores) â full \`response_code\` catalog. 4916`,vt=`--- 4917title: Tokenization and saved cards 4918kind: concept 4919status: draft 4920last_verified: 2026-08-28 4921verified_by: henry 4922owner: equipo-integraciones 4923sources: [] 4924locales: [es, en] 4925related: [] 4926draft: true 4927description: Page pending verified content. 4928--- 4929 4930<Callout type="warn"> 4931Page pending. The previous content did not come from a verified source and was removed.
4932Nothing here is normative: no method names, no fields, no behaviour. 4933</Callout> 4934`,yt=`--- 4935title: "Environments: testing and production" 4936kind: concept 4937status: stable 4938api_version: v1 4939last_verified: 2026-08-28 4940verified_by: equipo-integraciones 4941owner: equipo-integraciones 4942sources: 4943 - "Respuestas de TecnologÃa, 28-08-2026" 4944locales: [es, en] 4945related: [api/autenticacion, sdk/reference/init, tarjetas-de-prueba] 4946description: Testing and production share one host. The mode is switched from the account and verified with the test field returned by Init(). 4947--- 4948 4949<Callout type="warn"> 4950**There is no sandbox host.** Testing and production use the same host: 4951\`app.tilopay.com\`. The URL does not tell you which mode you are in. 4952</Callout> 4953 4954## How the mode is switched [#como-se-cambia] 4955 4956The mode is switched **from the account in the Tilopay portal**, not from the integration. 4957There is no parameter, header or alternate URL that changes it from code. 4958 4959## How to verify it [#como-se-verifica] 4960 4961\`Tilopay.Init()\` returns a **\`test\`** field: 4962 4963| Value | Meaning | 4964|---|---| 4965| \`0\` | Production | 4966| \`1\` | Testing | 4967 4968That is the only signal available at runtime. Read it and surface it in your own checkout 4969while developing. 4970 4971## The real risk [#riesgo] 4972 4973<Callout type="warn"> 4974Because the host is the same, an integrator can believe they are testing while actually 4975being in production, taking real money. **Verify \`test\` before assuming the mode.** If your 4976integration moves money, make an unexpected \`test: 0\` fail loudly in your development 4977environments. 4978</Callout> 4979 4980## Test cards [#tarjetas] 4981 4982In testing mode you charge with the [test cards](/en/developers/tarjetas-de-prueba): each 4983one lists the number, brand, expected result and whether it opens the 3DS challenge screen. 4984`,bt=`--- 4985title: Hosted payment page 4986kind: guide 4987status: stable 4988api_version: v1 4989last_verified: 2026-08-28 4990verified_by: equipo-integraciones 4991owner: equipo-integraciones 4992sources: 4993 - "Respuestas de TecnologÃa, 28-08-2026" 4994locales: [es, en] 4995related: [sdk, api/hosted-payment-page, api/autenticacion, api/webhooks] 4996gaps: 4997 - "Hosted payment page endpoint, parameters and callback format: unverified." 4998description: The integration path where the customer pays on a page hosted by Tilopay and your server receives the result. 4999--- 5000 5001## What it is [#que-es] 5002 5003Your server requests a payment URL from the API, redirects the customer to that Tilopay page 5004and receives the result on your callback URL. 5005 5006Card data is typed on a Tilopay page: **the merchant never sees a card number** and the 5007merchant server stays out of that flow. 5008 5009The API operation for this path lives in [API · processPayment](/developers/api/hosted-payment-page/process-payment). 5010 5011## Difference from a payment link [#diferencia-link] 5012 5013- **Hosted payment page**: your server requests a payment URL via API and redirects the customer to it. Best for integrated checkout flows in your site or app. 5014- **Payment link**: a reusable URL created via API or the dashboard and shared by message, email, social media or QR. The customer pays when convenient; no redirect from your flow is needed. 5015- In short: HPP for integrated, one-time checkout; payment links for shared, low-front-end charges. 5016 5017## Who it is for [#para-quien] 5018 5019For teams that take payments with their own code but prefer not to build or maintain the card 5020form. What you need is backend work: request the URL and handle the callback. 5021 5022## What you need before starting [#requisitos] 5023 50241. **Your own credentials.** There are no shared sandbox credentials: every developer gets 5025 theirs through [developer registration](/developers/registro). 50262. **API authentication.** See [authentication](/developers/api/autenticacion). 50273. **A callback URL of yours** that can receive the transaction result. 5028 5029## How to confirm the state of a charge [#confirmacion] 5030 5031The result arriving on your callback is not the only signal available, and not every error 5032response travels with an HTTP 4xx: 5033 5034- Read [how to read an error response](/developers/api/procesos-operativos/errors) before declaring success. 5035- Configure [webhooks](/developers/api/webhooks) for the events you care about. 5036- If a call fails without a clear response, resolve the state with 5037 [safe retries](/developers/reintentos-seguros). 5038 5039## Environments [#entornos] 5040 5041Testing and production share the same host. See 5042[environments](/developers/entornos) before taking real money. 5043 5044## Compliance [#cumplimiento] 5045 5046Together with the no-code path, this is the one that exposes your infrastru
5046cture the least. 5047Confirm the applicable scope with your compliance team. 5048 5049## If you prefer the form on your own site [#alternativa] 5050 5051Use the [JavaScript SDK](/developers/sdk): the design is yours and the data still does not 5052pass through your server. 5053`,xt=`--- 5054title: Safe retries and orderNumber 5055kind: concept 5056status: stable 5057api_version: v1 5058last_verified: 2026-08-28 5059verified_by: equipo-integraciones 5060owner: equipo-integraciones 5061sources: 5062 - "Respuestas de TecnologÃa, 28-08-2026" 5063locales: [es, en] 5064related: [api/hosted-payment-page, sdk/reference/init, concepts/flujo-de-pago] 5065description: The API is not idempotent. Exactly what to do when a payment call dies on a timeout. 5066--- 5067 5068<Callout type="warn"> 5069**The Tilopay API is not idempotent.** There is no idempotency key and no retry that returns the 5070original transaction. If you come from other processors, this is the assumption to dismantle 5071before writing code. 5072</Callout> 5073 5074## \`orderNumber\` is unique forever [#ordernumber] 5075 5076\`orderNumber\` is unique per merchant **across their entire operation**, forever. It does not 5077reset daily, monthly or seasonally. 5078 5079If it repeats, **the new transaction is rejected** with the response **"Transacción 5080duplicada"** (duplicate transaction). It does not return the original transaction: it returns a 5081rejection. 5082 5083## The timeout problem [#timeout] 5084 5085When a payment call dies on a network error or timeout, you do not know whether the transaction 5086was created. And neither intuitive way out works: 5087 5088| What you would do | What happens | 5089|---|---| 5090| Retry with the same \`orderNumber\` | Duplicate rejection, even if the first one went through | 5091| Retry with a new \`orderNumber\` | Risk of double charge | 5092 5093**On a network timeout there is no safe retry.** 5094 5095## What to do instead [#que-hacer] 5096 5097Query the state before deciding: 5098 50991. Call \`POST /api/v1/consult\` with the original \`orderNumber\`. 51002. If the transaction exists, use its result. Do not retry. 51013. If it does not exist, then you can retry â and you can reuse the same \`orderNumber\`, because 5102 it was not consumed. 5103 5104\`\`\`text 5105payment â timeout 5106 â 5107 âââ consult(original orderNumber) 5108 ââ exists â use that result 5109 ââ not found â retry 5110\`\`\` 5111 5112## Design consequences [#diseno] 5113 5114- Generate the \`orderNumber\` in your system **before** calling the payment and persist it. If you 5115 generate it on the fly, after a timeout you have nothing to query with. 5116- Never derive the \`orderNumber\` from something that can repeat (recycled cart number, truncated 5117 timestamp, resettable counter). 5118- A "Transacción duplicada" does not mean the charge failed: it means that \`orderNumber\` was 5119 already used. Query before showing the customer an error. 5120`,St=`--- 5121title: Form fields 5122kind: concept 5123status: stable 5124last_verified: 2026-08-28 5125verified_by: equipo-integraciones 5126owner: equipo-integraciones 5127sources: 5128 - "Respuestas de TecnologÃa, 28-08-2026" 5129locales: [es, en] 5130related: [sdk, sdk/instalacion, sdk/reference/init] 5131gaps: 5132 - "Whether the SDK also reads a tlpy_phone_number input from the DOM: unconfirmed." 5133description: The tlpy_* ids the V2 SDK looks for in your form, and the responseTilopay container it needs for 3DS. 5134--- 5135 5136The V2 SDK does not render the form: it takes over the inputs that already exist on your 5137page, finding them by \`id\`. Those ids are a contract â change one and the SDK stops finding 5138the field. 5139 5140<Callout type="info"> 5141**The contract is the inputs, not the containers.** You can name the \`div\` elements that 5142wrap the fields however you want: the SDK does not look for them. The only exception is 5143\`responseTilopay\`, which is required. 5144</Callout> 5145 5146## Fields [#campos] 5147 5148<Param id="campo-tlpy-payment-method" name="tlpy_payment_method" type="text | select" required> 5149Holds the payment method id obtained from Tilopay. It may be visible or hidden, at the 5150merchant's discretion. 5151</Param> 5152 5153<Param id="campo-tlpy-saved-cards" name="tlpy_saved_cards" type="select" required> 5154Holds the saved card id obtained from Tilopay. If the customer has no saved cards, hide it. 5155</Param> 5156 5157<Param id="campo-tlpy-cc-number" name="tlpy_cc_number" type="text" required> 5158Card number. 5159</Param> 5160 5161<Param id="campo-tlpy-cc-expiration-date" name="tlpy_cc_expiration_date" type="text" required> 5162Expiration date in month/year format, for example \`01/25\`. 5163</Param> 5164 5165<Param id="campo-tlpy-cvv" name="tlpy_cvv" type="text" required> 5166Security code. When the customer uses a saved card, this field must be enabled so they can 5167type the CVV. 5168</Param> 5169 5170<Param id="campo-response-tilopay" name="responseTilopay" type="div" required>
5171Required container, **outside the form**. This is where the SDK mounts the 3DS flow. 5172</Param> 5173 5174## The Yappy phone does not travel through the DOM [#yappy] 5175 5176The Yappy phone number is **not** read from a form field: it is sent in the \`phoneYappy\` 5177parameter of [\`Init()\`](/developers/sdk/reference/init) or 5178[\`updateOptions()\`](/developers/sdk/reference/update-options). 5179 5180## Example structure [#estructura] 5181 5182The \`div\` elements in this example are free-form; the input \`id\`s and \`responseTilopay\` are 5183not. 5184 5185\`\`\`html 5186<div class="payFormTilopay"> 5187 <select id="tlpy_payment_method" name="tlpy_payment_method"></select> 5188 5189 <div> 5190 <select id="tlpy_saved_cards" name="tlpy_saved_cards"></select> 5191 <input type="text" id="tlpy_cc_number" name="tlpy_cc_number" /> 5192 <input type="text" id="tlpy_cc_expiration_date" name="tlpy_cc_expiration_date" /> 5193 <input type="text" id="tlpy_cvv" name="tlpy_cvv" /> 5194 </div> 5195</div> 5196 5197<div id="responseTilopay"></div> 5198\`\`\` 5199`,Ct=`--- 5200title: SDK installation 5201kind: guide 5202status: stable 5203last_verified: 2026-08-28 5204verified_by: equipo-integraciones 5205owner: equipo-integraciones 5206sources: 5207 - "Respuestas de TecnologÃa, 28-08-2026" 5208locales: [es, en] 5209related: [sdk, sdk/campos-del-formulario, sdk/reference/init] 5210description: The V2 SDK script tag, which versions exist, and which versioning guarantees do not exist. 5211--- 5212 5213## The script [#script] 5214 5215\`\`\`html 5216<script src="https://app.tilopay.com/sdk/v2/sdk_tpay.min.js"><\/script> 5217\`\`\` 5218 5219Load it before your own checkout code. The SDK exposes the global \`Tilopay\` object. 5220 5221## jQuery is not required [#jquery] 5222 5223<Callout type="info"> 5224**jQuery is NOT required.** It was a leftover from SDK V1. The article published so far 5225said otherwise and it is wrong: you can install SDK V2 without jQuery on the page. 5226</Callout> 5227 5228## Versions [#versiones] 5229 5230There are only two versions: 5231 5232| Version | Status | 5233|---|---| 5234| \`v1\` | Unsupported | 5235| \`v2\` | Current | 5236 5237## What does not exist [#garantias] 5238 5239<Callout type="warn"> 5240**There is no immutable versioning, no SRI hash and no changelog.** The 5241\`/sdk/v2/sdk_tpay.min.js\` URL is not pinned to a specific version: its contents can change 5242without prior notice and without public release notes. 5243 5244Practical consequences: 5245 5246- You cannot set \`integrity="sha384-..."\` on the \`script\` tag, because the file changes. 5247- You cannot rely on a build number to reproduce a bug. 5248- Keep smoke tests for your checkout running periodically, not only on deploy. 5249</Callout> 5250 5251## What is next [#que-sigue] 5252 5253- [Form fields](/developers/sdk/campos-del-formulario) â the ids the SDK looks for. 5254- [\`Tilopay.Init()\`](/developers/sdk/reference/init) â start the purchase. 5255`,wt=`--- 5256title: Tilopay.getCardType() 5257kind: sdk-method 5258status: stable 5259last_verified: 2026-08-28 5260verified_by: equipo-integraciones 5261owner: equipo-integraciones 5262sources: 5263 - "Respuestas de TecnologÃa, 28-08-2026" 5264locales: [es, en] 5265related: [sdk/reference/update-options, sdk/campos-del-formulario] 5266gaps: 5267 - "What it returns for an unsupported brand or an incomplete number: unverified." 5268description: Returns the brand of the card the customer is typing, so you can show an icon while they type. 5269--- 5270 5271Returns the card brand from the number the customer already typed into \`tlpy_cc_number\`. The 5272typical use is showing the brand icon while the customer types. 5273 5274## Signature [#firma] 5275 5276\`\`\`js 5277await Tilopay.getCardType() 5278\`\`\` 5279 5280It takes no parameters. 5281 5282**Precondition:** the customer must have already typed the card number. 5283 5284## Call [#llamada] 5285 5286\`\`\`js 5287const type = await Tilopay.getCardType(); 5288\`\`\` 5289 5290## Response [#respuesta] 5291 5292\`\`\`json 5293{ 5294 "message": "visa" 5295} 5296\`\`\` 5297 5298<Param id="get-card-type-message" name="message" type="string"> 5299The card brand. 5300</Param> 5301 5302## Supported brands [#marcas-soportadas] 5303 5304VISA · MASTERCARD · AMEX 5305 5306Use the result for presentation only: brand validation happens when Tilopay processes the 5307charge, not in this method. 5308`,Tt=`--- 5309title: Tilopay.getSinpeMovil() 5310kind: sdk-method 5311status: stable 5312last_verified: 2026-08-28 5313verified_by: equipo-integraciones 5314owner: equipo-integraciones 5315sources: 5316 - "Respuestas de TecnologÃa, 28-08-2026" 5317locales: [es, en] 5318related: [sdk/reference/update-options, payment-methods/sinpe-movil] 5319description: Returns the data to show the customer to pay via SINPE Móvil and activates the collection listener. 5320--- 5321 5322SINPE Móvil is not charged from the form: the customer makes the transfer from their own bank. 5323This method returns the data you must show them â destination phone, exact amount and 5324description code. 5325 5326## When to use it [#cuando] 5327 5328When the merchant has a SINPE Móvil method available and the customer selects it from the list 5329returned by [\`Init()\`](/developers/sdk/reference/init). 5330 5331<Callout type="info"> 5332**It is not just a getter.** Besides returning the data, this method **triggers the SINPE 5333listener with the Tilopay backend**. Calling it is part of the collection flow, not a 5334presentation detail. 5335</Callout> 5336 5337## Signature [#firma] 5338 5339\`\`\`js 5340await Tilopay.getSinpeMovil() 5341\`\`\` 5342 5343It takes no parameters. 5344 5345**Preconditions:** 5346 5347- The customer must have selected SINPE Móvil as the payment method. 5348- \`typeDni\` and \`dni\` must have been sent earlier, via \`Init()\` or 5349 [\`updateOptions()\`](/developers/sdk/reference/update-options). 5350 5351## Call [#llamada] 5352 5353\`\`\`js 5354const params = await Tilopay.getSinpeMovil(); 5355\`\`\` 5356 5357## Response [#respuesta] 5358 5359\`\`\`json 5360{ 5361 "message": "Success", 5362 "code": "863", 5363 "amount": 10, 5364 "number": "70599200" 5365} 5366\`\`\` 5367 5368<Param id="get-sinpe-movil-message" name="message" type="string"> 5369\`Success\` when the operation succeeded. 5370</Param> 5371 5372<Param id="get-sinpe-movil-code" name="code" type="string"> 5373The code the customer must write in the transfer description. It is what identifies the payment. 5374</Param> 5375 5376<Param id="get-sinpe-movil-amount" name="amount" type="number"> 5377The exact amount they must transfer. 5378</Param> 5379 5380<Param id="get-sinpe-movil-number" name="number" type="string"> 5381The destination phone number for the transfer. 5382</Param> 5383 5384### On error [#respuesta-de-error] 5385
5386**On error it returns nothing.** Do not expect an object with empty fields: treat the absence of 5387a response as the error case. 5388 5389## What to do with this data [#que-hacer] 5390 5391When SINPE Móvil is selected, hide the card fields and show the customer this data: destination 5392phone, exact amount and the code for the description. 5393 5394**No pay button is needed:** the collection is processed when the transfer arrives. 5395`,Et=`--- 5396title: SDK · Tilopay.Init() 5397kind: sdk-method 5398status: stable 5399last_verified: 2026-08-28 5400verified_by: equipo-integraciones 5401owner: equipo-integraciones 5402sources: 5403 - "Respuestas de TecnologÃa, 28-08-2026" 5404locales: [es, en] 5405related: [sdk/campos-del-formulario, sdk/reference/update-options, sdk/reference/startpayment, entornos] 5406gaps: 5407 - "Full parameter list and response of InitTokenize(): unverified." 5408 - "Full Init() response example: the published one is outdated." 5409description: "Starts a purchase: authenticates the checkout and returns the available payment methods and the customer's saved cards." 5410--- 5411 5412Starts a purchase. It authenticates the checkout with the SDK token and returns the payment 5413methods available to the merchant. 5414 5415To save a card without charging it, the SDK has a second start flow: 5416**\`Tilopay.InitTokenize()\`**, with the same parameters as \`Init()\` except \`amount\`, 5417\`orderNumber\`, \`capture\` and \`subscription\`, which do not apply because nothing is charged. 5418 5419## Signature [#firma] 5420 5421\`\`\`js 5422await Tilopay.Init({ /* parameters */ }) 5423\`\`\` 5424 5425## Parameters [#parametros] 5426 5427<Param id="init-token" name="token" type="string" required> 5428SDK token, obtained with \`POST /api/v1/loginSdk\`. See 5429[authentication](/developers/api/autenticacion). 5430</Param> 5431 5432<Param id="init-currency" name="currency" type="string" required> 5433Purchase currency, ISO 4217. 5434</Param> 5435 5436<Param id="init-language" name="language" type="string" required> 5437Checkout **language**, ISO 639-1. Only \`es\` and \`en\` are supported; defaults to \`es\`. 5438</Param> 5439 5440<Param id="init-amount" name="amount" type="decimal" required> 5441Purchase amount. 5442</Param> 5443 5444<Param id="init-billtoemail" name="billToEmail" type="string" required> 5445Customer email. Required for the response to include saved cards. 5446</Param> 5447 5448<Param id="init-ordernumber" name="orderNumber" type="string" required> 5449Order number, unique per merchant. See 5450[safe retries](/developers/reintentos-seguros). 5451</Param> 5452 5453<Param id="init-typedni" name="typeDni" type="integer"> 5454Customer identification type. Conditional. See the 5455[type table](/developers/sdk/reference/update-options#tipos-de-identificacion). 5456</Param> 5457 5458<Param id="init-dni" name="dni" type="string"> 5459Customer identification number. Conditional. 5460</Param> 5461 5462<Param id="init-billtofirstname" name="billToFirstName" type="string" required> 5463Customer first name. 5464</Param> 5465 5466<Param id="init-billtolastname" name="billToLastName" type="string" required> 5467Customer last name. 5468</Param> 5469 5470<Param id="init-billtoaddress" name="billToAddress" type="string" required> 5471Customer address line 1. 5472</Param> 5473 5474<Param id="init-billtoaddress2" name="billToAddress2" type="string"> 5475Customer address line 2. Optional. 5476</Param> 5477 5478<Param id="init-billtocity" name="billToCity" type="string"> 5479City. Recommended. 5480</Param> 5481 5482<Param id="init-billtostate" name="billToState" type="string"> 5483State or province. Recommended. 5484</Param> 5485 5486<Param id="init-billtozippostcode" name="billToZipPostCode" type="string"> 5487Postal code. Recommended. 5488</Param> 5489 5490<Param id="init-billtocountry" name="billToCountry" type="string"> 5491Country, ISO 3166-1 alpha-2. Recommended. 5492</Param> 5493 5494<Param id="init-billtotelephone" name="billToTelephone" type="string"> 5495Customer phone. Recommended. 5496</Param> 5497 5498<Param id="init-capture" name="capture" type="integer" required> 5499\`0\` authorizes; \`1\` authorizes and captures. 5500</Param> 5501 5502<Param id="init-redirect" name="redirect" type="string (URL)" required> 5503URL where the SDK renders the final purchase response. 5504</Param> 5505 5506<Param id="init-subscription" name="subscription" type="integer" required> 5507\`1\` saves the customer card in Tilopay; \`0\` does not save it. 5508</Param> 5509 5510<Param id="init-phoneyappy" name="phoneYappy" type="string"> 5511Yappy phone. Required when paying with Yappy. It is not read from the DOM. 5512</Param> 5513 5514<Param id="init-hashversion" name="hashVersion" type="string"> 5515Optional. Values \`"V1"\` or \`"V2"\`. If omitted, the final response hash is built with V1. 5516</Param> 5517 5518<Param id="init-returndata" name="returnData" type="string"> 5519Optional. Returned as-is in the final payment response and recovered on the transaction 5520response URL. Supports up to **65,535 characters**, although a very long value can affect 5521the response URL. You can send a base64-serialized array so it satisfies the string format. 5522</Param> 5523 5524## Call [#llamada] 5525 5526\`\`\`js 5527const init = await Tilopay.Init({ 5528 token: sdkToken, 5529 currency: "CRC", 5530 language: "es", 5531 amount: 100.0, 5532 billToEmail: "[email protected]", 5533 orderNumber: "ORD-2026-000123", 5534 billToFirstName: "Ana", 5535 billToLastName: "Rojas", 5536 billToAddress: "Avenida 1, Local 2", 5537 billToCountry: "CR", 5538 capture: 1, 5539 redirect: "https://ejemplo.com/checkout/respuesta", 5540 subscription: 0, 5541}); 5542\`\`\` 5543 5544## Response [#respuesta] 5545 5546<Param id="init-res-message" name="message" type="string"> 5547\`Success\`, or the error description. 5548</Param> 5549 5550<Param id="init-res-test" name="test" type="integer"> 5551\`0\` production, \`1\` testing. See [environments](/developers/entornos). 5552</Param> 5553 5554<Param id="init-res-sinpemovil" name="sinpemovil" type="object"> 5555Object with \`code\` and \`amount\`, present when the merchant has SINPE Móvil. The full data, 5556including the destination phone, is obtained with 5557[\`getSinpeMovil()\`](/developers/sdk/reference/get-sinpe-movil). 5558</Param> 5559 5560<Param id="init-res-methods" name="methods" type="array"> 5561Array of \`{id, name, type}\` with the available payment methods. 5562</Param> 5563 5564<Param id="init-res-cards" name="cards" type="array"> 5565Array of \`{id, name, brand}\` with the customer's saved cards. 5566</Param> 5567 5568## Payment method id format [#formato-id-metodo] 5569 5570Each method \`id\` has the shape \`A:B:C\`. **The second segment defines the payment method, and 5571\`18\` corresponds to Yappy.** 5572 5573## Saved cards [#tarjetas-guardadas] 5574 5575- For the response to include \`cards\`, **\`billToEmail\` is required**. 5576- Once the cards are obtained, **the email can no longer be changed** with 5577 [\`updateOptions()\`](/developers/sdk/reference/update-options). 5578`,Dt=`---
5579title: SDK · Tilopay.startPayment() 5580kind: sdk-method 5581status: stable 5582last_verified: 2026-08-28 5583verified_by: equipo-integraciones 5584owner: equipo-integraciones 5585sources: 5586 - "Respuestas de TecnologÃa, 28-08-2026" 5587locales: [es, en] 5588related: [sdk/reference/init, sdk/campos-del-formulario, reintentos-seguros] 5589gaps: 5590 - "Success response shape of startPayment(): unverified." 5591description: Closes the purchase. The SDK handles the whole 3DS flow and renders the response on the redirect URL. 5592--- 5593 5594Closes the purchase started with [\`Tilopay.Init()\`](/developers/sdk/reference/init). 5595 5596## Signature [#firma] 5597 5598\`\`\`js 5599await Tilopay.startPayment() 5600\`\`\` 5601 5602It takes no parameters. 5603 5604## 3DS: the SDK handles it [#tres-ds] 5605 5606**The SDK handles the whole 3D Secure flow.** All you have to do is make sure the 5607\`responseTilopay\` container is on the page: that is where the SDK inserts what 3DS needs and 5608drives the process. 5609 5610\`\`\`html 5611<div id="responseTilopay"></div> 5612\`\`\` 5613 5614See [form fields](/developers/sdk/campos-del-formulario#campos). 5615 5616## Where the result arrives [#resultado] 5617 5618When it finishes, the SDK renders the response on the URL given in the \`redirect\` parameter of 5619\`Init()\`. **That is the final purchase response**: treat the \`redirect\` URL as the point where 5620your application decides the outcome. 5621 5622On error, the method returns the description: 5623 5624\`\`\`json 5625{ 5626 "message": "error description" 5627} 5628\`\`\` 5629`,Ot=`--- 5630title: Tilopay.updateOptions() 5631kind: sdk-method 5632status: stable 5633last_verified: 2026-08-28 5634verified_by: equipo-integraciones 5635owner: equipo-integraciones 5636sources: 5637 - "Respuestas de TecnologÃa, 28-08-2026" 5638locales: [es, en] 5639related: [sdk/reference/get-sinpe-movil, sdk/campos-del-formulario, sdk/reference/init] 5640description: Partially updates the parameters sent to Init() when they change before closing the payment. 5641--- 5642 5643Updates values already sent in [\`Tilopay.Init()\`](/developers/sdk/reference/init) that changed 5644during checkout â typically when the customer edits their data, or when they select SINPE Móvil 5645or Yappy and information that did not apply before must be added. 5646 5647<Callout type="info"> 5648**It is a patch.** Send only the fields you want to update; there is no need to resend everything. 5649</Callout> 5650 5651## What "required" means here [#obligatorio] 5652 5653In the list below, "required" means the field **must have been sent either in \`Init()\` or in 5654\`updateOptions()\`**. If it was never sent in either, the payment cannot proceed. It does not mean 5655you must resend it on every call. 5656 5657## Signature [#firma] 5658 5659\`\`\`js 5660await Tilopay.updateOptions({ /* only the fields that change */ }) 5661\`\`\` 5662 5663## Call [#llamada] 5664 5665\`\`\`js 5666const update = await Tilopay.updateOptions({ 5667 typeDni: 1, 5668 dni: "0707770777", 5669 billToFirstName: "Ana", 5670 billToLastName: "Rojas", 5671}); 5672\`\`\` 5673 5674## Parameters [#parametros] 5675 5676<Param id="update-options-typedni" name="typeDni" type="integer"> 5677Customer identification type. Required for SINPE Móvil. See 5678[identification types](#tipos-de-identificacion). 5679</Param> 5680 5681<Param id="update-options-dni" name="dni" type="string"> 5682Customer identification number. Required for SINPE Móvil. **Accepted with and without hyphens.** 5683</Param> 5684 5685<Param id="update-options-billtofirstname" name="billToFirstName" type="string" required> 5686Customer first name. 5687</Param> 5688 5689<Param id="update-options-billtolastname" name="billToLastName" type="string" required> 5690Customer last name. 5691</Param> 5692 5693<Param id="update-options-billtoaddress" name="billToAddress" type="string" required> 5694Customer address line 1. 5695</Param> 5696 5697<Param id="update-options-billtoaddress2" name="billToAddress2" type="string"> 5698Customer address line 2. Optional. 5699</Param> 5700 5701<Param id="update-options-billtocity" name="billToCity" type="string"> 5702Customer city. Recommended. 5703</Param> 5704 5705<Param id="update-options-billtostate" name="billToState" type="string"> 5706State or province. Recommended. 5707</Param> 5708 5709<Param id="update-options-billtozippostcode" name="billToZipPostCode" type="string"> 5710Postal code. Recommended. 5711</Param> 5712 5713<Param id="update-options-billtocountry" name="billToCountry" type="string"> 5714Country, ISO 3166-1 alpha-2. Recommended.
5715</Param> 5716 5717<Param id="update-options-billtotelephone" name="billToTelephone" type="string"> 5718Customer phone. Recommended. 5719</Param> 5720 5721<Param id="update-options-capture" name="capture" type="integer" required> 5722\`0\` authorizes; \`1\` authorizes and captures. 5723</Param> 5724 5725<Param id="update-options-redirect" name="redirect" type="string (URL)" required> 5726URL where the final purchase response is expected. 5727</Param> 5728 5729<Param id="update-options-subscription" name="subscription" type="integer" required> 5730\`1\` if the customer wants to save their card in Tilopay; \`0\` if not. 5731</Param> 5732 5733<Param id="update-options-phoneyappy" name="phoneYappy" type="string"> 5734Yappy phone. Required when the customer pays with Yappy. 5735</Param> 5736 5737<Callout type="warn"> 5738**\`billToEmail\` cannot be updated after saved cards are obtained.** Once \`Init()\` returned the 5739customer's cards, the email cannot be changed through this method. 5740</Callout> 5741 5742## Identification types [#tipos-de-identificacion] 5743 5744Applies to the \`typeDni\` parameter, both here and in \`Tilopay.Init()\`. In the masks, \`#\` is a 5745**numeric** character and \`&\` is **alphanumeric**. Lengths do not count hyphens. 5746 5747| Code | Type | Format | Length | 5748|---|---|---|---| 5749| 1 | Cédula de identidad | \`0#-####-####\` | 10 | 5750| 2 | Cédula jurÃdica | \`3-###-######\` | 10 | 5751| 3 | Gobierno central | \`2-###-######\` | 10 | 5752| 4 | Institución autónoma | \`4-###-######\` | 10 | 5753| 5 | Extranjero no residente | \`9&&&&&&&&&&&&&&&&&&&\` | 20 | 5754| 6 | DIMEX | \`1###########\` | 12 | 5755| 7 | DIDI | \`5###########\` | 12 | 5756 5757## Response [#respuesta] 5758 5759\`\`\`json 5760{ 5761 "message": "Success" 5762} 5763\`\`\` 5764 5765<Param id="update-options-message" name="message" type="string"> 5766\`Success\` when the update succeeded; the error description otherwise. 5767</Param> 5768`,kt=`--- 5769title: JavaScript SDK 5770kind: guide 5771status: stable 5772last_verified: 2026-08-28 5773verified_by: equipo-integraciones 5774owner: equipo-integraciones 5775sources: 5776 - "Respuestas de TecnologÃa, 28-08-2026" 5777locales: [es, en] 5778related: [sdk/instalacion, sdk/campos-del-formulario, sdk/reference/init] 5779description: The integration path where the card form lives on your page and the SDK sends the data straight to Tilopay. 5780--- 5781 5782## What it is [#que-es] 5783 5784The card fields live on your page. The V2 SDK takes over those inputs and sends the data 5785**from the browser straight to Tilopay**: it never passes through your server. 5786 5787## Who it is for [#para-quien] 5788 5789For teams that want to control the checkout design without card data touching their backend. 5790You need a JavaScript frontend and a minimal backend to obtain the SDK token. 5791 5792## How to build it, in order [#orden] 5793 57941. **Credentials.** There are no shared sandbox credentials: get yours through 5795 [developer registration](/developers/registro). 57962. **SDK token.** Your backend requests it with \`POST /api/v1/loginSdk\`. See 5797 [authentication](/developers/api/autenticacion). 57983. **Load the script.** See [installation](/developers/sdk/instalacion). 57994. **Add the inputs with the contract ids** and the \`responseTilopay\` container. See 5800 [form fields](/developers/sdk/campos-del-formulario). 58015. **Start the purchase** with [\`Tilopay.Init()\`](/developers/sdk/reference/init) and show the 5802 customer the payment methods it returns. 58036. **Close the purchase** with 5804 [\`Tilopay.startPayment()\`](/developers/sdk/reference/startpayment). The SDK handles 3DS and 5805 renders the result on your \`redirect\` URL. 5806 5807## Before assuming you are in test mode [#entornos] 5808 5809Testing and production share one host: the mode is verified with the \`test\` field returned by 5810\`Init()\`. See [environments](/developers/entornos). 5811 5812## Compliance [#cumplimiento] 5813 5814Card data does not pass through your server, but your page captures it: check the applicable 5815scope with your compliance team. 5816`,At=`--- 5817title: API · Server-to-server 5818kind: guide 5819status: stable 5820last_verified: 2026-08-28 5821verified_by: equipo-integraciones 5822owner: equipo-integraciones 5823sources: 5824 - "Respuestas de TecnologÃa, 28-08-2026" 5825 - "Documentación Server to server (colección Postman TILOPAY API), 13-09-2026" 5826locales: [es, en] 5827related: [hosted-payment-page, sdk, sin-codigo] 5828description: "A service exclusive to PCI-certified merchants. The URL is provisioned per merchant: it is not self-serve." 5829--- 5830 5831<Callout type="warn"> 5832**Restricted access. This is not a self-serve path.** You cannot start this integration on your own 5833today: it requires merchant PCI certification and a URL provisioned individually by Tilopay. 5834</Callout> 5835 5836## What it is [#que-es] 5837 5838The path where card data passes through the merchant's server, which then sends it to the Tilopay 5839API. 5840 5841## Who it is for [#para-quien] 5842 5843- It is a **service exclusive to merchants holding PCI certification**. 5844- The **URL is customized per merchant**, with its own key. **It is not a public URL.** 5845 5846That is why the examples on this page carry no real URL: the \`Host\` and the proxy key are delivered 5847to each approved merchant. 5848 5849## Requirements [#requisitos] 5850 58511. Valid PCI certification for the merchant. 58522. An active Tilopay account. 58533. An approved request, with the URL and key provisioned by Tilopay for your merchant. 5854 5855## How to request it [#solicitud] 5856 5857Write to \`[email protected]\` with the merchant name and the status of your PC
5857I certification. The URL 5858and key are delivered directly to the approved merchant. 5859 5860## Request reference [#referencia] 5861 5862<Callout type="warn"> 5863The \`Host\` and the \`tx-proxy-key\` header are delivered by Tilopay to each approved merchant. There is 5864no public URL: the examples use placeholders. 5865</Callout> 5866 5867\`\`\`http 5868POST / HTTP/1.1 5869Host: url provided by tilopay 5870\`\`\` 5871 5872### Headers [#encabezados] 5873 5874<Param id="s2s-header-authorization" name="Authorization" type="string"> 5875\`bearer {API token}\` â see [authentication](/developers/api/autenticacion). 5876</Param> 5877 5878<Param id="s2s-header-tx-proxy-key" name="tx-proxy-key" type="string"> 5879Transaction proxy key, provided by Tilopay. 5880</Param> 5881 5882### Parameters [#parametros] 5883 5884<Param id="s2s-parametro-key" name="key" type="string"> 5885Key tied to the merchant (required). 5886</Param> 5887 5888<Param id="s2s-parametro-card" name="card" type="string"> 5889Card number (required). 5890</Param> 5891 5892<Param id="s2s-parametro-cvv" name="cvv" type="string"> 5893Security code (required). 5894</Param> 5895 5896<Param id="s2s-parametro-expire" name="expire" type="string"> 5897Expiration date in monthYear format, for example \`1023\` (required). 5898</Param> 5899 5900<Param id="s2s-parametro-name" name="name" type="string"> 5901Cardholder first name (required). 5902</Param> 5903 5904<Param id="s2s-parametro-lastname" name="lastname" type="string"> 5905Cardholder last name (required). 5906</Param> 5907 5908<Param id="s2s-parametro-phone" name="phone" type="string"> 5909Customer phone (required). 5910</Param> 5911 5912<Param id="s2s-parametro-email" name="email" type="string"> 5913Customer email (required). 5914</Param> 5915 5916<Param id="s2s-parametro-address" name="address" type="string"> 5917Customer address (required). 5918</Param> 5919 5920<Param id="s2s-parametro-city" name="city" type="string"> 5921Customer city (required). 5922</Param> 5923 5924<Param id="s2s-parametro-state" name="state" type="string"> 5925State in ISO format, for example \`CR-SJ\` (San José, Costa Rica) or \`US-CA\` (California, USA) (required). 5926</Param> 5927 5928<Param id="s2s-parametro-zipcode" name="zipcode" type="string"> 5929Postal code (required). 5930</Param> 5931 5932<Param id="s2s-parametro-country" name="country" type="string"> 5933Country as ISO Alpha-2 code, for example \`CR\`, \`US\`, \`GT\` (required). 5934</Param> 5935 5936<Param id="s2s-parametro-amount" name="amount" type="string"> 5937Purchase amount (required). 5938</Param> 5939 5940<Param id="s2s-parametro-currency" name="currency" type="string"> 5941Currency in ISO format, for example \`USD\`, \`CRC\`, \`GTQ\` (required). 5942</Param> 5943 5944<Param id="s2s-parametro-ordernumber" name="orderNumber" type="string"> 5945Order number (required). 5946</Param> 5947 5948<Param id="s2s-parametro-capture" name="capture" type="number"> 5949\`1\` captures and authorizes, \`0\` only authorizes (required). 5950</Param> 5951 5952<Param id="s2s-parametro-redirect" name="redirect" type="string"> 5953Response URL (required). 5954</Param> 5955 5956The \`shipTo*\` fields (\`shipToFirstName\`, \`shipToLastName\`, \`shipToAddress\`, \`shipToAddress2\`, 5957\`shipToCity\`, \`shipToState\`, \`shipToZipPostCode\`, \`shipToCountry\`, \`shipToTelephone\`) appear in the 5958collection examples as shipping data. 5959 5960### Request [#peticion] 5961 5962\`\`\`json 5963{ 5964 "key": "key", 5965 "card": "card PAN", 5966 "cvv": "CVV Number", 5967 "expire": "1023", 5968 "name": "firstname", 5969 "lastname": "lastname", 5970 "phone": "88888888", 5971 "email": "[email protected]", 5972 "address": "user address", 5973 "city": "city", 5974 "state": "state", 5975 "zipcode": "zipcode", 5976 "country": "country", 5977 "shipToFirstName": "Nombre", 5978 "shipToLastName": "Apellido", 5979 "shipToAddress": "San Jose", 5980 "shipToAddress2": "Escazu", 5981 "shipToCity": "San Jose", 5982 "shipToState": "SJ", 5983 "shipToZipPostCode": "10101", 5984 "shipToCountry": "CR", 5985 "shipToTelephone": "88778877", 5986 "amount": "amount", 5987 "currency": "currency code", 5988 "orderNumber": "Order Number", 5989 "capture": 1, 5990 "redirect": "url to redirect" 5991} 5992\`\`\` 5993 5994The collection includes two examples, **with 3DS** and **without 3DS**, sharing the same request body. 5995 5996### Response [#respuesta] 5997 5998\`\`\`json 5999{ 6000 "code": "1", 6001 "description": "Transaccion aprobada", 6002 "auth": "123456", 6003 "orderNumber": "12345", 6004 "urlRedirect": "", 6005 "error": "" 6006} 6007\`\`\` 6008 6009When the transaction requires 3DS authentication, the response carries the URL in \`urlRedirect\`; that 6010is where the cardholder is sent. To interpret \`code\`, \`description\` and \`error\`, see 6011[response conventions](/developers/api/convenciones) and 6012[how to read an error response](/developers/api/procesos-operativos/errors). 6013 6014## Alternatives without PCI certification [#alternativas] 6015 6016If you do not hold PCI certification, these paths avoid that scope entirely: 6017 6018- [Hosted payment page](/developers/hosted-payment-page) â Tilopay hosts the form. 6019- [JavaScript SDK](/developers/sdk) â the form lives on your page, but the data travels from the 6020 browser straight to Tilopay. 6021- [No code](/developers/sin-codigo) â a plugin or an already-integrated platform. 6022`,jt='---\ntitle: Test cards\nkind: guide\nstatus: stable\napi_version: v1\nlast_verified: 202
60226-09-03\nverified_by: equipo-integraciones\nowner: equipo-integraciones\nsources:\n - "Respuestas de TecnologÃa, 03-09-2026 (tarjetas de prueba del ambiente de pruebas)"\nlocales: [es, en]\nrelated: [entornos, sdk/reference/startpayment, api/procesos-operativos/errors]\ndescription: The 27 cards of the Tilopay testing environment, with the expected result and the 3DS friction of each one.\n---\n\nThese cards only work when the account is in **testing mode**. The mode is switched from the\naccount and verified with the `test` field returned by `Init()`: see\n[environments and testing](/en/developers/entornos).\n\n## How to use them [#uso]\n\n| Field | What to enter |\n| --- | --- |\n| Expiry date | Any date in the future |\n| CVV | Any value |\n| Code on the 3DS challenge screen | `3ds2` |\n\n<Callout type="warn">\nOn the 3DS challenge screen the code to enter is **`3ds2`**. There is no other code and nothing is\nsent over SMS in testing.\n</Callout>\n\n## Cards [#tarjetas]\n\nThe brand comes from the prefix: `4` Visa, `51`â`55` Mastercard, `34` American Express.\n\n| Number | Brand | Expected result | Friction |\n| --- | --- | --- | --- |\n| `4111111111111111` | Visa | Approved | No friction |\n| `4012000000020089` | Visa | Approved | No friction |\n| `4012000000020006` | Visa | Approved | No friction |\n| `4012010000020088` | Visa | Approved | No friction |\n| `5100270000000072` | Mastercard | Approved | No friction |\n| `5100270000000031` | Mastercard | Approved | No friction |\n| `341111000000009` | American Express | Approved | No friction |\n| `341111000000011` | American Express | Approved | No friction |\n| `341112000000001` | American Express | Approved | No friction |\n| `341111000000037` | American Express | Approved | No friction |\n| `341112000008012` | American Express | Approved | No friction |\n| `4012000000020071` | Visa | Approved | 3DS challenge |\n| `4012010000020070` | Visa | Approved | 3DS challenge |\n| `4012010000020005` | Visa | Approved | 3DS challenge |\n| `5100270000000023` | Mastercard | Approved | 3DS challenge |\n| `5100271000000120` | Mastercard | Approved | 3DS challenge |\n| `4112613451591116` | Visa | Insufficient funds | 3DS challenge |\n| `4523080346468525` | Visa | Incorrect CVV | No friction |\n| `4549179990476733` | Visa | Restricted card | No friction |\n| `4012000000020121` | Visa | Declined | No friction |\n| `4111111111119999` | Visa | Declined | No friction |\n| `4111111111110000` | Visa | Declined | No friction |\n| `5100270000000056` | Mastercard | Declined | No friction |\n| `5111111111113333` | Mastercard | Declined | No friction |\n| `4666666666662222` | Visa | Declined | No friction |\n| `5555666666662222` | Mastercard | Declined | No friction |\n| `5100270000000098` | Mastercard | Declined | 3DS challenge |\n\nCards with **3DS challenge** friction open the authentication screen; **No friction** cards\nresolve without it. The expected result is always the same: the card determines the response, not\nthe amount.\n',Mt=`--- 6023title: Asistente en WhatsApp 6024kind: guide 6025status: stable 6026last_verified: 2026-09-23 6027verified_by: equipo-integraciones 6028owner: equipo-integraciones 6029sources: 6030 - "Tilopay Insight Engine, flujo de vinculación de WhatsApp y pantalla de respaldo web (código, commit 55ba257a), verificado 23-09-2026" 6031locales: [es, en] 6032related: [agentes, agentes/mcp, agentes/mcp/adquirencia, agentes/mcp/api-bancario] 6033description: "Qué es el Asistente de Tilopay en WhatsApp, cómo se activa, cómo se usa y qué puede hacer: ventas, transacciones, enlaces de pago, catálogo, microtienda y pedidos, comprobantes, suscripciones, tarjetas guardadas, recordatorios y avisos." 6034--- 6035 6036## Qué es [#que-es] 6037 6038El Asistente de Tilopay en WhatsApp es el mismo servidor MCP de Tilopay conectado a un chat de 6039WhatsApp. En vez de configurar un cliente MCP, el comercio le escribe en lenguaje natural desde el 6040WhatsApp que ya usa y el asistente ejecuta las herramientas sobre su cuenta de Tilopay. 6041 6042Las capacidades son las mismas que expone el MCP: lo que un agente puede hacer por 6043[herramientas de adquirencia](/developers/agentes/mcp/adquirencia) y, bajo solicitud, por 6044[herramientas bancarias](/developers/agentes/mcp/api-bancario), el asistente lo puede hacer desde 6045el chat. 6046 6047No es un chatbot de respuestas armadas: consulta y opera datos reales de la cuenta, y responde en 6048texto plano pensado para leerse en el teléfono. 6049 6050## Cómo se activa [#activacion] 6051 6052La vinculación se hace desde el mismo chat de WhatsApp y toma alrededor de un minuto. El comercio 6053debe estar afiliado a Tilopay y la persona necesita su correo y contraseña de Tilopay. 6054 60551. Escribà cualquier mensaje al número oficial de Tilopay. Si el número todavÃa no está vinculado, 6056 el chat muestra una bienvenida con el botón **Vincular mi cuenta**. También podés escribir 6057 «vincular mi cuenta» para pedir el botón de nuevo. 60582. Tocá **Vincular mi cuenta**. Las credenciales y los códigos se ingresan en el formulario seguro 6059 que se abre, nunca como mensajes dentro del chat. 60603. Ingresá el mismo correo y contraseña que usás para entrar al panel de Tilopay. 60614. Si tu cuenta tiene verificación en dos pasos, escribà el código que Tilopay envÃa al método 6062 mostrado en pantalla. 60635. Escribà el código de 6 dÃgitos que llega al correo de Tilopay. Este último código se solicita 6064 siempre para confirmar la vinculación. 60656. Si tu usuario tiene varios comercios, elegà cuál querés usar. Al terminar, cerrá el formulario y 6066 ya podés pedirle al asistente que consulte u opere esa cuenta. 6067 6068Por seguridad, el número de WhatsApp debe coincidir con uno de estos datos de la cuenta: un teléfono 6069configurado para la verificación en dos pasos, el teléfono de uno de los comercios disponibles o un 6070número autorizado previamente por el administrador del comercio. Si no coincide, la cuenta no se 6071vincula. Actualizá el teléfono en el panel de Tilopay o pedile al administrador que autorice ese 6072número en el panel del asistente y volvé a escribir «vincular mi cuenta». 6073
6074Un número sin cuenta vinculada no puede ejecutar consultas ni operaciones. La bienvenida de 6075vinculación se envÃa como máximo una vez al dÃa; aunque no vuelva a aparecer ese dÃa, podés pedir el 6076botón escribiendo «vincular mi cuenta». 6077 6078## Volver a vincular la cuenta [#revincular] 6079 6080Si la sesión deja de funcionar o cambia la contraseña, escribà «vincular mi cuenta» y completá el 6081mismo proceso. Volver a vincular el mismo número actualiza la conexión existente: no crea otro 6082perfil ni desconecta los clientes MCP que ya estén vinculados. Cada canal conserva su propia sesión, 6083por lo que un problema en WhatsApp no cierra automáticamente las sesiones de Claude, ChatGPT, 6084Cursor u otros clientes MCP. 6085 6086## Cómo se usa [#uso] 6087 6088No hay comandos ni menús. Se escribe como se le hablarÃa a alguien del equipo: 6089 6090- «¿cómo van las ventas de los últimos 30 dÃas?» 6091- «cobrale 25 mil colones a Ana por la consulta y mandámelo por WhatsApp» 6092- «buscá la orden 10432» 6093- «todos los dÃas a las 8pm mandame el resumen de ventas de hoy» 6094 6095El asistente recuerda los últimos mensajes del hilo, asà que se puede seguir la conversación sin 6096repetir los datos («mandálo también por correo», «eliminá ese enlace»). 6097 6098## Qué puede hacer [#capacidades] 6099 6100| Ãrea | Qué resuelve desde el chat | 6101| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | 6102| Ventas | Resumen y tendencias por dÃa, semana o mes, y análisis con ticket promedio, tasa de aprobación, mejores clientes y motivos de rechazo. | 6103| Transacciones | Listar y consultar transacciones, y capturar, reembolsar o reversar un cobro. | 6104| Enlaces de pago | Crear un enlace, compartirlo por WhatsApp o correo, ver su detalle y eliminarlo. | 6105| Catálogo | Listar productos o servicios, ver su detalle, crear, cambiar o eliminar un Ãtem. | 6106| Microtienda | Armar una tienda con carrito a partir de los productos del catálogo, listar las tiendas activas y desactivar una. | 6107| Pedidos | Activar la gestión de pedidos con nombre y logo de la tienda, ver el resumen, listar pedidos por estado, ver los pagados sin entregar y marcarlos como entregados. | 6108| Comprobantes | Listar los comprobantes de los cobros aprobados y reenviarle a un cliente el comprobante de su pago. | 6109| Contactos | Guardar, listar y eliminar contactos para cobrarles por nombre. | 6110| Cobros recurrentes | Crear, editar y eliminar planes, armarlos paso a paso desde el chat, generar el enlace de suscripción, consultar suscriptores y sus pagos, editar, pausar, reactivar o eliminar un suscriptor, ver cobros fallidos, generar el enlace para poner al dÃa un cobro rechazado y administrar cupones. | 6111| Tarjetas guardadas | Tokenizar la tarjeta de un cliente, listar o eliminar sus tarjetas, consultar métodos de pago y cuotas, cobrar a una tarjeta guardada y ver grupos, afiliados y cobros masivos. | 6112| Recordatorios | Programar recordatorios de una sola vez, diarios, semanales o mensuales, que además pueden ejecutar una consulta del asistente al enviarse; listarlos y cancelarlos. Máximo 20 activos. | 6113| Avisos | Prender, apagar y consultar los avisos del comercio: cobros aprobados, cobros rechazados, pedidos y el resumen diario a la hora que elija. | 6114| Perfil y recetas | Guardar el perfil del negocio y recibir recomendaciones de automatización según lo que vende. | 6115| Soporte | Buscar la guÃa oficial de un tema, correr el diagnóstico de conexión y revisar un error de integración. | 6116| Bancario (bajo solicitud) | Cuentas, saldos, pagos, estados de cuenta y análisis de movimientos; y, con confirmación por correo, validar una cuenta destino, enviar una transferencia y consultar su estado. Solo con credenciales del API bancario. | 6117 6118Hoy son 86 herramientas en 13 grupos. El detalle de parámetros y el nivel de acceso de cada una 6119vive en las páginas del [servidor MCP](/developers/agentes/mcp). 6120 6121El asistente también recibe **imágenes** por el chat: por ejemplo, la foto de un producto para el 6122catálogo o el logo que se muestra en la microtienda y en los comprobantes. 6123 6124## Autorización de operaciones sensibles [#autorizacion] 6125 6126Las operaciones que mueven dinero o alteran cobros âreembolsos, capturas, reversiones, cobros a 6127tarjetas guardadas, cambios a suscriptores, eliminación de enlaces, productos o planes y el envÃo de 6128una transferencia bancariaâ piden un código de 6 dÃgitos 6129que Tilopay envÃa al correo registrado del usuario. Sin ese código el asistente no las ejecuta. 6130 6131Las llaves del comercio nunca viajan por el chat y el asistente no muestra credenciales, tokens ni 6132identificadores internos. Cada consulta y cada operación queda auditada con usuario, herramienta, 6133fecha y resultado, con lÃmites de uso por cuenta. 6134 6135## Avisos que el asistente manda solo [#avisos] 6136 6137- **Pago recibido:** cuando un cliente paga un enlace creado desde el asistente, llega un mensaje 6138 por WhatsApp con monto, cliente, concepto, referencia y número de orden. 6139- **Reportes programados:** el resumen o la consulta que se haya agendado, con el dato ya 6140 consultado al momento del envÃo. 6141- **Recordatorios:** el recordatorio agendado, con el resultado de la consulta adjunta si se pidió 6142 una acción. Los recordatorios de cobros o enlaces siempre llegan al WhatsApp del comercio, nunca 6143 al cliente. 6144- **Pedidos por entregar:** el recordatorio diario de los pedidos ya pagados que siguen sin entregar, 6145 cuando la gestión de pedidos está activa. 6146 6147## Si preferÃs tu propio agente [#mcp] 6148 6149Las mismas herramientas están disponibles por MCP para Claude, ChatGPT, Cursor u otro cliente: 6150empezá por [Conectar tu agente](/developers/agentes/mcp/conectar) y por 6151[Permisos](/developers/agentes/mcp/permisos). 6152`,Nt=`--- 6153title: Documentación legible por máquina 6154kind: guide 6155status: stable
6156last_verified: 2026-08-29 6157verified_by: equipo-integraciones 6158owner: equipo-integraciones 6159sources: 6160 - "Servidor MCP de Tilopay (manifiesto y código), verificado 29-08-2026" 6161 - "Respuestas de TecnologÃa, 29-08-2026" 6162locales: [es, en] 6163related: [agentes, agentes/mcp, api/autenticacion, sdk] 6164description: "Los artefactos que el portal publica para agentes: llms.txt, Markdown crudo en cualquier URL, openapi.json y mcp.json." 6165--- 6166 6167## Ãndices para modelos [#llms] 6168 6169- [www.tilopay.com/llms.txt](https://www.tilopay.com/llms.txt) â Ãndice del sitio en español, con la URL y una descripción 6170 de cada página. 6171- [www.tilopay.com/llms-full.txt](https://www.tilopay.com/llms-full.txt) â el mismo Ãndice con el contenido completo. 6172- [www.tilopay.com/en/llms.txt](https://www.tilopay.com/en/llms.txt) y [www.tilopay.com/en/llms-full.txt](https://www.tilopay.com/en/llms-full.txt) â las 6173 versiones en inglés, con las URLs \`/en\`. 6174 6175## Markdown crudo [#markdown] 6176 6177Cualquier URL del sitio devuelve su Markdown agregándole \`.md\`: por ejemplo 6178[www.tilopay.com/developers/sdk/instalacion.md](https://www.tilopay.com/developers/sdk/instalacion.md) o 6179[www.tilopay.com/tarifas.md](https://www.tilopay.com/tarifas.md). Se sirve como \`text/markdown\`, con un encabezado de 6180metadatos (tipo de página, estado, versión y fecha de última verificación). Una URL que no existe 6181devuelve 404, no HTML. 6182 6183## Spec del API [#openapi] 6184 6185- [\`openapi.json\`](/developers/openapi.json) â spec OpenAPI 3.1 del API de Tilopay: endpoints, 6186 parámetros, respuestas y ejemplos. Es la fuente de verdad del API. 6187- [\`openapi.yaml\`](/developers/openapi.yaml) â el mismo contenido en YAML. 6188 6189Las dos rutas responden con \`Access-Control-Allow-Origin: *\`, asà que se pueden leer desde el 6190navegador. 6191 6192## Catálogo del MCP [#mcp-json] 6193 6194[\`mcp.json\`](/developers/mcp.json) describe el servidor MCP: su URL, el modelo de acceso y el 6195catálogo completo de herramientas con parámetros, salida y nivel de acceso. Cuando la herramienta 6196envuelve una operación del API, la entrada incluye ese endpoint. 6197 6198El campo \`verified_at\` en la raÃz trae la fecha (\`YYYY-MM-DD\`) en que el catálogo se comparó con el 6199servidor. La versión del servidor no cambia cuando se agregan herramientas, asà que ésa es la señal 6200que conviene mirar para saber si una copia en caché quedó vieja. 6201`,Pt=`--- 6202title: Herramientas de adquirencia 6203kind: mcp-index 6204status: stable 6205last_verified: 2026-09-03 6206verified_by: equipo-integraciones 6207owner: equipo-integraciones 6208sources: 6209 - "Servidor MCP de Tilopay (manifiesto y código), verificado 03-09-2026" 6210locales: [es, en] 6211related: [agentes/mcp, agentes/mcp/permisos, agentes/mcp/api-bancario] 6212description: "Resumen de los grupos de herramientas del MCP sobre el API de adquirencia: ventas, enlaces de pago, catálogo, contactos, perfil del negocio, microtienda y pedidos, avisos, comprobantes, recordatorios, cobros recurrentes, tarjetas guardadas y soporte." 6213--- 6214 6215## Qué cubre [#que-cubre] 6216 6217Estas son las herramientas que trabajan sobre el **API de adquirencia** de Tilopay: cobros con 6218tarjeta, enlaces de pago y los datos que los rodean. Vienen activadas con el acceso MCP estándar, 6219sin solicitud adicional, y operan siempre sobre el comercio asociado al usuario del MCP. 6220 6221Las herramientas del [API bancario](/developers/agentes/mcp/api-bancario) son un caso aparte: se 6222activan bajo solicitud y exigen credenciales del API bancario. 6223 6224## Grupos [#grupos] 6225 6226<McpGroupIndex slugs="ventas, enlaces-de-pago, catalogo, contactos, perfil, microtienda, avisos, comprobantes, recordatorios, recurrentes, tarjetas-guardadas, soporte" /> 6227 6228El nivel de acceso de cada herramienta y el detalle de sus parámetros está en la página de su 6229grupo; el resumen de permisos está en [Permisos](/developers/agentes/mcp/permisos). 6230`,Ft=`--- 6231title: Analista de pagos 6232kind: mcp-tool 6233access: read 6234status: stable 6235last_verified: 2026-09-03 6236verified_by: equipo-integraciones 6237owner: equipo-integraciones 6238sources: 6239 - "Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo baas), verificado 03-09-2026" 6240locales: [es, en] 6241related: [agentes/mcp, agentes/mcp/api-bancario, agentes/mcp/permisos] 6242description: "Analiza, sólo lectura, los pagos de una cuenta en un rango de fechas y devuelve un informe en lenguaje natural: éxito, fallas, reversiones, montos netos y recomendaciones. Usa un modelo de lenguaje sobre las cifras calculadas." 6243--- 6244 6245<McpTool name="baas_analyze_payments" /> 6246`,It=`--- 6247title: Detalle de un pago 6248kind: mcp-tool 6249access: read 6250status: stable
6251last_verified: 2026-09-03 6252verified_by: equipo-integraciones 6253owner: equipo-integraciones 6254sources: 6255 - "Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo baas), verificado 03-09-2026" 6256locales: [es, en] 6257related: [agentes/mcp, agentes/mcp/api-bancario, agentes/mcp/permisos] 6258description: "Obtiene el detalle de un pago del API bancario por su UUID interno, sólo lectura." 6259--- 6260 6261<McpTool name="baas_get_payment" /> 6262`,Lt=`--- 6263title: Estado de una transferencia 6264kind: mcp-tool 6265access: read 6266status: stable 6267last_verified: 2026-09-14 6268verified_by: equipo-integraciones 6269owner: equipo-integraciones 6270sources: 6271 - "Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo baas), verificado 14-09-2026" 6272locales: [es, en] 6273related: [agentes/mcp, agentes/mcp/api-bancario, agentes/mcp/api-bancario/send-transfer] 6274description: "Consulta el estado actual de una transferencia por su payment_id: estado, resultado, monto, moneda, destino y fecha." 6275--- 6276 6277<McpTool name="baas_get_transfer_status" /> 6278`,Rt=`---
6279title: Saldos 6280kind: mcp-tool 6281access: read 6282status: stable 6283last_verified: 2026-09-03 6284verified_by: equipo-integraciones 6285owner: equipo-integraciones 6286sources: 6287 - "Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo baas), verificado 03-09-2026" 6288locales: [es, en] 6289related: [agentes/mcp, agentes/mcp/api-bancario, agentes/mcp/permisos] 6290description: "Lista los saldos en tiempo real de las cuentas accesibles: cuenta, montos y fecha de corte." 6291--- 6292 6293<McpTool name="baas_list_balances" /> 6294`,zt=`--- 6295title: Pagos 6296kind: mcp-tool 6297access: read 6298status: stable 6299last_verified: 2026-09-03 6300verified_by: equipo-integraciones 6301owner: equipo-integraciones 6302sources: 6303 - "Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo baas), verificado 03-09-2026" 6304locales: [es, en] 6305related: [agentes/mcp, agentes/mcp/api-bancario, agentes/mcp/permisos] 6306description: "Consulta, sólo lectura, los pagos de una cuenta propia identificada por IBAN, con filtros de fecha, estado, moneda, método y dirección. Paginación por cursor." 6307--- 6308 6309<McpTool name="baas_list_payments" /> 6310`,Bt=`--- 6311title: Otras operaciones 6312kind: mcp-tool 6313access: read 6314status: stable 6315last_verified: 2026-09-03 6316verified_by: equipo-integraciones 6317owner: equipo-integraciones 6318sources: 6319 - "Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo baas), verificado 03-09-2026" 6320locales: [es, en] 6321related: [agentes/mcp, agentes/mcp/api-bancario, agentes/mcp/permisos] 6322description: "Contextos (assignments), diagnóstico de credenciales, listado de cuentas, saldo de una cuenta y estado de una solicitud de estado de cuenta, en una sola página." 6323--- 6324 6325<McpTools names="baas_list_assignments, baas_diagnostics, baas_list_accounts, baas_get_balance, baas_get_statement_status" /> 6326`,Vt=`--- 6327title: Estado de cuenta 6328kind: mcp-tool 6329access: write 6330status: stable 6331last_verified: 2026-09-03 6332verified_by: equipo-integraciones 6333owner: equipo-integraciones 6334sources: 6335 - "Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo baas), verificado 03-09-2026" 6336locales: [es, en] 6337related: [agentes/mcp, agentes/mcp/api-bancario, agentes/mcp/permisos] 6338description: "Solicita la generación de un estado de cuenta para una cuenta del API bancario, con rango máximo de 60 dÃas. No mueve dinero: genera un documento de consulta y devuelve request_id con status PENDING." 6339--- 6340 6341<McpTool name="baas_request_statement" /> 6342`,Ht=`--- 6343title: Buscar un pago 6344kind: mcp-tool 6345access: read 6346status: stable 6347last_verified: 2026-09-03 6348verified_by: equipo-integraciones 6349owner: equipo-integraciones 6350sources: 6351 - "Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo baas), verificado 03-09-2026" 6352locales: [es, en] 6353related: [agentes/mcp, agentes/mcp/api-bancario, agentes/mcp/permisos] 6354description: "Busca un pago dentro de una cuenta por exactamente uno de: paymentId (UUID), publicId (número) o clientReference. Si se envÃa más de uno, la herramienta devuelve error." 6355--- 6356 6357<McpTool name="baas_search_payment" /> 6358`,Ut=`--- 6359title: Enviar transferencia 6360kind: mcp-tool 6361access: destructive 6362status: stable 6363last_verified: 2026-09-14 6364verified_by: equipo-integraciones 6365owner: equipo-integraciones 6366sources: 6367 - "Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo baas), verificado 14-09-2026" 6368locales: [es, en] 6369related: [agentes/mcp, agentes/mcp/api-bancario, agentes/mcp/api-bancario/validate-destination] 6370description: "EnvÃa una transferencia desde una cuenta bancaria del comercio. Valida la cuenta destino antes y exige un código de confirmación que llega al correo del comercio." 6371--- 6372 6373<Callout type="warn"> 6374 **Esta herramienta mueve dinero real.** Antes de enviar, valida la cuenta destino; y para ejecutar 6375 la transferencia exige un **código de confirmación** que llega al correo del comercio. Sin ese 6376 código la operación no se envÃa. 6377</Callout> 6378 6379<McpTool name="baas_send_transfer" /> 6380`,Wt=`--- 6381title: Validar cuenta destino 6382kind: mcp-tool 6383access: read 6384status: stable 6385last_verified: 2026-09-14 6386verified_by: equipo-integraciones 6387owner: equipo-integraciones 6388sources: 6389 - "Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo baas), verificado 14-09-2026" 6390locales: [es, en] 6391related: [agentes/mcp, agentes/mcp/api-bancario, agentes/mcp/api-bancario/sen
6391d-transfer] 6392description: "Consulta los datos de una cuenta destino antes de enviarle una transferencia: titular, tipo de cuenta, moneda y estado. No mueve dinero." 6393--- 6394 6395<McpTool name="baas_validate_destination" /> 6396`,Gt=`--- 6397title: Herramientas bancarias 6398kind: mcp-tool 6399access: write 6400status: stable 6401last_verified: 2026-09-03 6402verified_by: equipo-integraciones 6403owner: equipo-integraciones 6404sources: 6405 - "Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo baas), verificado 03-09-2026" 6406locales: [es, en] 6407related: [agentes/mcp, agentes/mcp/permisos, api-bancario, api-bancario/cuentas, api-bancario/pagos] 6408description: "Herramientas del MCP para consultar el API bancario de Tilopay: cuentas, saldos, pagos y estados de cuenta. Se activan bajo solicitud y sólo para usuarios con credenciales del API bancario." 6409--- 6410 6411<Callout type="warn"> 6412 **Estas herramientas no vienen activadas.** Se habilitan **bajo solicitud** y sólo funcionan para 6413 usuarios con **credenciales del API bancario de Tilopay** registradas por Tilopay del lado del 6414 servidor. Con el acceso MCP estándar el grupo no aparece; y si la herramienta se invoca sin esas 6415 credenciales, responde que no existen. Para pedirlo, escribinos desde 6416 [contacto](/contacto) e indicá que necesitás el API bancario. 6417</Callout> 6418 6419## Qué cubre [#que-cubre] 6420 6421Catorce herramientas sobre el [API bancario](/developers/api-bancario): contextos (assignments), 6422diagnóstico de credenciales, cuentas, saldos, pagos, estados de cuenta, un informe analÃtico de 6423pagos, la validación de una cuenta destino y el envÃo de una transferencia con su consulta de 6424estado. 6425 6426**Once de las catorce sólo extraen información.** \`baas_request_statement\` genera un documento de 6427consulta y no mueve dinero. La única que mueve dinero es \`baas_send_transfer\`: valida antes la 6428cuenta destino y exige un código de confirmación que llega al correo del comercio, asà que no puede 6429ejecutarse por decisión del modelo. 6430 6431Las cuentas se identifican con \`accountType: "IBAN"\` más \`accountValue\`, las fechas son RFC 3339 6432(\`2026-01-01T00:00:00Z\`) y \`assignmentId\` se envÃa únicamente cuando el usuario tiene varios 6433contextos. 6434 6435## Herramientas [#herramientas] 6436 6437<McpToolIndex slug="api-bancario" /> 6438`,Kt=`--- 6439title: Avisos y notificaciones 6440kind: mcp-tool 6441access: write 6442status: stable 6443last_verified: 2026-09-14 6444verified_by: equipo-integraciones 6445owner: equipo-integraciones 6446sources: 6447 - "Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo notifications), verificado 14-09-2026" 6448locales: [es, en] 6449related: [agentes/mcp, agentes/mcp/recordatorios, agentes/asistente-whatsapp] 6450description: "Herramientas del MCP para ver y cambiar los avisos por WhatsApp del comercio: cobros aprobados, cobros fallidos, resumen diario y pedidos." 6451--- 6452 6453## Qué cubre [#que-cubre] 6454 6455El agente puede avisarle al comercio por WhatsApp cuando entra un cobro, cuando un cobro se 6456rechaza, cuando entra un pedido, y enviarle un resumen diario a la hora que elija. Estas dos 6457herramientas son las que leen y cambian esa configuración. 6458 6459No envÃan mensajes por su cuenta: solamente prenden, apagan y consultan los avisos. Los campos que 6460no se envÃan se conservan. 6461 6462## Herramientas [#herramientas] 6463 6464<McpToolGroup slug="avisos" /> 6465`,qt=`--- 6466title: Catálogo 6467kind: mcp-tool 6468access: read 6469status: stable 6470last_verified: 2026-08-29 6471verified_by: equipo-integraciones 6472owner: equipo-integraciones 6473sources: 6474 - "Servidor MCP de Tilopay (manifiesto y código), verificado 29-08-2026" 6475 - "Respuestas de TecnologÃa, 29-08-2026" 6476locales: [es, en] 6477related: [agentes/mcp, agentes/mcp/permisos, agentes/mcp/recetas] 6478description: Herramientas del MCP para leer el catálogo de productos y servicios del comercio. 6479--- 6480 6481## Qué cubre [#que-cubre] 6482 6483Sólo lectura: lista los productos o servicios que el comercio ya tiene creados en enlaces de pago y devuelve el detalle de uno. 6484 6485## Herramientas [#herramientas] 6486 6487<McpToolGroup slug="catalogo" /> 6488`,Jt=`--- 6489title: Comprobantes de cobro 6490kind: mcp-tool 6491access: write 6492status: stable 6493last_verified: 2026-09-14 6494verified_by: equipo-integraciones 6495owner: equipo-integraciones 6496sources: 6497 - "Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo receipts), verificado 14-09-2026" 6498locales: [es, en] 6499related: [agentes/mcp, agentes/mcp/microtienda, agentes/mcp/enlaces-de-pago] 6500description: Herramientas del MCP para listar los comprobantes de los cobros aprobados y reenviarle a un cliente el comprobante de su pago. 6501--- 6502
6503## Qué cubre [#que-cubre] 6504 6505Cada cobro aprobado que pasa por el agente genera un comprobante con su propio código, una página 6506para verlo y una imagen para compartir. Con estas dos herramientas el comercio lista los 6507comprobantes de un perÃodo y reenvÃa uno al cliente por WhatsApp. 6508 6509El comprobante es un documento informativo del cobro. No es una factura electrónica. 6510 6511## Herramientas [#herramientas] 6512 6513<McpToolGroup slug="comprobantes" /> 6514`,Yt=`--- 6515title: Conectar tu agente de IA 6516kind: guide 6517status: stable 6518last_verified: 2026-09-23 6519verified_by: equipo-integraciones 6520owner: equipo-integraciones 6521sources: 6522 - "Código del servidor MCP de Tilopay (Tilopay Insight Engine), verificado 23-09-2026" 6523locales: [es, en] 6524related: [agentes/mcp, agentes/mcp/permisos, agentes/mcp/recetas, agentes] 6525description: Cómo conectar Claude, ChatGPT, GitHub Copilot, Cursor, Gemini u otro cliente MCP al servidor MCP de Tilopay. 6526--- 6527 6528Todos los agentes se conectan al mismo servidor y con el mismo flujo: se agrega un servidor MCP 6529remoto con la URL de Tilopay y la sesión se autoriza en el navegador. Lo único que cambia entre 6530agentes es dónde se agrega. 6531 6532\`\`\`text 6533https://mcp.tilopay.com/mcp 6534\`\`\` 6535 6536La versión del servidor MCP en producción es **0.3.0**. 6537 6538## Antes de conectar [#antes] 6539 65401. No hay formulario ni aprobación previa: basta tener una cuenta activa de Tilopay. 65412. Al autorizar, la sesión se inicia con el correo y la contraseña del panel de Tilopay y se 6542 confirma el código de verificación que Tilopay envÃa. El usuario del asistente se crea solo en 6543 ese momento y queda asociado al comercio. 65443. Revisá [qué puede hacer un agente](/developers/agentes/mcp/permisos) antes de conectarlo, sobre 6545 todo las herramientas marcadas como sensibles. 6546 6547<Callout type="warn"> 6548 Nunca pegues \`apiKey\`, \`apiUser\` ni \`apiPassword\` del comercio en el agente ni en su archivo de 6549 configuración. Las credenciales del comercio viven cifradas en el servidor de Tilopay: el agente 6550 sólo maneja su propia sesión OAuth. 6551</Callout> 6552 6553## Claude [#claude] 6554 6555Claude soporta conectores remotos, tanto en la app de escritorio como en la web. 6556 65571. Agregá un conector personalizado remoto con la URL del servidor. 65582. Claude abre la pantalla de autorización de Tilopay: iniciá sesión con tus credenciales de 6559 Tilopay y confirmá el código de verificación. 65603. Revisá la pantalla de consentimiento (aplicación que pide acceso, URL de retorno y permisos) y 6561 aprobá. 65624. Al volver a la conversación, las herramientas de Tilopay quedan disponibles. 6563 6564No hay que pegar ningún token: el conector se registra solo. 6565 6566## ChatGPT [#chatgpt] 6567 6568ChatGPT se conecta como conector remoto usando la misma URL. 6569 65701. Agregá el servidor como conector remoto con la URL de arriba. 65712. La autorización se completa en el navegador con tus credenciales de Tilopay y el código de 6572 verificación. 65733. Al aprobar, el conector queda activo y el modelo puede llamar las herramientas. 6574 6575## GitHub Copilot y VS Code [#copilot] 6576 6577En VS Code (con Copilot en modo agente) se declara un servidor MCP remoto de tipo HTTP. 6578 65791. Declará el servidor con la URL, sin token ni credenciales en el archivo de configuración. 65802. Al primer uso, el editor abre el navegador para autorizar. 65813. Después de aprobar, las herramientas aparecen en la lista de herramientas del agente. 6582 6583## Cursor y otros editores [#cursor] 6584 6585Cursor y editores equivalentes usan el mismo esquema: un servidor MCP remoto por HTTP. 6586 65871. Agregá el servidor remoto con la URL, sin token en la configuración. 65882. Autorizá en el navegador cuando el editor lo pida. 65893. Habilitá las herramientas para el chat o el agente del editor. 6590 6591## Gemini [#gemini] 6592 6593Los clientes de Gemini que soportan MCP remoto se conectan igual: se registra la URL del 6594servidor y la autorización ocurre en el navegador. Si el cliente sólo soporta servidores MCP 6595locales por stdio, se requiere un puente que hable Streamable HTTP contra la URL de Tilopay. 6596 6597## Otros clientes MCP [#otros] 6598 6599Para un cliente propio o cualquier otro agente, el requisito es soportar transporte 6600**Streamable HTTP** y **OAuth 2.0 con registro dinámico de cliente**. La secuencia es: 6601 66021. El cliente llama al servidor y recibe un \`401\` con \`WWW-Authenticate\`, que apunta a 6603 \`/.well-known/oauth-protected-resource\`. 66042. El cliente descubre los endpoints del proveedor de identidad. 66053. Se registra dinámicamente y abre la pantalla de autorización. 66064. El usuario inicia sesión y aprueba el consentimiento. 66075. El cliente queda conectado con \`authorization_code\` y \`refresh_token\`. 6608 6609Lo único que se configura es la URL del servidor. 6610 6611## Verificar la conexión [#verificar] 6612 6613Pedile al agente que liste las herramientas disponibles: deberÃan aparecer las de Tilopay 6614agrupadas en [ventas y transacciones](/developers/agentes/mcp/ventas), 6615[enlaces de pago](/developers/agentes/mcp/enlaces-de-pago), 6616[catálogo](/developers/agentes/mcp/catalogo), 6617[contactos](/developers/agentes/mcp/contactos), 6618[cobros recurrentes](/developers/agentes/mcp/recurrentes) y 6619[soporte y diagnóstico](/developers/agentes/mcp/soporte). 6620El grupo [API bancario (BaaS)](/developers/agentes/mcp/api-bancario) se activa bajo solicitud y 6621sólo funciona para usuarios con credenciales del API bancario de Tilopay. 6622 6623Una primera prueba segura es una consulta de sólo lectura, por ejemplo pedir las transacciones de 6624un rango de fechas. Para flujos completos mirá las [recetas](/developers/agentes/mcp/recetas). 6625 6626## Si algo falla [#problemas] 6627 6628- **El cliente no abre la autorización**: revisá que el servidor esté declarado como remoto por 6629 HTTP y no como servidor local. 6630- **La autorización no termina**: la sesión se inicia con el correo y la contraseña del panel de 6631 Tilopay; además hay que confirmar el código de verificación que llega al correo. 6632- **El agente no ve herramientas**: en varios clientes hay que habilitarlas para la conversación 6633 o para el modo agente después de conectar.
6634- **Una herramienta responde vacÃo**: puede ser el ambiente consultado; varias herramientas 6635 trabajan en \`production\` por defecto. 6636`,Xt=`--- 6637title: Contactos 6638kind: mcp-tool 6639access: destructive 6640status: stable 6641last_verified: 2026-08-29 6642verified_by: equipo-integraciones 6643owner: equipo-integraciones 6644sources: 6645 - "Servidor MCP de Tilopay (manifiesto y código), verificado 29-08-2026" 6646 - "Respuestas de TecnologÃa, 29-08-2026" 6647locales: [es, en] 6648related: [agentes/mcp, agentes/mcp/permisos, agentes/mcp/recetas] 6649description: "Herramientas del MCP para la agenda del comercio: ver, guardar y borrar contactos." 6650--- 6651 6652## Qué cubre [#que-cubre] 6653 6654La agenda le permite al agente reutilizar teléfono y correo al enviar un enlace de pago, sin volver a pedirlos. Borrar un contacto es irreversible. 6655 6656## Herramientas [#herramientas] 6657 6658<McpToolGroup slug="contactos" /> 6659`,Zt=`--- 6660title: Enlaces de pago 6661kind: mcp-tool 6662access: destructive 6663status: stable 6664last_verified: 2026-08-29 6665verified_by: equipo-integraciones 6666owner: equipo-integraciones 6667sources: 6668 - "Servidor MCP de Tilopay (manifiesto y código), verificado 29-08-2026" 6669 - "Respuestas de TecnologÃa, 29-08-2026" 6670locales: [es, en] 6671related: [agentes/mcp, agentes/mcp/permisos, agentes/mcp/recetas] 6672description: Herramientas del MCP para crear, consultar y borrar enlaces de pago, y preparar su envÃo. 6673--- 6674 6675## Qué cubre [#que-cubre] 6676 6677Con este grupo el agente crea un enlace de cobro, consulta su detalle, lo borra y prepara el envÃo al cliente por WhatsApp o por correo. El envÃo por WhatsApp no manda el mensaje: devuelve un enlace listo para enviar. 6678 6679## Herramientas [#herramientas] 6680 6681<McpToolGroup slug="enlaces-de-pago" /> 6682`,Qt=`--- 6683title: Microtienda y pedidos 6684kind: mcp-tool 6685access: destructive 6686status: stable 6687last_verified: 2026-09-14 6688verified_by: equipo-integraciones 6689owner: equipo-integraciones 6690sources: 6691 - "Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo store), verificado 14-09-2026" 6692locales: [es, en] 6693related: [agentes/mcp, agentes/mcp/catalogo, agentes/mcp/comprobantes] 6694description: Herramientas del MCP para armar microtiendas con carrito desde el catálogo y administrar los pedidos que entran por ahÃ. 6695--- 6696 6697## Qué cubre [#que-cubre] 6698 6699Con los productos del [catálogo](/developers/agentes/mcp/catalogo) el agente arma una 6700**microtienda con carrito**: una página pública con varios productos donde el cliente elige 6701cantidades y paga todo junto. Cada microtienda tiene su propio enlace. 6702 6703La segunda mitad del grupo es la **gestión de pedidos**: se activa una vez (nombre de la tienda, 6704logo opcional y hora del recordatorio diario), y a partir de ahà el comercio puede ver el resumen, 6705listar pedidos por estado, ver los que están pagados sin entregar y marcarlos como entregados. 6706 6707Los estados de un pedido son \`pending\` (sin pagar), \`paid\` (pagado sin entregar) y 6708\`delivered\` (entregado). Desactivar una microtienda o apagar la gestión de pedidos no borra los 6709productos del catálogo ni los pedidos ya registrados. 6710 6711Estas herramientas no llaman al API de Tilopay: trabajan sobre los datos del propio servidor MCP, 6712salvo el cobro, que sale por el enlace de pago de cada producto. 6713 6714## Herramientas [#herramientas] 6715 6716<McpToolGroup slug="microtienda" /> 6717`,$t=`--- 6718title: Perfil del negocio y recetas 6719kind: mcp-tool 6720access: write 6721status: stable 6722last_verified: 2026-09-14 6723verified_by: equipo-integraciones 6724owner: equipo-integraciones 6725sources: 6726 - "Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo profile), verificado 14-09-2026" 6727locales: [es, en] 6728related: [agentes/mcp, agentes/mcp/adquirencia, agentes/mcp/recetas] 6729description: Herramientas del MCP para ver y completar el perfil del negocio y obtener recetas de automatización a partir de ese perfil. 6730--- 6731 6732## Qué cubre [#que-cubre] 6733 6734El agente guarda un perfil corto del negocio: a qué se dedica, qué vende, por dónde vende, cómo 6735son sus cobros y qué quiere mejorar. Con ese perfil arma las recetas de automatización que le 6736propone al comercio, y sabe cuál es la siguiente pregunta que corresponde hacer (el cuestionario es de cuatro preguntas 6737como máximo). 6738 6739El perfil se guarda campo por campo: lo que no se envÃa se conserva. Las recetas cambian según 6740los módulos que el usuario tenga activos: las recetas bancarias sólo aparecen si tiene habilitado 6741el [API bancario](/developers/agentes/mcp/api-bancario). 6742 6743Estas herramientas no llaman al API de Tilopay: trabajan sobre los datos del propio servidor MCP. 6744 6745## Herramientas [#herramientas] 6746 6747<McpToolGroup slug="perfil" /> 6748`,en=`--- 6749title: Qué puede hacer un agente 6750kind: guide 6751status: stable
6752last_verified: 2026-08-29 6753verified_by: equipo-integraciones 6754owner: equipo-integraciones 6755sources: 6756 - "Servidor MCP de Tilopay (manifiesto y código), verificado 29-08-2026" 6757 - "Respuestas de TecnologÃa, 29-08-2026" 6758locales: [es, en] 6759related: [agentes/mcp, agentes/mcp/ventas, agentes/mcp/recetas] 6760description: "Alcance real de un agente conectado al servidor MCP: qué herramientas leen, qué herramientas modifican estado y qué controles existen." 6761--- 6762 6763## Alcance de las herramientas [#alcance] 6764 6765<McpCounts /> 6766 6767Las marcadas como sensibles son reembolsos y capturas, cobros con tarjetas guardadas, borrado de 6768enlaces de pago, borrado de contactos y gestión de suscriptores. 6769 6770Un grupo no tiene referencia publicada: el de cobros con tarjetas almacenadas. Está activo en el 6771servidor y cuenta para estos números, asà que un agente conectado puede usar sus herramientas, 6772pero el detalle de cada una no se documenta en el portal. Si necesitás ese detalle, pedilo a 6773soporte. 6774 6775## Herencia de permisos [#herencia-de-permisos] 6776 6777El servidor usa las credenciales de API del comercio, asà que hereda exactamente sus permisos: no 6778impone barreras adicionales por herramienta. Un usuario activo puede reembolsar y hacer cobros 6779masivos. 6780 6781## Controles que existen [#controles] 6782 6783- Un interruptor de activación por usuario, que corta el acceso sin borrar la cuenta. 6784- Un rol de administrador separado, que sólo sirve para gestionar usuarios y credenciales. 6785- Un lÃmite de tasa de 60 llamadas por minuto por usuario. 6786 6787## Confirmación humana [#confirmacion-humana] 6788 6789<Callout type="warn"> 6790 La confirmación humana antes de una operación sensible depende del cliente MCP, no de Tilopay. 6791 Exigila siempre para las herramientas de escritura, y no la negocies en reembolsos ni en cobros 6792 masivos. 6793</Callout> 6794 6795El detalle por herramienta, con parámetros y salida, está en las páginas de cada grupo y en el 6796[\`mcp.json\`](/developers/mcp.json). 6797`,tn=`--- 6798title: Recetas 6799kind: guide 6800status: stable 6801last_verified: 2026-09-04 6802verified_by: equipo-integraciones 6803owner: equipo-integraciones 6804sources: 6805 - "Servidor MCP de Tilopay (manifiesto y código), verificado 29-08-2026" 6806 - "Respuestas de TecnologÃa, 29-08-2026" 6807 - "Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine y manifiesto generado), verificado 02-09-2026" 6808 - "Catálogo de herramientas del servidor MCP (mcp.tilopay.com), verificado 04-09-2026" 6809locales: [es, en] 6810related: 6811 [ 6812 agentes/mcp, 6813 agentes/mcp/ventas, 6814 agentes/mcp/enlaces-de-pago, 6815 agentes/mcp/recurrentes, 6816 agentes/mcp/soporte, 6817 agentes/mcp/permisos, 6818 ] 6819description: "Catorce flujos de punta a punta con el servidor MCP: dashboard de insights, ventas por WhatsApp, recuperación de cobros recurrentes fallidos, cobranza B2B, proyección de caja con datos bancarios, detección de anomalÃas, cierre de mes, reembolsos, suscripciones recurrentes, optimización de planes, cobros a tarjetas almacenadas, depuración de integraciones y Tilopay como herramienta de otros agentes." 6820--- 6821
6822## Construir un dashboard de insights en tiempo real [#dashboard-insights] 6823 68241. \`tilopay_sales_summary\` trae los totales, costos y neto del perÃodo que querés monitorear. 68252. \`tilopay_analyze_sales\` convierte esos números en un resumen narrativo con tendencias y 6826 observaciones. 68273. \`tilopay_list_transactions\` lista las transacciones recientes para completar el tablero. 68284. \`tilopay_get_transaction\` abre el detalle de cualquier operación que necesite revisión. 6829 6830<Callout type="warn"> 6831 El resumen usa UTC, no hora local. Si el comercio tiene poco volumen, las tendencias y los 6832 clientes destacados pueden venir vacÃos. 6833</Callout> 6834 6835### Ejemplos de preguntas para el dashboard [#ejemplos-dashboard] 6836 6837- â¿Cómo me fue hoy?â â \`tilopay_sales_summary\` + \`tilopay_analyze_sales\`. 6838- â¿Cuáles son mis productos o servicios más vendidos esta semana?â â \`tilopay_analyze_sales\` 6839 sobre el rango de los últimos 7 dÃas. 6840- â¿Tengo transacciones fallidas o sin liquidar?â â \`tilopay_list_transactions\` filtrando por 6841 estado, luego \`tilopay_get_transaction\` para cada caso. 6842- â¿Cómo evolucionan mis ingresos netos respecto al mes pasado?â â comparar dos llamadas a 6843 \`tilopay_sales_summary\` con ventanas de fechas distintas. 6844 6845## Vender por WhatsApp desde el catálogo [#cobrar-por-whatsapp] 6846 68471. \`tilopay_catalog_list_items\` lista los productos o servicios del comercio para responder la 6848 consulta del cliente con nombres y precios reales. 68492. \`tilopay_catalog_get_item\` abre el detalle del Ãtem elegido cuando hay que confirmar precio, 6850 moneda o descripción antes de armar el pedido. 68513. El agente arma el pedido, calcula el total y se lo confirma al cliente antes de cobrar. 68524. \`tilopay_save_contact\` guarda al comprador (nombre, correo, teléfono) para asociarlo al cobro y 6853 reutilizarlo en ventas futuras. 68545. \`tilopay_create_payment_link\` crea el enlace por el total del pedido, con una descripción que 6855 identifique la orden. 68566. \`tilopay_send_payment_link_whatsapp\` prepara el envÃo al cliente. 68577. \`tilopay_get_payment_link\` consulta el estado del enlace para confirmar el pago y cerrar la 6858 conversación con el comprobante. 6859 6860\`tilopay_send_payment_link_whatsapp\` no envÃa el mensaje: devuelve un enlace \`wa.me\` con el texto 6861listo para enviar con un toque. Si no hay teléfono ni contacto guardado con ese nombre, la 6862herramienta lo pide. El agente puede quedarse consultando \`tilopay_get_payment_link\` cada cierto 6863tiempo para avisarle al comercio en cuanto el enlace pase a pagado. 6864 6865<Callout type="info"> 6866 Con esta receta un comercio sin tienda en lÃnea vende de punta a punta dentro del chat: catálogo, 6867 pedido, cobro y confirmación, sin intervención humana salvo la que el propio comercio quiera 6868 exigir. 6869</Callout> 6870 6871## Recuperar cobros recurrentes fallidos (dunning inteligente) [#dunning-inteligente] 6872 68731. \`tilopay_recurring_list_plans\` lista los planes activos del comercio. 68742. \`tilopay_recurring_subscriber_payments\` recorre los pagos de los suscriptores de cada plan y 6875 separa los cobros rechazados del perÃodo. 68763. \`tilopay_get_transaction\` abre cada rechazo para leer el código de respuesta y clasificar la 6877 causa: fondos insuficientes, tarjeta vencida, tarjeta bloqueada, sospecha de fraude. 68784. Según la causa, el agente decide la acción y se la propone al comercio: esperar el reintento del 6879 plan cuando el rechazo es transitorio (fondos insuficientes), o pedirle al cliente un nuevo medio 6880 de pago cuando el rechazo es definitivo (tarjeta vencida o bloqueada). 68815. \`tilopay_create_payment_link\` crea un enlace por el saldo por cobrar cuando hay que pedirle al 6882 cliente que pague la cuota con otra tarjeta. 68836. \`tilopay_send_payment_link_whatsapp\` o \`tilopay_send_payment_link_email\` prepara el mensaje al 6884 cliente con un texto adaptado al motivo del rechazo. 68857. \`tilopay_get_payment_link\` confirma cuando el cliente pagó, y \`tilopay_recurring_get_subscriber\` 6886 verifica el estado del suscriptor después de la recuperación. 6887 6888Un agente que corre esta receta cada mañana convierte la lista de rechazos en dos colas: la que se 6889resuelve sola con el reintento del plan y la que necesita un mensaje al cliente. El comercio recibe 6890solo el resumen: cuántos cobros se recuperaron y cuáles siguen sin recuperarse. 6891 6892<Callout type="warn"> 6893 No uses \`tilopay_recurring_manage_subscriber\` para "castigar" un rechazo: \`pause\` y \`delete\` 6894 afectan cobros futuros y \`delete\` no se deshace. Pausar o dar de baja a un suscriptor es una 6895 decisión del comercio, con confirmación humana explÃcita, nunca una reacción automática a un cobro 6896 fallido. 6897</Callout> 6898 6899## Cobranza B2B con cuentas por cobrar [#cobranza-b2b] 6900 69011. \`tilopay_list_contacts\` trae los clientes empresariales del comercio; \`tilopay_save_contact\` 6902 registra los que falten con nombre, correo y teléfono de la persona que paga. 69032. \`tilopay_create_payment_link\` crea un enlace por cada factura
6903sin pagar, con el número de 6904 factura en la descripción y una fecha de vencimiento. 69053. \`tilopay_send_payment_link_email\` prepara el primer envÃo; \`tilopay_send_payment_link_whatsapp\` 6906 prepara el recordatorio cuando la factura sigue sin pagar. 69074. \`tilopay_get_payment_link\` revisa el estado de cada enlace para actualizar la lista de cuentas 6908 por cobrar sin entrar al panel. 69095. \`baas_search_payment\` o \`baas_list_payments\` buscan en las cuentas bancarias del comercio una 6910 transferencia directa (SINPE o transferencia bancaria) que coincida con el monto y el cliente, 6911 para marcar como pagada una factura que el cliente liquidó fuera del enlace. 69126. \`tilopay_delete_payment_link\` elimina el enlace de una factura que ya se pagó por transferencia, 6913 para evitar un cobro doble. 6914 6915Esta receta responde el "¿ya me pagaron?" que consume horas administrativas en negocios que 6916facturan a empresas: una sola lista con facturas, enlaces, estado y pagos recibidos por cualquier vÃa. 6917 6918<Callout type="info"> 6919 Las herramientas \`baas_*\` son de solo consulta y requieren que soporte haya registrado las 6920 credenciales del API bancario del comercio. Si no están configuradas, la herramienta lo indica y 6921 la receta sigue funcionando solo con los enlaces de pago. 6922</Callout> 6923 6924## Proyectar la caja con datos de la pasarela y del banco (CFO de bolsillo) [#cfo-de-bolsillo] 6925 69261. \`tilopay_sales_summary\` trae las ventas de las últimas semanas para estimar los ingresos 6927 esperados del perÃodo siguiente. 69282. \`tilopay_recurring_list_plans\` y \`tilopay_recurring_get_plan\` cuantifican los cobros recurrentes 6929 comprometidos y sus fechas. 69303. \`baas_list_balances\` o \`baas_get_balance\` traen el saldo real de cada cuenta bancaria del 6931 comercio. 69324. \`baas_list_payments\` lista las transferencias de los últimos meses para detectar las salidas 6933 recurrentes: planilla, alquiler, proveedores. 69345. \`baas_analyze_payments\` resume esos movimientos en lenguaje natural para identificar patrones y 6935 fechas pico. 69366. El agente combina saldo, entradas previstas y salidas previstas en una proyección diaria, señala 6937 los dÃas con saldo mÃnimo o negativo y propone acciones. 69387. \`tilopay_create_payment_link\` y \`tilopay_send_payment_link_email\` ponen a cobro facturas 6939 sin pagar cuando el comercio aprueba esa acción. 6940 6941El valor está en cruzar dos fuentes que normalmente viven separadas: la pasarela sabe qué va a 6942entrar y el banco sabe qué hay y qué sale. Una rutina semanal produce un briefing corto con la 6943proyección y las alertas, antes de que abra el negocio. 6944 6945<Callout type="warn"> 6946 Las herramientas \`baas_*\` nunca inician, aprueban ni revierten transferencias. Si la proyección 6947 sugiere mover fondos entre cuentas, esa acción la ejecuta una persona en el banco; el agente solo 6948 la recomienda y la registra. La proyección es una estimación, no un estado financiero. 6949</Callout> 6950 6951## Detectar anomalÃas y actuar [#detector-anomalias] 6952 69531. \`tilopay_sales_summary\` compara la ventana actual (por ejemplo la última hora o el dÃa) contra 6954 el mismo perÃodo de referencia para detectar caÃdas de aprobación, picos de rechazos o cambios 6955 bruscos en el ticket promedio. 69562. \`tilopay_list_transactions\` filtra por estado para ver si los rechazos se concentran en un 6957 método de pago, una moneda o un patrón de intentos repetidos. 69583. \`tilopay_get_transaction\` abre casos representativos para leer los códigos de respuesta. 69594. \`tilopay_diagnostics\` verifica credenciales y disponibilidad de los endpoints para separar un 6960 problema de la integración del comercio de un problema de los clientes o del emisor. 69615. \`tilopay_help_guides\` busca en las guÃas oficiales la explicación y los pasos de corrección que 6962 correspondan al código de respuesta o al sÃntoma. 69636. El agente abre la alerta con el diagnóstico ya hecho: qué cambió, desde cuándo, causa probable y 6964 acción sugerida. 6965 6966<Callout type="warn"> 6967 El resumen de ventas usa UTC. Al comparar ventanas cortas, alineá las horas; una "caÃda" a 6968 medianoche local puede ser solo el corte del dÃa en UTC. Muchos intentos rechazados en pocos 6969 minutos con montos pequeños y tarjetas distintas pueden indicar pruebas de tarjetas robadas:
6970 reportalo a soporte en vez de reintentar. 6971</Callout> 6972 6973## Cerrar las ventas del mes [#cierre-de-mes] 6974 69751. \`tilopay_sales_summary\` devuelve los totales, costos y neto del perÃodo. 69762. \`tilopay_analyze_sales\` produce el informe en lenguaje natural. 69773. \`tilopay_get_transaction\` trae el detalle de las transacciones que haya que revisar. 6978 6979<Callout type="warn"> 6980 Las horas y los dÃas del resumen están en UTC, no en hora local. Las tendencias y los clientes 6981 destacados vienen vacÃos si la muestra es chica. 6982</Callout> 6983 6984## Reembolsar con confirmación humana [#reembolso] 6985 69861. \`tilopay_list_transactions\` localiza la transacción en el rango de fechas. 69872. \`tilopay_get_transaction\` muestra el detalle para confirmar que es la correcta. 69883. El agente le pide confirmación al usuario. Este paso lo impone el cliente MCP, no Tilopay. 69894. \`tilopay_modify_transaction\` ejecuta la modificación con la acción y el monto. 6990 6991## Revisar una suscripción recurrente [#suscripcion-recurrente] 6992 69931. \`tilopay_recurring_list_plans\` lista los planes de cobro recurrente del comercio. 69942. \`tilopay_recurring_get_plan\` abre el plan que interesa por su ID. 69953. \`tilopay_recurring_get_subscriber\` muestra el detalle del suscriptor. 69964. \`tilopay_recurring_subscriber_payments\` lista los pagos de ese suscriptor para ver cuáles 6997 pasaron y cuáles no. 6998 6999Sirve para responder "¿por qué este cliente aparece sin cobrar este mes?" sin entrar al panel. 7000 7001## Optimizar los planes de suscripción [#optimizar-planes] 7002 70031. \`tilopay_recurring_list_plans\` lista los planes activos con su precio y periodicidad. 70042. \`tilopay_recurring_get_plan\` abre cada plan para conocer la cantidad de suscriptores y su 7005 configuración. 70063. \`tilopay_recurring_subscriber_payments\` recorre los pagos por suscriptor para calcular, por plan, 7007 la tasa de cobros exitosos, el mes en que más suscriptores dejan de pagar y la antigüedad promedio. 70084. \`tilopay_recurring_get_subscriber\` revisa los casos atÃpicos que el análisis señale. 70095. El agente presenta el comparativo entre planes: retención, ingreso por suscriptor y punto de 7010 abandono, y propone cambios de precio, periodicidad o contenido. 70116. \`tilopay_create_payment_link\` permite probar una oferta nueva con un segmento pequeño de 7012 contactos antes de modificar un plan. 7013 7014Es análisis de precios con datos reales de cobro. El agente no modifica planes: propone, y el 7015comercio decide en el panel. 7016 7017## Pausar o dar de baja a un suscriptor [#pausar-suscriptor] 7018 70191. \`tilopay_recurring_get_subscriber\` confirma que el suscriptor es el correcto. 70202. El agente le pide confirmación al usuario, con el nombre y el plan a la vista. 70213. \`tilopay_recurring_manage_subscriber\` ejecuta \`pause\`, \`reactivate\` o \`delete\`. 7022 7023<Callout type="warn"> 7024 \`tilopay_recurring_manage_subscriber\` está marcada como sensible: afecta cobros futuros y \`delete\` 7025 no se deshace. Nunca la ejecutés sin confirmación humana explÃcita. 7026</Callout> 7027 7028## Cobrar a un grupo con tarjetas almacenadas [#cobro-masivo] 7029 70301. \`tilopay_saved_cards_list_groups\` lista los grupos de cobro. 70312. \`tilopay_saved_cards_list_affiliates\` muestra los afiliados del grupo elegido, para saber a 7032 cuántas tarjetas se le va a cobrar. 70333. El agente resume monto, moneda, motivo y cantidad de afiliados, y pide confirmación. 70344. \`tilopay_saved_cards_create_payments\` crea los cobros. 70355. \`tilopay_saved_cards_list_collections\` y \`tilopay_saved_cards_collection_detail\` revisan el 7036 resultado: la segunda necesita el \`code\` que devuelve la primera. 7037 7038<Callout type="warn"> 7039 \`tilopay_saved_cards_create_payments\` mueve dinero real de las tarjetas almacenadas. Tratala como 7040 una operación de un solo intento: confirmá antes, y verificá después con el detalle del cobro. 7041</Callout> 7042 7043## Depurar una integración y acompañar a un desarrollador [#depurar-integracion] 7044 70451. \`tilopay_diagnostics\` prueba las credenciales y un endpoint de cada grupo del API, para separar 7046 un problema de credenciales de un problema de la petición. 70472. \`tilopay_debug_code\` recibe el fragmento de código, el log o el stack trace y devuelve 7048 diagnóstico, causa raÃz, corrección y riesgos. 70493. \`tilopay_help_guides\` responde las dudas de uso del panel con las guÃas oficiales. 70504. \`tilopay_list_transactions\` y \`tilopay_get_transaction\` confirman si la operación que el 7051 desarrollador cree fallida en realidad llegó a Tilopay y con qué resultado. 7052 7053\`tilopay_debug_code\` no lee el repositorio ni ejecuta el código: analiza sólo lo que le pasás. Antes 7054de mandarlo, quitá credenciales del fragmento; la herramienta oculta lo que reconoce como secreto, 7055pero no reemplaza esa revisión.
7056 7057Con estas cuatro herramientas un agente de soporte atiende el onboarding técnico completo: verifica 7058la cuenta, encuentra la causa del error, entrega la corrección con la guÃa oficial y confirma contra 7059las transacciones reales. Las preguntas que se repiten son la señal de qué guÃa o ejemplo debe agregarse al 7060portal. 7061 7062<Callout type="info"> 7063 Las tarjetas de prueba del modo sandbox están en la guÃa de pruebas del portal. El modo sandbox se 7064 alterna desde la cuenta; no existe un host separado. 7065</Callout> 7066 7067## Tilopay como herramienta de otros agentes [#tilopay-como-herramienta] 7068 70691. El comercio solicita acceso al servidor MCP con el formulario del portal (nombre de la persona 7070 responsable, correo del comercio y nombre del comercio); soporte confirma la aprobación y las 7071 condiciones de uso. 70722. El agente externo (el asistente de un ERP, un bot de tienda en lÃnea, un agente contable) 7073 conecta el servidor MCP con esas credenciales y ejecuta \`tilopay_diagnostics\` para verificar la 7074 conexión. 70753. Con el catálogo de herramientas cargado, el agente externo usa las herramientas de consulta 7076 (\`tilopay_sales_summary\`, \`tilopay_list_transactions\`, \`tilopay_recurring_*\`, \`baas_*\`) para 7077 responder preguntas del negocio dentro de su propia conversación. 70784. Para acciones que crean o mueven dinero (\`tilopay_create_payment_link\`, 7079 \`tilopay_modify_transaction\`, \`tilopay_saved_cards_create_payments\`, 7080 \`tilopay_recurring_manage_subscriber\`) el agente externo aplica la polÃtica de confirmación 7081 descrita en la página de permisos antes de ejecutar. 7082 7083Esta receta cambia la posición del MCP: no es solo un asistente dentro de Tilopay, es la capa de 7084pagos que cualquier agente puede invocar. Las demás recetas de esta página funcionan igual cuando 7085las ejecuta un agente de terceros. 7086 7087<Callout type="warn"> 7088 El consumo del MCP puede tener costos adicionales según el volumen; soporte lo detalla al validar 7089 el volumen transaccional del comercio. Las herramientas marcadas como sensibles exigen 7090 confirmación humana en el cliente MCP que las ejecute, sea de Tilopay o de un tercero. 7091</Callout> 7092`,nn=`--- 7093title: Recordatorios 7094kind: mcp-tool 7095access: destructive 7096status: stable 7097last_verified: 2026-09-14 7098verified_by: equipo-integraciones 7099owner: equipo-integraciones 7100sources: 7101 - "Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo reminders), verificado 14-09-2026" 7102locales: [es, en] 7103related: [agentes/mcp, agentes/mcp/avisos, agentes/asistente-whatsapp] 7104description: Herramientas del MCP para crear, ver y cancelar recordatorios por WhatsApp, con o sin una acción del agente al enviarse. 7105--- 7106 7107## Qué cubre [#que-cubre] 7108 7109Un recordatorio es un mensaje de WhatsApp programado: una sola vez, diario, semanal o mensual. Puede 7110ser sólo texto o traer una **acción** que el agente ejecuta al enviarlo, escrita en lenguaje natural 7111("dame el resumen de ventas de hoy", "listá los enlaces de pago sin cobrar"), y el resultado se 7112adjunta al mensaje. 7113 7114Reglas que conviene tener claras: 7115 7116- Las horas son la hora local del comercio, según el paÃs de su teléfono de WhatsApp. 7117- Hay un máximo de 20 recordatorios activos. 7118- Los recordatorios de enlaces de pago o de cobros **siempre** llegan al WhatsApp del comercio, 7119 nunca al cliente. 7120- Para enviar a otro número, primero hay que guardarlo como 7121 [contacto](/developers/agentes/mcp/contactos). 7122 7123## Herramientas [#herramientas] 7124 7125<McpToolGroup slug="recordatorios" /> 7126`,rn=`--- 7127title: Cobros recurrentes 7128kind: mcp-tool 7129access: destructive 7130status: stable 7131last_verified: 2026-09-02 7132verified_by: equipo-integraciones 7133owner: equipo-integraciones 7134sources: 7135 - "Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine y manifiesto generado), verificado 02-09-2026" 7136locales: [es, en] 7137related: [agentes/mcp, agentes/mcp/permisos, agentes/mcp/recetas] 7138description: Herramientas del MCP para consultar planes recurrentes, suscriptores y sus pagos, y para pausar, reactivar o eliminar un suscriptor. 7139--- 7140 7141## Qué cubre [#que-cubre] 7142 7143Cuatro herramientas de lectura sobre los planes de cobro recurrente y sus suscriptores, y una sensible que pausa, reactiva o elimina un suscriptor. Esa última afecta cobros futuros: pedà confirmación humana antes de ejecutarla. 7144 7145## Herramientas [#herramientas] 7146 7147<McpToolGroup slug="recurrentes" /> 7148`,an=`---
7149title: Soporte y diagnóstico 7150kind: mcp-tool 7151access: read 7152status: stable 7153last_verified: 2026-09-02 7154verified_by: equipo-integraciones 7155owner: equipo-integraciones 7156sources: 7157 - "Servidor MCP de Tilopay (manifiesto y código), verificado 29-08-2026" 7158 - "Respuestas de TecnologÃa, 29-08-2026" 7159locales: [es, en] 7160related: [agentes/mcp, agentes/mcp/permisos, agentes/mcp/recetas] 7161description: Herramientas del MCP para responder con las guÃas oficiales y probar la conexión con el API. 7162--- 7163 7164## Qué cubre [#que-cubre] 7165 7166Tres herramientas de lectura: una responde preguntas de uso del panel con las guÃas oficiales de tilopay.com/guias, otra prueba las credenciales y un endpoint de cada grupo del API para saber qué parte responde cuando algo falla, y la tercera analiza un fragmento de código o un stack trace que le pases y devuelve diagnóstico, causa raÃz, corrección y riesgos. Esa última no lee repositorios ni ejecuta código. 7167 7168## Herramientas [#herramientas] 7169 7170<McpToolGroup slug="soporte" /> 7171`,on=`--- 7172title: Tarjetas guardadas y cobros masivos 7173kind: mcp-tool 7174access: destructive 7175status: stable 7176last_verified: 2026-09-14 7177verified_by: equipo-integraciones 7178owner: equipo-integraciones 7179sources: 7180 - "Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo saved-cards), verificado 14-09-2026" 7181locales: [es, en] 7182related: [agentes/mcp, agentes/mcp/recurrentes, agentes/mcp/permisos] 7183description: Herramientas del MCP para guardar la tarjeta de un cliente, cobrarle, eliminarla y trabajar con los grupos de cobro masivo. 7184--- 7185 7186## Qué cubre [#que-cubre] 7187 7188Este grupo trabaja con las tarjetas que los clientes del comercio ya autorizaron guardar 7189(tokenización) y con los cobros masivos a esas tarjetas. 7190 7191Cómo funciona el guardado: el agente genera un **enlace seguro** y lo comparte con el cliente; el 7192cliente digita ahà su tarjeta. Ni el agente, ni el modelo, ni el comercio ven el número completo: 7193las herramientas de consulta devuelven la marca y los últimos dÃgitos. 7194 7195Las operaciones sensibles del grupo âcobrar a una tarjeta guardada, eliminar una tarjeta y crear 7196cobros masivosâ exigen un **código de confirmación** que llega al correo del comercio. 7197 7198<Callout type="note"> 7199 Las rutas del API que usan los cobros masivos quedan fuera de la referencia del portal, asà que 7200 estas páginas no las publican. Lo que sà queda documentado es qué hace cada herramienta, qué 7201 recibe y qué devuelve. 7202</Callout> 7203 7204## Herramientas [#herramientas] 7205 7206<McpToolGroup slug="tarjetas-guardadas" /> 7207`,sn=`--- 7208title: Ventas y transacciones 7209kind: mcp-tool 7210access: destructive 7211status: stable 7212last_verified: 2026-08-29 7213verified_by: equipo-integraciones 7214owner: equipo-integraciones 7215sources: 7216 - "Servidor MCP de Tilopay (manifiesto y código), verificado 29-08-2026" 7217 - "Respuestas de TecnologÃa, 29-08-2026" 7218locales: [es, en] 7219related: [agentes/mcp, agentes/mcp/permisos, agentes/mcp/recetas] 7220description: Herramientas del MCP para consultar transacciones, medir ventas y modificar una transacción. 7221--- 7222 7223## Qué cubre [#que-cubre] 7224 7225Este grupo cubre la lectura de transacciones y el análisis de ventas del comercio, más la modificación de una transacción: captura, reembolso o reversión. La modificación mueve dinero real y está marcada como sensible. 7226 7227## Herramientas [#herramientas] 7228 7229<McpToolGroup slug="ventas" /> 7230`,cn=`---
7231title: Servidor MCP 7232kind: mcp-index 7233status: stable 7234last_verified: 2026-09-23 7235verified_by: equipo-integraciones 7236owner: equipo-integraciones 7237sources: 7238 - "Código del servidor MCP de Tilopay (Tilopay Insight Engine), verificado 23-09-2026" 7239locales: [es, en] 7240related: [agentes, agentes/mcp/permisos, agentes/mcp/recetas, agentes/mcp/ventas] 7241description: Cómo conectar un cliente MCP al servidor de Tilopay con OAuth y las mismas credenciales de la cuenta de Tilopay. 7242--- 7243 7244## Cómo se obtiene el acceso [#acceso] 7245 7246El acceso es autoservicio, el comercio instala el conector con la URL del servidor y, en la ventana de autorización, inicia sesión con las mismas credenciales de su cuenta de Tilopay (correo y contraseña) y confirma el código de verificación que Tilopay envÃa. Con eso el usuario del asistente se crea solo, queda asociado al comercio y sus credenciales de API se registran cifradas del lado del servidor. 7247 7248Tres cosas que conviene tener claras: 7249 72501. La sesión se autoriza con el correo y la contraseña del panel de Tilopay, más el código de 7251 verificación. El asistente nunca ve ni guarda esa contraseña: la conexión queda con OAuth 2.0. 72522. Como el usuario queda asociado a un comercio, el agente sólo alcanza los datos y las 7253 operaciones de ese comercio. 72543. El comercio nunca pega su \`apiKey\`, \`apiUser\` ni \`apiPassword\` en el cliente MCP. 7255 7256<Callout type="warn"> 7257 Las credenciales de API del comercio viven cifradas en el servidor de Tilopay y se descifran en 7258 cada llamada. No se pegan en el cliente MCP, ni en el archivo de configuración del asistente, ni 7259 se le pasan al modelo. Ese es el argumento de seguridad de todo el diseño. 7260</Callout> 7261 7262## Conexión [#conexion] 7263 7264El servidor es \`https://mcp.tilopay.com/mcp\`. Para conectarlo: 7265 72661. Agregar el servidor en el cliente MCP con esa URL. 72672. El cliente descubre la autenticación por el 401 con \`WWW-Authenticate\`, que apunta a 7268 \`/.well-known/oauth-protected-resource\`. 72693. El cliente se registra dinámicamente y abre la pantalla de autorización. 72704. El usuario inicia sesión con las credenciales de su cuenta de Tilopay, confirma el código de 7271 verificación y ve una pantalla de consentimiento con la aplicación que pide acceso, la URL de 7272 retorno y los permisos. 72735. Al aprobar, el cliente queda conectado. 7274 7275El modelo es OAuth 2.0 con \`authorization_code\` y \`refresh_token\`. El cliente descubre los 7276endpoints del proveedor de identidad por sà mismo: lo único que hay que configurar es la URL del 7277servidor. 7278 7279## Desde los clientes MCP más usados [#clientes] 7280 7281- **Claude** (escritorio y web): agregar un conector remoto con la URL del servidor y completar 7282 el inicio de sesión en la ventana que abre. <ExternalLink href="https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=Tilopay&connectorUrl=https://mcp.tilopay.com/mcp">Conectar con Claude</ExternalLink> 7283- **ChatGPT**: agregar el servidor como conector remoto con esa misma URL; la autorización se 7284 completa en el navegador. 7285- **Cursor, VS Code y otros editores**: declarar un servidor MCP remoto de tipo HTTP con la URL, 7286 sin token en el archivo de configuración; el editor abre el navegador para autorizar. 7287- **Cliente propio**: usar un cliente MCP con transporte Streamable HTTP y s
7287oporte de OAuth 2.0 7288 con registro dinámico. La secuencia es la de arriba: 401, descubrimiento, registro, 7289 autorización, conexión. 7290 7291El transporte es Streamable HTTP. Las herramientas disponibles se listan por grupo: 7292[ventas y transacciones](/developers/agentes/mcp/ventas), 7293[enlaces de pago](/developers/agentes/mcp/enlaces-de-pago), 7294[catálogo](/developers/agentes/mcp/catalogo), 7295[contactos](/developers/agentes/mcp/contactos), 7296[cobros recurrentes](/developers/agentes/mcp/recurrentes), 7297[soporte y diagnóstico](/developers/agentes/mcp/soporte). 7298El grupo [API bancario (BaaS)](/developers/agentes/mcp/api-bancario) se activa bajo solicitud y 7299sólo funciona para usuarios con credenciales del API bancario de Tilopay. 7300Antes de conectar un agente, leé [qué puede hacer](/developers/agentes/mcp/permisos). 7301`,ln=`--- 7302title: Agentes de IA 7303kind: guide 7304status: stable 7305last_verified: 2026-08-29 7306verified_by: equipo-integraciones 7307owner: equipo-integraciones 7308sources: 7309 - "Servidor MCP de Tilopay (manifiesto y código), verificado 29-08-2026" 7310 - "Respuestas de TecnologÃa, 29-08-2026" 7311locales: [es, en] 7312related: [agentes/mcp, agentes/mcp/permisos, agentes/documentacion-legible, agentes/mcp/recetas] 7313description: "Los tres planos que Tilopay le ofrece a un agente de IA: leer la documentación, operar la cuenta por el servidor MCP, e integrar con el API y el SDK." 7314--- 7315 7316## Leer [#leer] 7317 7318Todo el portal está disponible en formato legible por máquina: el Ãndice 7319[\`llms.txt\`](https://www.tilopay.com/llms.txt), el Markdown crudo de cualquier URL del sitio 7320agregándole \`.md\`, el [\`openapi.json\`](/developers/openapi.json) del API y el 7321[\`mcp.json\`](/developers/mcp.json) del servidor MCP. 7322 7323## Actuar por cuenta del comercio [#actuar] 7324 7325El [servidor MCP](/developers/agentes/mcp) le permite a un asistente operar la cuenta del 7326comercio: consultar ventas, crear enlaces de pago, reembolsar. El acceso es autoservicio âse 7327inicia sesión con las credenciales de Tilopayâ y las credenciales del comercio nunca salen del 7328servidor de Tilopay. 7329 7330## Integrar en producto [#integrar] 7331 7332Cuando lo que se construye es un producto que cobra, el camino son el [SDK JavaScript](/developers/sdk) 7333y el [API Adquirencia](/developers/api/autenticacion), no el MCP. 7334 7335## Cuál elegir [#cual-elegir] 7336 7337- Operar la cuenta desde un asistente â [servidor MCP](/developers/agentes/mcp). 7338- Construir un producto que cobra â [API](/developers/api/autenticacion) y [SDK](/developers/sdk). 7339- Alimentar un agente con la documentación â [documentación legible](/developers/agentes/documentacion-legible). 7340 7341El acceso al MCP es autoservicio: se instala el conector y se inicia sesión con las credenciales 7342de Tilopay, como explica la [página del servidor MCP](/developers/agentes/mcp). 7343`,un=`--- 7344title: "Obtener token del API" 7345kind: api-operation 7346status: stable 7347api_version: v1 7348last_verified: 2026-08-29 7349verified_by: equipo-integraciones 7350owner: equipo-integraciones 7351sources:
7352 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 7353locales: [es, en] 7354related: [api/autenticacion, api/procesos-operativos/errors] 7355description: "Operación de login del API: devuelve el token bearer que firma el resto de las llamadas." 7356gaps: 7357 - "Present in the collection example but absent from the endpoint description." 7358--- 7359 7360\`\`\`http 7361POST /api/v1/login 7362\`\`\` 7363 7364## Qué hace [#que-hace] 7365 7366Devuelve el token de seguridad necesario para consumir los servicios del API. El usuario y la contraseña de API se obtienen en [Admin · Tilopay Checkout](https://admin.tilopay.com/admin/checkout). 7367 7368## Autenticación [#autenticacion] 7369 7370No requiere token: es la operación que lo emite. Ver [autenticación](/developers/api/autenticacion). 7371 7372## Parámetros [#parametros] 7373 7374<Param id="token-api-parametro-apiuser" name="apiuser" type="string"> 7375Usuario de API del comercio, obtenido en Admin · Tilopay Checkout. 7376</Param> 7377 7378<Param id="token-api-parametro-password" name="password" type="string"> 7379Contraseña de API del comercio, obtenida en Admin · Tilopay Checkout. 7380</Param> 7381 7382## Ejemplo de request [#request] 7383 7384Los valores \`<...>\` son marcadores: reemplazalos por tus credenciales y datos. 7385 7386\`\`\`json 7387{ 7388 "apiuser": "<api_user>", 7389 "password": "<api_password>" 7390} 7391\`\`\` 7392 7393## Respuesta [#respuesta] 7394 7395\`\`\`json 7396{ 7397 "access_token": "<jwt>", 7398 "token_type": "bearer", 7399 "expires_in": 86400 7400} 7401\`\`\` 7402 7403Para interpretar una respuesta que no es de éxito, ver [cómo leer una respuesta de error](/developers/api/procesos-operativos/errors). 7404`,dn=`--- 7405title: "Obtener token del SDK" 7406kind: api-operation 7407status: stable 7408api_version: v1 7409last_verified: 2026-08-29 7410verified_by: equipo-integraciones 7411owner: equipo-integraciones 7412sources:
7413 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 7414locales: [es, en] 7415related: [api/autenticacion, api/procesos-operativos/errors] 7416description: "Login del SDK: devuelve el token que usa Tilopay.Init() en el navegador." 7417gaps: 7418 - "Present in the collection example but absent from the endpoint description." 7419--- 7420 7421\`\`\`http 7422POST /api/v1/loginSdk 7423\`\`\` 7424 7425## Qué hace [#que-hace] 7426 7427Devuelve el token de seguridad necesario para consumir el SDK. Las tres credenciales se obtienen en [Admin · Tilopay Checkout](https://admin.tilopay.com/admin/checkout). 7428 7429## Autenticación [#autenticacion] 7430 7431No requiere token: es la operación que lo emite. Ver [autenticación](/developers/api/autenticacion). 7432 7433## Parámetros [#parametros] 7434 7435<Param id="token-sdk-parametro-apiuser" name="apiuser" type="string"> 7436Usuario de API del comercio. 7437</Param> 7438 7439<Param id="token-sdk-parametro-password" name="password" type="string"> 7440Contraseña de API del comercio. 7441</Param> 7442 7443<Param id="token-sdk-parametro-key" name="key" type="string"> 7444Api key del comercio. 7445</Param> 7446 7447## Ejemplo de request [#request] 7448 7449Los valores \`<...>\` son marcadores: reemplazalos por tus credenciales y datos. 7450 7451\`\`\`json 7452{ 7453 "apiuser": "<api_user>", 7454 "password": "<api_password>", 7455 "key": "<api_key>" 7456} 7457\`\`\` 7458 7459## Respuesta [#respuesta] 7460 7461\`\`\`json 7462{ 7463 "access_token": "351d477adaaa51cdbb33ae4b4b8c843aa759f131c1c38415180b5035543d59d2f23f4e049706f5fa71c5f0d9ff763960a3cd035b4c1cefa428c90bedb672f780", 7464 "token_type": "bearer", 7465 "expires_in": "2023-06-05 13:32:06" 7466} 7467\`\`\` 7468 7469Para interpretar una respuesta que no es de éxito, ver [cómo leer una respuesta de error](/developers/api/procesos-operativos/errors). 7470`,fn=`--- 7471title: Autenticación 7472kind: api-operation 7473status: stable 7474api_version: v1 7475last_verified: 2026-08-28 7476verified_by: equipo-integraciones 7477owner: equipo-integraciones 7478sources: 7479 - "Respuestas de TecnologÃa, 28-08-2026" 7480locales: [es, en] 7481related: [entornos, sdk/instalacion, api/hosted-payment-page] 7482description: Cómo obtener el token del API y el token del SDK, cuánto duran y cómo se envÃan en cada llamada. 7483--- 7484 7485Todo el API y el SDK viven en un único host: \`https://app.tilopay.com\`. No hay un host 7486distinto para pruebas â ver [entornos](/developers/entornos). 7487 7488## Las dos operaciones [#operaciones] 7489 7490| Operación | Ruta | Para qué | 7491|---|---|---| 7492| Token del API | \`POST /api/v1/login\` | Llamadas servidor a servidor al API | 7493| Token del SDK | \`POST /api/v1/loginSdk\` | El token que se le pasa a \`Tilopay.Init()\` | 7494 7495\`loginSdk\` es el método que el artÃculo anterior llamaba "GetTokenSdk". Es el mismo. 7496 7497## Obtener el token del API [#token-api] 7498 7499\`\`\`bash 7500curl -X POST https://app.tilopay.com/api/v1/login \\ 7501 -H "Content-Type: application/json" \\ 7502 -d '{ "apiuser": "TU_APIUSER", "password": "TU_PASSWORD" }' 7503\`\`\` 7504 7505### Cuerpo [#cuerpo] 7506 7507<Param id="login-apiuser" name="apiuser" type="string" required> 7508Usuario de API del comercio. 7509</Param> 7510 7511<Param id="login-password" name="password" type="string" required> 7512Contraseña de API del comercio. 7513</Param> 7514 7515### Respuesta [#respuesta] 7516 7517<Param id="login-access-token" name="access_token" type="string"> 7518El token que se envÃa en las llamadas siguientes. 7519</Param> 7520 7521<Param id="login-token-type" name="token_type" type="string"> 7522Siempre \`bearer\`. 7523</Param> 7524 7525<Param id="login-expires-in" name="expires_in" type="integer"> 7526Vigencia del token. El tiempo exacto viene en esta respuesta: no lo asumás desde el 7527cliente. 7528</Param> 7529 7530## Obtener el token del SDK [#token-sdk] 7531 7532\`\`\`bash 7533curl -X POST https://app.tilopay.com/api/v1/loginSdk \\ 7534 -H "Content-Type: application/json" \\ 7535 -d '{ "apiuser": "TU_APIUSER", "password": "TU_PASSWORD" }' 7536\`\`\` 7537 7538El token resultante es el que se pasa al parámetro \`token\` de 7539[\`Tilopay.Init()\`](/developers/sdk/reference/init). 7540 7541## Vigencia [#vigencia] 7542 7543- **Token del API: 24 horas.** 7544- **Token del SDK: 1 hora.** 7545 7546El valor exacto siempre llega en \`expires_in\`. Cachealo del lado servidor y renovalo 7547cuando expire. 7548 7549## Cómo se envÃa [#envio] 7550 7551\`\`\`http 7552Authorization: bearer <token> 7553\`\`\` 7554 7555## Revocación y lÃmites [#revocacion] 7556 7557- **Los tokens no se pueden revocar.** Si un token se filtra, no hay una operación para 7558 invalidarlo: hay que tratar la fuga como un incidente y rotar credenciales con Tilopay. 7559- **No hay lÃmite** de tokens simultáneos por comercio. Podés pedir uno por proceso sin 7560 invalidar los anteriores. 7561 7562## Dónde se obtienen las credenciales [#credenciales] 7563 7564\`apiuser\`, \`password\` y \`key\` se obtienen en el panel del c
7564omercio, en 7565\`admin.tilopay.com/admin/checkout\`. Si no tenés acceso todavÃa, empezá por 7566[el registro de developer](/developers/registro). 7567 7568<Callout type="warn"> 7569Nunca pongas \`apiuser\` ni \`password\` en el navegador. El login corre en tu servidor; al 7570navegador solo baja el token del SDK. 7571</Callout> 7572`,pn=`--- 7573title: "API · Crear CoF (Tokenizar)" 7574kind: api-operation 7575status: stable 7576api_version: v1 7577last_verified: 2026-08-29 7578verified_by: equipo-integraciones 7579owner: equipo-integraciones 7580sources: 7581 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 7582locales: [es, en] 7583related: [api/autenticacion, api/cof, api/procesos-operativos/errors] 7584description: "Tokenización de tarjeta con processTokenize: parámetros, request y respuesta." 7585gaps: 7586 - "These error examples were saved without an HTTP status code. It is not possible to tell from the collection whether the API returns HTTP 4xx or HTTP 200 with an error body." 7587--- 7588 7589\`\`\`http 7590POST /api/v1/processTokenize 7591\`\`\` 7592 7593## Qué hace [#que-hace] 7594 7595Tokeniza una tarjeta: devuelve la URL del formulario de tokenización. 7596 7597## Autenticación [#autenticacion] 7598 7599Requiere el token bearer del API en el header \`Authorization\` â ver [autenticación](/developers/api/autenticacion). 7600 7601## Parámetros [#parametros] 7602 7603<Param id="process-tokenize-parametro-redirect" name="redirect" type="string"> 7604Sitio donde espera la respuesta de la transacción. 7605</Param> 7606 7607<Param id="process-tokenize-parametro-key" name="key" type="string"> 7608Key asociado al comercio. 7609</Param> 7610 7611<Param id="process-tokenize-parametro-email" name="email" type="string"> 7612Correo electrónico del tarjetahabiente. 7613</Param> 7614 7615<Param id="process-tokenize-parametro-language" name="language" type="string"> 7616Idioma [es, en]. 7617</Param> 7618 7619<Param id="process-tokenize-parametro-firstname" name="firstName" type="string"> 7620Nombre del tarjetahabiente. 7621</Param> 7622 7623<Param id="process-tokenize-parametro-lastname" name="lastName" type="string"> 7624Apellido del tarjetahabiente. 7625</Param> 7626 7627<Param id="process-tokenize-parametro-token-version" name="token_version" type="string"> 7628Enviar como valor "v2". 7629</Param> 7630 7631## Ejemplo de request [#request] 7632 7633Los valores \`<...>\` son marcadores: reemplazalos por tus credenciales y datos. 7634 7635\`\`\`json 7636{ 7637 "redirect": "https://urlToRedirect.com", 7638 "key": "<api_key>", 7639 "email": "[email protected]", 7640 "language": "es", 7641 "firstName": "name", 7642 "lastName": "lastname", 7643 "token_version": "v2" 7644} 7645\`\`\` 7646 7647## Respuesta [#respuesta] 7648 7649\`\`\`json 7650{ 7651 "type": "100", 7652 "url": "https://secure.tilopay.com/htmls/TOK-5063-740506121440_1648145457file.html" 7653} 7654\`\`\` 7655 7656Para interpretar una respuesta que no es de éxito, ver [cómo leer una respuesta de error](/developers/api/procesos-operativos/errors). 7657`,mn=`--- 7658title: "API · Realizar cobro CoF" 7659kind: api-operation 7660status: stable 7661api_version: v1 7662last_verified: 2026-08-29 7663verified_by: equipo-integraciones 7664owner: equipo-integraciones 7665sources:
7666 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 7667locales: [es, en] 7668related: [api/autenticacion, api/cof, api/procesos-operativos/errors] 7669description: "Cobro servidor a servidor con token de tarjeta v2 mediante Credential on File." 7670gaps: 7671 - "These error examples were saved without an HTTP status code. It is not possible to tell from the collection whether the API returns HTTP 4xx or HTTP 200 with an error body." 7672--- 7673 7674\`\`\`http 7675POST /api/v1/processRecurrentPayment 7676\`\`\` 7677 7678## Qué hace [#que-hace] 7679 7680Procesa un cobro con una tarjeta ya tokenizada, sin formulario. 7681 7682## Autenticación [#autenticacion] 7683 7684Requiere el token bearer del API en el header \`Authorization\` â ver [autenticación](/developers/api/autenticacion). 7685 7686## Parámetros [#parametros] 7687 7688<Param id="realizar-cobro-parametro-key" name="key" type="string" required> 7689Llave relacionada con el cliente. Se obtiene en Admin · Tilopay Checkout. 7690</Param> 7691 7692<Param id="realizar-cobro-parametro-amount" name="amount" type="string" required> 7693Monto de la compra. 7694</Param> 7695 7696<Param id="realizar-cobro-parametro-currency" name="currency" type="string" required> 7697Moneda de la compra en formato ISO, por ejemplo USD, CRC, GTQ. 7698</Param> 7699 7700<Param id="realizar-cobro-parametro-ordernumber" name="orderNumber" type="string" required> 7701Número de orden, puede ser alfanumérico. 7702</Param> 7703 7704<Param id="realizar-cobro-parametro-capture" name="capture" type="string" required> 7705Captura y autoriza: 1 sÃ, 0 no. 7706</Param> 7707 7708<Param id="realizar-cobro-parametro-email" name="email" type="string" required> 7709Correo del tarjetahabiente. 7710</Param> 7711 7712<Param id="realizar-cobro-parametro-card" name="card" type="string" required> 7713Token de tarjeta, debe ser el token v2 7714 7715- **hashVersion**: Utilizar solo en caso de implementar la verificación de hash, posibles valores [V1, V2], pod defecto se usa V1. 7716</Param> 7717 7718## Ejemplo de request [#request] 7719 7720Los valores \`<...>\` son marcadores: reemplazalos por tus credenciales y datos. 7721 7722\`\`\`json 7723{ 7724 "key": "<api_key>", 7725 "amount": "10.00", 7726 "currency": "USD", 7727 "orderNumber": "1213", 7728 "capture": "1", 7729 "email": "[email protected]", 7730 "card": "511111_00GOB1111" 7731} 7732\`\`\` 7733 7734## Respuesta [#respuesta] 7735 7736\`\`\`json 7737{ 7738 "type": "200", 7739 "response": "1", 7740 "description": "Transacción aprobada", 7741 "auth": "123456", 7742 "tpt": 734329, 7743 "order_id": "12135", 7744 "tilopayTransaction": 734329, 7745 "orderHash": "f3ad85046d249bc7a781eed5285a5ded92045a2e11108063504deec72ec9b338" 7746} 7747\`\`\` 7748 7749Para interpretar una respuesta que no es de éxito, ver [cómo leer una respuesta de error](/developers/api/procesos-operativos/errors). 7750`,hn=`--- 7751title: "API · Eliminar CoF" 7752kind: api-operation 7753status: stable 7754api_version: v1 7755last_verified: 2026-08-29 7756verified_by: equipo-integraciones 7757owner: equipo-integraciones 7758sources:
7759 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 7760locales: [es, en] 7761related: [api/autenticacion, api/cof, api/procesos-operativos/errors] 7762description: "Eliminación de un token de tarjeta guardado en la bóveda privada del comercio." 7763gaps: 7764 - "No response example available." 7765--- 7766 7767\`\`\`http 7768POST /api/v1/user/card-remove 7769\`\`\` 7770 7771## Qué hace [#que-hace] 7772 7773Elimina un token de tarjeta guardado. **Requisito:** el comercio debe contar con una bóveda de tokens privada. 7774 7775## Autenticación [#autenticacion] 7776 7777Requiere el token bearer del API en el header \`Authorization\` â ver [autenticación](/developers/api/autenticacion). 7778 7779## Parámetros [#parametros] 7780 7781<Param id="remove-card-parametro-key" name="key" type="string" required> 7782Llave relacionada con el comercio. 7783</Param> 7784 7785<Param id="remove-card-parametro-email" name="email" type="string" required> 7786Correo del cliente asociado al token. 7787</Param> 7788 7789<Param id="remove-card-parametro-token" name="token" type="string"> 7790Token a eliminar. 7791</Param> 7792 7793## Ejemplo de request [#request] 7794 7795Los valores \`<...>\` son marcadores: reemplazalos por tus credenciales y datos. 7796 7797\`\`\`json 7798{ 7799 "key": "1234-1234-1234-1234-1234", 7800 "email": "[email protected]", 7801 "token": "411111.......1111" 7802} 7803\`\`\` 7804 7805Para interpretar una respuesta que no es de éxito, ver [cómo leer una respuesta de error](/developers/api/procesos-operativos/errors). 7806`,gn=`--- 7807title: "Credential on File (CoF)" 7808kind: api-index 7809status: stable 7810api_version: v1 7811last_verified: 2026-08-29 7812verified_by: equipo-integraciones 7813owner: equipo-integraciones 7814sources:
7815 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 7816locales: [es, en] 7817related: [api/autenticacion, api/procesos-operativos/errors] 7818description: "Operaciones de credential on file (cof) del API de Tilopay, con parámetros y ejemplos." 7819--- 7820 7821## Operaciones [#operaciones] 7822 78233 operaciones: 7824 7825- [Tokenizar tarjeta](/developers/api/cof/process-tokenize) â 1 7826- [Eliminar tarjeta](/developers/api/cof/remove-card) â 1 7827- [Realizar cobro](/developers/api/cof/realizar-cobro) â 1 7828 7829Todas las operaciones viven en \`https://app.tilopay.com\` y, salvo las de login, requieren el token del API â ver [autenticación](/developers/api/autenticacion). 7830`,_n=`--- 7831title: "API · Convenciones de las respuestas" 7832kind: concept 7833status: stable 7834api_version: v1 7835last_verified: 2026-09-02 7836verified_by: equipo-integraciones 7837owner: equipo-integraciones 7838sources: 7839 - "Respuestas de TecnologÃa, 02-09-2026 (hoja de preguntas v2, validada)" 7840locales: [es, en] 7841related: [api/autenticacion, api/procesos-operativos/errors, reintentos-seguros] 7842description: "Cómo vienen tipados los montos, dónde hay JSON dentro de una cadena y por qué la misma entidad cambia de forma entre consultar uno y listar." 7843--- 7844 7845Las respuestas del API de adquirencia tienen tres detalles que no se deducen leyendo cada 7846operación por separado y que rompen integraciones tipadas. Están acá porque aplican a 7847varias operaciones a la vez. 7848 7849Para el manejo de errores, ver [cómo leer una respuesta de error](/developers/api/procesos-operativos/errors). 7850 7851## Los montos vienen como cadena, no como número [#montos-cadena] 7852 7853<Callout type="warn"> 7854Los montos, descuentos e importes se serializan como cadena: \`"discount": "40.00"\`, 7855\`"amount": "0.00"\`, \`"first_amount": "0.00"\`, \`"amount_max_daily": "1000.00"\`. 7856</Callout> 7857 7858Cualquier deserialización tipada que declare esos campos como número falla. Declaralos 7859como cadena y convertilos vos, con el tipo decimal de tu lenguaje, no con punto flotante. 7860 7861Aparece, entre otras, en [obtener un cupón](/developers/api/recurrentes/cupones/get-coupon), 7862[listar cupones](/developers/api/recurrentes/cupones/get-coupons), 7863[listar planes](/developers/api/recurrentes/planes/get-plans) y 7864[pagos de suscriptor](/developers/api/recurrentes/suscriptores/suscriptor-payments). 7865 7866## Hay un JSON dentro de una cadena [#doble-encoding] 7867 7868En [pagos de suscriptor](/developers/api/recurrentes/suscriptores/suscriptor-payments), el 7869campo \`data\` de cada pago **no es un objeto: es una cadena que contiene JSON**. 7870 7871\`\`\`json 7872"data": "{\\"first\\":1,\\"expire\\":\\"2024-12-28T19:05:29.572648Z\\",\\"amount\\":0,\\"activeAmount\\":0,\\"originalAmount\\":0,\\"key\\":\\"XXXX-XXXX-XXXX-XXXX-XXXX\\"}" 7873\`\`\` 7874 7875Hay que deserializar dos veces: primero la respuesta, después el contenido de \`data\`. 7876Tratá esa segunda deserialización como puede fallar cualquier entrada externa: envolvela y 7877registrá la cadena cruda si no parsea. 7878 7879## La misma entidad cambia de forma entre "obtener uno" y "listar" [#uno-vs-lista] 7880 7881No es un descuido de la documentación: las dos operaciones devuelven formas distintas del 7882mismo cupón, y hay que mapearlas por separado. 7883 7884| | [\`getCoupon\`](/developers/api/recurrentes/cupones/get-coupon) (uno) | [\`getRepeatCoupons\`](/developers/api/recurrentes/cupones/get-coupons) (lista) | 7885| --- | --- | --- | 7886| Fecha de creación | \`created_at\`, formato ISO | \`create\`, formato \`Y-m-d H:i:s\` | 7887| Otros campos | incluye \`recurrent_id\`, \`updated_at\` y \`deleted_at\` | no los incluye | 7888 7889Lo mismo pasa en 7890[pagos de suscriptor](/developers/api/recurrentes/suscriptores/suscriptor-payments), que 7891también usa \`create\` con formato \`Y-m-d H:i:s\`. 7892 7893## Dos formas de decir "no configurado" [#no-configurado] 7894 7895En [listar planes](/developers/api/recurrentes/planes/get-plans), los campos de webhook de 7896un plan vienen como cadena vacÃa cuando no están configurados, mientras que \`return_url\` 7897viene como \`null\`. Son dos representaciones del mismo estado en el mismo objeto: al 7898verificar si un webhook está configurado, tratá la cadena vacÃa y \`null\` como el mismo 7899caso. 7900`,vn=`--- 7901title: "Hosted payment page" 7902kind: api-operation 7903status: stable 7904api_version: v1
7905last_verified: 2026-08-29 7906verified_by: equipo-integraciones 7907owner: equipo-integraciones 7908sources: 7909 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 7910locales: [es, en] 7911related: [api/autenticacion, api/hosted-payment-page, api/procesos-operativos/errors] 7912description: "Parámetros, ejemplo de request y respuesta de processPayment, la operación que abre el formulario de pago." 7913gaps: 7914 - "These error examples were saved without an HTTP status code. It is not possible to tell from the collection whether the API returns HTTP 4xx or HTTP 200 with an error body." 7915--- 7916 7917\`\`\`http 7918POST /api/v1/processPayment 7919\`\`\` 7920 7921## Qué hace [#que-hace] 7922 7923Devuelve la URL del formulario de pago para una compra. 7924 7925## Autenticación [#autenticacion] 7926 7927Requiere el token bearer del API en el header \`Authorization\` â ver [autenticación](/developers/api/autenticacion). 7928 7929## Parámetros [#parametros] 7930 7931<Param id="process-payment-parametro-redirect" name="redirect" type="string" required> 7932Sitio donde esperás la respuesta de la transacción, por ejemplo \`mywebsite.com\`. Debe soportar el método **GET**. Ejemplo de respuesta al redirect: \`mywebsite.com?code=1&description=Transaction%20is%20approved.&auth=123456&order=TPYS-881WROIBQA1405468&tpt=4300&crd=&tilopay-transaction=4300&OrderHash=b02927cb...&returnData=Tilopay-dataReturn123456789&form_update=ok\`. Si \`code = 1\` la transacción está aprobada; en cualquier otro caso, rechazada. \`OrderHash\` es un string único por transacción: para usarlo del lado del comercio hay que escribir a \`[email protected]\` y pedir las instrucciones. 7933</Param> 7934 7935<Param id="process-payment-parametro-key" name="key" type="string" required> 7936Llave relacionada con el cliente. Se obtiene en Admin · Tilopay Checkout. 7937</Param> 7938 7939<Param id="process-payment-parametro-amount" name="amount" type="string" required> 7940Monto de la compra. 7941</Param> 7942 7943<Param id="process-payment-parametro-currency" name="currency" type="string" required> 7944Moneda de la compra en formato ISO, por ejemplo USD, CRC, GTQ. 7945</Param> 7946 7947<Param id="process-payment-parametro-ordernumber" name="orderNumber" type="string" required> 7948Número de orden, puede ser alfanumérico. 7949</Param> 7950 7951<Param id="process-payment-parametro-capture" name="capture" type="string" required> 7952Captura y autoriza: 1 sÃ, 0 no. 7953</Param> 7954 7955<Param id="process-payment-parametro-billtofirstname" name="billToFirstName" type="string" required> 7956Nombre. 7957</Param> 7958 7959<Param id="process-payment-parametro-billtolastname" name="billToLastName" type="string" required> 7960Apellidos. 7961</Param> 7962 7963<Param id="process-payment-parametro-billtoaddress" name="billToAddress" type="string" required> 7964Dirección. 7965</Param> 7966 7967<Param id="process-payment-parametro-billtoaddress2" name="billToAddress2" type="string" required> 7968Dirección 2. 7969</Param> 7970 7971<Param id="process-payment-parametro-billtocity" name="billToCity" type="string" required> 7972Ciudad. 7973</Param> 7974 7975<Param id="process-payment-parametro-billtostate" name="billToState" type="string" required> 7976Estado en formato ISO, por ejemplo CR-SJ (San José, Costa Rica) o US-CA (California, EE. UU.). 7977</Param> 7978 7979<Param id="process-payment-parametro-billtozippostcode" name="billToZipPostCode" type="string" required> 7980Código postal. 7981</Param> 7982 7983<Param id="process-payment-parametro-billtocountry" name="billToCountry" type="string" required> 7984PaÃs en código ISO Alpha-2, por ejemplo CR (Costa Rica), US (EE. UU.) o GT (Guatemala). 7985</Param> 7986 7987<Param id="process-payment-parametro-billtotelephone" name="billToTelephone" type="string" required> 7988Teléfono. 7989</Param> 7990 7991<Param id="process-payment-parametro-billtoemail" name="billToEmail" type="string" required> 7992Correo del comprador. 7993</Param> 7994 7995<Param id="process-payment-parametro-shiptofirstname" name="shipToFirstName" type="string" required> 7996Nombre. 7997</Param> 7998 7999<Param id="process-payment-parametro-shiptolastname" name="shipToLastName" type="string" required> 8000Apellidos. 8001</Param> 8002 8003<Param id="process-payment-parametro-shiptoaddress" name="shipToAddress" type="string" required> 8004Dirección. 8005</Param> 8006 8007<Param id="process-payment-parametro-shiptoaddress2" name="shipToAddress2" type="string" required> 8008Dirección 2. 8009</Param> 8010 8011<Param id="process-payment-parametro-shiptocity" name="shipToCity" type="string" required> 8012Ciudad. 8013</Param> 8014 8015<Param id="process-payment-parametro-shiptostate" name="shipToState" t
8015ype="string" required> 8016Estado en formato ISO, por ejemplo CR-SJ (San José, Costa Rica) o US-CA (California, EE. UU.). 8017</Param> 8018 8019<Param id="process-payment-parametro-shiptozippostcode" name="shipToZipPostCode" type="string" required> 8020Código postal. 8021</Param> 8022 8023<Param id="process-payment-parametro-shiptocountry" name="shipToCountry" type="string" required> 8024PaÃs en código ISO Alpha-2, por ejemplo CR (Costa Rica), US (EE. UU.) o GT (Guatemala). 8025</Param> 8026 8027<Param id="process-payment-parametro-shiptotelephone" name="shipToTelephone" type="string" required> 8028Teléfono. 8029</Param> 8030 8031<Param id="process-payment-parametro-subscription" name="subscription" type="string" required> 80321 para forzar que el cliente guarde la tarjeta en Tilopay, 0 para no. 8033</Param> 8034 8035<Param id="process-payment-parametro-platform" name="platform" type="string" required> 8036Nombre de la plataforma donde se genera la transacción. 8037</Param> 8038 8039<Param id="process-payment-parametro-returndata" name="returnData" type="string"> 8040Valor que Tilopay devuelve en la respuesta final. Se recomienda enviar un string en base 64. 8041</Param> 8042 8043<Param id="process-payment-parametro-hashversion" name="hashVersion" type="string"> 8044Solo se usa al implementar la verificación de hash. Valores posibles [V1, V2]; por defecto V1. 8045</Param> 8046 8047<Param id="process-payment-parametro-token-version" name="token_version" type="string"> 8048Enviar como valor "v2". 8049</Param> 8050 8051## Ejemplo de request [#request] 8052 8053Los valores \`<...>\` son marcadores: reemplazalos por tus credenciales y datos. 8054 8055\`\`\`json 8056{ 8057 "redirect": "https://www.urlToRedirect.com", 8058 "key": "<api_key>", 8059 "amount": "1.00", 8060 "currency": "USD", 8061 "orderNumber": "1212122", 8062 "capture": "1", 8063 "billToFirstName": "DEMO", 8064 "billToLastName": "DEMO", 8065 "billToAddress": "San Jose", 8066 "billToAddress2": "Catedral", 8067 "billToCity": "JS", 8068 "billToState": "SJ", 8069 "billToZipPostCode": "10061", 8070 "billToCountry": "CR", 8071 "billToTelephone": "88888888", 8072 "billToEmail": "[email protected]", 8073 "shipToFirstName": "DEMO", 8074 "shipToLastName": "DEMO", 8075 "shipToAddress": "San Jose", 8076 "shipToAddress2": "Catedral", 8077 "shipToCity": "JS", 8078 "shipToState": "SJ", 8079 "shipToZipPostCode": "10061", 8080 "shipToCountry": "CR", 8081 "shipToTelephone": "88888888", 8082 "subscription": "0", 8083 "platform": "api", 8084 "returnData": "dXNlcl9pZD0xMg==", 8085 "hashVersion": "V2", 8086 "token_version": "v2" 8087} 8088\`\`\` 8089 8090## Respuesta [#respuesta] 8091 8092\`\`\`json 8093{ 8094 "type": "100", 8095 "html": "Use url redirect", 8096 "url": "https://secure.tilopay.com/htmls/1212122_574572148file.html" 8097} 8098\`\`\` 8099 8100Para interpretar una respuesta que no es de éxito, ver [cómo leer una respuesta de error](/developers/api/procesos-operativos/errors). 8101`,yn=`--- 8102title: "API · Crear link de pago" 8103kind: api-operation 8104status: stable 8105api_version: v1 8106last_verified: 2026-08-29 8107verified_by: equipo-integraciones 8108owner: equipo-integraciones 8109sources:
8110 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 8111locales: [es, en] 8112related: [api/autenticacion, api/links-de-pago, api/procesos-operativos/errors] 8113description: "Creación de links de pago por API, con callback y webhook de respuesta." 8114--- 8115 8116\`\`\`http 8117POST /api/v1/createLinkPayment 8118\`\`\` 8119 8120## Qué hace [#que-hace] 8121 8122Crea un link de pago con monto, moneda y comportamiento de uso. 8123 8124## Autenticación [#autenticacion] 8125 8126Requiere el token bearer del API en el header \`Authorization\` â ver [autenticación](/developers/api/autenticacion). 8127 8128## Parámetros [#parametros] 8129 8130<Param id="create-link-payment-parametro-key" name="key" type="string" required> 8131Key de la integración Tilopay. 8132</Param> 8133 8134<Param id="create-link-payment-parametro-amount" name="amount" type="string" required> 8135Monto para el link de pago. 8136</Param> 8137 8138<Param id="create-link-payment-parametro-currency" name="currency" type="string" required> 8139Código de moneda en formato ISO 4217. 8140</Param> 8141 8142<Param id="create-link-payment-parametro-reference" name="reference" type="string"> 8143Referencia del link de pago. 8144</Param> 8145 8146<Param id="create-link-payment-parametro-type" name="type" type="integer"> 8147Tipo de link: 0 ilimitado, 1 de un solo uso. 8148</Param> 8149 8150<Param id="create-link-payment-parametro-description" name="description" type="string"> 8151Descripción del pago. 8152</Param> 8153 8154<Param id="create-link-payment-parametro-client" name="client" type="string"> 8155Nombre del cliente, aplica solo cuando type es 1. 8156</Param> 8157 8158<Param id="create-link-payment-parametro-callback-url" name="callback_url" type="string"> 8159Campo opcional. URL, por método **GET**, a la que se redirige con la respuesta al completar el pago. Ejemplo de los datos enviados: \`code=Val&description=Val&auth=Val&tilopayLinkId=Val&orderNumber=Val&tilopayOrderId=Val&creditCardToken=Val&creditCardBrand=Val&last4CreditCardNumber=Val&orderHash=Val\` 8160</Param> 8161 8162<Param id="create-link-payment-parametro-webhook-url" name="webhook_url" type="string"> 8163Campo opcional. URL para enviar el webhook de respuesta al completar el pago. 8164Debe ser de método **POST** para que reciba los datos. Ejemplo de los datos enviados: 8165 8166\`\`\`json 8167{ 8168 "code": "1", 8169 "codeDescription": "Aprobada", 8170 "auth": "123456", 8171 "tilopayLinkId": 54421, 8172 "orderNumber": "TPT123", 8173 "tilopayOrderId": 12233, 8174 "creditCardToken": "41111******11111", 8175 "creditCardBrand": "Visa", 8176 "last4CreditCardNumber": "1111", 8177 "linkDescription": "Descripcion del link de pago", 8178 "orderHash": "" 8179} 8180\`\`\` 8181</Param> 8182 8183## Ejemplo de request [#request] 8184 8185Los valores \`<...>\` son marcadores: reemplazalos por tus credenciales y datos. 8186 8187\`\`\`json 8188{ 8189 "key": "<api_key>", 8190 "amount": "10", 8191 "currency": "USD", 8192 "reference": "123456", 8193 "type": 0, 8194 "description": "Description", 8195 "client": "Client name", 8196 "callback_url": "", 8197 "webhook_url": "" 8198} 8199\`\`\` 8200 8201## Respuesta [#respuesta] 8202 8203\`\`\`json 8204{ 8205 "type": "200", 8206 "message": "Success", 8207 "url": "https://app.tilopay.com/link/MjMwMjQ=", 8208 "id": 1 8209} 8210\`\`\` 8211 8212Para interpretar una respuesta que no es de éxito, ver [cómo leer una respuesta de error](/developers/api/procesos-operativos/errors). 8213`,bn=`--- 8214title: "API · Eliminar un link de pago" 8215kind: api-operation 8216status: stable 8217api_version: v1 8218last_verified: 2026-08-29 8219verified_by: equipo-integraciones 8220owner: equipo-integraciones 8221sources:
8222 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 8223locales: [es, en] 8224related: [api/autenticacion, api/links-de-pago, api/procesos-operativos/errors] 8225description: "Eliminación de un link de pago por id." 8226--- 8227 8228\`\`\`http 8229POST /api/v1/deleteLinkPayment 8230\`\`\` 8231 8232## Qué hace [#que-hace] 8233 8234Elimina un link de pago existente. 8235 8236## Autenticación [#autenticacion] 8237 8238Requiere el token bearer del API en el header \`Authorization\` â ver [autenticación](/developers/api/autenticacion). 8239 8240## Parámetros [#parametros] 8241 8242<Param id="delete-link-payment-parametro-key" name="key" type="string" required> 8243Key de la integración Tilopay. 8244</Param> 8245 8246<Param id="delete-link-payment-parametro-id" name="id" type="string" required> 8247Id del link de pago. 8248</Param> 8249 8250## Ejemplo de request [#request] 8251 8252Los valores \`<...>\` son marcadores: reemplazalos por tus credenciales y datos. 8253 8254\`\`\`json 8255{ 8256 "key": "<api_key>", 8257 "id": "35" 8258} 8259\`\`\` 8260 8261## Respuesta [#respuesta] 8262 8263\`\`\`json 8264{ 8265 "type": "200", 8266 "status": 1, 8267 "message": "Success" 8268} 8269\`\`\` 8270 8271Para interpretar una respuesta que no es de éxito, ver [cómo leer una respuesta de error](/developers/api/procesos-operativos/errors). 8272`,xn=`--- 8273title: "API · Detalle de un link de pago" 8274kind: api-operation 8275status: stable 8276api_version: v1 8277last_verified: 2026-08-29 8278verified_by: equipo-integraciones 8279owner: equipo-integraciones 8280sources:
8281 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 8282locales: [es, en] 8283related: [api/autenticacion, api/links-de-pago, api/procesos-operativos/errors] 8284description: "Detalle de un link de pago y sus pagos, consultado por id." 8285gaps: 8286 - "Type, format and constraints are not documented in the collection." 8287--- 8288 8289\`\`\`http 8290GET /api/v1/getDetailLinkPayment/{link_payment_id}/{api_key} 8291\`\`\` 8292 8293## Qué hace [#que-hace] 8294 8295Devuelve el detalle de un link de pago y sus pagos asociados. No lleva cuerpo: los datos van en la ruta. 8296 8297## Autenticación [#autenticacion] 8298 8299Requiere el token bearer del API en el header \`Authorization\` â ver [autenticación](/developers/api/autenticacion). 8300 8301## Parámetros [#parametros] 8302 8303Parámetros de ruta, en el orden en que aparecen en la URL: 8304 8305<Param id="detail-link-payment-parametro-link-payment-id" name="link_payment_id" type="string · path" required> 8306Id del link de pago a consultar. 8307</Param> 8308 8309<Param id="detail-link-payment-parametro-api-key" name="api_key" type="string · path" required> 8310Api Key del comercio. 8311</Param> 8312 8313## Respuesta [#respuesta] 8314 8315\`\`\`json 8316{ 8317 "type": "200", 8318 "message": "Success", 8319 "detail": { 8320 "id": 6201, 8321 "amount": "45.00", 8322 "currency": "USD", 8323 "reference": "Producto de prueba 1 TP-Shop", 8324 "client": "NA", 8325 "type": "Unlimited", 8326 "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", 8327 "callback_url": null, 8328 "create": "2022-10-24 08:45:14" 8329 }, 8330 "payments": [] 8331} 8332\`\`\` 8333 8334Para interpretar una respuesta que no es de éxito, ver [cómo leer una respuesta de error](/developers/api/procesos-operativos/errors). 8335`,Sn=`--- 8336title: "API · Obtener un link de pago por id" 8337kind: api-operation 8338status: stable 8339api_version: v1 8340last_verified: 2026-08-29 8341verified_by: equipo-integraciones 8342owner: equipo-integraciones 8343sources:
8344 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 8345locales: [es, en] 8346related: [api/autenticacion, api/links-de-pago, api/procesos-operativos/errors] 8347description: "Consulta de un link de pago puntual por su id." 8348gaps: 8349 - "No description in the source collection." 8350 - "Type, format and constraints are not documented in the collection." 8351--- 8352 8353\`\`\`http 8354GET /api/v1/getLinkPaymentById/{link_payment_id}/{api_key} 8355\`\`\` 8356 8357## Qué hace [#que-hace] 8358 8359Devuelve un link de pago puntual. No lleva cuerpo: los datos van en la ruta. 8360 8361## Autenticación [#autenticacion] 8362 8363Requiere el token bearer del API en el header \`Authorization\` â ver [autenticación](/developers/api/autenticacion). 8364 8365## Parámetros [#parametros] 8366 8367Parámetros de ruta, en el orden en que aparecen en la URL: 8368 8369<Param id="payment-by-id-parametro-link-payment-id" name="link_payment_id" type="string · path" required> 8370Id del link de pago a consultar. 8371</Param> 8372 8373<Param id="payment-by-id-parametro-api-key" name="api_key" type="string · path" required> 8374Api Key del comercio. 8375</Param> 8376 8377## Respuesta [#respuesta] 8378 8379\`\`\`json 8380{ 8381 "type": "200", 8382 "message": "Success", 8383 "data": { 8384 "id": 1, 8385 "amount": "45.00", 8386 "currency": "USD", 8387 "reference": "Producto de prueba 1 TP-Shop", 8388 "url": "https://admin.tilopay.com/link/loNj8E2MA==", 8389 "callback_url": null, 8390 "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", 8391 "times_used": null, 8392 "picture": "https://storage.googleapis.com/tilo-uploads/items/51087219_.png", 8393 "create": "2022-10-24 08:45:14", 8394 "payments": [] 8395 } 8396} 8397\`\`\` 8398 8399Para interpretar una respuesta que no es de éxito, ver [cómo leer una respuesta de error](/developers/api/procesos-operativos/errors). 8400`,Cn=`--- 8401title: "API · Listar links de pago" 8402kind: api-operation 8403status: stable 8404api_version: v1 8405last_verified: 2026-08-29 8406verified_by: equipo-integraciones 8407owner: equipo-integraciones 8408sources:
8409 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 8410locales: [es, en] 8411related: [api/autenticacion, api/links-de-pago, api/procesos-operativos/errors] 8412description: "Listado paginado de los links de pago del comercio." 8413gaps: 8414 - "No description in the source collection." 8415 - "Type, format and constraints are not documented in the collection." 8416--- 8417 8418\`\`\`http 8419GET /api/v1/getLinkPaymentList/{api_key}/{limit} 8420\`\`\` 8421 8422## Qué hace [#que-hace] 8423 8424Devuelve la lista paginada de links de pago del comercio. No lleva cuerpo: los datos van en la ruta. 8425 8426## Autenticación [#autenticacion] 8427 8428Requiere el token bearer del API en el header \`Authorization\` â ver [autenticación](/developers/api/autenticacion). 8429 8430## Parámetros [#parametros] 8431 8432Parámetros de ruta, en el orden en que aparecen en la URL: 8433 8434<Param id="payment-item-list-parametro-api-key" name="api_key" type="string · path" required> 8435Api Key del comercio. 8436</Param> 8437 8438<Param id="payment-item-list-parametro-limit" name="limit" type="string · path" required> 8439Cantidad de registros por página. 8440</Param> 8441 8442## Respuesta [#respuesta] 8443 8444\`\`\`json 8445{ 8446 "type": "200", 8447 "message": "Success", 8448 "data": { 8449 "current_page": 1, 8450 "first_page_url": "http://app.tilopay.com/api/v1/getLinkPaymentList/<api_key>/10?page=1", 8451 "from": 1, 8452 "last_page": 2, 8453 "last_page_url": "http://app.tilopay.com/api/v1/getLinkPaymentList/<api_key>/10?page=2", 8454 "next_page_url": "http://app.tilopay.com/api/v1/getLinkPaymentList/<api_key>/10?page=2", 8455 "path": "http://app.tilopay.com/api/v1/getLinkPaymentList/<api_key>/10", 8456 "per_page": 10, 8457 "prev_page_url": null, 8458 "to": 10, 8459 "total": 16, 8460 "payment_link": [ 8461 { 8462 "id": 1, 8463 "amount": "45.00", 8464 "currency": "USD", 8465 "reference": "Producto de prueba 1 TP-Shop", 8466 "url": "https://admin.tilopay.com/link/3dNjE2MA3sdd==", 8467 "callback_url": null, 8468 "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", 8469 "times_used": null, 8470 "picture": "https://storage.googleapis.com/tilo-uploads/items/51087219_.png", 8471 "create": "2022-10-24 08:45:14" 8472 }, 8473 { 8474 "id": 2, 8475 "amount": "35.00", 8476 "currency": "USD", 8477 "reference": "Producto de prueba 2", 8478 "url": "https://admin.tilopay.com/link/dwNjE2see3MA==", 8479 "callback_url": null, 8480 "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", 8481 "times_used": null, 8482 "picture": "https://storage.googleapis.com/tilo-uploads/items/64156766_.png", 8483 "create": "2022-10-24 08:45:14" 8484 }, 8485 { 8486 "id": 3, 8487 "amount": "45.00", 8488 "currency": "USD", 8489 "reference": "Producto de prueba 3", 8490 "url": "https://admin.tilopay.com/link/f4NjE2MwsdA==", 8491 "callback_url": null, 8492 "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", 8493 "times_used": null, 8494 "picture": "https://storage.googleapis.com/tilo-uploads/items/88435879_.png", 8495 "create": "2022-10-24 08:45:14" 8496 }, 8497 { 8498 "id": 4, 8499 "amount": "45.00", 8500 "currency": "USD", 8501 "reference": "test", 8502 "url": "https://admin.tilopay.com/link/ceNjE2sxw2MA==", 8503 "callback_url": null, 8504 "description": "ddd", 8505 "times_used": null, 8506 "picture": "https://storage.googleapis.com/tilo-uploads/items/37716065_.png", 8507 "create": "2022-10-24 08:45:14" 8508 }, 8509 { 8510 "id": 5, 8511 "amount": "45.00", 8512 "currency": "USD", 8513 "reference": "test", 8514 "url": "https://admin.tilopay.com/link/cweNjE2Mfd5A==", 8515 "callback_url": null, 8516 "description": "ddd", 8517 "times_used": null, 8518 "picture": "https://storage.googleapis.com/tilo-uploads/items/37716065_.png", 8519 "create": "2022-10-24 08:45:14" 8520 }, 8521 { 8522 "id": 6, 8523 "amount": "45.00", 8524 "currency": "USD", 8525 "reference": "test", 8526 "url": "https://admin.tilopay.com/link/ce3NjE2fg5eMA==", 8527 "callback_url": null, 8528 "description": "ddd", 8529 "times_used": null, 8530 "picture": "https://storage.googleapis.com/tilo-uploads/items/37716065_.png", 8531 "create": "2022-10-24 08:45:14" 8532 }, 8533 { 8534 "id": 7,
8535 "amount": "45.00", 8536 "currency": "USD", 8537 "reference": "test", 8538 "url": "https://admin.tilopay.com/link/dsNjE2MAd32==", 8539 "callback_url": null, 8540 "description": "ddd", 8541 "times_used": null, 8542 "picture": "https://storage.googleapis.com/tilo-uploads/items/37716065_.png", 8543 "create": "2022-10-24 08:45:14" 8544 }, 8545 { 8546 "id": 8, 8547 "amount": "45.00", 8548 "currency": "USD", 8549 "reference": "test", 8550 "url": "https://admin.tilopay.com/link/NjE2sd32MA==", 8551 "callback_url": null, 8552 "description": "ddd", 8553 "times_used": null, 8554 "picture": "https://storage.googleapis.com/tilo-uploads/items/37716065_.png", 8555 "create": "2022-10-24 08:45:14" 8556 }, 8557 { 8558 "id": 9, 8559 "amount": "45.00", 8560 "currency": "USD", 8561 "reference": "test", 8562 "url": "https://admin.tilopay.com/link/sd3NjE2MA==", 8563 "callback_url": null, 8564 "description": "ddd", 8565 "times_used": null, 8566 "picture": "https://storage.googleapis.com/tilo-uploads/items/37716065_.png", 8567 "create": "2022-10-24 08:45:14" 8568 }, 8569 { 8570 "id": 10, 8571 "amount": "45.00", 8572 "currency": "USD", 8573 "reference": "test", 8574 "url": "https://admin.tilopay.com/link/d3dNjE2MA==", 8575 "callback_url": null, 8576 "description": "ddd", 8577 "times_used": null, 8578 "picture": "https://storage.googleapis.com/tilo-uploads/items/37716065_.png", 8579 "create": "2022-10-24 08:45:14" 8580 } 8581 ] 8582 } 8583} 8584\`\`\` 8585 8586Para interpretar una respuesta que no es de éxito, ver [cómo leer una respuesta de error](/developers/api/procesos-operativos/errors). 8587`,wn=`--- 8588title: "Links de pago" 8589kind: api-index 8590status: stable 8591api_version: v1 8592last_verified: 2026-08-29 8593verified_by: equipo-integraciones 8594owner: equipo-integraciones 8595sources:
8596 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 8597locales: [es, en] 8598related: [api/autenticacion, api/procesos-operativos/errors] 8599description: "Operaciones de links de pago del API de Tilopay, con parámetros y ejemplos." 8600--- 8601 8602## Operaciones [#operaciones] 8603 8604- [Crear link de pago](/developers/api/links-de-pago/create-link-payment) 8605- [Detalle de un link de pago](/developers/api/links-de-pago/detail-link-payment) 8606- [Eliminar un link de pago](/developers/api/links-de-pago/delete-link-payment) 8607- [Listar links de pago](/developers/api/links-de-pago/payment-item-list) 8608- [Obtener un link de pago por id](/developers/api/links-de-pago/payment-by-id) 8609 8610Todas las operaciones viven en \`https://app.tilopay.com\` y, salvo las de login, requieren el token del API â ver [autenticación](/developers/api/autenticacion). 8611`,Tn=`--- 8612title: "API · consultTransactions" 8613kind: api-operation 8614status: stable 8615api_version: v1 8616last_verified: 2026-08-29 8617verified_by: equipo-integraciones 8618owner: equipo-integraciones 8619sources:
8620 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 8621locales: [es, en] 8622related: [api/autenticacion, api/procesos-operativos, api/procesos-operativos/errors] 8623description: "Consulta masiva de transacciones por rango de fechas, moneda, orden o correo." 8624--- 8625 8626\`\`\`http 8627POST /api/v1/consultTransactions 8628\`\`\` 8629 8630## Qué hace [#que-hace] 8631 8632Consulta transacciones por rango de fechas, con filtros opcionales. 8633 8634## Autenticación [#autenticacion] 8635 8636Requiere el token bearer del API en el header \`Authorization\` â ver [autenticación](/developers/api/autenticacion). 8637 8638## Parámetros [#parametros] 8639 8640<Param id="consult-transactions-parametro-key" name="key" type="string" required> 8641Key de la integración Tilopay. 8642</Param> 8643 8644<Param id="consult-transactions-parametro-startdate" name="startDate" type="string" required> 8645Fecha de inicio, formato \`Y-m-d H:i:s\` â por ejemplo "2022-01-15 00:00:00". 8646</Param> 8647 8648<Param id="consult-transactions-parametro-enddate" name="endDate" type="string" required> 8649Fecha de fin, formato \`Y-m-d H:i:s\` â por ejemplo "2022-08-01 23:59:59". 8650</Param> 8651 8652<Param id="consult-transactions-parametro-onlyaproved" name="onlyAproved" type="integer"> 8653Indica si se obtienen solo transacciones aprobadas. 8654 8655| Código | Valor | 8656| --- | --- | 8657| 0 | Cualquiera | 8658| 1 | Solo aprobadas | 8659</Param> 8660 8661<Param id="consult-transactions-parametro-environment" name="environment" type="integer"> 8662Ambiente de las transacciones a obtener. 8663 8664| Código | Valor | 8665| --- | --- | 8666| 0 | Producción | 8667| 1 | Pruebas | 8668</Param> 8669 8670<Param id="consult-transactions-parametro-currency" name="currency" type="array"> 8671Array de monedas que se desean obtener, por ejemplo ["USD", "CRC"]. 8672</Param> 8673 8674<Param id="consult-transactions-parametro-merchantid" name="merchantId" type="string"> 8675Id de comercio. 8676</Param> 8677 8678<Param id="consult-transactions-parametro-ordernumber" name="orderNumber" type="string"> 8679Número de orden. 8680</Param> 8681 8682<Param id="consult-transactions-parametro-email" name="email" type="string"> 8683Correo del cliente. 8684</Param> 8685 8686<Param id="consult-transactions-parametro-auth" name="auth" type="string"> 8687Número de autorización. 8688</Param> 8689 8690## Ejemplo de request [#request] 8691 8692Los valores \`<...>\` son marcadores: reemplazalos por tus credenciales y datos. 8693 8694\`\`\`json 8695{ 8696 "key": "<api_key>", 8697 "startDate": "2023-06-01 00:00:00", 8698 "endDate": "2023-06-30 23:59:59", 8699 "onlyAproved": 1, 8700 "environment": 1, 8701 "currency": [ 8702 "USD", 8703 "CRC" 8704 ], 8705 "merchantId": "<merchantId>", 8706 "orderNumber": "12135", 8707 "email": "[email protected]", 8708 "auth": "123456" 8709} 8710\`\`\` 8711 8712## Respuesta [#respuesta] 8713 8714\`\`\`json 8715{ 8716 "type": "200", 8717 "message": "", 8718 "response": [ 8719 { 8720 "id": 734329, 8721 "orderNumber": "12135", 8722 "amount": "5.00", 8723 "taxes": "0.00", 8724 "discount": "0.00", 8725 "discount_name": "", 8726 "currency": "USD", 8727 "merchantId": "<merchantId>", 8728 "code": "1", 8729 "response": "Transacción aprobada", 8730 "auth": "123456", 8731 "card": "4021", 8732 "last": "5221", 8733 "email": "[email protected]", 8734 "commission": 0.18, 8735 "iva_commission": 0.02, 8736 "retention_iva": 0.27, 8737 "retention_rent": 0.09, 8738 "cost": 0.35, 8739 "cost_iva": 0.05, 8740 "net_to_liquidate": 4.04, 8741 "capture": "Capture", 8742 "type": "Payment", 8743 "environment": "Production", 8744 "date": "2024-07-31 16:59:20" 8745 }, 8746 { 8747 "id": 734330, 8748 "orderNumber": "12136", 8749 "amount": "5.00", 8750 "taxes": "0.00", 8751 "discount": "0.00", 8752 "discount_name": "", 8753 "currency": "USD", 8754 "merchantId": "<merchantId>", 8755 "code": "1", 8756 "response": "Transacción aprobada", 8757 "auth": "123456", 8758 "card": "4021", 8759 "last": "5221", 8760 "email": "[email protected]", 8761 "commission": 0.18, 8762 "iva_commission": 0.02, 8763 "retention_iva": 0.27, 8764 "retention_rent": 0.09, 8765 "cost": 0.35, 8766 "cost_iva": 0.05, 8767 "net_to_liquidate": 4.04, 8768 "capture": "Capture", 8769 "type": "Payment", 8770 "environment": "Production", 8771 "date": "2024-07-31 17:25:35" 8772 } 8773 ] 8774} 8775\`\`\` 8776 8777Para interpretar una respuesta que no es de éxito, ver [cómo leer una respuesta de error](/developers/api/procesos-operativos/errors). 8778`,En=`--- 8779title: "API · consult" 8780kind: api-operation 8781status: stable 8782api_version: v1
8783last_verified: 2026-08-29 8784verified_by: equipo-integraciones 8785owner: equipo-integraciones 8786sources: 8787 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 8788locales: [es, en] 8789related: [api/autenticacion, api/procesos-operativos, api/procesos-operativos/errors] 8790description: "Consulta del estado y el monto procesado de una transacción puntual." 8791gaps: 8792 - "Present in the collection example but absent from the endpoint description." 8793--- 8794 8795\`\`\`http 8796POST /api/v1/consult 8797\`\`\` 8798 8799## Qué hace [#que-hace] 8800 8801Consulta una transacción especÃfica: devuelve el monto procesado y el estado de la transacción. 8802 8803## Autenticación [#autenticacion] 8804 8805Requiere el token bearer del API en el header \`Authorization\` â ver [autenticación](/developers/api/autenticacion). 8806 8807## Parámetros [#parametros] 8808 8809<Param id="consult-parametro-key" name="key" type="string"> 8810Key de la integración Tilopay. 8811</Param> 8812 8813<Param id="consult-parametro-ordernumber" name="orderNumber" type="string"> 8814Número de orden consultado. 8815</Param> 8816 8817<Param id="consult-parametro-merchantid" name="merchantId" type="string"> 8818Id de comercio. 8819</Param> 8820 8821## Ejemplo de request [#request] 8822 8823Los valores \`<...>\` son marcadores: reemplazalos por tus credenciales y datos. 8824 8825\`\`\`json 8826{ 8827 "key": "<api_key>", 8828 "orderNumber": "1212122", 8829 "merchantId": "" 8830} 8831\`\`\` 8832 8833## Respuesta [#respuesta] 8834 8835\`\`\`json 8836{ 8837 "type": "200", 8838 "message": "", 8839 "response": [ 8840 { 8841 "id_tilopay": 734312, 8842 "orderNumber": "1212122", 8843 "amount": "5.00", 8844 "currency": "USD", 8845 "merchantId": "88803956", 8846 "code": "1", 8847 "response": "Transacción aprobada", 8848 "auth": "123456", 8849 "commission": 0.18, 8850 "iva_commission": 0.02, 8851 "retention_iva": 0.27, 8852 "retention_rent": 0.09, 8853 "cost": 0.35, 8854 "cost_iva": 0.05, 8855 "net_to_liquidate": "4.04", 8856 "capture": "Capture", 8857 "card": "4021", 8858 "last": "5221", 8859 "environment": "Test", 8860 "type": "Payment", 8861 "date": "2024-07-31 16:59:20" 8862 } 8863 ] 8864} 8865\`\`\` 8866 8867Para interpretar una respuesta que no es de éxito, ver [cómo leer una respuesta de error](/developers/api/procesos-operativos/errors). 8868`,Dn=`--- 8869title: "Cómo leer una respuesta de error" 8870kind: concept 8871status: stable 8872api_version: v1 8873last_verified: 2026-08-28 8874verified_by: equipo-integraciones 8875owner: equipo-integraciones 8876sources: 8877 - "Respuestas de TecnologÃa, 28-08-2026" 8878locales: [es, en] 8879related: [reintentos-seguros, api/webhooks] 8880gaps: 8881 - "Catálogo de códigos de rechazo del emisor: no existe una lista verificada." 8882description: Un HTTP 200 no significa éxito. Dónde viene el rechazo del emisor y cómo escribir el manejo de errores. 8883--- 8884 8885## El rechazo del emisor [#rechazo] 8886 8887Cuando el emisor rechaza una transacción, la respuesta trae dos campos: 8888 8889<Param id="error-code" name="code" type="string"> 8890El código de rechazo del emisor. 8891</Param> 8892 8893<Param id="error-description" name="description" type="string"> 8894El texto del rechazo. 8895</Param> 8896 8897## Un HTTP 200 no significa éxito [#estado-http] 8898 8899<Callout type="warn"> 8900**No hay un estándar definido de cuándo el API responde HTTP 4xx y cuándo responde HTTP 200 con 8901el error en el cuerpo.** Conviven las dos formas, y hay **cuatro envolturas distintas de error 8902según el endpoint**. 8903 8904Consecuencia práctica: tu manejo de errores tiene que mirar el cuerpo siempre, no solo el 8905código de estado, y tolerar más de una forma de cuerpo. 8906</Callout> 8907 8908## Cómo escribir el manejo de errores [#como-manejar] 8909 8910- Tratá \`code\` y \`description\` como datos para registrar y mostrar, no como una enumeración 8911 sobre la que ramificar. 8912- No hagas \`if (status === 200) éxito\`. Verificá el cuerpo. 8913- Guardá la respuesta cruda de cada rechazo: es lo que te permite reconstruir el patrón de 8914 rechazos de tu comercio. 8915- Para decidir el estado real de una transacción después de un fallo, usá 8916 [reintentos seguros](/developers/reintentos-seguros). 8917`,On=`--- 8918title: "API · processModification" 8919kind: api-operation 8920status: stable 8921api_version: v1 8922last_verified: 2026-08-29 8923verified_by: equipo-integraciones 8924owner: equipo-integraciones 8925sources:
8926 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 8927 - "Respuestas de TecnologÃa, 28-08-2026" 8928locales: [es, en] 8929related: [api/autenticacion, api/procesos-operativos, api/procesos-operativos/errors] 8930description: "Captura, reembolso y reverso de una transacción con processModification." 8931gaps: 8932 - "Present in the collection example but absent from the endpoint description." 8933 - "No response example available." 8934 - "Falta la lista completa de valores del campo type: se sabe que existen 1, 2 y 3, pero no la equivalencia con captura, reembolso y reversión." 8935--- 8936 8937\`\`\`http 8938POST /api/v1/processModification 8939\`\`\` 8940 8941## Qué hace [#que-hace] 8942 8943Permite modificar una transacción ya procesada: captura, reembolso o reverso. 8944 8945## Autenticación [#autenticacion] 8946 8947Requiere el token bearer del API en el header \`Authorization\` â ver [autenticación](/developers/api/autenticacion). 8948 8949## Parámetros [#parametros] 8950 8951<Param id="process-modification-parametro-ordernumber" name="orderNumber" type="string"> 8952Ejemplo: \`1214352\` 8953</Param> 8954 8955<Param id="process-modification-parametro-type" name="type" type="string"> 8956Ejemplo: \`2\` 8957</Param> 8958 8959<Param id="process-modification-parametro-amount" name="amount" type="string"> 8960Ejemplo: \`1.00\` 8961</Param> 8962 8963<Param id="process-modification-parametro-key" name="key" type="string"> 8964Llave relacionada con el cliente. Se obtiene en Admin · Tilopay Checkout. 8965</Param> 8966 8967## Ejemplo de request [#request] 8968 8969Los valores \`<...>\` son marcadores: reemplazalos por tus credenciales y datos. 8970 8971\`\`\`json 8972{ 8973 "orderNumber": "1214352", 8974 "type": "2", 8975 "amount": "1.00", 8976 "key": "<api_key>" 8977} 8978\`\`\` 8979 8980## Respuesta [#respuesta-modificacion] 8981 8982<Param id="modification-type" name="type" type="string"> 8983Tipo de modificación aplicada. 8984</Param> 8985 8986<Param id="modification-transactionid" name="transactionId" type="string"> 8987Identificador de la transacción. 8988</Param> 8989 8990<Param id="modification-reasoncode" name="ReasonCode" type="string"> 8991Código de resultado de la modificación. 8992</Param> 8993 8994<Param id="modification-reasoncodedescription" name="ReasonCodeDescription" type="string"> 8995Texto del resultado. 8996</Param> 8997 8998<Param id="modification-orderhash" name="OrderHash" type="string"> 8999Hash de la orden. Ver la nota sobre \`orderHash\` en [webhooks](/developers/api/webhooks#verificacion). 9000</Param> 9001 9002Para interpretar una respuesta que no es de éxito, ver [cómo leer una respuesta de error](/developers/api/procesos-operativos/errors). 9003`,kn=`--- 9004title: "API · Dividir liquidación (split)" 9005kind: api-operation 9006status: stable 9007api_version: v1 9008last_verified: 2026-08-29 9009verified_by: equipo-integraciones 9010owner: equipo-integraciones 9011sources:
9012 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 9013locales: [es, en] 9014related: [api/autenticacion, api/procesos-operativos, api/procesos-operativos/errors] 9015description: "División de la liquidación de una orden entre varios comercios facilitados." 9016gaps: 9017 - "Present in the collection example but absent from the endpoint description." 9018--- 9019 9020\`\`\`http 9021POST /api/v1/orders/liquidation/split 9022\`\`\` 9023 9024## Qué hace [#que-hace] 9025 9026Divide la liquidación de una orden entre varios comercios. Solo aplica a comercios que usan Tilopay como facilitador de pago, y las órdenes resultantes se identifican con el prefijo \`SL|\`. 9027 9028Reglas: 9029 9030- Los comercios deben estar aprobados y ser del mismo paÃs. 9031- Si la partición es menor al monto total de la orden, el restante se le asigna al comercio que realizó la transacción original. 9032- Solo aplica sobre órdenes aprobadas completamente. 9033 9034## Autenticación [#autenticacion] 9035 9036Requiere el token bearer del API en el header \`Authorization\` â ver [autenticación](/developers/api/autenticacion). 9037 9038## Parámetros [#parametros] 9039 9040<Param id="split-parametro-order-id" name="order_id" type="string"> 9041Id de la orden aprobada en Tilopay. 9042</Param> 9043 9044<Param id="split-parametro-commerces" name="commerces" type="array"> 9045Array asociativo con las llaves \`email\` y \`amount\` de cada comercio con el que se divide la liquidación. Incluir al comercio propietario es opcional: si no se especifica su monto, se le asigna el excedente de la partición, y si se incluye y hay excedente, se le suma. 9046</Param> 9047 9048<Param id="split-parametro-lang" name="lang" type="string"> 9049Idioma de la solicitud. 9050</Param> 9051 9052## Ejemplo de request [#request] 9053 9054Los valores \`<...>\` son marcadores: reemplazalos por tus credenciales y datos. 9055 9056\`\`\`json 9057{ 9058 "order_id": "1", 9059 "commerces": [ 9060 { 9061 "email": "[email protected]", 9062 "amount": "7.5" 9063 }, 9064 { 9065 "email": "[email protected]", 9066 "amount": "5.5" 9067 } 9068 ], 9069 "lang": "en" 9070} 9071\`\`\` 9072 9073## Respuesta [#respuesta] 9074 9075\`\`\`json 9076{ 9077 "type": "200", 9078 "message": "Great", 9079 "description": "Order splitted successfully", 9080 "response": { 9081 "total_order_splitted": 3, 9082 "order_id": 1, 9083 "order_number": "PFC000069-TYP785237_313", 9084 "order_key": "<api_key>", 9085 "order_currency": "USD", 9086 "order_amount": "33.00", 9087 "splitted_orders": [ 9088 { 9089 "id": 1, 9090 "amount": 20, 9091 "commerce_name": "Commerce owner name", 9092 "commerce_email": "[email protected]" 9093 }, 9094 { 9095 "id": 2, 9096 "amount": 7.5, 9097 "commerce_name": "Commerce name", 9098 "commerce_email": "[email protected]" 9099 }, 9100 { 9101 "id": 3, 9102 "amount": 5.5, 9103 "commerce_name": "Commerce name", 9104 "commerce_email": "[email protected]" 9105 } 9106 ] 9107 } 9108} 9109\`\`\` 9110 9111Para interpretar una respuesta que no es de éxito, ver [cómo leer una respuesta de error](/developers/api/procesos-operativos/errors). 9112`,An=`--- 9113title: "Procesos operativos" 9114kind: api-index 9115status: stable 9116api_version: v1 9117last_verified: 2026-08-29 9118verified_by: equipo-integraciones 9119owner: equipo-integraciones 9120sources:
9121 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 9122locales: [es, en] 9123related: [api/autenticacion, api/procesos-operativos/errors] 9124description: "Operaciones de procesos operativos del API de Tilopay, con parámetros y ejemplos." 9125--- 9126 9127## Operaciones [#operaciones] 9128 9129- [processModification](/developers/api/procesos-operativos/process-modification) 9130- [consult](/developers/api/procesos-operativos/consult) 9131- [consultTransactions](/developers/api/procesos-operativos/consult-transactions) 9132- [Dividir liquidación (split)](/developers/api/procesos-operativos/split) 9133 9134Estas operaciones son transversales: sirven para cualquiera de los cuatro [caminos de integración](/developers), sin importar cómo se originó el cobro. 9135 9136Para interpretar una respuesta que no es de éxito, ver [cómo leer una respuesta de error](/developers/api/procesos-operativos/errors). 9137 9138Todas las operaciones viven en \`https://app.tilopay.com\` y, salvo las de login, requieren el token del API â ver [autenticación](/developers/api/autenticacion). 9139`,jn=`--- 9140title: "API · Crear cupón" 9141kind: api-operation 9142status: stable 9143api_version: v1 9144last_verified: 2026-08-29 9145verified_by: equipo-integraciones 9146owner: equipo-integraciones 9147sources:
9148 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 9149locales: [es, en] 9150related: [api/autenticacion, api/recurrentes/cupones, api/procesos-operativos/errors] 9151description: "Creación de cupones de descuento para planes recurrentes." 9152gaps: 9153 - "No response example available." 9154--- 9155 9156\`\`\`http 9157POST /api/v1/createCoupon 9158\`\`\` 9159 9160## Qué hace [#que-hace] 9161 9162Crea un cupón de descuento para un plan recurrente: tipo de descuento, expiración, permisos de usuario y de correo, y lÃmites de uso. 9163 9164## Autenticación [#autenticacion] 9165 9166Requiere el token bearer del API en el header \`Authorization\` â ver [autenticación](/developers/api/autenticacion). 9167 9168## Parámetros [#parametros] 9169 9170<Param id="create-coupon-parametro-key" name="key" type="string" required> 9171Key de la integración Tilopay. 9172</Param> 9173 9174<Param id="create-coupon-parametro-planid" name="planId" type="integer" required> 9175Id del plan recurrente. 9176</Param> 9177 9178<Param id="create-coupon-parametro-active-users" name="active_users" type="integer" required> 9179Permiso de usuarios. 9180 9181| Código | Valor | 9182| --- | --- | 9183| 0 | Permitir solo usuarios nuevos | 9184| 1 | Permitir usuarios ya registrados | 9185</Param> 9186 9187<Param id="create-coupon-parametro-type-discount" name="type_discount" type="integer" required> 9188Tipo de descuento. 9189 9190| Código | Valor | 9191| --- | --- | 9192| 1 | Porcentaje | 9193| 2 | Monto fijo | 9194</Param> 9195 9196<Param id="create-coupon-parametro-discount" name="discount" type="integer" required> 9197Valor numérico del descuento. 9198</Param> 9199 9200<Param id="create-coupon-parametro-expire" name="expire" type="string" required> 9201Fecha de expiración del cupón, formato \`Y-m-d\` (por ejemplo 2025-10-20). 9202</Param> 9203 9204<Param id="create-coupon-parametro-email-group" name="email_group" type="integer" required> 9205Permiso de correos. 9206 9207| Código | Valor | 9208| --- | --- | 9209| 1 | Correos especÃficos | 9210| 2 | Cualquier correo | 9211</Param> 9212 9213<Param id="create-coupon-parametro-email" name="email" type="string"> 9214Lista de correos separados por coma. Requerido si \`email_group\` se envÃa en 1. 9215</Param> 9216 9217<Param id="create-coupon-parametro-usage" name="usage" type="integer"> 9218Cantidad total de usos. 9219</Param> 9220 9221<Param id="create-coupon-parametro-renews" name="renews" type="integer"> 9222Cantidad total de renovaciones válidas. 9223</Param> 9224 9225<Param id="create-coupon-parametro-renews-by-user" name="renews_by_user" type="integer"> 9226Total de usos por un mismo usuario. 9227</Param> 9228 9229## Ejemplo de request [#request] 9230 9231Los valores \`<...>\` son marcadores: reemplazalos por tus credenciales y datos. 9232 9233\`\`\`json 9234{ 9235 "key": "<api_key>", 9236 "planId": 10, 9237 "active_users": 1, 9238 "type_discount": 1, 9239 "discount": 40, 9240 "expire": "2025-10-20", 9241 "email_group": 1, 9242 "email": "[email protected], [email protected]", 9243 "usage": 1, 9244 "renews": 2, 9245 "renews_by_user": 2 9246} 9247\`\`\` 9248 9249Para interpretar una respuesta que no es de éxito, ver [cómo leer una respuesta de error](/developers/api/procesos-operativos/errors). 9250`,Mn=`--- 9251title: "API · Eliminar cupón" 9252kind: api-operation 9253status: stable 9254api_version: v1 9255last_verified: 2026-08-29 9256verified_by: equipo-integraciones 9257owner: equipo-integraciones 9258sources:
9259 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 9260locales: [es, en] 9261related: [api/autenticacion, api/recurrentes/cupones, api/procesos-operativos/errors] 9262description: "Eliminación de un cupón recurrente por id." 9263gaps: 9264 - "No response example available." 9265--- 9266 9267\`\`\`http 9268POST /api/v1/deleteCoupon 9269\`\`\` 9270 9271## Qué hace [#que-hace] 9272 9273Elimina un cupón. 9274 9275## Autenticación [#autenticacion] 9276 9277Requiere el token bearer del API en el header \`Authorization\` â ver [autenticación](/developers/api/autenticacion). 9278 9279## Parámetros [#parametros] 9280 9281<Param id="delete-coupon-parametro-key" name="key" type="string" required> 9282Key de la integración Tilopay. 9283</Param> 9284 9285<Param id="delete-coupon-parametro-id" name="id" type="string" required> 9286Id del cupón. 9287</Param> 9288 9289## Ejemplo de request [#request] 9290 9291Los valores \`<...>\` son marcadores: reemplazalos por tus credenciales y datos. 9292 9293\`\`\`json 9294{ 9295 "key": "<api_key>", 9296 "id": "1" 9297} 9298\`\`\` 9299 9300Para interpretar una respuesta que no es de éxito, ver [cómo leer una respuesta de error](/developers/api/procesos-operativos/errors). 9301`,Nn=`--- 9302title: "API · Obtener un cupón" 9303kind: api-operation 9304status: stable 9305api_version: v1 9306last_verified: 2026-08-29 9307verified_by: equipo-integraciones 9308owner: equipo-integraciones 9309sources:
9310 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 9311locales: [es, en] 9312related: [api/autenticacion, api/recurrentes/cupones, api/procesos-operativos/errors] 9313description: "Consulta de un cupón recurrente por id." 9314gaps: 9315 - "No response example available." 9316--- 9317 9318\`\`\`http 9319POST /api/v1/getCoupon 9320\`\`\` 9321 9322## Qué hace [#que-hace] 9323 9324Devuelve un cupón puntual. 9325 9326## Autenticación [#autenticacion] 9327 9328Requiere el token bearer del API en el header \`Authorization\` â ver [autenticación](/developers/api/autenticacion). 9329 9330## Parámetros [#parametros] 9331 9332<Param id="get-coupon-parametro-key" name="key" type="string" required> 9333Key de la integración Tilopay. 9334</Param> 9335 9336<Param id="get-coupon-parametro-id" name="id" type="string" required> 9337Id del cupón. 9338</Param> 9339 9340## Ejemplo de request [#request] 9341 9342Los valores \`<...>\` son marcadores: reemplazalos por tus credenciales y datos. 9343 9344\`\`\`json 9345{ 9346 "key": "<api_key>", 9347 "id": "1" 9348} 9349\`\`\` 9350 9351Para interpretar una respuesta que no es de éxito, ver [cómo leer una respuesta de error](/developers/api/procesos-operativos/errors). 9352`,Pn=`--- 9353title: "API · Listar cupones de un plan" 9354kind: api-operation 9355status: stable 9356api_version: v1 9357last_verified: 2026-08-29 9358verified_by: equipo-integraciones 9359owner: equipo-integraciones 9360sources:
9361 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 9362locales: [es, en] 9363related: [api/autenticacion, api/recurrentes/cupones, api/procesos-operativos/errors] 9364description: "Listado de los cupones de un plan recurrente." 9365gaps: 9366 - "No response example available." 9367--- 9368 9369\`\`\`http 9370POST /api/v1/getRepeatCoupons 9371\`\`\` 9372 9373## Qué hace [#que-hace] 9374 9375Devuelve los cupones asociados a un plan recurrente. 9376 9377## Autenticación [#autenticacion] 9378 9379Requiere el token bearer del API en el header \`Authorization\` â ver [autenticación](/developers/api/autenticacion). 9380 9381## Parámetros [#parametros] 9382 9383<Param id="get-coupons-parametro-key" name="key" type="string" required> 9384Key de la integración Tilopay. 9385</Param> 9386 9387<Param id="get-coupons-parametro-id" name="id" type="string" required> 9388Id del plan recurrente. 9389</Param> 9390 9391## Ejemplo de request [#request] 9392 9393Los valores \`<...>\` son marcadores: reemplazalos por tus credenciales y datos. 9394 9395\`\`\`json 9396{ 9397 "key": "<api_key>", 9398 "id": "1" 9399} 9400\`\`\` 9401 9402Para interpretar una respuesta que no es de éxito, ver [cómo leer una respuesta de error](/developers/api/procesos-operativos/errors). 9403`,Fn=`--- 9404title: "API · Recurrentes · Cupones" 9405kind: api-index 9406status: stable 9407api_version: v1 9408last_verified: 2026-08-29 9409verified_by: equipo-integraciones 9410owner: equipo-integraciones 9411sources:
9412 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 9413locales: [es, en] 9414related: [api/autenticacion, api/procesos-operativos/errors] 9415description: "Operaciones de recurrentes · cupones del API de Tilopay, con parámetros y ejemplos." 9416--- 9417 9418## Operaciones [#operaciones] 9419 9420- [Crear cupón](/developers/api/recurrentes/cupones/create-coupon) 9421- [Listar cupones de un plan](/developers/api/recurrentes/cupones/get-coupons) 9422- [Obtener un cupón](/developers/api/recurrentes/cupones/get-coupon) 9423- [Eliminar cupón](/developers/api/recurrentes/cupones/delete-coupon) 9424 9425Todas las operaciones viven en \`https://app.tilopay.com\` y, salvo las de login, requieren el token del API â ver [autenticación](/developers/api/autenticacion). 9426`,In=`--- 9427title: "API · Crear plan recurrente" 9428kind: api-operation 9429status: stable 9430api_version: v1 9431last_verified: 2026-08-29 9432verified_by: equipo-integraciones 9433owner: equipo-integraciones 9434sources: 9435 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 9436locales: [es, en] 9437related: [api/autenticacion, api/recurrentes/planes, api/procesos-operativos/errors] 9438description: "Creación de planes recurrentes: frecuencias, prueba gratis, modalidades y webhooks." 9439--- 9440 9441\`\`\`http 9442POST /api/v1/createPlanRepeat 9443\`\`\` 9444 9445## Qué hace [#que-hace] 9446 9447Crea un plan de suscripción: frecuencia de cobro, moneda, periodo de prueba, modalidades y webhooks. 9448 9449## Autenticación [#autenticacion] 9450 9451Requiere el token bearer del API en el header \`Authorization\` â ver [autenticación](/developers/api/autenticacion). 9452 9453## Parámetros [#parametros] 9454 9455<Param id="create-plan-parametro-key" name="key" type="string" required> 9456Key de la integración Tilopay. 9457</Param> 9458 9459<Param id="create-plan-parametro-title" name="title" type="string" required> 9460TÃtulo del plan recurrente. 9461</Param> 9462 9463<Param id="create-plan-parametro-description" name="description" type="string"> 9464Descripción del plan. 9465</Param> 9466 9467<Param id="create-plan-parametro-frecuency" name="frecuency" type="integer"> 9468Frecuencia de cobro. 9469 9470| Código | Valor | 9471| --- | --- | 9472| 1 | Diario | 9473| 2 | Semanal | 9474| 3 | Mensual | 9475| 4 | Anual | 9476| 5 | Quincenal | 9477| 6 | Bimestral | 9478| 7 | Trimestral | 9479| 8 | Cuatrimestral | 9480| 9 | Semestral | 9481</Param> 9482 9483<Param id="create-plan-parametro-currency" name="currency" type="string" required> 9484Código de moneda en formato ISO 4217. 9485</Param> 9486 9487<Param id="create-plan-parametro-first-amount" name="first_amount" type="integer" required> 9488Monto por pago inicial. 9489</Param> 9490 9491<Param id="create-plan-parametro-trial" name="trial" type="integer" required> 9492Activa el periodo de prueba gratis: 0 no, 1 sÃ. 9493</Param> 9494 9495<Param id="create-plan-parametro-trial-days" name="trial_days" type="integer" required> 9496DÃas del periodo de prueba gratis. 9497</Param> 9498 9499<Param id="create-plan-parametro-attempts" name="attempts" type="integer" required> 9500Cantidad de reintentos para cobros fallidos. 9501</Param> 9502 9503<Param id="create-plan-parametro-modality" name="modality" type="array" required> 9504Array de modalidades del plan. 9505</Param> 9506 9507<Param id="create-plan-parametro-thanks-url" name="thanks_url" type="string"> 9508Campo opcional. URL de agradecimiento propia del comercio; debe soportar el método **GET**. 9509</Param> 9510 9511<Param id="create-plan-parametro-webhook-subscribe" name="webhook_subscribe" type="string"> 9512Campo opcional. URL del webhook, por método **POST**, que recibe el callback en el cuerpo de la solicitud cuando un cliente adquiere una suscripción de forma exitosa. Ejemplo de los datos enviados: \`{'id_plan' : 1, 'email' : '[email protected]', 'modality' : 'ModalityName', 'amount' : 25, 'frequency' : '', 'coupon' : '5HT5W8YT', 'free_trial' : 1, 'next_payment_date' : '2023-02-25'}\` 9513</Param> 9514 9515<Param id="create-plan-parametro-webhook-payment" name="webhook_payment" type="string"> 9516Campo opcional. URL del webhook, por método **POST**, que recibe el callback en el cuerpo de la solicitud cuando el cargo al cliente se realiza con éxito. Ejemplo de los datos enviados: \`{'id_plan' : 1, 'email' : '[email protected]', 'amount' : 25, 'auth' : '123456', 'orderNumber' : 'PRE123456'}\` 9517</Param> 9518 9519<Param id="create-plan-parametro-webhook-rejected" name="webhook_rejected" type="string"> 9520Campo opcional. URL del webhook, por método **POST**, que recibe el callback en el cuerpo de la solicitud cuando un pago falla. Ejemplo de los datos enviados: \`{'id_plan' : 1, 'email' : '[email protected]', 'amount' : 25}\` 9521</Param> 9522
9523<Param id="create-plan-parametro-webhook-unsubscribe" name="webhook_unsubscribe" type="string"> 9524Campo opcional. URL del webhook, por método **POST**, que recibe el callback en el cuerpo de la solicitud cuando un cliente cancela la suscripción a uno de sus planes. Ejemplo de los datos enviados: \`{'id_plan' : 1, 'email' : '[email protected]', 'expire' : '2023-02-25'}\` 9525</Param> 9526 9527<Param id="create-plan-parametro-webhook-reactive" name="webhook_reactive" type="string"> 9528Campo opcional. URL del webhook, por método **POST**, que recibe el callback en el cuerpo de la solicitud cuando un cliente reactiva la suscripción a uno de sus planes. Ejemplo de los datos enviados: \`{'id_plan' : 1, 'email' : '[email protected]', 'next_payment_date' : '2023-02-25'}\` 9529</Param> 9530 9531<Param id="create-plan-parametro-end-at" name="end_at" type="string"> 9532Fecha de finalización del plan recurrente, formato \`d-m-Y\` (por ejemplo 25-09-2022). Si el plan no tiene fecha de fin, se envÃa vacÃo. 9533</Param> 9534 9535<Param id="create-plan-parametro-notify" name="notify" type="integer"> 9536En 1 agrega al correo de notificación el texto de \`notify_detail\` y \`notify_note\`. En 0 no agrega ninguno de los dos. 9537</Param> 9538 9539<Param id="create-plan-parametro-notify-detail-es" name="notify_detail_es" type="string"> 9540Texto del detalle en español. Opcional si \`notify\` es 0. 9541</Param> 9542 9543<Param id="create-plan-parametro-notify-detail-en" name="notify_detail_en" type="string"> 9544Texto del detalle en inglés. Opcional si \`notify\` es 0. 9545</Param> 9546 9547<Param id="create-plan-parametro-notify-note-es" name="notify_note_es" type="string"> 9548Texto de las notas en español. Opcional si \`notify\` es 0. 9549</Param> 9550 9551<Param id="create-plan-parametro-notify-note-en" name="notify_note_en" type="string"> 9552Texto de las notas en inglés. Opcional si \`notify\` es 0. 9553</Param> 9554 9555## Ejemplo de request [#request] 9556 9557Los valores \`<...>\` son marcadores: reemplazalos por tus credenciales y datos. 9558 9559\`\`\`json 9560{ 9561 "key": "<api_key>", 9562 "title": "Plan title", 9563 "description": "Plan description", 9564 "frecuency": 1, 9565 "currency": "USD", 9566 "first_amount": 0, 9567 "trial": 0, 9568 "trial_days": 0, 9569 "attempts": 1, 9570 "modality": [ 9571 { 9572 "title": "Basic", 9573 "amount": 10 9574 }, 9575 { 9576 "title": "Premium", 9577 "amount": 30 9578 } 9579 ], 9580 "thanks_url": "", 9581 "webhook_subscribe": "", 9582 "webhook_payment": "", 9583 "webhook_rejected": "", 9584 "webhook_unsubscribe": "", 9585 "webhook_reactive": "", 9586 "end_at": "25-10-2023", 9587 "notify": 0, 9588 "notify_detail_es": "", 9589 "notify_detail_en": "", 9590 "notify_note_es": "", 9591 "notify_note_en": "" 9592} 9593\`\`\` 9594 9595## Respuesta [#respuesta] 9596 9597\`\`\`json 9598{ 9599 "type": "200", 9600 "status": 1, 9601 "message": "Success", 9602 "id": 624, 9603 "url": "https://app.tilopay.com/link/TmpJMHwx" 9604} 9605\`\`\` 9606 9607Para interpretar una respuesta que no es de éxito, ver [cómo leer una respuesta de error](/developers/api/procesos-operativos/errors). 9608`,Ln=`--- 9609title: "API · Eliminar plan recurrente" 9610kind: api-operation 9611status: stable 9612api_version: v1 9613last_verified: 2026-08-29 9614verified_by: equipo-integraciones 9615owner: equipo-integraciones 9616sources:
9617 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 9618locales: [es, en] 9619related: [api/autenticacion, api/recurrentes/planes, api/procesos-operativos/errors] 9620description: "Eliminación de un plan recurrente por id." 9621--- 9622 9623\`\`\`http 9624POST /api/v1/deletePlanRepeat 9625\`\`\` 9626 9627## Qué hace [#que-hace] 9628 9629Elimina un plan recurrente. 9630 9631## Autenticación [#autenticacion] 9632 9633Requiere el token bearer del API en el header \`Authorization\` â ver [autenticación](/developers/api/autenticacion). 9634 9635## Parámetros [#parametros] 9636 9637<Param id="delete-plan-parametro-key" name="key" type="string" required> 9638Key de la integración Tilopay. 9639</Param> 9640 9641<Param id="delete-plan-parametro-id" name="id" type="string" required> 9642Id del plan recurrente. 9643</Param> 9644 9645## Ejemplo de request [#request] 9646 9647Los valores \`<...>\` son marcadores: reemplazalos por tus credenciales y datos. 9648 9649\`\`\`json 9650{ 9651 "key": "<api_key>", 9652 "id": "625" 9653} 9654\`\`\` 9655 9656## Respuesta [#respuesta] 9657 9658\`\`\`json 9659{ 9660 "type": "200", 9661 "status": 1, 9662 "message": "Success" 9663} 9664\`\`\` 9665 9666Para interpretar una respuesta que no es de éxito, ver [cómo leer una respuesta de error](/developers/api/procesos-operativos/errors). 9667`,Rn=`--- 9668title: "API · Editar plan recurrente" 9669kind: api-operation 9670status: stable 9671api_version: v1 9672last_verified: 2026-08-29 9673verified_by: equipo-integraciones 9674owner: equipo-integraciones 9675sources:
9676 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 9677locales: [es, en] 9678related: [api/autenticacion, api/recurrentes/planes, api/procesos-operativos/errors] 9679description: "Edición de un plan recurrente y de su estado." 9680--- 9681 9682\`\`\`http 9683POST /api/v1/editPlanRepeat 9684\`\`\` 9685 9686## Qué hace [#que-hace] 9687 9688Edita un plan existente, incluido su estado. 9689 9690## Autenticación [#autenticacion] 9691 9692Requiere el token bearer del API en el header \`Authorization\` â ver [autenticación](/developers/api/autenticacion). 9693 9694## Parámetros [#parametros] 9695 9696<Param id="edit-plan-parametro-key" name="key" type="string" required> 9697Key de la integración Tilopay. 9698</Param> 9699 9700<Param id="edit-plan-parametro-id" name="id" type="integer" required> 9701Id del plan recurrente. 9702</Param> 9703 9704<Param id="edit-plan-parametro-title" name="title" type="string" required> 9705TÃtulo del plan recurrente. 9706</Param> 9707 9708<Param id="edit-plan-parametro-description" name="description" type="string"> 9709Descripción del plan. 9710</Param> 9711 9712<Param id="edit-plan-parametro-frecuency" name="frecuency" type="integer"> 9713Frecuencia de cobro. 9714 9715| Código | Valor | 9716| --- | --- | 9717| 1 | Diario | 9718| 2 | Semanal | 9719| 3 | Mensual | 9720| 4 | Anual | 9721| 5 | Quincenal | 9722| 6 | Bimestral | 9723| 7 | Trimestral | 9724| 8 | Cuatrimestral | 9725| 9 | Semestral | 9726</Param> 9727 9728<Param id="edit-plan-parametro-currency" name="currency" type="string" required> 9729Código de moneda en formato ISO 4217. 9730</Param> 9731 9732<Param id="edit-plan-parametro-first-amount" name="first_amount" type="integer" required> 9733Monto por pago inicial. 9734</Param> 9735 9736<Param id="edit-plan-parametro-trial" name="trial" type="integer" required> 9737Activa el periodo de prueba gratis: 0 no, 1 sÃ. 9738</Param> 9739 9740<Param id="edit-plan-parametro-trial-days" name="trial_days" type="integer" required> 9741DÃas del periodo de prueba gratis. 9742</Param> 9743 9744<Param id="edit-plan-parametro-attempts" name="attempts" type="integer" required> 9745Cantidad de reintentos para cobros fallidos. 9746</Param> 9747 9748<Param id="edit-plan-parametro-status" name="status" type="integer" required> 9749Estado del plan recurrente. 9750 9751| Código | Valor | 9752| --- | --- | 9753| 0 | Inactivo | 9754| 1 | Activo | 9755| 2 | Activo pero sin registros nuevos | 9756</Param> 9757 9758<Param id="edit-plan-parametro-thanks-url" name="thanks_url" type="string"> 9759Campo opcional. URL de agradecimiento propia del comercio; debe soportar el método **GET**. 9760</Param> 9761 9762<Param id="edit-plan-parametro-webhook-subscribe" name="webhook_subscribe" type="string"> 9763Campo opcional. URL del webhook, por método **POST**, que recibe el callback en el cuerpo de la solicitud cuando un cliente adquiere una suscripción de forma exitosa. Ejemplo de los datos enviados: \`{'id_plan' : 1, 'email' : '[email protected]', 'modality' : 'ModalityName', 'amount' : 25, 'frequency' : '', 'coupon' : '5HT5W8YT', 'free_trial' : 1, 'next_payment_date' : '2023-02-25'}\` 9764</Param> 9765 9766<Param id="edit-plan-parametro-webhook-payment" name="webhook_payment" type="string"> 9767Campo opcional. URL del webhook, por método **POST**, que recibe el callback en el cuerpo de la solicitud cuando el cargo al cliente se realiza con éxito. Ejemplo de los datos enviados: \`{'id_plan' : 1, 'email' : '[email protected]', 'amount' : 25, 'auth' : '123456', 'orderNumber' : 'PRE123456'}\` 9768</Param> 9769 9770<Param id="edit-plan-parametro-webhook-rejected" name="webhook_rejected" type="string"> 9771Campo opcional. URL del webhook, por método **POST**, que recibe el callback en el cuerpo de la solicitud cuando un pago falla. Ejemplo de los datos enviados: \`{'id_plan' : 1, 'email' : '[email protected]', 'amount' : 25}\` 9772</Param> 9773 9774<Param id="edit-plan-parametro-webhook-unsubscribe" name="webhook_unsubscribe" type="string"> 9775Campo opcional. URL del webhook, por método **POST**, que recibe el callback en el cuerpo de la solicitud cuando un cliente cancela la suscripción a uno de sus planes. Ejemplo de los datos enviados: \`{'id_plan' : 1, 'email' : '[email protected]', 'expire' : '2023-02-25'}\` 9776</Param> 9777 9778<Param id="edit-plan-parametro-webhook-reactive" name="webhook_reactive" type="string"> 9779Campo opcional. URL del webhook, por método **POST**, que recibe el callback en el cuerpo de la solicitud cuando un cliente reactiva la suscripción a uno de sus planes. Ejemplo de los datos enviados: \`{'id_plan' : 1, 'email' : '[email protected]', 'next_payment_date' : '2023-02-25'}\` 9780</Param> 9781 9782<Param id="edit-plan-parametro-end-at" name="end_at" type="string"> 9783Fecha de finalización del plan recurrente, formato \`d-m-Y\` (por ejemplo 25-09-2022). Si el plan
9783no tiene fecha de fin, se envÃa vacÃo. 9784</Param> 9785 9786## Ejemplo de request [#request] 9787 9788Los valores \`<...>\` son marcadores: reemplazalos por tus credenciales y datos. 9789 9790\`\`\`json 9791{ 9792 "key": "<api_key>", 9793 "id": 3, 9794 "title": "Plan title", 9795 "description": "Plan description", 9796 "frecuency": 2, 9797 "currency": "USD", 9798 "first_amount": 0, 9799 "trial": 0, 9800 "trial_days": 0, 9801 "attempts": 5, 9802 "status": 1, 9803 "thanks_url": "", 9804 "webhook_subscribe": "", 9805 "webhook_payment": "", 9806 "webhook_rejected": "", 9807 "webhook_unsubscribe": "", 9808 "webhook_reactive": "", 9809 "end_at": "25-10-2023" 9810} 9811\`\`\` 9812 9813Para interpretar una respuesta que no es de éxito, ver [cómo leer una respuesta de error](/developers/api/procesos-operativos/errors). 9814`,zn=`--- 9815title: "API · Obtener un plan recurrente" 9816kind: api-operation 9817status: stable 9818api_version: v1 9819last_verified: 2026-08-29 9820verified_by: equipo-integraciones 9821owner: equipo-integraciones 9822sources: 9823 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 9824locales: [es, en] 9825related: [api/autenticacion, api/recurrentes/planes, api/procesos-operativos/errors] 9826description: "Consulta de un plan recurrente por id." 9827--- 9828 9829\`\`\`http 9830POST /api/v1/getPlanRepeat 9831\`\`\` 9832 9833## Qué hace [#que-hace] 9834 9835Devuelve un plan recurrente puntual. 9836 9837## Autenticación [#autenticacion] 9838 9839Requiere el token bearer del API en el header \`Authorization\` â ver [autenticación](/developers/api/autenticacion). 9840 9841## Parámetros [#parametros] 9842 9843<Param id="get-plan-parametro-key" name="key" type="string" required> 9844Key de la integración Tilopay. 9845</Param> 9846 9847<Param id="get-plan-parametro-id" name="id" type="string" required> 9848Id del plan recurrente. 9849</Param> 9850 9851## Ejemplo de request [#request] 9852 9853Los valores \`<...>\` son marcadores: reemplazalos por tus credenciales y datos. 9854 9855\`\`\`json 9856{ 9857 "key": "<api_key>", 9858 "id": "3" 9859} 9860\`\`\` 9861 9862## Respuesta [#respuesta] 9863 9864\`\`\`json 9865{ 9866 "type": "200", 9867 "message": "Success", 9868 "plan": { 9869 "id": 232, 9870 "title": "Prueba repeat", 9871 "description": "Plan repeat de prueba mensual", 9872 "frequency": 3, 9873 "currency": "USD", 9874 "first_amount": "5.00", 9875 "trial": 0, 9876 "trial_days": 0, 9877 "attempts": 5, 9878 "thanks_url": null, 9879 "webhook_subscribe": null, 9880 "webhook_payment": null, 9881 "webhook_rejected": null, 9882 "webhook_unsubscribe": null, 9883 "webhook_reactive": null, 9884 "modality": [ 9885 { 9886 "id": 292, 9887 "title": "Pago mensual prueba repeat modalidad", 9888 "amount": "10.00" 9889 } 9890 ], 9891 "end_at": null 9892 } 9893} 9894\`\`\` 9895 9896Para interpretar una respuesta que no es de éxito, ver [cómo leer una respuesta de error](/developers/api/procesos-operativos/errors). 9897`,Bn=`--- 9898title: "API · Listar planes recurrentes" 9899kind: api-operation 9900status: stable 9901api_version: v1 9902last_verified: 2026-08-29 9903verified_by: equipo-integraciones 9904owner: equipo-integraciones 9905sources:
9906 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 9907locales: [es, en] 9908related: [api/autenticacion, api/recurrentes/planes, api/procesos-operativos/errors] 9909description: "Listado de los planes recurrentes de la integración." 9910gaps: 9911 - "No response example available." 9912--- 9913 9914\`\`\`http 9915POST /api/v1/getPlansRepeat 9916\`\`\` 9917 9918## Qué hace [#que-hace] 9919 9920Devuelve los planes recurrentes del comercio. 9921 9922## Autenticación [#autenticacion] 9923 9924Requiere el token bearer del API en el header \`Authorization\` â ver [autenticación](/developers/api/autenticacion). 9925 9926## Parámetros [#parametros] 9927 9928<Param id="get-plans-parametro-key" name="key" type="string" required> 9929Key de la integración Tilopay. 9930</Param> 9931 9932## Ejemplo de request [#request] 9933 9934Los valores \`<...>\` son marcadores: reemplazalos por tus credenciales y datos. 9935 9936\`\`\`json 9937{ 9938 "key": "<api_key>" 9939} 9940\`\`\` 9941 9942Para interpretar una respuesta que no es de éxito, ver [cómo leer una respuesta de error](/developers/api/procesos-operativos/errors). 9943`,Vn=`--- 9944title: "API · Recurrentes · Planes" 9945kind: api-index 9946status: stable 9947api_version: v1 9948last_verified: 2026-08-29 9949verified_by: equipo-integraciones 9950owner: equipo-integraciones 9951sources:
9952 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 9953locales: [es, en] 9954related: [api/autenticacion, api/procesos-operativos/errors] 9955description: "Operaciones de recurrentes · planes del API de Tilopay, con parámetros y ejemplos." 9956--- 9957 9958## Operaciones [#operaciones] 9959 9960- [Crear plan recurrente](/developers/api/recurrentes/planes/create-plan) 9961- [Editar plan recurrente](/developers/api/recurrentes/planes/edit-plan) 9962- [Obtener un plan recurrente](/developers/api/recurrentes/planes/get-plan) 9963- [Listar planes recurrentes](/developers/api/recurrentes/planes/get-plans) 9964- [Eliminar plan recurrente](/developers/api/recurrentes/planes/delete-plan) 9965 9966Todas las operaciones viven en \`https://app.tilopay.com\` y, salvo las de login, requieren el token del API â ver [autenticación](/developers/api/autenticacion). 9967`,Hn=`--- 9968title: "API · URL de registro y renovación" 9969kind: api-operation 9970status: stable 9971api_version: v1 9972last_verified: 2026-08-29 9973verified_by: equipo-integraciones 9974owner: equipo-integraciones 9975sources:
9976 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 9977locales: [es, en] 9978related: [api/autenticacion, api/recurrentes/suscriptores, api/procesos-operativos/errors] 9979description: "URL de registro o renovación de un plan recurrente para un correo dado." 9980--- 9981 9982\`\`\`http 9983POST /api/v1/recurrentUrl 9984\`\`\` 9985 9986## Qué hace [#que-hace] 9987 9988Devuelve la URL de registro de un plan recurrente para un usuario nuevo, o la URL de renovación si el correo ya está registrado. 9989 9990## Autenticación [#autenticacion] 9991 9992Requiere el token bearer del API en el header \`Authorization\` â ver [autenticación](/developers/api/autenticacion). 9993 9994## Parámetros [#parametros] 9995 9996<Param id="consult-url-parametro-key" name="key" type="string" required> 9997Key de la integración Tilopay. 9998</Param> 9999 10000<Param id="consult-url-parametro-id" name="id" type="string" required> 10001Id del plan recurrente. 10002</Param> 10003 10004<Param id="consult-url-parametro-email" name="email" type="string"> 10005Correo del usuario para el que se quiere crear el link de registro. 10006</Param> 10007 10008## Ejemplo de request [#request] 10009 10010Los valores \`<...>\` son marcadores: reemplazalos por tus credenciales y datos. 10011 10012\`\`\`json 10013{ 10014 "key": "<api_key>", 10015 "id": "1", 10016 "email": "[email protected]" 10017} 10018\`\`\` 10019 10020## Respuesta [#respuesta] 10021 10022\`\`\`json 10023{ 10024 "type": "200", 10025 "message": "", 10026 "url_register": "https://app.tilopay.com/admin/recurrent/register/[email protected]", 10027 "url_renew": "" 10028} 10029\`\`\` 10030 10031Para interpretar una respuesta que no es de éxito, ver [cómo leer una respuesta de error](/developers/api/procesos-operativos/errors). 10032`,Un=`--- 10033title: "API · Eliminar suscriptor" 10034kind: api-operation 10035status: stable 10036api_version: v1 10037last_verified: 2026-08-29 10038verified_by: equipo-integraciones 10039owner: equipo-integraciones 10040sources:
10041 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 10042locales: [es, en] 10043related: [api/autenticacion, api/recurrentes/suscriptores, api/procesos-operativos/errors] 10044description: "Eliminación de un suscriptor de un plan recurrente." 10045--- 10046 10047\`\`\`http 10048POST /api/v1/deleteSuscriptorRepeat 10049\`\`\` 10050 10051## Qué hace [#que-hace] 10052 10053Elimina un suscriptor de un plan recurrente. 10054 10055## Autenticación [#autenticacion] 10056 10057Requiere el token bearer del API en el header \`Authorization\` â ver [autenticación](/developers/api/autenticacion). 10058 10059## Parámetros [#parametros] 10060 10061<Param id="delete-suscriptor-plan-parametro-key" name="key" type="string" required> 10062Key de la integración Tilopay. 10063</Param> 10064 10065<Param id="delete-suscriptor-plan-parametro-id-suscriptor" name="id_suscriptor" type="string" required> 10066Id del suscriptor. 10067</Param> 10068 10069## Ejemplo de request [#request] 10070 10071Los valores \`<...>\` son marcadores: reemplazalos por tus credenciales y datos. 10072 10073\`\`\`json 10074{ 10075 "key": "<api_key>", 10076 "id_suscriptor": "1" 10077} 10078\`\`\` 10079 10080## Respuesta [#respuesta] 10081 10082\`\`\`json 10083{ 10084 "type": "200", 10085 "status": 1, 10086 "message": "Success" 10087} 10088\`\`\` 10089 10090Para interpretar una respuesta que no es de éxito, ver [cómo leer una respuesta de error](/developers/api/procesos-operativos/errors). 10091`,Wn=`--- 10092title: "API · Editar suscriptor" 10093kind: api-operation 10094status: stable 10095api_version: v1 10096last_verified: 2026-08-29 10097verified_by: equipo-integraciones 10098owner: equipo-integraciones 10099sources:
10100 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 10101locales: [es, en] 10102related: [api/autenticacion, api/recurrentes/suscriptores, api/procesos-operativos/errors] 10103description: "Edición del estado y la expiración de un suscriptor." 10104--- 10105 10106\`\`\`http 10107POST /api/v1/editSuscriptorRepeat 10108\`\`\` 10109 10110## Qué hace [#que-hace] 10111 10112Cambia el estado o la fecha de expiración de un suscriptor. 10113 10114## Autenticación [#autenticacion] 10115 10116Requiere el token bearer del API en el header \`Authorization\` â ver [autenticación](/developers/api/autenticacion). 10117 10118## Parámetros [#parametros] 10119 10120<Param id="edit-suscriptor-plan-parametro-key" name="key" type="string" required> 10121Key de la integración Tilopay. 10122</Param> 10123 10124<Param id="edit-suscriptor-plan-parametro-id" name="id" type="string" required> 10125Id del suscriptor. 10126</Param> 10127 10128<Param id="edit-suscriptor-plan-parametro-status" name="status" type="string"> 10129Estado del suscriptor. 10130 10131| Código | Valor | 10132| --- | --- | 10133| 1 | Activo | 10134| 3 | Pausado | 10135| 4 | Eliminado | 10136</Param> 10137 10138<Param id="edit-suscriptor-plan-parametro-expire" name="expire" type="string"> 10139Fecha de expiración del plan, formato \`yy-m-d\`. 10140</Param> 10141 10142## Ejemplo de request [#request] 10143 10144Los valores \`<...>\` son marcadores: reemplazalos por tus credenciales y datos. 10145 10146\`\`\`json 10147{ 10148 "key": "<api_key>", 10149 "id": "2", 10150 "status": "2", 10151 "expire": "2023-10-25" 10152} 10153\`\`\` 10154 10155## Respuesta [#respuesta] 10156 10157\`\`\`json 10158{ 10159 "type": "200", 10160 "status": 1, 10161 "message": "Success" 10162} 10163\`\`\` 10164 10165Para interpretar una respuesta que no es de éxito, ver [cómo leer una respuesta de error](/developers/api/procesos-operativos/errors). 10166`,Gn=`--- 10167title: "API · Suscriptores de un plan" 10168kind: api-operation 10169status: stable 10170api_version: v1 10171last_verified: 2026-08-29 10172verified_by: equipo-integraciones 10173owner: equipo-integraciones 10174sources:
10175 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 10176locales: [es, en] 10177related: [api/autenticacion, api/recurrentes/suscriptores, api/procesos-operativos/errors] 10178description: "Consulta de los suscriptores de un plan recurrente." 10179--- 10180 10181\`\`\`http 10182POST /api/v1/getSuscriptorRepeat 10183\`\`\` 10184 10185## Qué hace [#que-hace] 10186 10187Devuelve los suscriptores asociados a un plan recurrente. 10188 10189## Autenticación [#autenticacion] 10190 10191Requiere el token bearer del API en el header \`Authorization\` â ver [autenticación](/developers/api/autenticacion). 10192 10193## Parámetros [#parametros] 10194 10195<Param id="get-suscriptor-plan-parametro-key" name="key" type="string" required> 10196Key de la integración Tilopay. 10197</Param> 10198 10199<Param id="get-suscriptor-plan-parametro-id" name="id" type="string" required> 10200Id del plan recurrente. 10201</Param> 10202 10203## Ejemplo de request [#request] 10204 10205Los valores \`<...>\` son marcadores: reemplazalos por tus credenciales y datos. 10206 10207\`\`\`json 10208{ 10209 "key": "<api_key>", 10210 "id": "2" 10211} 10212\`\`\` 10213 10214## Respuesta [#respuesta] 10215 10216\`\`\`json 10217{ 10218 "type": "200", 10219 "message": "Success", 10220 "suscriptor": [ 10221 { 10222 "id": 360, 10223 "name": "Jhon 1", 10224 "lastname": "D", 10225 "email": "[email protected]", 10226 "modality": "Pago mensual prueba repeat modalidad", 10227 "amount": "10.00", 10228 "expire": "2023-03-26", 10229 "coupon": "", 10230 "status": "Delete", 10231 "create": "2022-10-19 12:48:59" 10232 }, 10233 { 10234 "id": 33364, 10235 "name": "Jhon 2", 10236 "lastname": "D", 10237 "email": "[email protected]", 10238 "modality": "Pago mensual prueba repeat modalidad", 10239 "amount": "10.00", 10240 "expire": "2023-08-05", 10241 "coupon": "", 10242 "status": "Active", 10243 "create": "2023-06-05 14:24:18" 10244 } 10245 ] 10246} 10247\`\`\` 10248 10249Para interpretar una respuesta que no es de éxito, ver [cómo leer una respuesta de error](/developers/api/procesos-operativos/errors). 10250`,Kn=`--- 10251title: "API · Pausar suscriptor" 10252kind: api-operation 10253status: stable 10254api_version: v1 10255last_verified: 2026-08-29 10256verified_by: equipo-integraciones 10257owner: equipo-integraciones 10258sources:
10259 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 10260locales: [es, en] 10261related: [api/autenticacion, api/recurrentes/suscriptores, api/procesos-operativos/errors] 10262description: "Pausa de la suscripción de un suscriptor." 10263--- 10264 10265\`\`\`http 10266POST /api/v1/pauseSuscriptorRepeat 10267\`\`\` 10268 10269## Qué hace [#que-hace] 10270 10271Pausa la suscripción de un suscriptor. 10272 10273## Autenticación [#autenticacion] 10274 10275Requiere el token bearer del API en el header \`Authorization\` â ver [autenticación](/developers/api/autenticacion). 10276 10277## Parámetros [#parametros] 10278 10279<Param id="pause-suscriptor-plan-parametro-key" name="key" type="string" required> 10280Key de la integración Tilopay. 10281</Param> 10282 10283<Param id="pause-suscriptor-plan-parametro-id-suscriptor" name="id_suscriptor" type="string" required> 10284Id del suscriptor. 10285</Param> 10286 10287## Ejemplo de request [#request] 10288 10289Los valores \`<...>\` son marcadores: reemplazalos por tus credenciales y datos. 10290 10291\`\`\`json 10292{ 10293 "key": "<api_key>", 10294 "id_suscriptor": "1" 10295} 10296\`\`\` 10297 10298## Respuesta [#respuesta] 10299 10300\`\`\`json 10301{ 10302 "type": "200", 10303 "status": 1, 10304 "message": "Success" 10305} 10306\`\`\` 10307 10308Para interpretar una respuesta que no es de éxito, ver [cómo leer una respuesta de error](/developers/api/procesos-operativos/errors). 10309`,qn=`--- 10310title: "API · Reactivar suscriptor" 10311kind: api-operation 10312status: stable 10313api_version: v1 10314last_verified: 2026-08-29 10315verified_by: equipo-integraciones 10316owner: equipo-integraciones 10317sources:
10318 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 10319locales: [es, en] 10320related: [api/autenticacion, api/recurrentes/suscriptores, api/procesos-operativos/errors] 10321description: "Reactivación de la suscripción de un suscriptor." 10322--- 10323 10324\`\`\`http 10325POST /api/v1/reactiveSuscriptorRepeat 10326\`\`\` 10327 10328## Qué hace [#que-hace] 10329 10330Reactiva la suscripción de un suscriptor pausado. 10331 10332## Autenticación [#autenticacion] 10333 10334Requiere el token bearer del API en el header \`Authorization\` â ver [autenticación](/developers/api/autenticacion). 10335 10336## Parámetros [#parametros] 10337 10338<Param id="reactive-suscriptor-plan-parametro-key" name="key" type="string" required> 10339Key de la integración Tilopay. 10340</Param> 10341 10342<Param id="reactive-suscriptor-plan-parametro-id-suscriptor" name="id_suscriptor" type="string" required> 10343Id del suscriptor. 10344</Param> 10345 10346## Ejemplo de request [#request] 10347 10348Los valores \`<...>\` son marcadores: reemplazalos por tus credenciales y datos. 10349 10350\`\`\`json 10351{ 10352 "key": "<api_key>", 10353 "id_suscriptor": "1" 10354} 10355\`\`\` 10356 10357## Respuesta [#respuesta] 10358 10359\`\`\`json 10360{ 10361 "type": "200", 10362 "status": 1, 10363 "message": "Success" 10364} 10365\`\`\` 10366 10367Para interpretar una respuesta que no es de éxito, ver [cómo leer una respuesta de error](/developers/api/procesos-operativos/errors). 10368`,Jn=`--- 10369title: "API · Pagos de suscriptor" 10370kind: api-operation 10371status: stable 10372api_version: v1 10373last_verified: 2026-08-29 10374verified_by: equipo-integraciones 10375owner: equipo-integraciones 10376sources:
10377 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 10378locales: [es, en] 10379related: [api/autenticacion, api/recurrentes/suscriptores, api/procesos-operativos/errors] 10380description: "Historial de pagos de los suscriptores de un plan recurrente." 10381gaps: 10382 - "No response example available." 10383--- 10384 10385\`\`\`http 10386POST /api/v1/getSuscriptorPayments 10387\`\`\` 10388 10389## Qué hace [#que-hace] 10390 10391Devuelve los pagos de los suscriptores de un plan recurrente. 10392 10393## Autenticación [#autenticacion] 10394 10395Requiere el token bearer del API en el header \`Authorization\` â ver [autenticación](/developers/api/autenticacion). 10396 10397## Parámetros [#parametros] 10398 10399<Param id="suscriptor-payments-parametro-key" name="key" type="string" required> 10400Key de la integración Tilopay. 10401</Param> 10402 10403<Param id="suscriptor-payments-parametro-id" name="id" type="string" required> 10404Id del plan recurrente. 10405</Param> 10406 10407## Ejemplo de request [#request] 10408 10409Los valores \`<...>\` son marcadores: reemplazalos por tus credenciales y datos. 10410 10411\`\`\`json 10412{ 10413 "key": "<api_key>", 10414 "id": "1" 10415} 10416\`\`\` 10417 10418Para interpretar una respuesta que no es de éxito, ver [cómo leer una respuesta de error](/developers/api/procesos-operativos/errors). 10419`,Yn=`--- 10420title: "API · Recurrentes · Suscriptores" 10421kind: api-index 10422status: stable 10423api_version: v1 10424last_verified: 2026-08-29 10425verified_by: equipo-integraciones 10426owner: equipo-integraciones 10427sources:
10428 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 10429locales: [es, en] 10430related: [api/autenticacion, api/procesos-operativos/errors] 10431description: "Operaciones de recurrentes · suscriptores del API de Tilopay, con parámetros y ejemplos." 10432--- 10433 10434## Operaciones [#operaciones] 10435 10436- [Suscriptores de un plan](/developers/api/recurrentes/suscriptores/get-suscriptor-plan) 10437- [Editar suscriptor](/developers/api/recurrentes/suscriptores/edit-suscriptor-plan) 10438- [Pausar suscriptor](/developers/api/recurrentes/suscriptores/pause-suscriptor-plan) 10439- [Reactivar suscriptor](/developers/api/recurrentes/suscriptores/reactive-suscriptor-plan) 10440- [Eliminar suscriptor](/developers/api/recurrentes/suscriptores/delete-suscriptor-plan) 10441- [URL de registro y renovación](/developers/api/recurrentes/suscriptores/consult-url) 10442- [Pagos de suscriptor](/developers/api/recurrentes/suscriptores/suscriptor-payments) 10443 10444Todas las operaciones viven en \`https://app.tilopay.com\` y, salvo las de login, requieren el token del API â ver [autenticación](/developers/api/autenticacion). 10445`,Xn=`--- 10446title: "Cobros Recurrentes" 10447kind: api-index 10448status: stable 10449api_version: v1 10450last_verified: 2026-08-29 10451verified_by: equipo-integraciones 10452owner: equipo-integraciones 10453sources:
10454 - "Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026" 10455locales: [es, en] 10456related: [api/autenticacion, api/procesos-operativos/errors] 10457description: "Operaciones de cobros recurrentes del API de Tilopay, con parámetros y ejemplos." 10458--- 10459 10460## Operaciones [#operaciones] 10461 1046216 operaciones en tres subgrupos: 10463 10464- [Planes](/developers/api/recurrentes/planes) â 5 10465- [Suscriptores](/developers/api/recurrentes/suscriptores) â 7 10466- [Cupones](/developers/api/recurrentes/cupones) â 4 10467 10468Todas las operaciones viven en \`https://app.tilopay.com\` y, salvo las de login, requieren el token del API â ver [autenticación](/developers/api/autenticacion). 10469`,Zn=`--- 10470title: API · Tarjetas almacenadas 10471kind: api-index 10472status: draft 10473api_version: v1 10474last_verified: 2026-08-28 10475verified_by: henry 10476owner: equipo-integraciones 10477sources: [] 10478related: [] 10479draft: true 10480description: Grupo de cobros con tarjetas almacenadas. Estructura publicada. 10481--- 10482 10483## Qué contiene [#contenido] 10484 10485Este grupo va a documentar 10 operaciones: 10486 10487- \`collect/get/groups\` 10488- \`collect/get/affiliates\` 10489- \`collect/get/massive\` 10490- \`collect/get/massive/detail\` 10491- \`collect/set/group\` 10492- \`collect/set/urlaffiliate\` 10493- \`collect/set/urlgroup\` 10494- \`collect/edit/affiliate\` 10495- \`collect/edit/group\` 10496- \`collect/set/payments\` 10497 10498<Callout type="warn"> 10499Página pendiente. TodavÃa no hay parámetros, cuerpos ni respuestas verificados acá: 10500la referencia de cada operación se genera desde el spec en una fase posterior. 10501</Callout> 10502`,Qn=`--- 10503title: Webhooks 10504kind: concept 10505status: stable 10506api_version: v1 10507last_verified: 2026-08-28 10508verified_by: equipo-integraciones 10509owner: equipo-integraciones 10510sources: 10511 - "Respuestas de TecnologÃa, 28-08-2026" 10512locales: [es, en] 10513related: [api/procesos-operativos/errors, reintentos-seguros] 10514gaps: 10515 - "Algoritmo del orderHash: no es público, se entrega por [email protected]." 10516 - "Contrato del webhook de processPayment: se entrega bajo solicitud, no publicable." 10517description: Qué eventos existen, cuántos reintentos hay, en qué formato llegan y cómo confirmar el estado de un cobro. 10518--- 10519 10520## Recurrencia [#recurrencia] 10521 10522Son 6 campos que se configuran al **crear o editar un plan**. Todos opcionales. 10523 10524| Campo | Qué es | 10525|---|---| 10526| \`webhook_subscribe\` | Webhook de suscripción | 10527| \`webhook_payment\` | Webhook de cobro | 10528| \`webhook_rejected\` | Webhook de cobro rechazado | 10529| \`webhook_unsubscribe\` | Webhook de baja | 10530| \`webhook_reactive\` | Webhook de reactivación | 10531| \`thanks_url\` | **No es un webhook:** es un callback GET | 10532 10533## Links de pago [#links-de-pago] 10534 10535Se configura \`webhook_url\` al crear el link. 10536 10537## Reintentos [#reintentos] 10538 10539| Origen | Intentos | Cuándo reintenta | 10540|---|---|---| 10541| Recurrencia | 5 | Cuando tu respuesta es 400, 404, 502, 504 o 403 | 10542| Compras | 1 | â | 10543 10544Se da por entregado con un **HTTP 200**. Respondé 200 en cuanto recibás el evento y procesalo 10545aparte: cualquier otra cosa cuenta como fallo, y en compras no hay segundo intento. 10546 10547## Formato [#formato] 10548 10549JSON. 10550 10551## El token de tarjeta [#token] 10552 10553| Origen | Token | 10554|---|---| 10555| Recurrencia | **No se envÃa** | 10556| Compras | Se envÃa y **es utilizable** | 10557 10558## Verificación de origen [#verificacion] 10559 10560<Callout type="warn"> 10561La única verificación de origen disponible es el \`orderHash\`, y **su algoritmo no es público**: 10562se entrega al comercio que lo solicita escribiendo a \`[email protected]\`. 10563 10564Mientras no tengás el algoritmo, no tomés decisiones de negocio irreversibles solo con el 10565contenido del webhook: confirmá el estado contra el API antes de despachar o liberar un 10566servicio. 10567</Callout> 10568 10569## Webhook del flujo principal [#processpayment] 10570 10571<Callout type="info"> 10572\`processPayment\` también tiene webhook. Su contrato **se entrega al comercio que lo solicita**: 10573escribà a \`[email protected]\` para recibirlo. 10574</Callout> 10575`,$n='---\ntitle: Autenticación del API Bancario\nkind: concept\nstatus: stable\napi_version: 1.0.0\nlast_verified: 2026-09-02\nverified_by: equipo-integraciones\nowner: equipo-integraciones\nsources:\n - "Tilopay_API_BaaS.yaml â spec OpenAPI 3.0.3 del API Bancario, versión 1.0.0"\nlocales: [es, en]\ndescription: "Login, intercambio de token y uso del Bearer JWT en el API Bancario de Tilopay."\n---\n\nEl API Bancario usa un flujo de dos pasos: primero autenticás al cliente con correo y\ncontraseña, después intercambiás el token resultante por un access token JWT que firma\ntodas las demás llamadas.\n\nLos tres endpoints del grupo `Auth` son los únicos que **no** llevan `Authorization`.\nTodo el resto del API exige `Authorization: Bearer <access_token>`.\n\n## Paso 1 â Login [#login]\n\n```http\nPOST /api/public/v1/auth/login\n```\n\nCuerpo requerido: `email` (formato email) y `password`.\n\n```json\n{\n "email": "[email protected]",\n "password": "â¢â¢â¢â¢â¢â¢â¢â¢"\n}
10575\n```\n\nLa respuesta `200` devuelve en `data`:\n\n| Campo | Tipo | Descripción |\n|---|---|---|\n| `gidp_id_token` | string | Token de identidad para el paso 2. |\n| `assignments` | array | Contextos disponibles del cliente. |\n\nCada elemento de `assignments` trae `assignment_id`, `owner_type`, `owner_id`,\n`tenant_id`, `tenant_code`, `country_code`, `role`, `roles` y `status`. Elegà el\n`assignment_id` del contexto con el que vas a operar.\n\n## Paso 2 â Intercambio de token [#exchange]\n\n```http\nPOST /api/public/v1/auth/token/exchange\n```\n\nCuerpo requerido: `gidp_id_token` (el del paso 1) y `assignment_id` (el contexto\nelegido).\n\n```json\n{\n "gidp_id_token": "eyJhbGciOi...",\n "assignment_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"\n}\n```\n\nLa respuesta `200` devuelve en `data`:\n\n| Campo | Tipo | Descripción |\n|---|---|---|\n| `token` | string | Access token JWT. |\n| `expires_in` | integer | Vigencia del token en segundos. |\n| `claims` | object | Contexto resuelto del token. |\n\n`claims` incluye `sub`, `subject_kind`, `user_type`, `tenant_id`, `owner_type`,\n`owner_id`, `roles`, `scopes`, `country_code`, `locale`, `channel`, `idp`, `idp_sub` e\n`idempotency_key`.\n\n## Paso 3 â Usar el Bearer [#bearer]\n\nEl esquema de seguridad declarado es `BearerAuth`: HTTP bearer con formato JWT.\n\n```http\nAuthorization: Bearer <access_token>\n```\n\nEl contexto viaja **dentro** del token: no se envÃan `tenant_id`, `owner_id` ni\n`owner_type` como parámetros en las operaciones de negocio. El token acota por sà solo a\nqué cuentas y pagos podés acceder.\n\nCuando el token está ausente, vencido o es inválido, la respuesta es `401` con\n`response_code: UNAUTHORIZED`. Si el token es válido pero el contexto no autoriza el\nrecurso, es `403` con `FORBIDDEN`. Repetà el paso 2 para renovar el access token antes de\nque se cumpla `expires_in`.\n\n## Contraseñas [#password]\n\n```http\nPOST /api/public/v1/auth/request-set-password\n```\n\nInicia el proceso de establecer o restablecer la contraseña del correo indicado. No\nrequiere autenticación previa y responde siempre igual, exista o no la cuenta, para no\nrevelar si un correo está registrado.\n\n```json\n{\n "email": "[email protected]"\n}\n```\n',er=`--- 10576title: Catálogos del API Bancario 10577kind: api-operation 10578status: stable 10579api_version: 1.0.0 10580last_verified: 2026-09-02 10581verified_by: equipo-integraciones 10582owner: equipo-integraciones 10583sources: 10584 - "Tilopay_API_BaaS.yaml â spec OpenAPI 3.0.3 del API Bancario, versión 1.0.0" 10585locales: [es, en] 10586description: "Catálogo de tipos de identificación de cliente por paÃs en el API Bancario." 10587--- 10588 10589El grupo \`Catalogs\` publica los valores que tu integración debe usar en los campos de 10590identificación de cliente, en vez de codificarlos a mano. 10591 10592\`\`\`http 10593GET /api/public/v1/catalogs/customer-identification-types 10594\`\`\` 10595 10596Filtrá por \`country_code\` de dos letras para obtener los tipos vigentes en ese paÃs. 10597Consultá el catálogo al iniciar la integración y cacheá el resultado; leelo de nuevo antes 10598de agregar un paÃs nuevo. 10599 10600## Operaciones [#operaciones] 10601 10602<BaasOperations slug="api-bancario/catalogos" /> 10603`,tr=`--- 10604title: Convenciones del API Bancario 10605kind: concept 10606status: stable 10607api_version: 1.0.0 10608last_verified: 2026-09-02 10609verified_by: equipo-integraciones 10610owner: equipo-integraciones 10611sources: 10612 - "Tilopay_API_BaaS.yaml â spec OpenAPI 3.0.3 del API Bancario, versión 1.0.0" 10613locales: [es, en] 10614description: "Envelope de respuesta, correlación, reintentos seguros, paginación y formato de fechas del API Bancario." 10615--- 10616 10617Todas las operaciones del API Bancario comparten el mismo formato de respuesta, las 10618mismas reglas de paginación y el mismo formato de fechas. Esta página describe lo que el 10619spec declara de forma transversal. 10620 10621## Envelope de respuesta [#envelope] 10622 10623Cada respuesta, exitosa o no, viaja en el mismo sobre: 10624 10625\`\`\`json 10626{ 10627 "success": true, 10628 "http_status_code": 200, 10629 "response_code": "OK", 10630 "message": "The request was processed successfully.", 10631 "correlation_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", 10632 "data": {} 10633} 10634\`\`\` 10635 10636| Campo | Tipo | Descripción | 10637|---|---|---| 10638| \`success\` | boolean | \`true\` en las respuestas exitosas; \`false\` en las de error. | 10639| \`http_status_code\` | integer | Repite el status HTTP en el cuerpo. | 10640| \`response_code\` | string | Código del [catálogo de \`response_code\`](/developers/api-bancario/errores). | 10641| \`message\` | string | Mensaje legible de la respuesta. | 10642| \`correlation_id\` | string | Identificador de la llamada. | 10643| \`data\` | object | Carga útil de la operación. | 10644 10645En las respuestas de error el sobre trae además \`errors\`, un objeto de detalle que puede 10646incluir campos arbitrarios como \`code\`, \`message\` o \`detail\`. 10647 10648Ramificá tu lógica por \`response_code\`, no por el texto de \`message\`. 10649 10650## Correlación [#correlacion] 10651 10652Enviá \`X-Correlation-Id\` en el request para propagar tu propio identificador; el valor 10653vuelve como \`correlation_id\` en el sobre. Guardalo en tus logs: es el dato con el que 10654soporte rastrea una llamada puntual. 10655 10656## Reintentos seguros [#reintentos] 10657 10658Dos operaciones aceptan la cabecera \`Idempotency-Key\`: 10659 10660\`\`\`http 10661POST /api/public/v1/transactions/payments 10662POST /api/public/v1/accounts/statements 10663\`\`\` 10664 10665Reenviar la misma llave con el mismo cuerpo devuelve el resultado original en vez de 10666crear un segundo registro, asà un timeout de red se puede reintentar sin duplicar. Si 10667reusás una llave con un cuerpo distinto, la respuesta es \`409\` con 10668\`response_code: IDEMPOTENCY_CONFLICT\`. 10669 10670Generá una llave por intención de negocio (por ejemplo un UUID por orden), no una por 10671reintento. El resto de las operaciones son consultas y se pueden repetir sin efectos 10672adicionales. 10673 10674## Paginación [#paginacion] 10675 10676El API usa dos esquemas según el recurso. 10677 10678**Cursor, en el listado de pagos.** \`GET /api/public/v1/transactions/payments\` acepta 10679\`limit\` (por defecto 20, máximo 100) y \`cursor\`. La respuesta trae 10680\`pagination.next_cursor\`: pasalo como \`cursor\` en el siguiente request. Cuando viene 10681vacÃo u omitido, no hay más páginas. 10682 10683**Offset, en cuentas.** \`GET /api/public/v1/accounts\` y 10684\`GET /api/public/v1/accounts/balances\` aceptan \`limit\` (1 a 100) y \`offset\` (desde 0), y 10685devuelven \`pagination\` con \`limit\`, \`offset\` y \`total\`. 10686 10687## Fechas y montos [#formatos] 10688 10689Los parámetros y campos de fecha usan RFC 3339, por ejemplo 10690\`2026-09-02T15:04:05Z\`. Los filtros \`date_from\` y \`date_to\` del listado de pagos siguen 10691ese mismo formato. 10692 10693## Salud y documentación del host [#host] 10694 10695El propio host expone tres rutas de servicio: 10696 10697\`\`\`http 10698GET /api/public/v1/healthz 10699GET /openapi.yaml 10700GET /docs 10701\`\`\` 10702 10703\`healthz\` sirve para chequeo de disponibilidad, \`openapi.yaml\` devuelve el spec crudo y 10704\`/docs\` la interfaz de documentación del servicio. En este portal el mismo
10704spec está en 10705[openapi.json](/developers/api-bancario/openapi.json) y 10706[openapi.yaml](/developers/api-bancario/openapi.yaml). 10707`,nr=`--- 10708title: Cuentas del API Bancario 10709kind: api-operation 10710status: stable 10711api_version: 1.0.0 10712last_verified: 2026-09-02 10713verified_by: equipo-integraciones 10714owner: equipo-integraciones 10715sources: 10716 - "Tilopay_API_BaaS.yaml â spec OpenAPI 3.0.3 del API Bancario, versión 1.0.0" 10717locales: [es, en] 10718description: "Operaciones de cuentas del API Bancario: validación, listado, saldos y estados de cuenta." 10719--- 10720 10721El grupo \`Accounts\` cubre la cuenta como recurso: validar una cuenta destino antes de 10722transferir, listar las cuentas accesibles, consultar saldos y pedir estados de cuenta. 10723 10724\`\`\`http 10725POST /api/public/v1/accounts/validate 10726GET /api/public/v1/accounts 10727GET /api/public/v1/accounts/balances 10728GET /api/public/v1/accounts/balance 10729POST /api/public/v1/accounts/statements 10730GET /api/public/v1/accounts/statements/{request_id} 10731\`\`\` 10732 10733## Reglas del recurso [#reglas] 10734 10735**Alcance.** El listado devuelve sólo las cuentas que autoriza el token; no se envÃa 10736\`tenant_id\` ni \`owner_id\` como parámetro. 10737 10738**Validación previa.** Validá la cuenta destino antes de crear un pago: la operación 10739confirma que la cuenta existe y es apta, y devuelve los datos del titular que el servicio 10740expone. 10741 10742**Estados de cuenta asincrónicos.** La generación se solicita con un \`POST\` que acepta 10743\`Idempotency-Key\` y devuelve un \`request_id\`; después consultás ese \`request_id\` hasta que 10744el resultado esté disponible. Ver 10745[reintentos seguros](/developers/api-bancario/convenciones#reintentos). 10746 10747**Paginación.** \`GET /api/public/v1/accounts\` y \`GET /api/public/v1/accounts/balances\` 10748usan \`limit\` y \`offset\`, y devuelven \`pagination\` con \`limit\`, \`offset\` y \`total\`. 10749 10750## Operaciones [#operaciones] 10751 10752<BaasOperations slug="api-bancario/cuentas" /> 10753`,rr=`--- 10754title: Códigos de respuesta del API Bancario 10755kind: concept 10756status: stable 10757api_version: 1.0.0 10758last_verified: 2026-09-02 10759verified_by: equipo-integraciones 10760owner: equipo-integraciones 10761sources: 10762 - "Tilopay_API_BaaS.yaml â spec OpenAPI 3.0.3 del API Bancario, versión 1.0.0" 10763locales: [es, en] 10764description: "Catálogo completo de response_code del API Bancario de Tilopay y cómo reaccionar a cada familia." 10765--- 10766 10767Todo error del API Bancario llega en el 10768[envelope estándar](/developers/api-bancario/convenciones#envelope), con \`success: false\`, 10769el status HTTP en \`http_status_code\` y un \`response_code\` del catálogo. Ramificá por 10770\`response_code\`. 10771 10772## Cómo reaccionar por familia [#familias] 10773 10774**\`4xx\` de request.** El cuerpo o los parámetros no son válidos, o el recurso no existe. 10775Corregà la llamada antes de reenviarla: reintentar igual devuelve el mismo error. Acá caen 10776\`INVALID_REQUEST\`, \`VALIDATION_ERROR\`, \`NOT_FOUND\` y los códigos de negocio como 10777\`INSUFFICIENT_FUNDS\` o \`LIMIT_EXCEEDED\`. 10778 10779**\`401\` y \`403\`.** El token no viaja, venció o su contexto no autoriza el recurso. Renová el 10780access token con el 10781[intercambio de token](/developers/api-bancario/autenticacion#exchange); si persiste con 10782un token nuevo, el contexto no tiene permiso sobre ese recurso. 10783 10784**\`409 IDEMPOTENCY_CONFLICT\`.** Reusaste una \`Idempotency-Key\` con un cuerpo distinto. Usá 10785una llave nueva para la nueva intención; ver 10786[reintentos seguros](/developers/api-bancario/convenciones#reintentos). 10787 10788**\`429\`.** Superaste el lÃmite de llamadas. Espaciá los envÃos y reintentá con backoff. 10789 10790**\`5xx\`.** Falla del lado del servicio. Reintentá con backoff, y en los \`POST\` reenviá la 10791**misma** \`Idempotency-Key\` para no duplicar el registro. Guardá el \`correlation_id\` 10792antes de escalar a soporte. 10793 10794## Catálogo completo [#catalogo] 10795 10796Estos son los 28 valores que el spec declara en el enum \`ResponseCode\`, con los status 10797HTTP en los que aparecen. \`OK\` es el código de las respuestas exitosas. 10798 10799<BaasResponseCodes /> 10800 10801Un \`response_code\` que no esté en esta lista no forma parte del c
10801ontrato de la versión 108021.0.0 del API: tratalo como error genérico según su status HTTP y reportalo con el 10803\`correlation_id\`. 10804`,ir=`--- 10805title: Pagos del API Bancario 10806kind: api-operation 10807status: stable 10808api_version: 1.0.0 10809last_verified: 2026-09-02 10810verified_by: equipo-integraciones 10811owner: equipo-integraciones 10812sources: 10813 - "Tilopay_API_BaaS.yaml â spec OpenAPI 3.0.3 del API Bancario, versión 1.0.0" 10814locales: [es, en] 10815description: "Operaciones de pagos del API Bancario: crear, consultar, listar y buscar pagos PIN y SINPE Móvil." 10816--- 10817 10818El grupo \`Payments\` cubre el ciclo completo de un pago: crearlo, consultarlo por 10819identificador, listarlo con filtros y buscarlo por cualquiera de sus referencias. 10820 10821\`\`\`http 10822POST /api/public/v1/transactions/payments 10823GET /api/public/v1/transactions/payments 10824GET /api/public/v1/transactions/payments/{payment_id} 10825POST /api/public/v1/transactions/payments/search 10826\`\`\` 10827 10828## Reglas del recurso [#reglas] 10829 10830**Métodos.** \`payment_method_code\` admite \`PIN\` y \`SINPE_MOVIL\`. **Dirección.** 10831\`direction\` admite \`OUT\` (salida) e \`IN\` (entrada). **Cuenta destino.** se identifica por 10832\`IBAN\` o por \`PHONE\`, según el método. 10833 10834**Referencia propia.** \`client_reference\` es tu identificador del pago y es único por 10835tenant: dos pagos del mismo cliente no pueden compartirlo. Sirve para buscar el pago sin 10836guardar el \`payment_id\`. 10837 10838**Reintentos seguros.** La creación acepta \`Idempotency-Key\`; reenviar la misma llave con 10839el mismo cuerpo devuelve el pago original en vez de crear otro. Ver 10840[reintentos seguros](/developers/api-bancario/convenciones#reintentos). 10841 10842## Estados [#estados] 10843 10844Un pago recorre cinco estados: \`pending\`, \`processing\`, \`confirmed\`, \`posted\` y \`failed\`. 10845 10846La reversión **no es un estado**: un pago revertido sigue en \`posted\` y se reconoce por 10847\`result: reversed\` y \`has_reversal: true\`, además del evento 10848[\`payment.reversed\`](/developers/api-bancario/webhooks). Consultá siempre esos dos campos 10849antes de dar un pago por definitivo. 10850 10851## Operaciones [#operaciones] 10852 10853<BaasOperations slug="api-bancario/pagos" /> 10854`,ar=`--- 10855title: Webhooks del API Bancario 10856kind: api-operation 10857status: stable 10858api_version: 1.0.0 10859last_verified: 2026-09-02 10860verified_by: equipo-integraciones 10861owner: equipo-integraciones 10862sources: 10863 - "Tilopay_API_BaaS.yaml â spec OpenAPI 3.0.3 del API Bancario, versión 1.0.0" 10864locales: [es, en] 10865description: "Registro de destino, features suscribibles y contratos de payload de los webhooks del API Bancario." 10866--- 10867 10868El grupo \`Webhooks\` permite registrar el destino HTTPS donde recibÃs los eventos, ver qué 10869features podés suscribir por método de pago y consultar el contrato de payload de cada 10870evento antes de escribir el receptor. 10871 10872\`\`\`http 10873POST /api/public/v1/webhook/destination 10874GET /api/public/v1/webhook/features 10875GET /api/public/v1/webhook/event-contracts/{event_type} 10876\`\`\` 10877 10878## Eventos [#eventos] 10879 10880El spec declara cuatro tipos de evento: 10881 10882| Evento | Cuándo llega | 10883|---|---| 10884| \`payin.posted\` | Se acreditó un movimiento de entrada. | 10885| \`payment.succeeded\` | El pago terminó de forma exitosa. | 10886| \`payment.failed\` | El pago terminó con falla. | 10887| \`payment.reversed\` | El pago fue revertido. | 10888 10889Un pago revertido conserva el estado \`posted\` y se distingue por \`result: reversed\` y 10890\`has_reversal: true\`; ver [estados del pago](/developers/api-bancario/pagos#estados). 10891 10892## Buenas prácticas del receptor [#receptor] 10893 10894Respondé \`2xx\` en cuanto recibÃs el evento y procesá aparte: un receptor lento provoca 10895reenvÃos. Tratá los eventos como potencialmente repetidos y deduplicá por el identificador 10896del pago. Y no confÃes el estado final sólo al webhook: confirmalo con 10897[la consulta del pago](/developers/api-bancario/pagos#operaciones). 10898 10899## Operaciones [#operaciones] 10900 10901<BaasOperations slug="api-bancario/webhooks" /> 10902
10903## Contratos de payload [#contratos] 10904 10905Cada evento declara su propio contrato de campos. Estos son los que el spec publica: 10906 10907<BaasWebhookContracts /> 10908`,or=`--- 10909title: API Bancario de Tilopay 10910kind: api-index 10911status: stable 10912api_version: 1.0.0 10913last_verified: 2026-09-02 10914verified_by: equipo-integraciones 10915owner: equipo-integraciones 10916sources: 10917 - "Tilopay_API_BaaS.yaml â spec OpenAPI 3.0.3 del API Bancario, versión 1.0.0" 10918locales: [es, en] 10919related: [server-to-server] 10920description: "Referencia del API Bancario (BaaS) de Tilopay generada desde su spec OpenAPI 3.0.3, versión 1.0.0." 10921--- 10922 10923El API Bancario de Tilopay permite a un cliente integrado iniciar pagos (PIN y SINPE 10924Móvil), consultar su estado, administrar cuentas y suscribirse a webhooks de eventos de 10925pago, siempre limitado a las cuentas que autoriza el token de acceso. 10926 10927**Es un producto separado de la pasarela de pagos.** Corre en su propia infraestructura, 10928con host, credenciales y autenticación propias. Un comercio que ya integra el API de 10929adquirencia no obtiene acceso a este automáticamente. 10930 10931Esta referencia se genera desde el spec OpenAPI 3.0.3 del API Bancario, versión **1.0.0**. 10932 10933## Qué permite hacer [#que-permite] 10934 10935**Pagos.** Crear un pago, consultarlo por identificador, listarlo por cuenta y buscarlo 10936por \`payment_id\`, \`public_id\` o \`client_reference\`; los métodos declarados son \`PIN\` y 10937\`SINPE_MOVIL\`, en dirección \`OUT\` o \`IN\`. 10938[Ver operaciones de pagos](/developers/api-bancario/pagos). 10939 10940**Cuentas.** Validar una cuenta destino antes de transferir, listar las cuentas 10941accesibles con o sin saldos, consultar el saldo de una cuenta y solicitar estados de 10942cuenta de forma asincrónica. 10943[Ver operaciones de cuentas](/developers/api-bancario/cuentas). 10944 10945**Webhooks.** Registrar un destino HTTPS cifrado, listar los features suscribibles por 10946método de pago y consultar el contrato de payload de cada evento. 10947[Ver operaciones de webhooks](/developers/api-bancario/webhooks). 10948 10949**Catálogos.** Tipos de persona de identificación de cliente por paÃs. 10950[Ver catálogos](/developers/api-bancario/catalogos). 10951 10952Además, el API expone \`GET /api/public/v1/healthz\` para chequeo de salud, y \`GET 10953/openapi.yaml\` y \`GET /docs\` para el spec crudo y la interfaz de documentación del propio 10954host. 10955 10956### Capacidades de la plataforma fuera del API público v1 [#fuera-de-alcance] 10957 10958La plataforma bancaria de Tilopay ofrece capacidades comerciales que **el API público 10959v1 no declara**: transferencias DTR, emisión de tarjetas VISA o Mastercard y gestión de 10960recaudos. No hay operaciones para ellas en esta versión del API; para evaluarlas, 10961escribà a **[email protected]**. 10962 10963## Entornos [#entornos] 10964 10965El spec declara un único servidor, el de pruebas: 10966 10967\`\`\`text 10968https://api-baas-sandbox.tilopay.com 10969\`\`\` 10970 10971El host de producción y las credenciales de cada entorno se entregan al habilitar el 10972acceso. Las rutas y los contratos son los mismos en ambos entornos. 10973 10974## Artefactos legibles por máquina [#artefactos] 10975 10976El spec se sirve completo, con CORS abierto, en dos formatos: 10977 10978- [openapi.json](/developers/api-bancario/openapi.json) 10979- [openapi.yaml](/developers/api-bancario/openapi.yaml) 10980 10981Es un artefacto distinto del spec del API de adquirencia 10982([/developers/openapi.json](/developers/openapi.json)): son dos APIs separadas. 10983 10984## Cómo obtener acceso [#acceso] 10985 10986El acceso es restringido y se otorga por solicitud, para operaciones en Costa Rica. 10987Para conocer el producto y solicitarlo: [baas.tilopay.com](https://baas.tilopay.com), 10988indicando volumen mensual estimado, caso de uso y sistemas a integrar. 10989 10990## Por dónde seguir [#siguiente] 10991 109921. [Autenticación](/developers/api-bancario/autenticacion) â login, intercambio de token y Bearer. 109932. [Convenciones](/developers/api-bancario/convenciones) â envelope, correlación, reintentos seguros, paginación y fechas. 109943. [Códigos de respuesta](/developers/api-bancario/errores) â catálogo completo de \`response_code\`. 10995`,sr=`--- 10996title: Changelog de API y SDK 10997kind: concept 10998status: draft 10999api_version: v1 11000last_verified: 2026-08-28 11001verified_by: equipo-integraciones 11002owner: equipo-integraciones 11003sources: [] 11004related: [] 11005draft: true 11006description: Página en construcción. El contenido normativo llega en la siguiente fase. 11007--- 11008 11009Esta página todavÃa no tiene contenido normativo. No la tomés como contrato: nada de 11010lo que falta acá está definido en otro lugar del portal. 11011 11012Mientras tanto: 11013 11014- Para integrar ya, seguà el [SDK JavaScript](/developers/sdk). 11015- Para obtener credenciales de sandbox, registrate en [/developers/registro](/developers/registro). 11016- Si necesitás este contenido con urgencia, escribinos desde [soporte](/developers/support). 11017`,cr=`--- 11018title: "Flujo de pago: autorización, captura y 3DS" 11019kind: concept 11020status: draft 11021api_version: v1
11022last_verified: 2026-08-28 11023verified_by: equipo-integraciones 11024owner: equipo-integraciones 11025sources: [] 11026related: [] 11027draft: true 11028description: Página en construcción. El contenido normativo llega en la siguiente fase. 11029--- 11030 11031Esta página todavÃa no tiene contenido normativo. No la tomés como contrato: nada de 11032lo que falta acá está definido en otro lugar del portal. 11033 11034Mientras tanto: 11035 11036- Para integrar ya, seguà el [SDK JavaScript](/developers/sdk). 11037- Para obtener credenciales de sandbox, registrate en [/developers/registro](/developers/registro). 11038- Si necesitás este contenido con urgencia, escribinos desde [soporte](/developers/support). 11039`,lr=`--- 11040title: LÃmites de tasa 11041kind: concept 11042status: draft 11043api_version: v1 11044last_verified: 2026-08-28 11045verified_by: equipo-integraciones 11046owner: equipo-integraciones 11047sources: [] 11048related: [] 11049draft: true 11050description: Página en construcción. El contenido normativo llega en la siguiente fase. 11051--- 11052 11053Esta página todavÃa no tiene contenido normativo. No la tomés como contrato: nada de 11054lo que falta acá está definido en otro lugar del portal. 11055 11056Mientras tanto: 11057 11058- Para integrar ya, seguà el [SDK JavaScript](/developers/sdk). 11059- Para obtener credenciales de sandbox, registrate en [/developers/registro](/developers/registro). 11060- Si necesitás este contenido con urgencia, escribinos desde [soporte](/developers/support). 11061`,ur=`--- 11062title: Monedas y montos 11063kind: concept 11064status: draft 11065api_version: v1 11066last_verified: 2026-08-28 11067verified_by: equipo-integraciones 11068owner: equipo-integraciones 11069sources: [] 11070related: [] 11071draft: true 11072description: Página en construcción. El contenido normativo llega en la siguiente fase. 11073--- 11074 11075Esta página todavÃa no tiene contenido normativo. No la tomés como contrato: nada de 11076lo que falta acá está definido en otro lugar del portal. 11077 11078Mientras tanto: 11079 11080- Para integrar ya, seguà el [SDK JavaScript](/developers/sdk). 11081- Para obtener credenciales de sandbox, registrate en [/developers/registro](/developers/registro). 11082- Si necesitás este contenido con urgencia, escribinos desde [soporte](/developers/support). 11083`,dr=`--- 11084title: Tokenización y tarjetas guardadas 11085kind: concept 11086status: draft 11087last_verified: 2026-08-28 11088verified_by: henry 11089owner: equipo-integraciones 11090sources: [] 11091locales: [es, en] 11092related: [] 11093draft: true 11094description: Página pendiente de contenido verificado. 11095--- 11096 11097<Callout type="warn"> 11098Página pendiente. El contenido anterior no venÃa de una fuente verificada y se retiró. 11099No hay nada normativo acá: ni nombres de métodos, ni campos, ni comportamiento. 11100</Callout> 11101`,fr=`--- 11102title: "Entornos: pruebas y producción" 11103kind: concept 11104status: stable 11105api_version: v1 11106last_verified: 2026-08-28 11107verified_by: equipo-integraciones 11108owner: equipo-integraciones 11109sources: 11110 - "Respuestas de TecnologÃa, 28-08-2026" 11111locales: [es, en] 11112related: [api/autenticacion, sdk/reference/init, tarjetas-de-prueba] 11113description: Pruebas y producción comparten host. El modo se cambia desde la cuenta y se verifica con el campo test de Init(). 11114--- 11115 11116<Callout type="warn"> 11117**No existe un host de sandbox.** Pruebas y producción usan el mismo host: 11118\`app.tilopay.com\`. La URL no te dice en qué modo estás. 11119</Callout> 11120 11121## Cómo se cambia de modo [#como-se-cambia] 11122 11123El modo se alterna **desde la cuenta en el portal de Tilopay**, no desde la integración. 11124No hay un parámetro, un encabezado ni una URL alterna que lo cambie desde el código. 11125 11126## Cómo se verifica [#como-se-verifica] 11127 11128\`Tilopay.Init()\` devuelve un campo **\`test\`**: 11129 11130| Valor | Significado | 11131|---|---| 11132| \`0\` | Producción | 11133| \`1\` | Pruebas | 11134 11135Esa es la única señal disponible en tiempo de ejecución. Leela y mostrala en tu propio 11136checkout mientras desarrollás. 11137 11138## El riesgo real [#riesgo] 11139 11140<Callout type="warn"> 11141Como el host es el mismo, un integrador puede creer que está probando y estar en 11142producción, cobrando de verdad. **Verificá \`test\` antes de asumir el modo.** Si tu 11143integración va a mover dinero, hacé que un \`test: 0\` inesperado falle ruidosamente en tus 11144ambientes de desarrollo. 11145</Callout> 11146 11147## Tarjetas de prueba [#tarjetas] 11148
11149En modo de pruebas se cobra con las [tarjetas de prueba](/developers/tarjetas-de-prueba): 11150ahà está el número, la marca, el resultado esperado y si abre la pantalla de challenge 3DS. 11151`,pr=`--- 11152title: Cobrar con tarjeta en el navegador 11153kind: guide 11154status: draft 11155api_version: v1 11156last_verified: 2026-08-28 11157verified_by: equipo-integraciones 11158owner: equipo-integraciones 11159sources: [] 11160related: [] 11161draft: true 11162description: Página en construcción. El contenido normativo llega en la siguiente fase. 11163--- 11164 11165Esta página todavÃa no tiene contenido normativo. No la tomés como contrato: nada de 11166lo que falta acá está definido en otro lugar del portal. 11167 11168Mientras tanto: 11169 11170- Para integrar ya, seguà el [SDK JavaScript](/developers/sdk). 11171- Para obtener credenciales de sandbox, registrate en [/developers/registro](/developers/registro). 11172- Si necesitás este contenido con urgencia, escribinos desde [soporte](/developers/support). 11173`,mr=`--- 11174title: Hosted payment page 11175kind: guide 11176status: stable 11177api_version: v1 11178last_verified: 2026-08-28 11179verified_by: equipo-integraciones 11180owner: equipo-integraciones 11181sources: 11182 - "Respuestas de TecnologÃa, 28-08-2026" 11183locales: [es, en] 11184related: [sdk, api/hosted-payment-page, api/autenticacion, api/webhooks] 11185gaps: 11186 - "Endpoint, parámetros y formato del callback de la hosted payment page: sin verificar." 11187description: Camino de integración en el que el cliente paga en una página alojada por Tilopay y tu servidor recibe el resultado. 11188--- 11189 11190## Qué es [#que-es] 11191 11192Tu servidor le pide una URL de pago al API, redirige al cliente a esa página de Tilopay y 11193recibe el resultado en tu callback URL. 11194 11195Los datos de tarjeta se digitan en una página de Tilopay: **el comercio nunca ve un número de 11196tarjeta** y el servidor del comercio queda fuera de ese flujo. 11197 11198La operación de este camino está en [API · processPayment](/developers/api/hosted-payment-page/process-payment). 11199 11200## Diferencia con un link de pago [#diferencia-link] 11201 11202- **Hosted payment page**: tu servidor pide una URL de pago por API y redirige al cliente a ella. Es ideal para flujos de checkout integrados en tu sitio o app. 11203- **Link de pago**: es una URL reusable que creás por API o desde el panel y compartÃs por mensaje, correo, redes o QR. El cliente paga cuando quiera; no necesitás redirigirlo desde tu flujo. 11204- En resumen: HPP para checkout integrado y transacciones puntuales; link de pago para cobros compartidos y sin desarrollo de front. 11205 11206## Para quién es [#para-quien] 11207 11208Para equipos que cobran con código propio pero prefieren no construir ni mantener el 11209formulario de tarjeta. Lo que necesitás es backend: pedir la URL y atender el callback. 11210 11211## Requisitos antes de empezar [#requisitos] 11212 112131. **Credenciales propias.** No hay credenciales de sandbox compartidas: cada desarrollador 11214 obtiene las suyas en [registro de developer](/developers/registro). 112152. **Autenticación del API.** Ver [autenticación](/developers/api/autenticacion). 112163. **Una URL de callback tuya** que pueda recibir el resultado de la transacción. 11217 11218## Cómo confirmar el estado de un cobro [#confirmacion] 11219 11220El resultado que llega a tu callback no es la única señal disponible, y no todas las 11221respuestas de error viajan con un HTTP 4xx: 11222 11223- Leé [cómo leer una respuesta de error](/developers/api/procesos-operativos/errors) antes de decidir un éxito. 11224- Configurá [webhooks](/developers/api/webhooks) para los eventos que te interesen. 11225- Si una llamada falla sin respuesta clara, resolvé el estado con 11226 [reintentos seguros](/developers/reintentos-seguros). 11227 11228## Entornos [#entornos] 11229 11230Pruebas y producción comparten el mismo host. Ver 11231[entornos](/developers/entornos) antes de cobrar de verdad. 11232 11233## Cumplimiento [#cumplimiento] 11234 11235Es el camino que menos expone a tu infraestructura junto con el de sin código. Confirmá con 11236tu equipo de cumplimiento el alcance que aplica a tu comercio. 11237 11238## Si preferÃs el formulario en tu sitio [#alternativa] 11239 11240Usá el [SDK JavaScript](/developers/sdk): el diseño es tuyo y los datos siguen sin pasar por 11241tu servidor. 11242`,hr=`---
11243title: SINPE Móvil 11244kind: concept 11245status: draft 11246api_version: v1 11247last_verified: 2026-08-28 11248verified_by: equipo-integraciones 11249owner: equipo-integraciones 11250sources: [] 11251related: [] 11252draft: true 11253description: Página en construcción. El contenido normativo llega en la siguiente fase. 11254--- 11255 11256Esta página todavÃa no tiene contenido normativo. No la tomés como contrato: nada de 11257lo que falta acá está definido en otro lugar del portal. 11258 11259Mientras tanto: 11260 11261- Para integrar ya, seguà el [SDK JavaScript](/developers/sdk). 11262- Para obtener credenciales de sandbox, registrate en [/developers/registro](/developers/registro). 11263- Si necesitás este contenido con urgencia, escribinos desde [soporte](/developers/support). 11264`,gr=`--- 11265title: Tarjeta 11266kind: concept 11267status: draft 11268api_version: v1 11269last_verified: 2026-08-28 11270verified_by: equipo-integraciones 11271owner: equipo-integraciones 11272sources: [] 11273related: [] 11274draft: true 11275description: Página en construcción. El contenido normativo llega en la siguiente fase. 11276--- 11277 11278Esta página todavÃa no tiene contenido normativo. No la tomés como contrato: nada de 11279lo que falta acá está definido en otro lugar del portal. 11280 11281Mientras tanto: 11282 11283- Para integrar ya, seguà el [SDK JavaScript](/developers/sdk). 11284- Para obtener credenciales de sandbox, registrate en [/developers/registro](/developers/registro). 11285- Si necesitás este contenido con urgencia, escribinos desde [soporte](/developers/support). 11286`,_r=`--- 11287title: Yappy 11288kind: concept 11289status: draft 11290api_version: v1 11291last_verified: 2026-08-28 11292verified_by: equipo-integraciones 11293owner: equipo-integraciones 11294sources: [] 11295related: [] 11296draft: true 11297description: Página en construcción. El contenido normativo llega en la siguiente fase. 11298--- 11299 11300Esta página todavÃa no tiene contenido normativo. No la tomés como contrato: nada de 11301lo que falta acá está definido en otro lugar del portal. 11302 11303Mientras tanto: 11304 11305- Para integrar ya, seguà el [SDK JavaScript](/developers/sdk). 11306- Para obtener credenciales de sandbox, registrate en [/developers/registro](/developers/registro). 11307- Si necesitás este contenido con urgencia, escribinos desde [soporte](/developers/support). 11308`,vr=`--- 11309title: Cobro con tarjeta guardada 11310kind: guide 11311status: draft 11312last_verified: 2026-08-28 11313verified_by: henry 11314owner: equipo-integraciones 11315sources: [] 11316related: [] 11317draft: true 11318description: Estructura pendiente de contenido verificado. 11319--- 11320 11321## Qué cubre [#que-cubre] 11322 11323Cobrar contra una tarjeta ya tokenizada. 11324 11325<Callout type="warn"> 11326Página pendiente. TodavÃa no hay contenido normativo verificado acá: ni endpoints, ni 11327campos, ni nombres de métodos. La referencia se publica cuando la valide el área 11328de producto. 11329</Callout> 11330`,yr=`--- 11331title: Cobros masivos 11332kind: guide 11333status: draft 11334last_verified: 2026-08-28 11335verified_by: henry 11336owner: equipo-integraciones 11337sources: [] 11338related: [] 11339draft: true 11340description: Estructura pendiente de contenido verificado. 11341--- 11342 11343## Qué cubre [#que-cubre] 11344 11345Grupos, afiliados y colecciones masivas. 11346 11347<Callout type="warn"> 11348Página pendiente. TodavÃa no hay contenido normativo verificado acá: ni endpoints, ni 11349campos, ni nombres de métodos. La referencia se publica cuando la valide el área 11350de producto. 11351</Callout> 11352`,br=`--- 11353title: Cupones y descuentos 11354kind: guide 11355status: draft 11356last_verified: 2026-08-28 11357verified_by: henry 11358owner: equipo-integraciones 11359sources: [] 11360related: [] 11361draft: true 11362description: Estructura pendiente de contenido verificado. 11363--- 11364 11365## Qué cubre [#que-cubre] 11366 11367Crear, consultar y eliminar cupones y descuentos aplicables a suscripciones. 11368 11369<Callout type="warn"> 11370Página pendiente. TodavÃa no hay contenido normativo verificado acá: ni endpoints, ni 11371campos, ni nombres de métodos. La referencia se publica cuando la valide el área 11372de producto. 11373</Callout> 11374`,xr=`--- 11375title: Pagos de suscriptor 11376kind: guide 11377status: draft 11378last_verified: 2026-08-28 11379verified_by: henry 11380owner: equipo-integraciones 11381sources: [] 11382related: [] 11383draft: true 11384description: Estructura pendiente de contenido verificado. 11385--- 11386 11387## Qué cubre [#que-cubre] 11388 11389Historial de cobros por suscriptor. 11390 11391<Callout type="warn"> 11392Página pendiente. TodavÃa no hay contenido normativo verificado acá: ni endpoints, ni 11393campos, ni nombres de métodos. La referencia se publica cuando la valide el área 11394de producto. 11395</Callout> 11396`,Sr=`--- 11397title: Planes 11398kind: guide 11399status: draft
11400last_verified: 2026-08-28 11401verified_by: henry 11402owner: equipo-integraciones 11403sources: [] 11404related: [] 11405draft: true 11406description: Estructura pendiente de contenido verificado. 11407--- 11408 11409## Qué cubre [#que-cubre] 11410 11411Crear, editar, consultar y eliminar planes de suscripción. 11412 11413<Callout type="warn"> 11414Página pendiente. TodavÃa no hay contenido normativo verificado acá: ni endpoints, ni 11415campos, ni nombres de métodos. La referencia se publica cuando la valide el área 11416de producto. 11417</Callout> 11418`,Cr=`--- 11419title: Suscriptores 11420kind: guide 11421status: draft 11422last_verified: 2026-08-28 11423verified_by: henry 11424owner: equipo-integraciones 11425sources: [] 11426related: [] 11427draft: true 11428description: Estructura pendiente de contenido verificado. 11429--- 11430 11431## Qué cubre [#que-cubre] 11432 11433Consultar, editar, pausar, reactivar y eliminar suscriptores. 11434 11435<Callout type="warn"> 11436Página pendiente. TodavÃa no hay contenido normativo verificado acá: ni endpoints, ni 11437campos, ni nombres de métodos. La referencia se publica cuando la valide el área 11438de producto. 11439</Callout> 11440`,wr=`--- 11441title: Tokenización 11442kind: guide 11443status: draft 11444last_verified: 2026-08-28 11445verified_by: henry 11446owner: equipo-integraciones 11447sources: [] 11448related: [] 11449draft: true 11450description: Estructura pendiente de contenido verificado. 11451--- 11452 11453## Qué cubre [#que-cubre] 11454 11455Guardar una tarjeta para cobrar después. 11456 11457<Callout type="warn"> 11458Página pendiente. TodavÃa no hay contenido normativo verificado acá: ni endpoints, ni 11459campos, ni nombres de métodos. La referencia se publica cuando la valide el área 11460de producto. 11461</Callout> 11462`,Tr=`--- 11463title: Webhooks de recurrencia 11464kind: guide 11465status: draft 11466last_verified: 2026-08-28 11467verified_by: henry 11468owner: equipo-integraciones 11469sources: [] 11470related: [] 11471draft: true 11472description: Estructura pendiente de contenido verificado. 11473--- 11474 11475## Qué cubre [#que-cubre] 11476 11477Los eventos de suscripción que Tilopay notifica a tu servidor. 11478 11479<Callout type="warn"> 11480Página pendiente. TodavÃa no hay contenido normativo verificado acá: ni endpoints, ni 11481campos, ni nombres de métodos. La referencia se publica cuando la valide el área 11482de producto. 11483</Callout> 11484`,Er=`--- 11485title: Cobros recurrentes y tokenización 11486kind: guide 11487status: draft 11488last_verified: 2026-08-28 11489verified_by: henry 11490owner: equipo-integraciones 11491sources: [] 11492related: [hosted-payment-page, sdk, server-to-server] 11493draft: true 11494description: Ãndice de la sección de cobros recurrentes, tokenización y cobros masivos. 11495--- 11496 11497Esta sección agrupa todo lo que tiene que ver con cobrar más de una vez: planes, 11498suscriptores, cupones, tarjetas guardadas y los eventos de suscripción. 11499 11500## Cómo se relaciona con el resto del portal [#relacion] 11501 11502Se puede cobrar recurrente desde cualquiera de los tres caminos con código: 11503[hosted payment page](/developers/hosted-payment-page), 11504[SDK JavaScript](/developers/sdk) y 11505[API servidor a servidor](/developers/server-to-server). El camino que elegÃs 11506define dónde se captura la tarjeta la primera vez; la recurrencia posterior es 11507la misma sección de API. 11508 11509## Qué contiene [#contenido] 11510 11511- [Planes](/developers/recurrentes/planes) 11512- [Suscriptores](/developers/recurrentes/suscriptores) 11513- [Cupones y descuentos](/developers/recurrentes/cupones) 11514- [Pagos de suscriptor](/developers/recurrentes/pagos-de-suscriptor) 11515- [Tokenización](/developers/recurrentes/tokenizacion) 11516- [Cobro con tarjeta guardada](/developers/recurrentes/cobro-con-tarjeta-guardada) 11517- [Cobros masivos](/developers/recurrentes/cobros-masivos) 11518- [Webhooks de recurrencia](/developers/recurrentes/webhooks-de-recurrencia) 11519 11520<Callout type="warn"> 11521Estructura publicada, contenido pendiente. Ninguna página de esta sección tiene 11522todavÃa referencia verificada de endpoints, campos ni comportamiento. 11523</Callout> 11524`,Dr=`--- 11525title: Reintentos seguros y orderNumber 11526kind: concept 11527status: stable 11528api_version: v1 11529last_verified: 2026-08-28 11530verified_by: equipo-integraciones 11531owner: equipo-integraciones 11532sources: 11533 - "Respuestas de TecnologÃa, 28-08-2026" 11534locales: [es, en] 11535related: [api/hosted-payment-page, sdk/reference/init, concepts/flujo-de-pago] 11536description: El API no es idempotente. Qué hacer exactamente cuando una llamada de pago se cae por timeout. 11537--- 11538 11539<Callout type="warn"> 11540**El API de Tilopay no es idempotente.** No existe una llave de idempotencia ni un reintento 11541que devuelva la transacción original. Si venÃs de otros procesadores, este es el supuesto que 11542tenés que desarmar antes de escribir código. 11543</Callout> 11544 11545## \`orderNumber\` es único para siempre [#ordernumber] 11546 11547\`orderNumber\` es único por comercio **a lo largo de toda su operación**, para siempre. No se 11548reinicia por dÃa, por mes ni por temporada. 11549 11550Si se repite, **la nueva transacción se rechaza** con la respuesta **"Transacción 11551duplicada"**. No devuelve la transacción original: devuelve un rechazo. 11552 11553## El problema del timeout [#timeout] 11554
11555Cuando una llamada de pago se cae por red o por timeout, no sabés si la transacción se creó o 11556no. Y ninguna de las dos salidas intuitivas sirve: 11557 11558| Qué harÃas | Qué pasa | 11559|---|---| 11560| Reintentar con el mismo \`orderNumber\` | Rechazo por duplicado, incluso si la primera sà pasó | 11561| Reintentar con un \`orderNumber\` nuevo | Riesgo de doble cobro | 11562 11563**Ante un timeout de red no hay reintento seguro.** 11564 11565## Qué hacer entonces [#que-hacer] 11566 11567Consultá el estado antes de decidir: 11568 115691. Llamá a \`POST /api/v1/consult\` con el \`orderNumber\` original. 115702. Si la transacción existe, usá su resultado. No reintentés. 115713. Si no existe, ahà sà podés reintentar â y podés reusar el mismo \`orderNumber\`, porque no se 11572 consumió. 11573 11574\`\`\`text 11575pago â timeout 11576 â 11577 âââ consult(orderNumber original) 11578 ââ existe â usar ese resultado 11579 ââ no existe â reintentar 11580\`\`\` 11581 11582## Consecuencias de diseño [#diseno] 11583 11584- Generá el \`orderNumber\` en tu sistema **antes** de llamar al pago y persistilo. Si lo 11585 generás al vuelo, después de un timeout no tenés con qué consultar. 11586- Nunca derives el \`orderNumber\` de algo que se pueda repetir (número de carrito reciclado, 11587 timestamp truncado, contador reiniciable). 11588- Un "Transacción duplicada" no significa que el cobro falló: significa que ese 11589 \`orderNumber\` ya se usó. Consultá antes de mostrarle un error al cliente. 11590`,Or=`--- 11591title: Campos del formulario 11592kind: concept 11593status: stable 11594last_verified: 2026-08-28 11595verified_by: equipo-integraciones 11596owner: equipo-integraciones 11597sources: 11598 - "Respuestas de TecnologÃa, 28-08-2026" 11599locales: [es, en] 11600related: [sdk, sdk/instalacion, sdk/reference/init] 11601gaps: 11602 - "Si el SDK además lee un input tlpy_phone_number del DOM: sin confirmar." 11603description: Los ids tlpy_* que el SDK V2 busca en tu formulario y el contenedor responseTilopay que necesita para 3DS. 11604--- 11605 11606El SDK V2 no renderiza el formulario: toma control de los inputs que ya existen en tu 11607página, buscándolos por \`id\`. Esos ids son un contrato â si cambiás uno, el SDK deja de 11608encontrar el campo. 11609 11610<Callout type="info"> 11611**El contrato son los inputs, no los contenedores.** Los \`div\` que envuelven a los campos 11612podés nombrarlos como quieras: el SDK no los busca. La única excepción es 11613\`responseTilopay\`, que sà es requerido. 11614</Callout> 11615 11616## Campos [#campos] 11617 11618<Param id="campo-tlpy-payment-method" name="tlpy_payment_method" type="text | select" required> 11619Contiene el id del método de pago obtenido de Tilopay. Puede estar visible u oculto, a 11620discreción del comercio. 11621</Param> 11622 11623<Param id="campo-tlpy-saved-cards" name="tlpy_saved_cards" type="select" required> 11624Contiene el id de la tarjeta guardada obtenida de Tilopay. Si el cliente no tiene tarjetas 11625guardadas, ocultalo. 11626</Param> 11627 11628<Param id="campo-tlpy-cc-number" name="tlpy_cc_number" type="text" required> 11629Número de tarjeta. 11630</Param> 11631 11632<Param id="campo-tlpy-cc-expiration-date" name="tlpy_cc_expiration_date" type="text" required> 11633Fecha de expiración en formato mes/año, por ejemplo \`01/25\`. 11634</Param> 11635 11636<Param id="campo-tlpy-cvv" name="tlpy_cvv" type="text" required> 11637Código de seguridad. Cuando el cliente usa una tarjeta guardada, hay que habilitar este 11638campo para que digite el CVV. 11639</Param> 11640 11641<Param id="campo-response-tilopay" name="responseTilopay" type="div" required> 11642Contenedor requerido, **fuera del formulario**. Es donde el SDK monta el flujo 3DS. 11643</Param> 11644 11645## El teléfono de Yappy no viaja por el DOM [#yappy] 11646 11647El teléfono de Yappy **no** se toma de un campo del formulario: se envÃa en el parámetro 11648\`phoneYappy\` de [\`Init()\`](/developers/sdk/reference/init) o de 11649[\`updateOptions()\`](/developers/sdk/reference/update-options). 11650 11651## Estructura de ejemplo [#estructura] 11652 11653Los \`div\` de este ejemplo son libres; los \`id\` de los inputs y \`responseTilopay\` no. 11654 11655\`\`\`html 11656<div class="payFormTilopay"> 11657 <select id="tlpy_payment_method" name="tlpy_payment_method"></select> 11658 11659 <div> 11660 <select id="tlpy_saved_cards" name="tlpy_saved_cards"></select> 11661 <input type="text" id="tlpy_cc_number" name="tlpy_cc_number" /> 11662 <input type="text" id="tlpy_cc_expiration_date" name="tlpy_cc_expiration_date" /> 11663 <input type="text" id="tlpy_cvv" name="tlpy_cvv" /> 11664 </div> 11665</div> 11666 11667<div id="responseTilopay"></div> 11668\`\`\` 11669`,kr=`--- 11670title: Instalación del SDK 11671kind: guide 11672status: stable
11673last_verified: 2026-08-28 11674verified_by: equipo-integraciones 11675owner: equipo-integraciones 11676sources: 11677 - "Respuestas de TecnologÃa, 28-08-2026" 11678locales: [es, en] 11679related: [sdk, sdk/campos-del-formulario, sdk/reference/init] 11680description: La etiqueta script del SDK V2, qué versiones existen y qué garantÃas de versionado no hay. 11681--- 11682 11683## El script [#script] 11684 11685\`\`\`html 11686<script src="https://app.tilopay.com/sdk/v2/sdk_tpay.min.js"><\/script> 11687\`\`\` 11688 11689Cargalo antes de tu propio código de checkout. El SDK expone el objeto global \`Tilopay\`. 11690 11691## jQuery no es requerido [#jquery] 11692 11693<Callout type="info"> 11694**jQuery NO es requerido.** Era un residuo del SDK V1. El artÃculo publicado hasta ahora 11695decÃa lo contrario y está mal: podés instalar el SDK V2 sin jQuery en la página. 11696</Callout> 11697 11698## Versiones [#versiones] 11699 11700Existen solo dos versiones: 11701 11702| Versión | Estado | 11703|---|---| 11704| \`v1\` | Sin soporte | 11705| \`v2\` | Actual | 11706 11707## Lo que no hay [#garantias] 11708 11709<Callout type="warn"> 11710**No hay versionado inmutable, no hay hash SRI y no hay changelog.** La URL 11711\`/sdk/v2/sdk_tpay.min.js\` no está anclada a una versión concreta: su contenido puede 11712cambiar sin aviso previo y sin una nota de cambios pública. 11713 11714Consecuencias prácticas: 11715 11716- No podés fijar \`integrity="sha384-..."\` en la etiqueta \`script\`, porque el archivo cambia. 11717- No podés depender de un número de build para reproducir un bug. 11718- Conviene tener pruebas de humo de tu checkout que corran periódicamente, no solo al 11719 desplegar. 11720</Callout> 11721 11722## Qué sigue [#que-sigue] 11723 11724- [Campos del formulario](/developers/sdk/campos-del-formulario) â los ids que el SDK busca. 11725- [\`Tilopay.Init()\`](/developers/sdk/reference/init) â iniciar la compra. 11726`,Ar=`--- 11727title: Migración del SDK v1 a v2 11728kind: guide 11729status: draft 11730api_version: v1 11731last_verified: 2026-08-28 11732verified_by: equipo-integraciones 11733owner: equipo-integraciones 11734sources: [] 11735related: [] 11736draft: true 11737description: Página en construcción. El contenido normativo llega en la siguiente fase. 11738--- 11739 11740Esta página todavÃa no tiene contenido normativo. No la tomés como contrato: nada de 11741lo que falta acá está definido en otro lugar del portal. 11742 11743Mientras tanto: 11744 11745- Para integrar ya, seguà el [SDK JavaScript](/developers/sdk). 11746- Para obtener credenciales de sandbox, registrate en [/developers/registro](/developers/registro). 11747- Si necesitás este contenido con urgencia, escribinos desde [soporte](/developers/support). 11748`,jr=`--- 11749title: Tilopay.getCardType() 11750kind: sdk-method 11751status: stable 11752last_verified: 2026-08-28 11753verified_by: equipo-integraciones 11754owner: equipo-integraciones 11755sources: 11756 - "Respuestas de TecnologÃa, 28-08-2026" 11757locales: [es, en] 11758related: [sdk/reference/update-options, sdk/campos-del-formulario] 11759gaps: 11760 - "Qué devuelve ante una marca no soportada o un número incompleto: sin verificar." 11761description: Devuelve la marca de la tarjeta que el cliente está digitando, para mostrarle un Ãcono mientras escribe. 11762--- 11763 11764Devuelve la marca de la tarjeta a partir del número que el cliente ya digitó en 11765\`tlpy_cc_number\`. El uso tÃpico es mostrar el Ãcono de la marca mientras el cliente escribe. 11766 11767## Firma [#firma] 11768 11769\`\`\`js 11770await Tilopay.getCardType() 11771\`\`\` 11772 11773No recibe parámetros. 11774
11775**Precondición:** el cliente ya tiene que haber digitado el número de tarjeta. 11776 11777## Llamada [#llamada] 11778 11779\`\`\`js 11780const type = await Tilopay.getCardType(); 11781\`\`\` 11782 11783## Respuesta [#respuesta] 11784 11785\`\`\`json 11786{ 11787 "message": "visa" 11788} 11789\`\`\` 11790 11791<Param id="get-card-type-message" name="message" type="string"> 11792La marca de la tarjeta. 11793</Param> 11794 11795## Marcas soportadas [#marcas-soportadas] 11796 11797VISA · MASTERCARD · AMEX 11798 11799Usá el resultado solo para presentación: la validación de la marca la hace Tilopay al procesar 11800el cobro, no este método. 11801`,Mr=`--- 11802title: Tilopay.getSinpeMovil() 11803kind: sdk-method 11804status: stable 11805last_verified: 2026-08-28 11806verified_by: equipo-integraciones 11807owner: equipo-integraciones 11808sources: 11809 - "Respuestas de TecnologÃa, 28-08-2026" 11810locales: [es, en] 11811related: [sdk/reference/update-options, payment-methods/sinpe-movil] 11812description: Devuelve los datos que hay que mostrarle al cliente para pagar por SINPE Móvil y activa el listener del cobro. 11813--- 11814 11815SINPE Móvil no se cobra desde el formulario: el cliente hace la transferencia desde su propio 11816banco. Este método devuelve los datos que hay que mostrarle â teléfono destino, monto exacto y 11817código de descripción. 11818 11819## Cuándo se usa [#cuando] 11820 11821Cuando el comercio tiene un método SINPE Móvil disponible y el cliente lo selecciona de la 11822lista que devolvió [\`Init()\`](/developers/sdk/reference/init). 11823 11824<Callout type="info"> 11825**No es solo un getter.** Además de devolver los datos, este método **dispara el listener de 11826SINPE con el backend de Tilopay**. Llamarlo es parte del flujo de cobro, no un detalle de 11827presentación. 11828</Callout> 11829 11830## Firma [#firma] 11831 11832\`\`\`js 11833await Tilopay.getSinpeMovil() 11834\`\`\` 11835 11836No recibe parámetros. 11837
11838**Precondiciones:** 11839 11840- El cliente tiene que haber seleccionado SINPE Móvil como método de pago. 11841- \`typeDni\` y \`dni\` tienen que haberse enviado antes, por \`Init()\` o por 11842 [\`updateOptions()\`](/developers/sdk/reference/update-options). 11843 11844## Llamada [#llamada] 11845 11846\`\`\`js 11847const params = await Tilopay.getSinpeMovil(); 11848\`\`\` 11849 11850## Respuesta [#respuesta] 11851 11852\`\`\`json 11853{ 11854 "message": "Success", 11855 "code": "863", 11856 "amount": 10, 11857 "number": "70599200" 11858} 11859\`\`\` 11860 11861<Param id="get-sinpe-movil-message" name="message" type="string"> 11862\`Success\` cuando la operación salió bien. 11863</Param> 11864 11865<Param id="get-sinpe-movil-code" name="code" type="string"> 11866El código que el cliente debe escribir en la descripción de la transferencia. Es lo que permite 11867identificar el pago. 11868</Param> 11869 11870<Param id="get-sinpe-movil-amount" name="amount" type="number"> 11871El monto exacto que debe transferir. 11872</Param> 11873 11874<Param id="get-sinpe-movil-number" name="number" type="string"> 11875El número de teléfono destino de la transferencia. 11876</Param> 11877 11878### En caso de error [#respuesta-de-error] 11879 11880**En caso de error no devuelve nada.** No esperés un objeto con campos vacÃos: tratá la 11881ausencia de respuesta como el caso de error. 11882 11883## Qué hacer con estos datos [#que-hacer] 11884 11885Al seleccionar SINPE Móvil hay que ocultar los campos de tarjeta y mostrarle al cliente estos 11886datos: teléfono destino, monto exacto y código para la descripción. 11887 11888**No se necesita botón de pagar:** el cobro se procesa cuando llega la transferencia. 11889`,Nr=`--- 11890title: Tilopay.Init() 11891kind: sdk-method 11892status: stable 11893last_verified: 2026-08-28 11894verified_by: equipo-integraciones 11895owner: equipo-integraciones 11896sources: 11897 - "Respuestas de TecnologÃa, 28-08-2026" 11898locales: [es, en] 11899related: [sdk/campos-del-formulario, sdk/reference/update-options, sdk/reference/startpayment, entornos] 11900gaps: 11901 - "Lista completa de parámetros y respuesta de InitTokenize(): sin verificar." 11902 - "Ejemplo completo de respuesta de Init(): el publicado está desactualizado." 11903description: "Inicia una compra: autentica el checkout y devuelve los métodos de pago disponibles y las tarjetas guardadas del cliente." 11904--- 11905 11906Inicia una compra. Autentica el checkout con el token del SDK y devuelve los métodos de 11907pago disponibles para el comercio. 11908 11909Para guardar una tarjeta sin cobrarla, el SDK tiene un segundo flujo de inicio: 11910**\`Tilopay.InitTokenize()\`**, con los mismos parámetros de \`Init()\` excepto \`amount\`, 11911\`orderNumber\`, \`capture\` y \`subscription\`, que no aplican porque no se está cobrando nada. 11912 11913## Firma [#firma] 11914 11915\`\`\`js 11916await Tilopay.Init({ /* parámetros */ }) 11917\`\`\` 11918 11919## Parámetros [#parametros] 11920 11921<Param id="init-token" name="token" type="string" required> 11922Token del SDK, obtenido con \`POST /api/v1/loginSdk\`. Ver 11923[autenticación](/developers/api/autenticacion). 11924</Param> 11925 11926<Param id="init-currency" name="currency" type="string" required> 11927Moneda de la compra, ISO 4217. 11928</Param> 11929 11930<Param id="init-language" name="language" type="string" required> 11931**Idioma** del checkout, ISO 639-1. Solo se soportan \`es\` y \`en\`; por defecto carga \`es\`. 11932</Param> 11933 11934<Param id="init-amount" name="amount" type="decimal" required> 11935Monto de la compra. 11936</Param> 11937 11938<Param id="init-billtoemail" name="billToEmail" type="string" required> 11939Correo del cliente. Es obligatorio para que la respuesta traiga las tarjetas guardadas. 11940</Param> 11941 11942<Param id="init-ordernumber" name="orderNumber" type="string" required> 11943Número de orden, único por comercio. Ver 11944[reintentos seguros](/developers/reintentos-seguros). 11945</Param> 11946 11947<Param id="init-typedni" name="typeDni" type="integer"> 11948Tipo de identificación del cliente. Condicionado. Ver la 11949[tabla de tipos](/developers/sdk/reference/update-options#tipos-de-identificacion). 11950</Param> 11951 11952<Param id="init-dni" name="dni" type="string"> 11953Número de identificación del cliente. Condicionado. 11954</Param> 11955 11956<Param id="init-billtofirstname" name="billToFirstName" type="string" required> 11957Nombre del cliente. 11958</Param> 11959 11960<Param id="init-billtolastname" name="billToLastName" type="string" required> 11961Apellidos del cliente. 11962</Param> 11963 11964<Param id="init-billtoaddress" name="billToAddress" type="string" required> 11965Dirección 1 del cliente. 11966</Param> 11967 11968<Param id="init-billtoaddress2" name="billToAddress2" type="string"> 11969Dirección 2 del cliente. Opcional. 11970</Param> 11971 11972<Param id="init-billtocity" name="billToCity" type="string"> 11973Ciudad. Recomendado. 11974</Param> 11975
11976<Param id="init-billtostate" name="billToState" type="string"> 11977Provincia o estado. Recomendado. 11978</Param> 11979 11980<Param id="init-billtozippostcode" name="billToZipPostCode" type="string"> 11981Código postal. Recomendado. 11982</Param> 11983 11984<Param id="init-billtocountry" name="billToCountry" type="string"> 11985PaÃs, ISO 3166-1 alpha-2. Recomendado. 11986</Param> 11987 11988<Param id="init-billtotelephone" name="billToTelephone" type="string"> 11989Teléfono del cliente. Recomendado. 11990</Param> 11991 11992<Param id="init-capture" name="capture" type="integer" required> 11993\`0\` autoriza; \`1\` autoriza y captura. 11994</Param> 11995 11996<Param id="init-redirect" name="redirect" type="string (URL)" required> 11997URL donde el SDK renderiza la respuesta final de la compra. 11998</Param> 11999 12000<Param id="init-subscription" name="subscription" type="integer" required> 12001\`1\` guarda la tarjeta del cliente en Tilopay; \`0\` no la guarda. 12002</Param> 12003 12004<Param id="init-phoneyappy" name="phoneYappy" type="string"> 12005Teléfono Yappy. Obligatorio cuando se paga con Yappy. No se toma del DOM. 12006</Param> 12007 12008<Param id="init-hashversion" name="hashVersion" type="string"> 12009Opcional. Valores \`"V1"\` o \`"V2"\`. Si no se envÃa, el hash de la respuesta final se fabrica 12010con V1.
12011</Param> 12012 12013<Param id="init-returndata" name="returnData" type="string"> 12014Opcional. Se devuelve tal cual en la respuesta final del pago y se recupera en la URL de 12015respuesta de la transacción. Soporta hasta **65.535 caracteres**, aunque un valor muy 12016extenso puede afectar la URL de respuesta. Podés enviar un array serializado en base64 para 12017que cumpla el formato de string. 12018</Param> 12019 12020## Llamada [#llamada] 12021 12022\`\`\`js 12023const init = await Tilopay.Init({ 12024 token: sdkToken, 12025 currency: "CRC", 12026 language: "es", 12027 amount: 100.0, 12028 billToEmail: "[email protected]", 12029 orderNumber: "ORD-2026-000123", 12030 billToFirstName: "Ana", 12031 billToLastName: "Rojas", 12032 billToAddress: "Avenida 1, Local 2", 12033 billToCountry: "CR", 12034 capture: 1, 12035 redirect: "https://ejemplo.com/checkout/respuesta", 12036 subscription: 0, 12037}); 12038\`\`\` 12039 12040## Respuesta [#respuesta] 12041 12042<Param id="init-res-message" name="message" type="string"> 12043\`Success\`, o la descripción del error. 12044</Param> 12045 12046<Param id="init-res-test" name="test" type="integer"> 12047\`0\` producción, \`1\` pruebas. Ver [entornos](/developers/entornos). 12048</Param> 12049 12050<Param id="init-res-sinpemovil" name="sinpemovil" type="object"> 12051Objeto con \`code\` y \`amount\`, presente cuando el comercio tiene SINPE Móvil. Los datos 12052completos, incluido el teléfono destino, se obtienen con 12053[\`getSinpeMovil()\`](/developers/sdk/reference/get-sinpe-movil). 12054</Param> 12055 12056<Param id="init-res-methods" name="methods" type="array"> 12057Arreglo de \`{id, name, type}\` con los métodos de pago disponibles. 12058</Param> 12059 12060<Param id="init-res-cards" name="cards" type="array"> 12061Arreglo de \`{id, name, brand}\` con las tarjetas guardadas del cliente. 12062</Param> 12063 12064## Formato del id de método de pago [#formato-id-metodo] 12065 12066El \`id\` de cada método tiene la forma \`A:B:C\`. **El segundo segmento define el método de 12067pago, y \`18\` corresponde a Yappy.** 12068 12069## Tarjetas guardadas [#tarjetas-guardadas] 12070 12071- Para que la respuesta traiga \`cards\` es **obligatorio enviar \`billToEmail\`**. 12072- Una vez obtenidas las tarjetas, **el correo ya no se puede cambiar** con 12073 [\`updateOptions()\`](/developers/sdk/reference/update-options). 12074`,Pr=`--- 12075title: Tilopay.startPayment() 12076kind: sdk-method 12077status: stable 12078last_verified: 2026-08-28 12079verified_by: equipo-integraciones 12080owner: equipo-integraciones 12081sources: 12082 - "Respuestas de TecnologÃa, 28-08-2026" 12083locales: [es, en] 12084related: [sdk/reference/init, sdk/campos-del-formulario, reintentos-seguros] 12085gaps: 12086 - "Forma de la respuesta de éxito de startPayment(): sin verificar." 12087description: Cierra la compra. El SDK maneja el flujo 3DS completo y renderiza la respuesta en la URL de redirect. 12088--- 12089 12090Cierra la compra iniciada con [\`Tilopay.Init()\`](/developers/sdk/reference/init). 12091 12092## Firma [#firma] 12093 12094\`\`\`js 12095await Tilopay.startPayment() 12096\`\`\` 12097 12098No recibe parámetros. 12099 12100## 3DS: lo maneja el SDK [#tres-ds] 12101 12102**El SDK maneja todo el flujo de 3D Secure.** Lo único que tenés que hacer es asegurarte de 12103tener el contenedor \`responseTilopay\` en la página: ahà el SDK inserta lo necesario para 3DS 12104y conduce el proceso. 12105 12106\`\`\`html 12107<div id="responseTilopay"></div> 12108\`\`\` 12109 12110Ver [campos del formulario](/developers/sdk/campos-del-formulario#campos). 12111 12112## Dónde llega el resultado [#resultado] 12113 12114Al finalizar, el SDK renderiza la respuesta en la URL indicada en el parámetro \`redirect\` de 12115\`Init()\`. **Esa es la respuesta final de la compra**: tratá la URL de \`redirect\` como el punto 12116donde tu aplicación decide el resultado. 12117 12118En caso de error, el método devuelve la descripción: 12119 12120\`\`\`json 12121{ 12122 "message": "descripción del error" 12123} 12124\`\`\` 12125`,Fr=`--- 12126title: Tilopay.updateOptions() 12127kind: sdk-method 12128status: stable 12129last_verified: 2026-08-28 12130verified_by: equipo-integraciones 12131owner: equipo-integraciones 12132sources: 12133 - "Respuestas de TecnologÃa, 28-08-2026" 12134locales: [es, en] 12135related: [sdk/reference/get-sinpe-movil, sdk/campos-del-formulario, sdk/reference/init] 12136description: Actualiza parcialmente los parámetros enviados a Init() cuando cambian antes de cerrar el pago. 12137--- 12138 12139Actualiza valores que ya se habÃan enviado en [\`Tilopay.Init()\`](/developers/sdk/reference/init) 12140y que cambiaron durante el checkout â tÃpicamente cuando el cliente edita sus datos, o cuando 12141selecciona SINPE Móvil o Yappy y hay que agregar información que antes no aplicaba. 12142 12143<Callout type="info"> 12144**Es un patch.** Se envÃan solo los campos que se quieren actualizar; no hay que reenviar todo. 12145</Callout> 12146 12147## Qué significa "obligatorio" acá [#obligatorio] 12148 12149En la lista de abajo, "obligatorio" significa que el campo **debe haberse enviado en \`Init()\` o 12150en \`updateOptions()\`**. Si no se envió en ninguno de los dos, el pago no puede avanzar. No 12151significa que haya que reenviarlo en cada llamada. 12152 12153## Firma [#firma] 12154 12155\`\`\`js
12156await Tilopay.updateOptions({ /* solo los campos que cambian */ }) 12157\`\`\` 12158 12159## Llamada [#llamada] 12160 12161\`\`\`js 12162const update = await Tilopay.updateOptions({ 12163 typeDni: 1, 12164 dni: "0707770777", 12165 billToFirstName: "Ana", 12166 billToLastName: "Rojas", 12167}); 12168\`\`\` 12169 12170## Parámetros [#parametros] 12171 12172<Param id="update-options-typedni" name="typeDni" type="integer"> 12173Tipo de identificación del cliente. Obligatorio para SINPE Móvil. Ver 12174[tipos de identificación](#tipos-de-identificacion). 12175</Param> 12176 12177<Param id="update-options-dni" name="dni" type="string"> 12178Número de identificación del cliente. Obligatorio para SINPE Móvil. **Acepta con guiones y sin 12179guiones.** 12180</Param> 12181 12182<Param id="update-options-billtofirstname" name="billToFirstName" type="string" required> 12183Nombre del cliente. 12184</Param> 12185 12186<Param id="update-options-billtolastname" name="billToLastName" type="string" required> 12187Apellidos del cliente. 12188</Param> 12189 12190<Param id="update-options-billtoaddress" name="billToAddress" type="string" required> 12191Dirección 1 del cliente. 12192</Param> 12193 12194<Param id="update-options-billtoaddress2" name="billToAddress2" type="string"> 12195Dirección 2 del cliente. Opcional. 12196</Param> 12197 12198<Param id="update-options-billtocity" name="billToCity" type="string"> 12199Ciudad del cliente. Recomendado. 12200</Param> 12201 12202<Param id="update-options-billtostate" name="billToState" type="string"> 12203Provincia o estado. Recomendado. 12204</Param> 12205 12206<Param id="update-options-billtozippostcode" name="billToZipPostCode" type="string"> 12207Código postal. Recomendado. 12208</Param> 12209 12210<Param id="update-options-billtocountry" name="billToCountry" type="string"> 12211PaÃs, ISO 3166-1 alpha-2. Recomendado. 12212</Param> 12213 12214<Param id="update-options-billtotelephone" name="billToTelephone" type="string"> 12215Teléfono del cliente. Recomendado. 12216</Param> 12217 12218<Param id="update-options-capture" name="capture" type="integer" required> 12219\`0\` autoriza; \`1\` autoriza y captura. 12220</Param> 12221 12222<Param id="update-options-redirect" name="redirect" type="string (URL)" required> 12223URL donde se espera la respuesta final de la compra. 12224</Param> 12225 12226<Param id="update-options-subscription" name="subscription" type="integer" required> 12227\`1\` si el cliente quiere guardar su tarjeta en Tilopay; \`0\` si no. 12228</Param> 12229 12230<Param id="update-options-phoneyappy" name="phoneYappy" type="string"> 12231Teléfono Yappy. Obligatorio cuando el cliente paga con Yappy. 12232</Param> 12233 12234<Callout type="warn"> 12235**\`billToEmail\` no se puede actualizar después de obtener las tarjetas guardadas.** Una vez que 12236\`Init()\` devolvió las tarjetas del cliente, el correo no se puede cambiar por este método. 12237</Callout> 12238 12239## Tipos de identificación [#tipos-de-identificacion] 12240 12241Aplica al parámetro \`typeDni\`, tanto acá como en \`Tilopay.Init()\`. En las máscaras, \`#\` es un 12242carácter **numérico** y \`&\` es **alfanumérico**. Las longitudes no cuentan los guiones. 12243 12244| Código | Tipo | Formato | Longitud | 12245|---|---|---|---| 12246| 1 | Cédula de identidad | \`0#-####-####\` | 10 | 12247| 2 | Cédula jurÃdica | \`3-###-######\` | 10 | 12248| 3 | Gobierno central | \`2-###-######\` | 10 | 12249| 4 | Institución autónoma | \`4-###-######\` | 10 | 12250| 5 | Extranjero no residente | \`9&&&&&&&&&&&&&&&&&&&\` | 20 | 12251| 6 | DIMEX | \`1###########\` | 12 | 12252| 7 | DIDI | \`5###########\` | 12 | 12253 12254## Respuesta [#respuesta] 12255 12256\`\`\`json 12257{ 12258 "message": "Success" 12259} 12260\`\`\` 12261 12262<Param id="update-options-message" name="message" type="string"> 12263\`Success\` cuando la actualización salió bien; la descripción del error en caso contrario. 12264</Param> 12265`,Ir=`---
12266title: SDK JavaScript 12267kind: guide 12268status: stable 12269last_verified: 2026-08-28 12270verified_by: equipo-integraciones 12271owner: equipo-integraciones 12272sources: 12273 - "Respuestas de TecnologÃa, 28-08-2026" 12274locales: [es, en] 12275related: [sdk/instalacion, sdk/campos-del-formulario, sdk/reference/init] 12276description: Camino de integración en el que el formulario de tarjeta vive en tu página y el SDK manda los datos directo a Tilopay. 12277--- 12278 12279## Qué es [#que-es] 12280 12281Los campos de tarjeta viven en tu página. El SDK V2 toma control de esos inputs y manda los 12282datos **del navegador directo a Tilopay**: no pasan por tu servidor. 12283 12284## Para quién es [#para-quien] 12285 12286Para equipos que quieren controlar el diseño del checkout sin que los datos de tarjeta toquen 12287su backend. Necesitás frontend con JavaScript y un backend mÃnimo para obtener el token del 12288SDK. 12289 12290## Cómo se arma, en orden [#orden] 12291 122921. **Credenciales.** No hay credenciales de sandbox compartidas: obtené las tuyas en 12293 [registro de developer](/developers/registro). 122942. **Token del SDK.** Tu backend lo pide con \`POST /api/v1/loginSdk\`. Ver 12295 [autenticación](/developers/api/autenticacion). 122963. **Cargá el script.** Ver [instalación](/developers/sdk/instalacion). 122974. **Poné los inputs con los ids del contrato** y el contenedor \`responseTilopay\`. Ver 12298 [campos del formulario](/developers/sdk/campos-del-formulario). 122995. **Iniciá la compra** con [\`Tilopay.Init()\`](/developers/sdk/reference/init) y mostrale al 12300 cliente los métodos de pago que devuelve. 123016. **Cerrá la compra** con 12302 [\`Tilopay.startPayment()\`](/developers/sdk/reference/startpayment). El SDK maneja 3DS y 12303 renderiza el resultado en tu URL de \`redirect\`. 12304 12305## Antes de asumir que estás en pruebas [#entornos] 12306 12307Pruebas y producción comparten host: el modo se verifica con el campo \`test\` de \`Init()\`. Ver 12308[entornos](/developers/entornos). 12309 12310## Cumplimiento [#cumplimiento] 12311 12312Los datos de tarjeta no pasan por tu servidor, pero tu página los captura: consultá con tu 12313equipo de cumplimiento el alcance que te corresponde. 12314`,Lr=`---
12315title: Servidor a servidor 12316kind: guide 12317status: stable 12318last_verified: 2026-08-28 12319verified_by: equipo-integraciones 12320owner: equipo-integraciones 12321sources: 12322 - "Respuestas de TecnologÃa, 28-08-2026" 12323 - "Documentación Server to server (colección Postman TILOPAY API), 13-09-2026" 12324locales: [es, en] 12325related: [hosted-payment-page, sdk, sin-codigo] 12326description: "Servicio exclusivo para comercios con certificación PCI. La URL se provisiona por comercio: no es autoservicio." 12327--- 12328 12329<Callout type="warn"> 12330**Acceso restringido. No es un camino de autoservicio.** No podés empezar esta integración hoy 12331por tu cuenta: requiere certificación PCI del comercio y una URL provisionada individualmente 12332por Tilopay. 12333</Callout> 12334 12335## Qué es [#que-es] 12336 12337El camino en el que los datos de tarjeta pasan por el servidor del comercio y este los envÃa al 12338API de Tilopay. 12339 12340## Para quién es [#para-quien] 12341 12342- Es un **servicio exclusivo para comercios que cuentan con certificación PCI**. 12343- La **URL es personalizada por comercio**, con una llave propia. **No es una URL pública.** 12344 12345Por eso los ejemplos de esta página no traen una URL real: el \`Host\` y la llave del proxy se 12346entregan a cada comercio aprobado. 12347 12348## Requisitos [#requisitos] 12349 123501. Certificación PCI vigente del comercio. 123512. Cuenta Tilopay activa. 123523. Solicitud aprobada, con la URL y la llave provisionadas por Tilopay para tu comercio. 12353 12354## Cómo se solicita [#solicitud] 12355 12356Escribà a \`[email protected]\` con el nombre del comercio y el estado de tu certificación PCI. La 12357URL y la llave se entregan directamente al comercio aprobado. 12358 12359## Referencia de la petición [#referencia] 12360 12361<Callout type="warn"> 12362El \`Host\` y el header \`tx-proxy-key\` los entrega Tilopay a cada comercio aprobado. No hay una URL 12363pública: los ejemplos usan marcadores. 12364</Callout> 12365 12366\`\`\`http 12367POST / HTTP/1.1 12368Host: url provided by tilopay 12369\`\`\` 12370 12371### Encabezados [#encabezados] 12372 12373<Param id="s2s-header-authorization" name="Authorization" type="string"> 12374\`bearer {token del API}\` â ver [autenticación](/developers/api/autenticacion). 12375</Param> 12376 12377<Param id="s2s-header-tx-proxy-key" name="tx-proxy-key" type="string"> 12378Llave del proxy de transacciones, provista por Tilopay. 12379</Param> 12380 12381### Parámetros [#parametros] 12382 12383<Param id="s2s-parametro-key" name="key" type="string"> 12384Llave relacionada con el comercio (obligatorio). 12385</Param> 12386 12387<Param id="s2s-parametro-card" name="card" type="string"> 12388Número de tarjeta (obligatorio). 12389</Param> 12390 12391<Param id="s2s-parametro-cvv" name="cvv" type="string"> 12392Código de seguridad (obligatorio). 12393</Param> 12394 12395<Param id="s2s-parametro-expire" name="expire" type="string"> 12396Fecha de expiración en formato mesAño, por ejemplo \`1023\` (obligatorio). 12397</Param> 12398 12399<Param id="s2s-parametro-name" name="name" type="string"> 12400Nombre del tarjetahabiente (requerido). 12401</Param> 12402 12403<Param id="s2s-parametro-lastname" name="lastname" type="string"> 12404Apellidos del tarjetahabiente (requerido). 12405</Param> 12406 12407<Param id="s2s-parametro-phone" name="phone" type="string"> 12408Teléfono del cliente (requerido). 12409</Param> 12410 12411<Param id="s2s-parametro-email" name="email" type="string"> 12412Correo del cliente (obligatorio). 12413</Param> 12414 12415<Param id="s2s-parametro-address" name="address" type="string"> 12416Dirección del cliente (requerido). 12417</Param> 12418 12419<Param id="s2s-parametro-city" name="city" type="string"> 12420Ciudad del cliente (requerido). 12421</Param> 12422 12423<Param id="s2s-parametro-state" name="state" type="string"> 12424Estado en formato ISO, por ejemplo \`CR-SJ\` (San José, Costa Rica) o \`US-CA\` (California, EEUU) (requerido). 12425</Param> 12426 12427<Param id="s2s-parametro-zipcode" name="zipcode" type="string"> 12428Código postal (requerido). 12429</Param> 12430 12431<Param id="s2s-parametro-country" name="country" type="string"> 12432PaÃs en código ISO Alpha-2, por ejemplo \`CR\`, \`US\`, \`GT\` (requerido). 12433</Param> 12434 12435<Param id="s2s-parametro-amount" name="amount" type="string"> 12436Monto de la compra (obligatorio). 12437</Param> 12438 12439<Param id="s2s-parametro-currency" name="currency" type="string"> 12440Moneda en formato ISO, por ejemplo \`USD\`, \`CRC\`, \`GTQ\` (obligatorio). 12441</Param> 12442 12443<Param id="s2s-parametro-ordernumber" name="orderNumber" type="string"> 12444Número de orden (obligatorio). 12445</Param> 12446 12447<Param id="s2s-parametro-capture" name="capture" type="number"> 12448\`1\` captura y autoriza, \`0\` solo autoriza (obligatorio). 12449</Param> 12450 12451<Param id="s2s-parametro-redirect" name="redirect" type="string"> 12452URL de respuesta (obligatorio). 12453</Param> 12454 12455Los campos \`shipTo*\` (\`shipToFirstName\`, \`shipToLastName\`, \`shipToAddress\`, \`shipToAddress2\`,
12456\`shipToCity\`, \`shipToState\`, \`shipToZipPostCode\`, \`shipToCountry\`, \`shipToTelephone\`) aparecen en los 12457ejemplos de la colección como datos de envÃo. 12458 12459### Petición [#peticion] 12460 12461\`\`\`json 12462{ 12463 "key": "key", 12464 "card": "card PAN", 12465 "cvv": "CVV Number", 12466 "expire": "1023", 12467 "name": "firstname", 12468 "lastname": "lastname", 12469 "phone": "88888888", 12470 "email": "[email protected]", 12471 "address": "user address", 12472 "city": "city", 12473 "state": "state", 12474 "zipcode": "zipcode", 12475 "country": "country", 12476 "shipToFirstName": "Nombre", 12477 "shipToLastName": "Apellido", 12478 "shipToAddress": "San Jose", 12479 "shipToAddress2": "Escazu", 12480 "shipToCity": "San Jose", 12481 "shipToState": "SJ", 12482 "shipToZipPostCode": "10101", 12483 "shipToCountry": "CR", 12484 "shipToTelephone": "88778877", 12485 "amount": "amount", 12486 "currency": "currency code", 12487 "orderNumber": "Order Number", 12488 "capture": 1, 12489 "redirect": "url to redirect" 12490} 12491\`\`\` 12492 12493La colección incluye dos ejemplos, **con 3DS** y **sin 3DS**, con el mismo cuerpo de petición. 12494 12495### Respuesta [#respuesta] 12496 12497\`\`\`json 12498{ 12499 "code": "1", 12500 "description": "Transaccion aprobada", 12501 "auth": "123456", 12502 "orderNumber": "12345", 12503 "urlRedirect": "", 12504 "error": "" 12505} 12506\`\`\` 12507 12508Cuando la transacción requiere autenticación 3DS, la respuesta trae la URL en \`urlRedirect\`; ahà es 12509donde se envÃa al tarjetahabiente. Para interpretar \`code\`, \`description\` y \`error\`, ver 12510[convenciones de las respuestas](/developers/api/convenciones) y 12511[cómo leer una respuesta de error](/developers/api/procesos-operativos/errors). 12512 12513## Alternativas sin certificación PCI [#alternativas] 12514 12515Si no tenés certificación PCI, estos caminos evitan por completo ese alcance: 12516 12517- [Hosted payment page](/developers/hosted-payment-page) â Tilopay hospeda el formulario. 12518- [SDK JavaScript](/developers/sdk) â el formulario vive en tu página, pero los datos viajan del 12519 navegador directo a Tilopay. 12520- [Sin código](/developers/sin-codigo) â plugin o plataforma ya integrada. 12521`,Rr=`---
12522title: Soporte y escalamiento 12523kind: concept 12524status: draft 12525api_version: v1 12526last_verified: 2026-08-28 12527verified_by: equipo-integraciones 12528owner: equipo-integraciones 12529sources: [] 12530related: [] 12531draft: true 12532description: Página en construcción. El contenido normativo llega en la siguiente fase. 12533--- 12534 12535Esta página todavÃa no tiene contenido normativo. No la tomés como contrato: nada de 12536lo que falta acá está definido en otro lugar del portal. 12537 12538Mientras tanto: 12539 12540- Para integrar ya, seguà el [SDK JavaScript](/developers/sdk). 12541- Para obtener credenciales de sandbox, registrate en [/developers/registro](/developers/registro). 12542- Si necesitás este contenido con urgencia, escribinos desde [soporte](/developers/support). 12543`,zr='---\ntitle: Tarjetas de prueba\nkind: guide\nstatus: stable\napi_version: v1\nlast_verified: 2026-09-03\nverified_by: equipo-integraciones\nowner: equipo-integraciones\nsources:\n - "Respuestas de TecnologÃa, 03-09-2026 (tarjetas de prueba del ambiente de pruebas)"\nlocales: [es, en]\nrelated: [entornos, sdk/reference/startpayment, api/procesos-operativos/errors]\ndescription: Las 27 tarjetas del ambiente de pruebas de Tilopay, con el resultado esperado y la fricción 3DS de cada una.\n---\n\nEstas tarjetas sólo funcionan cuando la cuenta está en **modo de pruebas**. El modo se cambia\ndesde la cuenta y se verifica con el campo `test` que devuelve `Init()`: ver\n[entornos y pruebas](/developers/entornos).\n\n## Cómo se usan [#uso]\n\n| Dato | Qué se ingresa |\n| --- | --- |\n| Fecha de vencimiento | Cualquiera en el futuro |\n| CVV | Cualquiera |\n| Código de la pantalla de challenge 3DS | `3ds2` |\n\n<Callout type="warn">\nEn la pantalla de challenge 3DS el código a ingresar es **`3ds2`**. No hay otro código ni se envÃa\npor SMS en pruebas.\n</Callout>\n\n## Tarjetas [#tarjetas]\n\nLa marca se deriva del prefijo: `4` Visa, `51`â`55` Mastercard, `34` American Express.\n\n| Número | Marca | Resultado esperado | Fricción |\n| --- | --- | --- | --- |\n| `4111111111111111` | Visa | Aprobada | Sin fricción |\n| `4012000000020089` | Visa | Aprobada | Sin fricción |\n| `4012000000020006` | Visa | Aprobada | Sin fricción |\n| `4012010000020088` | Visa | Aprobada | Sin fricción |\n| `5100270000000072` | Mastercard | Aprobada | Sin fricción |\n| `5100270000000031` | Mastercard | Aprobada | Sin fricción |\n| `341111000000009` | American Express | Aprobada | Sin fricción |\n| `341111000000011` | American Express | Aprobada | Sin fricción |\n| `341112000000001` | American Express | Aprobada | Sin fricción |\n| `341111000000037` | American Express | Aprobada | Sin fricción |\n| `341112000008012` | American Express | Aprobada | Sin fricción |\n| `4012000000020071` | Visa | Aprobada | Challenge 3DS |\n| `4012010000020070` | Visa | Aprobada | Challenge 3DS |\n| `4012010000020005` | Visa | Aprobada | Challenge 3DS |\n| `5100270000000023` | Mastercard | Aprobada | Challenge 3DS |\n| `5100271000000120` | Mastercard | Aprobada | Challenge 3DS |\n| `4112613451591116` | Visa | Fondos insuficientes | Challenge 3DS |\n| `4523080346468525` | Visa | CVV incorrecto | Sin fricción |\n| `4549179990476733` | Visa | Tarjeta restringida | Sin fricción |\n| `4012000000020121` | Visa | Rechazada | Sin fricción |\n| `4111111111119999` | Visa | Rechazada | Sin fricción |\n| `4111111111110000` | Visa | Rechazada | Sin fricción |\n| `5100270000000056` | Mastercard | Rechazada | Sin fricción |\n| `5111111111113333` | Mastercard | Rechazada | Sin fricción |\n| `4666666666662222` | Visa | Rechazada | Sin fricción |\n| `5555666666662222` | Mastercard | Rechazada | Sin fricción |\n| `5100270000000098` | Mastercard | Rechazada | Challenge 3DS |\n\nLas tarjetas con fricción **Challenge 3DS** abren la pantalla de autenticación; las de **Sin\nfricción** resuelven sin pasar por ella. El resultado esperado es el mismo cada vez: la tarjeta\ndetermina la respuesta, no el monto.\n',Br=`--- 12544title: Escenarios de prueba 12545kind: guide 12546status: draft 12547api_version: v1 12548last_verified: 2026-08-28 12549verified_by: equipo-integraciones 12550owner: equipo-integraciones 12551sources: [] 12552related: [] 12553draft: true 12554description: Página en construcción. El contenido normativo llega en la siguiente fase. 12555--- 12556 12557Esta página todavÃa no tiene contenido normativo. No la tomés como contrato: nada de 12558lo que falta acá está definido en otro lugar del portal. 12559 12560Mientras tanto: 12561 12562- Para integrar ya, seguà el [SDK JavaScript](/developers/sdk). 12563- Para obtener credenciales de sandbox, registrate en [/developers/registro](/developers/registro). 12564- Si necesitás este contenido con urgencia, escribinos desde [soporte](/developers/support). 12565`,Vr={},Hr=i.createContext(Vr);function m(e){let t=i.useContext(Hr);return i.useMemo(function(){return typeof e==`function`?e(t):{...t,...e}},[t,e])}function Ur(e){let t;return t=e.disableParentContext?typeof e.components==`function`?e.components(Vr):e.components||Vr:m(e.components),i.createElement(Hr.Provider,{value:t},e.children)}var Wr=t({default:()=>qr,frontmatter:()=>Gr}),h=n(),Gr={title:`WhatsApp assistant`,kind:`guide`,status:`stable`,last_verified:`2026-09-23`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Tilopay Insight Engine, WhatsApp linking flow and web fallback screen (code, commit 55ba257a), verified 2026-09-23`],locales:[`es`,`en`],related:[`agentes`,`agentes/mcp`,`agentes/mcp/adquirencia`,`agentes/mcp/api-bancario`],description:`What the Tilopay WhatsApp assistant is, how it is enabled, how to use it and what it can do: sales, transactions, payment links, catalog, micro-store and orders, receipts, subscriptions, saved cards, reminders and alerts.`};function Kr(e){let t={a:`a`,h2:`h2`,li:`li`,ol:`ol`,p:`p`,strong:`strong`,table:`table`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,...m(),...e.components};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`que-es`,children:`What it is`}),` 12566`,(0,h.jsx)(t.p,{children:`The Tilopay assistant on WhatsApp is the same Tilopay MCP server wired to a WhatsApp chat. Instead 12567of configuring an MCP client, the merchant writes to it in plain language from the WhatsApp they 12568already use, and the assistant runs the tools against their Tilopay account.`}),` 12569`,(0,h.jsxs)(t.p,{children:[`The capabilities are the ones the MCP exposes: whatever an agent can do through the 12570`,(0,h.jsx)(t.a,{href:`/developers/agentes/mcp/adquirencia`,children:`acquiring tools`}),` and, on request, the 12571`,(0,h.jsx)(t.a,{href:`/developers/agentes/mcp/api-bancario`,children:`banking tools`}),`, the assistant can do from the chat.`]}),` 12572`,(0,h.jsx)(t.p,{children:`It is not a canned-response chatbot: it reads and operates on real account data, and answers in 12573plain text meant to be read on a phone.`}),` 12574`,(0,h.jsx)(t.h2,{id:`activacion`,children:`How it is enabled`}),` 12575`,(0,h.jsx)(t.p,{children:`Linking takes place from the WhatsApp chat itself and takes about a minute. The merchant must be 12576affiliated with Tilopay, and the person needs their Tilopay email and password.`}),` 12577`,(0,h.jsxs)(t.ol,{children:[` 12578`,(0,h.jsxs)(t.li,{children:[`Send any message to Tilopay's official number. If the number is not linked yet, the chat shows a 12579welcome message with a `,(0,h.jsx)(t.strong,{children:`Vincular mi cuenta`}),` button. You can also write âvincular mi cuentaâ to 12580request the button again.`]}),` 12581`,(0,h.jsxs)(t.li,{children:[`Tap `,(0,h.jsx)(t.strong,{children:`Vincular mi cuenta`}),`. Enter credentials and codes in the secure form that opens, never as 12582messages in the chat.`]}),` 12583`,(0,h.jsx)(t.li,{children:`Enter the same email and password you use to sign in to the Tilopay dashboard.`}),` 12584`,(0,h.jsx)(t.li,{children:`If your account has two-step verification, enter the code Tilopay sends to the method shown on 12585the screen.`}),` 12586`,(0,h.jsx)(t.li,{children:`Enter the 6-digit code sent to your Tilopay email. This final code is always required to confirm 12587the link.`}),` 12588`,(0,h.jsx)(t.li,{children:`If your user has more than one merchant, choose the one you want to use. When finished, close the 12589form; you can now ask the assistant to query or operate on that account.`}),` 12590`]}),` 12591`,(0,h.jsx)(t.p,{children:`For security, the WhatsApp number must match one of these account details: a phone configured for 12592two-step verification, the phone number of one of the available merchants, or a number previously 12593authorized by the merchant administrator. If it does not match, the account is not linked. Update 12594the phone in the Tilopay dashboard or ask the administrator to authorize that number in the 12595assistant dashboard, then write âvincular mi cuentaâ again.`}),` 12596`,(0,h.jsx)(t.p,{children:`An unlinked number cannot run queries or operations. The linking welcome is sent at most once per 12597day; even if it does not appear again that day, you can request the button by writing âvincular mi 12598cuenta.â`}),` 12599`,(0,h.jsx)(t.h2,{id:`revincular`,children:`Link the account again`}),` 12600`,(0,h.jsx)(t.p,{children:`If the session stops working or the password changes, write âvincular mi cuentaâ and complete the same 12601process. Linking the same number again updates the existing connection: it does not create another 12602profile or disconnect MCP clients that are already linked. Each channel keeps its own session, so a 12603problem in WhatsApp does not automatically close sessions in Claude, ChatGPT, Cursor or other MCP 12604clients.`}),` 12605`,(0,h.jsx)(t.h2,{id:`uso`,children:`How to use it`}),` 12606`,(0,h.jsx)(t.p,{children:`There are no commands or menus. You write as you would to a teammate:`}),` 12607`,(0,h.jsxs)(t.ul,{children:[` 12608`,(0,h.jsx)(t.li,{children:`"how are sales going over the last 30 days?"`}),`
12609`,(0,h.jsx)(t.li,{children:`"charge Ana 25 thousand colones for the appointment and send it to me on WhatsApp"`}),` 12610`,(0,h.jsx)(t.li,{children:`"look up order 10432"`}),` 12611`,(0,h.jsx)(t.li,{children:`"every day at 8pm send me today's sales summary"`}),` 12612`]}),` 12613`,(0,h.jsx)(t.p,{children:`The assistant remembers the last messages of the thread, so you can keep going without repeating 12614data ("send it by email too", "delete that link").`}),` 12615`,(0,h.jsx)(t.h2,{id:`capacidades`,children:`What it can do`}),` 12616`,(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Area`}),(0,h.jsx)(t.th,{children:`What it solves from the chat`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Sales`}),(0,h.jsx)(t.td,{children:`Summaries and trends by day, week or month, plus analysis with average ticket, approval rate, top customers and decline reasons.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Transactions`}),(0,h.jsx)(t.td,{children:`List and look up transactions, and capture, refund or reverse a charge.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Payment links`}),(0,h.jsx)(t.td,{children:`Create a link, share it on WhatsApp or by email, see its detail and delete it.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Catalog`}),(0,h.jsx)(t.td,{children:`List products or services, see their detail, create, change or delete an item.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Micro-store`}),(0,h.jsx)(t.td,{children:`Build a store with a cart from the catalog products, list the active stores and deactivate one.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Orders`}),(0,h.jsx)(t.td,{children:`Turn on order management with the store name and logo, see the summary, list orders by status, see the paid but undelivered ones and mark them as delivered.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Receipts`}),(0,h.jsx)(t.td,{children:`List the receipts of approved charges and resend a customer the receipt for their payment.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Contacts`}),(0,h.jsx)(t.td,{children:`Save, list and delete contacts so you can charge them by name.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Recurring charges`}),(0,h.jsx)(t.td,{children:`Create, edit and delete plans, build them step by step from the chat, generate the subscription link, review subscribers and their payments, edit, pause, reactivate or delete a subscriber, see failed charges, generate the link to settle a declined charge and manage coupons.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Saved cards`}),(0,h.jsx)(t.td,{children:`Tokenize a customer's card, list or delete their cards, check payment methods and installments, charge a saved card and review groups, affiliates and bulk charges.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Reminders`}),(0,h.jsx)(t.td,{children:`Schedule one-off, daily, weekly or monthly reminders that can also run an assistant query when they fire; list them and cancel them. Up to 20 active.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Alerts`}),(0,h.jsx)(t.td,{children:`Turn the merchant's alerts on and off and review them: approved charges, declined charges, orders and the daily summary at the chosen time.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Profile and recipes`}),(0,h.jsx)(t.td,{children:`Save the business profile and get automation recommendations based on what it sells.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Support`}),(0,h.jsx)(t.td,{children:`Find the official guide for a topic, run the connection diagnostics and review an integration error.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Banking (on request)`}),(0,h.jsx)(t.td,{children:`Accounts, balances, payments, statements and movement analysis; and, with email confirmation, validate a destination account, send a transfer and check its status. Only with banking API credentials.`})]})]})]}),` 12617`,(0,h.jsxs)(t.p,{children:[`There are 86 tools across 13 groups today. Parameter detail and the access level of each one live in 12618the `,(0,h.jsx)(t.a,{href:`/developers/agentes/mcp`,children:`MCP server`}),` pages.`]}),` 12619`,(0,h.jsxs)(t.p,{children:[`The assistant also accepts `,(0,h.jsx)(t.strong,{children:`images`}),` in the chat: a product photo for the catalog, or the logo shown 12620in the micro-store and on receipts.`]}),` 12621`,(0,h.jsx)(t.h2,{id:`autorizacion`,children:`Authorizing sensitive operations`}),` 12622`,(0,h.jsx)(t.p,{children:`Operations that move money or alter charges â refunds, captures, reversals, saved-card charges, 12623subscriber changes, deleting links, products or plans, and sending a bank transfer â ask for a 126246-digit code that Tilopay sends to the user's
12625registered email. Without that code the assistant does not run them.`}),` 12626`,(0,h.jsx)(t.p,{children:`The merchant's keys never travel through the chat, and the assistant never reveals credentials, 12627tokens or internal identifiers. Every query and operation is audited with user, tool, date and 12628result, with per-account usage limits.`}),` 12629`,(0,h.jsx)(t.h2,{id:`avisos`,children:`Messages the assistant sends on its own`}),` 12630`,(0,h.jsxs)(t.ul,{children:[` 12631`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`Payment received:`}),` when a customer pays a link created from the assistant, a WhatsApp message 12632arrives with amount, customer, description, reference and order number.`]}),` 12633`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`Scheduled reports:`}),` the summary or query you scheduled, with the data pulled at send time.`]}),` 12634`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`Reminders:`}),` the reminder you scheduled, with the query result attached if you asked for an 12635action. Reminders about charges or links always go to the merchant's WhatsApp, never to the 12636customer.`]}),` 12637`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`Pending orders:`}),` the daily reminder of paid orders still to be delivered, when order management 12638is on.`]}),` 12639`]}),` 12640`,(0,h.jsx)(t.h2,{id:`mcp`,children:`If you prefer your own agent`}),` 12641`,(0,h.jsxs)(t.p,{children:[`The same tools are available over MCP for Claude, ChatGPT, Cursor or any other client: start with 12642`,(0,h.jsx)(t.a,{href:`/developers/agentes/mcp/conectar`,children:`Connect your agent`}),` and 12643`,(0,h.jsx)(t.a,{href:`/developers/agentes/mcp/permisos`,children:`Permissions`}),`.`]})]})}function qr(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Kr,{...e})}):Kr(e)}var Jr=t({default:()=>Zr,frontmatter:()=>Yr}),Yr={title:`Machine-readable documentation`,kind:`guide`,status:`stable`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (manifiesto y código), verificado 29-08-2026`,`Respuestas de TecnologÃa, 29-08-2026`],locales:[`es`,`en`],related:[`agentes`,`agentes/mcp`,`api/autenticacion`,`sdk`],description:`The artifacts the portal publishes for agents: llms.txt, raw Markdown on any URL, openapi.json and mcp.json.`};function Xr(e){let t={a:`a`,code:`code`,h2:`h2`,li:`li`,p:`p`,ul:`ul`,...m(),...e.components};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`llms`,children:`Indexes for models`}),` 12644`,(0,h.jsxs)(t.ul,{children:[` 12645`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.a,{href:`https://www.tilopay.com/llms.txt`,children:`www.tilopay.com/llms.txt`}),` â Spanish site index, with the URL and a description of every 12646page.`]}),` 12647`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.a,{href:`https://www.tilopay.com/llms-full.txt`,children:`www.tilopay.com/llms-full.txt`}),` â the same index with the full content.`]}),` 12648`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.a,{href:`https://www.tilopay.com/en/llms.txt`,children:`www.tilopay.com/en/llms.txt`}),` and `,(0,h.jsx)(t.a,{href:`https://www.tilopay.com/en/llms-full.txt`,children:`www.tilopay.com/en/llms-full.txt`}),` â the 12649English versions, with `,(0,h.jsx)(t.code,{children:`/en`}),` URLs.`]}),` 12650`]}),` 12651`,(0,h.jsx)(t.h2,{id:`markdown`,children:`Raw Markdown`}),` 12652`,(0,h.jsxs)(t.p,{children:[`Any URL on the site returns its Markdown by adding `,(0,h.jsx)(t.code,{children:`.md`}),`: for example 12653`,(0,h.jsx)(t.a,{href:`https://www.tilopay.com/en/developers/sdk/instalacion.md`,children:`www.tilopay.com/en/developers/sdk/instalacion.md`}),` or 12654`,(0,h.jsx)(t.a,{href:`https://www.tilopay.com/en/tarifas.md`,children:`www.tilopay.com/en/tarifas.md`}),`. It is served as `,(0,h.jsx)(t.code,{children:`text/markdown`}),`, with a metadata header 12655(page kind, status, version and last verification date). A URL that does not exist returns 404, not 12656HTML.`]}),` 12657`,(0,h.jsx)(t.h2,{id:`openapi`,children:`API spec`}),` 12658`,(0,h.jsxs)(t.ul,{children:[` 12659`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.a,{href:`/developers/openapi.json`,children:(0,h.jsx)(t.code,{children:`openapi.json`})}),` â OpenAPI 3.1 spec of the Tilopay API: endpoints, 12660parameters, responses and examples. It is the source of truth for the API.`]}),` 12661`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.a,{href:`/developers/openapi.yaml`,children:(0,h.jsx)(t.code,{children:`openapi.yaml`})}),` â the same content in YAML.`]}),` 12662`]}),` 12663`,(0,h.jsxs)(t.p,{children:[`Both routes answer with `,(0,h.jsx)(t.code,{children:`Access-Control-Allow-Origin: *`}),`, so they can be read from the browser.`]}),` 12664`,(0,h.jsx)(t.h2,{id:`mcp-json`,children:`MCP catalog`}),` 12665`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.a,{href:`/developers/mcp.json`,children:(0,h.jsx)(t.code,{children:`mcp.json`})}),` describes the MCP server: its URL, the access model and the full 12666tool catalog with parameters, output and access level. When a tool wraps an API operation, the 12667entry includes that endpoint.`]}
12667),` 12668`,(0,h.jsxs)(t.p,{children:[`The root-level `,(0,h.jsx)(t.code,{children:`verified_at`}),` field carries the date (`,(0,h.jsx)(t.code,{children:`YYYY-MM-DD`}),`) on which the catalog was compared 12669against the server. The server version does not change when tools are added, so that is the signal 12670to check whether a cached copy is stale.`]})]})}function Zr(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Xr,{...e})}):Xr(e)}var Qr=t({default:()=>ti,frontmatter:()=>$r}),$r={title:`Acquiring tools`,kind:`mcp-index`,status:`stable`,last_verified:`2026-09-03`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Tilopay MCP server (manifest and code), verified 2026-09-03`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/permisos`,`agentes/mcp/api-bancario`],description:`Summary of the MCP tool groups over the acquiring API: sales, payment links, catalog, contacts, business profile, micro-store and orders, alerts, receipts, reminders, recurring charges, stored cards and support.`};function ei(e){let t={a:`a`,h2:`h2`,p:`p`,strong:`strong`,...m(),...e.components},{McpGroupIndex:n}=t;return n||ni(`McpGroupIndex`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`que-cubre`,children:`What it covers`}),` 12671`,(0,h.jsxs)(t.p,{children:[`These are the tools that work over Tilopay's `,(0,h.jsx)(t.strong,{children:`acquiring API`}),`: card payments, payment links and 12672the data around them. They come enabled with standard MCP access, with no extra request, and they 12673always operate on the merchant tied to the MCP user.`]}),` 12674`,(0,h.jsxs)(t.p,{children:[`The `,(0,h.jsx)(t.a,{href:`/developers/agentes/mcp/api-bancario`,children:`banking API`}),` tools are a separate case: they are 12675enabled on request and require banking API credentials.`]}),` 12676`,(0,h.jsx)(t.h2,{id:`grupos`,children:`Groups`}),` 12677`,(0,h.jsx)(n,{slugs:`ventas, enlaces-de-pago, catalogo, contactos, perfil, microtienda, avisos, comprobantes, recordatorios, recurrentes, tarjetas-guardadas, soporte`}),` 12678`,(0,h.jsxs)(t.p,{children:[`The access level of each tool and the detail of its parameters live on its group page; the 12679permissions summary is in `,(0,h.jsx)(t.a,{href:`/developers/agentes/mcp/permisos`,children:`Permissions`}),`.`]})]})}function ti(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(ei,{...e})}):ei(e)}function ni(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var ri=t({default:()=>oi,frontmatter:()=>ii}
12679),ii={title:`Banking API payments analyst`,kind:`mcp-tool`,access:`read`,status:`stable`,last_verified:`2026-09-03`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo baas), verificado 03-09-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/api-bancario`,`agentes/mcp/permisos`],description:`Analyses, read only, the payments of an account in a date range and returns a natural-language report: success, failures, reversals, net amounts and recommendations. It runs a language model over the computed figures.`};function ai(e){let{McpTool:t}={...m(),...e.components};return t||si(`McpTool`,!0),(0,h.jsx)(t,{name:`baas_analyze_payments`})}function oi(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(ai,{...e})}):ai(e)}function si(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var ci=t({default:()=>di,frontmatter:()=>li}),li={title:`Payment detail`,kind:`mcp-tool`,access:`read`,status:`stable`,last_verified:`2026-09-03`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo baas), verificado 03-09-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/api-bancario`,`agentes/mcp/permisos`],description:`Gets the detail of a banking API payment from its internal UUID, read only.`};function ui(e){let{McpTool:t}={...m(),...e.components};return t||fi(`McpTool`,!0),(0,h.jsx)(t,{name:`baas_get_payment`})}function di(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(ui,{...e})}):ui(e)}function fi(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var pi=t({default:()=>gi,frontmatter:()=>mi}),mi={title:`Banking API transfer status`,kind:`mcp-tool`,access:`read`,status:`stable`,last_verified:`2026-09-14`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Tilopay MCP server (Tilopay Insight Engine code, baas group), verified 2026-09-14`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/api-bancario`,`agentes/mcp/api-bancario/send-transfer`],description:`Checks the current status of a transfer by its payment_id: status, result, amount, currency, destination and date.`};function hi(e){let{McpTool:t}={...m(),...e.components};return t||_i(`McpTool`,!0),(0,h.jsx)(t,{name:`baas_get_transfer_status`})}function gi(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(hi,{...e})}):hi(e)}function _i(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var vi=t({default:()=>xi,frontmatter:()=>yi}),yi={title:`Banking API account balances`,kind:`mcp-tool`,access:`read`,status:`stable`,last_verified:`2026-09-03`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo baas), verificado 03-09-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/api-bancario`,`agentes/mcp/permisos`],description:`Lists the real-time balances of the accessible accounts: account, amounts and cut-off date.`};function bi(e){let{McpTool:t}={...m(),...e.components};return t||Si(`McpTool`,!0),(0,h.jsx)(t,{name:`baas_list_balances`})}function xi(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(bi,{...e})}):bi(e)}function Si(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Ci=t({default:()=>Ei,frontmatter:()=>wi}),wi={title:`List banking API payments`,kind:`mcp-tool`,access:`read`,status:`stable`,last_verified:`2026-09-03`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo baas), verificado 03-09-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/api-bancario`,`agentes/mcp/permisos`],description:`Reads the payments of an owned account identified by IBAN, with date, status, currency, method and direction filters. Cursor pagination.`};function Ti(e){let{McpTool:t}={...m(),...e.components};return t||Di(`McpTool`,!0),(0,h.jsx)(t,{name:`baas_list_payments`})}function Ei(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Ti,{...e})}):Ti(e)}function Di(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Oi=t({default:()=>ji,frontmatter:()=>ki}),ki={title:`Other BaaS operations`,kind:`mcp-tool`,access:`read`,status:`stable`,last_verified:`2026-09-03`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Tilopay MCP server (code of the Tilopay Insight Engine project, baas group), verified 2026-09-03`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/api-bancario`,`agentes/mcp/permisos`],description:`Assignments, credential diagnostics, account listing, balance of one account and status of a statement request, on a single page.`};function Ai(e){let{McpTools:t}={...m(),...e.components};return t||Mi(`McpTools`,!0),(0,h.jsx)(t,{names:`baas_list_assignments, baas_diagnostics, baas_list_accounts, baas_get_balance, baas_get_statement_status`})}function ji(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Ai,{...e})}):Ai(e)}function Mi(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Ni=t({default:()=>Ii,frontmatter:()=>Pi}),Pi={title:`Request an account statement`,kind:`mcp-tool`,access:`write`,status:`stable`,last_verified:`2026-09-03`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo baas), verificado 03-09-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/api-bancario`,`agentes/mcp/permisos`],description:`Requests the generation of an account statement for a banking API account, with a 60-day maximum range. It moves no money: it generates a read-only document and returns request_id with status PENDING.`};function Fi(e){let{McpTool:t}={...m(),...e.components};return t||Li(`McpTool`,!0),(0,h.jsx)(t,{name:`baas_request_statement`})}function Ii(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Fi,{...e})}):Fi(e)}function Li(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Ri=t({default:()=>Vi,frontmatter:()=>zi}),zi={title:`Find a payment`,kind:`mcp-tool`,access:`read`,status:`stable`,last_verified:`2026-09-03`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo baas), verificado 03-09-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/api-bancario`,`agentes/mcp/permisos`],description:`Finds a payment inside an account by exactly one of: paymentId (UUID), publicId (number) or clientReference. Sending more than one returns an error.`};function Bi(e){let{McpTool:t}={...m(),...e.components};return t||Hi(`McpTool`,!0),(0,h.jsx)(t,{name:`baas_search_payment`})}function Vi(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Bi,{...e})}):Bi(e)}function Hi(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Ui=t({default:()=>Ki,frontmatter:()=>Wi}),Wi={title:`Send a banking API transfer`,kind:`mcp-tool`,access:`destructive`,status:`stable`,last_verified:`2026-09-14`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Tilopay MCP server (Tilopay Insight Engine code, baas group), verified 2026-09-14`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/api-bancario`,`agentes/mcp/api-bancario/validate-destination`],description:`Sends a transfer from one of the merchant's bank accounts. It validates the destination account first and requires a confirmation code sent to the merchant's email.`};function Gi(e){let t={p:`p`,strong:`strong`,...m(),...e.components},{Callout:n,McpTool:r}=t;return n||qi(`Callout`,!0),r||qi(`McpTool`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(n,{type:`warn`,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`This tool moves real money.`}),` It validates the destination account before sending, and executing 12680the transfer requires a `,(0,h.jsx)(t.strong,{children:`confirmation code`}
12680),` sent to the merchant's email. Without that code the 12681operation is not sent.`]})}),` 12682`,(0,h.jsx)(r,{name:`baas_send_transfer`})]})}function Ki(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Gi,{...e})}):Gi(e)}function qi(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Ji=t({default:()=>Zi,frontmatter:()=>Yi}),Yi={title:`Validate a banking API destination account`,kind:`mcp-tool`,access:`read`,status:`stable`,last_verified:`2026-09-14`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Tilopay MCP server (Tilopay Insight Engine code, baas group), verified 2026-09-14`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/api-bancario`,`agentes/mcp/api-bancario/send-transfer`],description:`Checks a destination account before sending a transfer to it: holder, account type, currency and status. It does not move money.`};function Xi(e){let{McpTool:t}={...m(),...e.components};return t||Qi(`McpTool`,!0),(0,h.jsx)(t,{name:`baas_validate_destination`})}function Zi(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Xi,{...e})}):Xi(e)}function Qi(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var $i=t({default:()=>na,frontmatter:()=>ea}),ea={title:`Banking tools`,kind:`mcp-tool`,access:`write`,status:`stable`,last_verified:`2026-09-03`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo baas), verificado 03-09-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/permisos`,`api-bancario`,`api-bancario/cuentas`,`api-bancario/pagos`],description:`MCP tools to read the Tilopay banking API: accounts, balances, payments and statements. Enabled on request and only for users with banking API credentials.`};function ta(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,strong:`strong`,...m(),...e.components},{Callout:n,McpToolIndex:r}=t;return n||ra(`Callout`,!0),r||ra(`McpToolIndex`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(n,{type:`warn`,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`These tools are not enabled by default.`}),` They are turned on `,(0,h.jsx)(t.strong,{children:`on request`}),` and only work for 12683users with `,(0,h.jsx)(t.strong,{children:`Tilopay banking API credentials`}),` registered by Tilopay on the server side. Standard 12684MCP access does not include the group; and if a tool is called without those credentials, it 12685replies that they do not exist. To request it, `,(0,h.jsx)(t.a,{href:`/en/contacto`,children:`contact us`}),` and state that you 12686need the banking API.`]})}),` 12687`,(0,h.jsx)(t.h2,{id:`que-cubre`,children:`What it covers`}),` 12688`,(0,h.jsxs)(t.p,{children:[`Fourteen tools over the `,(0,h.jsx)(t.a,{href:`/en/developers/api-bancario`,children:`banking API`}),`: contexts (assignments), 12689credential diagnostics, accounts, balances, payments, statements, an analytical payments report, 12690validating a destination account and sending a transfer with its status lookup.`]}),` 12691`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`Eleven of the fourteen only read information.`}),` `,(0,h.jsx)(t.code,{children:`baas_request_statement`}),` generates a read-only 12692document and moves no money. The one tool that moves money is `,(0,h.jsx)(t.code,{children:`baas_send_transfer`}),`: it validates 12693the destination account first and requires a confirmation code sent to the merchant's email, so it 12694cannot run on the model's decision alone.`]}),` 12695`,(0,h.jsxs)(t.p,{children:[`Accounts are identified with `,(0,h.jsx)(t.code,{children:`accountType: "IBAN"`}),` plus `,(0,h.jsx)(t.code,{children:`accountValue`}),`, dates are RFC 3339 12696(`,(0,h.jsx)(t.code,{children:`2026-01-01T00:00:00Z`}),`) and `,(0,h.jsx)(t.code,{children:`assignmentId`}),` is only needed when the user has several contexts.`]}),` 12697`,(0,h.jsx)(t.h2,{id:`herramientas`,children:`Tools`}),` 12698`,(0,h.jsx)(r,{slug:`api-bancario`})]})}function na(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(ta,{...e})}):ta(e)}function ra(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var ia=t({default:()=>sa,frontmatter:()=>aa}),aa={title:`Alerts and notifications`,kind:`mcp-tool`,access:`write`,status:`stable`,last_verified:`2026-09-14`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Tilopay MCP server (Tilopay Insight Engine code, notifications group), verified 2026-09-14`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/recordatorios`,`agentes/asistente-whatsapp`],description:`MCP tools to read and change the merchant's WhatsApp alerts: approved charges, declined charges, daily summary and orders.`};function oa(e){let t={h2:`h2`,p:`p`,...m(),...e.components},{McpToolGroup:n}=t;return n||ca(`McpToolGroup`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`que-cubre`,children:`What it covers`}),` 12699`,(0,h.jsx)(t.p,{children:`The agent can notify the merchant over WhatsApp when a charge comes in, when a charge is declined, 12700when an order arrives, and send a daily summary at the chosen time. These two tools read and change 12701those settings.`}),` 12702`,(0,h.jsx)(t.p,{children:`They do not send messages on their own: they only turn alerts on and off and report the current 12703settings. Fields that are not sent are preserved.`}),` 12704`,(0,h.jsx)(t.h2,{id:`herramientas`,children:`Tools`}),` 12705`,(0,h.jsx)(n,{slug:`avisos`})]})}function sa(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(oa,{...e})}):oa(e)}function ca(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var la=t({default:()=>fa,frontmatter:()=>ua}),ua={title:`Catalog`,kind:`mcp-tool`,access:`read`,status:`stable`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (manifiesto y código), verificado 29-08-2026`,`Respuestas de TecnologÃa, 29-08-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/permisos`,`agentes/mcp/recetas`],description:`MCP tools to read the merchant catalog of products and services.`};function da(e){let t={h2:`h2`,p:`p`,...m(),...e.components},{McpToolGroup:n}=t;return n||pa(`McpToolGroup`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`que-cubre`,children:`What it covers`}),` 12706`,(0,h.jsx)(t.p,{children:`Read only: it lists the products or services the merchant already created as payment links and returns the detail of one.`}),` 12707`,(0,h.jsx)(t.h2,{id:`herramientas`,children:`Tools`}),` 12708`,(0,h.jsx)(n,{slug:`catalogo`})]})}function fa(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(da,{...e})}):da(e)}function pa(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var ma=t({default:()=>_a,frontmatter:()=>ha}),ha={title:`Payment receipts`,kind:`mcp-tool`,access:`write`,status:`stable`,last_verified:`2026-09-14`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Tilopay MCP server (Tilopay Insight Engine code, receipts group), verified 2026-09-14`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/microtienda`,`agentes/mcp/enlaces-de-pago`],description:`MCP tools to list receipts of approved charges and resend a customer the receipt for their payment.`};function ga(e){let t={h2:`h2`,p:`p`,...m(),...e.components},{McpToolGroup:n}=t;return n||va(`McpToolGroup`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`que-cubre`,children:`What it covers`}),` 12709`,(0,h.jsx)(t.p,{children:`Every approved charge that goes through the agent produces a re
12709ceipt with its own code, a page to 12710view it and an image to share. With these two tools the merchant lists the receipts for a period 12711and resends one to the customer over WhatsApp.`}),` 12712`,(0,h.jsx)(t.p,{children:`The receipt is an informational document about the charge. It is not an electronic invoice.`}),` 12713`,(0,h.jsx)(t.h2,{id:`herramientas`,children:`Tools`}),` 12714`,(0,h.jsx)(n,{slug:`comprobantes`})]})}function _a(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(ga,{...e})}):ga(e)}function va(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var ya=t({default:()=>Sa,frontmatter:()=>ba}),ba={title:`Connect your AI agent`,kind:`guide`,status:`stable`,last_verified:`2026-09-23`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Tilopay MCP server code (Tilopay Insight Engine), verified 2026-09-23`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/permisos`,`agentes/mcp/recetas`,`agentes`],description:`How to connect Claude, ChatGPT, GitHub Copilot, Cursor, Gemini or any other MCP client to the Tilopay MCP server.`};function xa(e){let t={a:`a`,code:`code`,h2:`h2`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,...m(),...e.components},{Callout:n}=t;return n||Ca(`Callout`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.p,{children:`Every agent connects to the same server through the same flow: you add a remote MCP server with 12715the Tilopay URL and authorize the session in the browser. The only thing that changes per agent is 12716where you add it.`}),` 12717`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{children:`https://mcp.tilopay.com/mcp`})})})})}),` 12718`,(0,h.jsxs)(t.p,{children:[`The MCP server version in production is `,(0,h.jsx)(t.strong,{children:`0.3.0`}),`.`]}),` 12719`,(0,h.jsx)(t.h2,{id:`antes`,children:`Before connecting`}),` 12720`,(0,h.jsxs)(t.ol,{children:[` 12721`,(0,h.jsx)(t.li,{children:`There is no form and no prior approval: an active Tilopay account is enough.`}),` 12722`,(0,h.jsx)(t.li,{children:`During authorization you sign in with your Tilopay dashboard email and password and confirm the 12723verification code Tilopay sends. The assistant user is created automatically at that moment and 12724tied to the merchant.`}),` 12725`,(0,h.jsxs)(t.li,{children:[`Review `,(0,h.jsx)(t.a,{href:`/en/developers/agentes/mcp/permisos`,children:`what an agent can do`}),` before connecting it, especially 12726the tools marked as sensitive.`]}),` 12727`]}),` 12728`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsxs)(t.p,{children:[`Never paste the merchant's `,(0,h.jsx)(t.code,{children:`apiKey`}),`, `,(0,h.jsx)(t.code,{children:`apiUser`}),` or `,(0,h.jsx)(t.code,{children:`apiPassword`}),` into the agent or its config file. 12729Merchant credentials live encrypted on the Tilopay server: the agent only handles its own OAuth 12730session.`]})}),` 12731`,(0,h.jsx)(t.h2,{id:`claude`,children:`Claude`}),` 12732`,(0,h.jsx)(t.p,{children:`Claude supports remote connectors, both in the desktop app and on the web.`}),` 12733`,(0,h.jsxs)(t.ol,{children:[` 12734`,(0,h.jsx)(t.li,{children:`Add a remote custom connector with the server URL.`}),` 12735`,(0,h.jsx)(t.li,{children:`Claude opens the Tilopay authorization screen: sign in with your Tilopay credentials and 12736confirm the verification code.`}),` 12737`,(0,h.jsx)(t.li,{children:`Review the consent screen (requesting application, return URL and permissions) and approve.`}),` 12738`,(0,h.jsx)(t.li,{children:`Back in the conversation, the Tilopay tools are available.`}),` 12739`]}),` 12740`,(0,h.jsx)(t.p,{children:`There is no token to paste: the connector registers itself.`}),` 12741`,(0,h.jsx)(t.h2,{id:`chatgpt`,children:`ChatGPT`}),` 12742`,(0,h.jsx)(t.p,{children:`ChatGPT connects as a remote connector using the same URL.`}),` 12743`,(0,h.jsxs)(t.ol,{children:[` 12744`,(0,h.jsx)(t.li,{children:`Add the server as a remote connector with the URL above.`}),` 12745`,(0,h.jsx)(t.li,{children:`Authorization completes in the browser with your Tilopay credentials and the verification code.`}),` 12746`,(0,h.jsx)(t.li,{children:`Once approved, the connector is active and the model can call the tools.`}),` 12747`]}),` 12748`,(0,h.jsx)(t.h2,{id:`copilot`,children:`GitHub Copilot and VS Code`}),` 12749`,(0,h.jsx)(t.p,{children:`In VS Code (with Copilot in agent mode) you declare a remote HTTP MCP server.`}),` 12750`,(0,h.jsxs)(t.ol,{children:[` 12751`,(0,h.jsx)(t.li,{children:`Declare the server with the URL, no token or credentials in the config file.`}),` 12752`,(0,h.jsx)(t.li,{children:`On first use, the editor opens the browser to authorize.`}),` 12753`,(0,h.jsx)(t.li,{children:`After approving, the tools show up in the agent's tool list.`}),` 12754`]}),`
12755`,(0,h.jsx)(t.h2,{id:`cursor`,children:`Cursor and other editors`}),` 12756`,(0,h.jsx)(t.p,{children:`Cursor and equivalent editors use the same scheme: a remote MCP server over HTTP.`}),` 12757`,(0,h.jsxs)(t.ol,{children:[` 12758`,(0,h.jsx)(t.li,{children:`Add the remote server with the URL, no token in the configuration.`}),` 12759`,(0,h.jsx)(t.li,{children:`Authorize in the browser when the editor asks.`}),` 12760`,(0,h.jsx)(t.li,{children:`Enable the tools for the editor's chat or agent.`}),` 12761`]}),` 12762`,(0,h.jsx)(t.h2,{id:`gemini`,children:`Gemini`}),` 12763`,(0,h.jsx)(t.p,{children:`Gemini clients that support remote MCP connect the same way: register the server URL and authorize 12764in the browser. If the client only supports local stdio MCP servers, you need a bridge that speaks 12765Streamable HTTP against the Tilopay URL.`}),` 12766`,(0,h.jsx)(t.h2,{id:`otros`,children:`Other MCP clients`}),` 12767`,(0,h.jsxs)(t.p,{children:[`For a custom client or any other agent, the requirement is support for `,(0,h.jsx)(t.strong,{children:`Streamable HTTP`}),` 12768transport and `,(0,h.jsx)(t.strong,{children:`OAuth 2.0 with dynamic client registration`}),`. The sequence is:`]}),` 12769`,(0,h.jsxs)(t.ol,{children:[` 12770`,(0,h.jsxs)(t.li,{children:[`The client calls the server and gets a `,(0,h.jsx)(t.code,{children:`401`}),` with `,(0,h.jsx)(t.code,{children:`WWW-Authenticate`}),`, pointing to 12771`,(0,h.jsx)(t.code,{children:`/.well-known/oauth-protected-resource`}),`.`]}),` 12772`,(0,h.jsx)(t.li,{children:`The client discovers the identity provider endpoints.`}),` 12773`,(0,h.jsx)(t.li,{children:`It registers dynamically and opens the authorization screen.`}),` 12774`,(0,h.jsx)(t.li,{children:`The user signs in and approves the consent screen.`}),` 12775`,(0,h.jsxs)(t.li,{children:[`The client stays connected with `,(0,h.jsx)(t.code,{children:`authorization_code`}),` and `,(0,h.jsx)(t.code,{children:`refresh_token`}),`.`]}),` 12776`]}),` 12777`,(0,h.jsx)(t.p,{children:`The only thing you configure is the server URL.`}),` 12778`,(0,h.jsx)(t.h2,{id:`verificar`,children:`Verify the connection`}),` 12779`,(0,h.jsxs)(t.p,{children:[`Ask the agent to list the available tools: the Tilopay ones should appear, grouped into 12780`,(0,h.jsx)(t.a,{href:`/en/developers/agentes/mcp/ventas`,children:`sales and transactions`}),`, 12781`,(0,h.jsx)(t.a,{href:`/en/developers/agentes/mcp/enlaces-de-pago`,children:`payment links`}),`, 12782`,(0,h.jsx)(t.a,{href:`/en/developers/agentes/mcp/catalogo`,children:`catalog`}),`, 12783`,(0,h.jsx)(t.a,{href:`/en/developers/agentes/mcp/contactos`,children:`contacts`}),`, 12784`,(0,h.jsx)(t.a,{href:`/en/developers/agentes/mcp/recurrentes`,children:`recurring billing`}),`, 12785`,(0,h.jsx)(t.a,{href:`/en/developers/agentes/mcp/soporte`,children:`support and diagnostics`}),`. 12786The `,(0,h.jsx)(t.a,{href:`/en/developers/agentes/mcp/api-bancario`,children:`banking API (BaaS)`}),` group is enabled on request and 12787only works for users with Tilopay banking API credentials.`]}),` 12788`,(0,h.jsxs)(t.p,{children:[`A safe first test is a read-only query, for example asking for transactions in a date range. For 12789full flows see the `,(0,h.jsx)(t.a,{href:`/en/developers/agentes/mcp/recetas`,children:`recipes`}),`.`]}),` 12790`,(0,h.jsx)(t.h2,{id:`problemas`,children:`If something fails`}),` 12791`,(0,h.jsxs)(t.ul,{children:[` 12792`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`The client never opens authorization`}),`: check the server is declared as remote over HTTP, not 12793as a local server.`]}),` 12794`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`Authorization never completes`}),`: sign in with your Tilopay dashboard email and password, and 12795confirm the verification code sent to your email.`]}),` 12796`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`The agent sees no tools`}),`: several clients require enabling them for the conversation or for 12797agent mode after connecting.`]}),` 12798`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`A tool returns empty`}),`: it may be the queried environment; several tools default to 12799`,(0,h.jsx)(t.code,{children:`production`}),`.`]}),` 12800`]})]})}function Sa(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(xa,{...e})}):xa(e)}function Ca(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var wa=t({default:()=>Da,frontmatter:()=>Ta}),Ta={title:`Contacts`,kind:`mcp-tool`,access:`destructive`,status:`stable`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (manifiesto y código), verificado 29-08-2026`,`Respuestas de TecnologÃa, 29-08-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/permisos`,`agentes/mcp/recetas`],description:`MCP tools for the merchant address book: view, save and delete contacts.`};function Ea(e){let t={h2:`h2`,p:`p`,...m(),...e.components},{McpToolGroup:n}=t;return n||Oa(`McpToolGroup`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`que-cubre`,children:`What it covers`}),` 12801`,(0,h.jsx)(t.p,{children:`The address book lets the agent reuse phone and email when sending a payment link, without asking again. Deleting a contact is irreversible.`}),` 12802`,(0,h.jsx)(t.h2,{id:`herramientas`,children:`Tools`}),` 12803`,(0,h.jsx)(n,{slug:`contactos`})]})}function Da(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Ea,{...e})}):Ea(e)}function Oa(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var ka=t({default:()=>Ma,frontmatter:()=>Aa}),Aa={title:`Payment links`,kind:`mcp-tool`,access:`destructive`,status:`stable`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (manifiesto y código), verificado 29-08-2026`,`Respuestas de TecnologÃa, 29-08-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/permisos`,`agentes/mcp/recetas`],description:`MCP tools to create, read and delete payment links, and prepare their delivery.`};function ja(e){let t={h2:`h2`,p:`p`,...m(),...e.components},{McpToolGroup:n}=t;return n||Na(`McpToolGroup`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`que-cubre`,children:`What it covers`}),` 12804`,(0,h.jsx)(t.p,{children:`With this group the agent creates a payment link, reads
12804its detail, deletes it and prepares delivery to the customer over WhatsApp or email. WhatsApp delivery does not send the message: it returns a link ready to send.`}),` 12805`,(0,h.jsx)(t.h2,{id:`herramientas`,children:`Tools`}),` 12806`,(0,h.jsx)(n,{slug:`enlaces-de-pago`})]})}function Ma(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(ja,{...e})}):ja(e)}function Na(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Pa=t({default:()=>La,frontmatter:()=>Fa}),Fa={title:`Micro-store and orders`,kind:`mcp-tool`,access:`destructive`,status:`stable`,last_verified:`2026-09-14`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Tilopay MCP server (Tilopay Insight Engine code, store group), verified 2026-09-14`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/catalogo`,`agentes/mcp/comprobantes`],description:`MCP tools to build micro-stores with a cart from the catalog and manage the orders they generate.`};function Ia(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,strong:`strong`,...m(),...e.components},{McpToolGroup:n}=t;return n||Ra(`McpToolGroup`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`que-cubre`,children:`What it covers`}),` 12807`,(0,h.jsxs)(t.p,{children:[`From the products in the `,(0,h.jsx)(t.a,{href:`/developers/agentes/mcp/catalogo`,children:`catalog`}),` the agent builds a 12808`,(0,h.jsx)(t.strong,{children:`micro-store with a cart`}),`: a public page with several products where the customer picks 12809quantities and pays for everything at once. Each micro-store has its own link.`]}),` 12810`,(0,h.jsxs)(t.p,{children:[`The second half of the group is `,(0,h.jsx)(t.strong,{children:`order management`}),`: it is set up once (store name, optional logo 12811and the time of the daily reminder), and from then on the merchant can see the summary, list orders 12812by status, see the ones paid but not delivered and mark them as delivered.`]}),` 12813`,(0,h.jsxs)(t.p,{children:[`Order statuses are `,(0,h.jsx)(t.code,{children:`pending`}),` (awaiting payment), `,(0,h.jsx)(t.code,{children:`paid`}),` (paid, not delivered) and `,(0,h.jsx)(t.code,{children:`delivered`}),`. 12814Deactivating a micro-store or turning off order management does not delete catalog products or 12815orders already recorded.`]}),` 12816`,(0,h.jsx)(t.p,{children:`These tools do not call the Tilopay API: they work on the MCP server's own data, except the 12817payment itself, which goes through each product's payment link.`}),` 12818`,(0,h.jsx)(t.h2,{id:`herramientas`,children:`Tools`}),` 12819`,(0,h.jsx)(n,{slug:`microtienda`})]})}function La(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Ia,{...e})}):Ia(e)}function Ra(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var za=t({default:()=>Ha,frontmatter:()=>Ba}),Ba={title:`Business profile and recipes`,kind:`mcp-tool`,access:`write`,status:`stable`,last_verified:`2026-09-14`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Tilopay MCP server (Tilopay Insight Engine code, profile group), verified 2026-09-14`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/adquirencia`,`agentes/mcp/recetas`],description:`MCP tools to read and complete the business profile and to get automation recipes from it.`};function Va(e){let t={a:`a`,h2:`h2`,p:`p`,...m(),...e.components},{McpToolGroup:n}=t;return n||Ua(`McpToolGroup`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`que-cubre`,children:`What it covers`}),` 12820`,(0,h.jsx)(t.p,{children:`The agent keeps a short business profile: what the business does, what it sells, where it sells, 12821what its charges look like and what it wants to improve. From that profile it builds the 12822automation recipes it proposes to the merchant, and it knows which question is still pending (the 12823questionnaire is four questions at most).`}),` 12824`,(0,h.jsxs)(t.p,{children:[`The profile is saved field by field: whatever is not sent is preserved. Recipes change with the 12825modules the user has enabled: banking recipes only appear when the 12826`,(0,h.jsx)(t.a,{href:`/developers/agentes/mcp/api-bancario`,children:`banking API`}),` is enabled.`]}),` 12827`,(0,h.jsx)(t.p,{children:`These tools do not call the Tilopay API: they work on the MCP server's own data.`}),` 12828`,(0,h.jsx)(t.h2,{id:`herramientas`,children:`Tools`}),` 12829`,(0,h.jsx)(n,{slug:`perfil`})]})}function Ha(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Va,{...e})}):Va(e)}function Ua(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Wa=t({default:()=>qa,frontmatter:()=>Ga}
12829),Ga={title:`What an agent can do`,kind:`guide`,status:`stable`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (manifiesto y código), verificado 29-08-2026`,`Respuestas de TecnologÃa, 29-08-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/ventas`,`agentes/mcp/recetas`],description:`The real scope of an agent connected to the MCP server: which tools read, which tools change state, and which controls exist.`};function Ka(e){let t={a:`a`,code:`code`,h2:`h2`,li:`li`,p:`p`,ul:`ul`,...m(),...e.components},{Callout:n,McpCounts:r}=t;return n||Ja(`Callout`,!0),r||Ja(`McpCounts`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`alcance`,children:`Scope of the tools`}),` 12830`,(0,h.jsx)(r,{}),` 12831`,(0,h.jsx)(t.p,{children:`The ones marked as sensitive are refunds and captures, charges with stored cards, deleting payment 12832links, deleting contacts and managing subscribers.`}),` 12833`,(0,h.jsx)(t.p,{children:`One group has no published reference: charges with stored cards. It is active on the server and 12834counts towards these numbers, so a connected agent can use its tools, but the portal does not 12835publish the per-tool detail. Ask support if you need it.`}),` 12836`,(0,h.jsx)(t.h2,{id:`herencia-de-permisos`,children:`Permission inheritance`}),` 12837`,(0,h.jsx)(t.p,{children:`The server uses the merchant API credentials, so it inherits exactly its permissions: it does not 12838impose additional barriers per tool. An active user can issue refunds and run bulk charges.`}),` 12839`,(0,h.jsx)(t.h2,{id:`controles`,children:`Controls that do exist`}),` 12840`,(0,h.jsxs)(t.ul,{children:[` 12841`,(0,h.jsx)(t.li,{children:`A per-user activation switch, which cuts access without deleting the account.`}),` 12842`,(0,h.jsx)(t.li,{children:`A separate administrator role, which only serves to manage users and credentials.`}),` 12843`,(0,h.jsx)(t.li,{children:`A rate limit of 60 calls per minute per user.`}),` 12844`]}),` 12845`,(0,h.jsx)(t.h2,{id:`confirmacion-humana`,children:`Human confirmation`}),` 12846`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsx)(t.p,{children:`Human confirmation before a sensitive operation depends on the MCP client, not on Tilopay. Always 12847require it for write tools, and do not negotiate it for refunds or bulk charges.`})}),` 12848`,(0,h.jsxs)(t.p,{children:[`The per-tool detail, with parameters and output, lives on each group page and in the 12849`,(0,h.jsx)(t.a,{href:`/developers/mcp.json`,children:(0,h.jsx)(t.code,{children:`mcp.json`})}),`.`]})]})}function qa(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Ka,{...e})}):Ka(e)}function Ja(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Ya=t({default:()=>Qa,frontmatter:()=>Xa}),Xa={title:`Recipes`,kind:`guide`,status:`stable`,last_verified:`2026-09-04`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (manifiesto y código), verificado 29-08-2026`,`Respuestas de TecnologÃa, 29-08-2026`,`Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine y manifiesto generado), verificado 02-09-2026`,`Catálogo de herramientas del servidor MCP (mcp.tilopay.com), verificado 04-09-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/ventas`,`agentes/mcp/enlaces-de-pago`,`agentes/mcp/recurrentes`,`agentes/mcp/soporte`,`agentes/mcp/permisos`],description:`Fourteen end-to-end flows with the MCP server: insights dashboard, selling over WhatsApp, recovering failed recurring charges, B2B collections, cash projection with banking data, anomaly detection, month-end close, refunds, recurring subscriptions, plan optimisation, stored-card charges, integration debugging and Tilopay as a tool for other agents.`};function Za(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,ol:`ol`,p:`p`,ul:`ul`,...m(),...e.components},{Callout:n}=t;return n||$a(`Callout`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`dashboard-insights`,children:`Build a real-time insights dashboard`}),` 12850`,(0,h.jsxs)(t.ol,{children:[` 12851`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_sales_summary`}
12851),` brings totals, costs and net for the period you want to monitor.`]}),` 12852`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_analyze_sales`}),` turns those numbers into a narrative summary with trends and observations.`]}),` 12853`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_list_transactions`}),` lists recent transactions to complete the board.`]}),` 12854`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_get_transaction`}),` opens the detail of any operation that needs review.`]}),` 12855`]}),` 12856`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsx)(t.p,{children:`The summary uses UTC, not local time. If the merchant has low volume, trends and top customers may 12857come back empty.`})}),` 12858`,(0,h.jsx)(t.h3,{id:`ejemplos-dashboard`,children:`Example dashboard questions`}),` 12859`,(0,h.jsxs)(t.ul,{children:[` 12860`,(0,h.jsxs)(t.li,{children:[`âHow did I do today?â â `,(0,h.jsx)(t.code,{children:`tilopay_sales_summary`}),` + `,(0,h.jsx)(t.code,{children:`tilopay_analyze_sales`}),`.`]}),` 12861`,(0,h.jsxs)(t.li,{children:[`âWhat are my best-selling products or services this week?â â `,(0,h.jsx)(t.code,{children:`tilopay_analyze_sales`}),` over the 12862last 7 days.`]}),` 12863`,(0,h.jsxs)(t.li,{children:[`âDo I have failed or pending transactions?â â `,(0,h.jsx)(t.code,{children:`tilopay_list_transactions`}),` filtered by status, 12864then `,(0,h.jsx)(t.code,{children:`tilopay_get_transaction`}),` for each case.`]}),` 12865`,(0,h.jsxs)(t.li,{children:[`âHow are my net earnings evolving versus last month?â â compare two `,(0,h.jsx)(t.code,{children:`tilopay_sales_summary`}),` 12866calls with different date windows.`]}),` 12867`]}),` 12868`,(0,h.jsx)(t.h2,{id:`cobrar-por-whatsapp`,children:`Sell over WhatsApp from the catalogue`}),` 12869`,(0,h.jsxs)(t.ol,{children:[` 12870`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_catalog_list_items`}),` lists the merchant's products or services so the agent answers 12871the customer with real names and prices.`]}),` 12872`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_catalog_get_item`}),` opens the chosen item when price, currency or description must be 12873confirmed before building the order.`]}),` 12874`,(0,h.jsx)(t.li,{children:`The agent builds the order, computes the total and confirms it with the customer before charging.`}),` 12875`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_save_contact`}),` stores the buyer (name, email, phone) to attach them to the charge and 12876reuse them in future sales.`]}),` 12877`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_create_payment_link`}),` creates the link for the order total, with a description that 12878identifies the order.`]}),` 12879`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_send_payment_link_whatsapp`}),` prepares the message to the customer.`]}),` 12880`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_get_payment_link`}),` checks the link status to confirm payment and close the conversation 12881with the receipt.`]}),` 12882`]}),` 12883`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.code,{children:`tilopay_send_payment_link_whatsapp`}),` does not send the message: it returns a `,(0,h.jsx)(t.code,{children:`wa.me`}),` link with the 12884text ready to send in one tap. If there is no phone and no saved contact with that name, the tool 12885asks for it. The agent can keep polling `,(0,h.jsx)(t.code,{children:`tilopay_get_payment_link`}),` to notify the merchant as soon as 12886the link is paid.`]}),` 12887`,(0,h.jsx)(n,{type:`info`,children:(0,h.jsx)(t.p,{children:`With this recipe a merchant without an online store sells end to end inside the chat: catalogue, 12888order, charge and confirmation, with no human intervention beyond what the merchant chooses to 12889require.`})}),` 12890`,(0,h.jsx)(t.h2,{id:`dunning-inteligente`,children:`Recover failed recurring charges (smart dunning)`}),` 12891`,(0,h.jsxs)(t.ol,{children:[` 12892`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_recurring_list_plans`}),` lists the merchant's active plans.`]}),` 12893`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_recurring_subscriber_payments`}),` walks the payments of each plan's subscribers and
12894separates the period's declined charges.`]}),` 12895`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_get_transaction`}),` opens each decline to read the response code and classify the cause: 12896insufficient funds, expired card, blocked card, suspected fraud.`]}),` 12897`,(0,h.jsx)(t.li,{children:`Based on the cause, the agent decides the action and proposes it to the merchant: wait for the 12898plan's retry when the decline is transient (insufficient funds), or ask the customer for a new 12899payment method when it is final (expired or blocked card).`}),` 12900`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_create_payment_link`}),` creates a link for the outstanding amount when the customer must 12901pay the instalment with another card.`]}),` 12902`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_send_payment_link_whatsapp`}),` or `,(0,h.jsx)(t.code,{children:`tilopay_send_payment_link_email`}),` prepares the message 12903to the customer with wording adapted to the decline reason.`]}),` 12904`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_get_payment_link`}),` confirms when the customer paid, and `,(0,h.jsx)(t.code,{children:`tilopay_recurring_get_subscriber`}),` 12905verifies the subscriber's status after recovery.`]}),` 12906`]}),` 12907`,(0,h.jsx)(t.p,{children:`An agent running this recipe every morning turns the decline list into two queues: the one that 12908resolves itself with the plan's retry and the one that needs a message to the customer. The merchant 12909only receives the summary: how many charges were recovered and which remain pending.`}),` 12910`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsxs)(t.p,{children:[`Do not use `,(0,h.jsx)(t.code,{children:`tilopay_recurring_manage_subscriber`}),` to "punish" a decline: `,(0,h.jsx)(t.code,{children:`pause`}),` and `,(0,h.jsx)(t.code,{children:`delete`}),` 12911affect future charges and `,(0,h.jsx)(t.code,{children:`delete`}),` cannot be undone. Pausing or removing a subscriber is a 12912merchant decision with explicit human confirmation, never an automatic reaction to a failed 12913charge.`]})}),` 12914`,(0,h.jsx)(t.h2,{id:`cobranza-b2b`,children:`B2B collections with accounts receivable`}),` 12915`,(0,h.jsxs)(t.ol,{children:[` 12916`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_list_contacts`}),` brings the merchant's business customers; `,(0,h.jsx)(t.code,{children:`tilopay_save_contact`}),` 12917registers the missing ones with the payer's name, email and phone.`]}),` 12918`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_create_payment_link`}),` creates a link per outstanding invoice, with the invoice number in 12919the description and a due date.`]}),` 12920`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_send_payment_link_email`}),` prepares the first send; `,(0,h.jsx)(t.code,{children:`tilopay_send_payment_link_whatsapp`}),` 12921prepares the reminder when the invoice is still unpaid.`]}),` 12922`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_get_payment_link`}),` checks each link's status to update the receivables list without 12923opening the panel.`]}),` 12924`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`baas_search_payment`}),` or `,(0,h.jsx)(t.code,{children:`baas_list_payments`}),` look in the merchant's bank accounts for a direct 12925transfer (SINPE or bank transfer) matching the amount and customer, to mark as paid an invoice 12926the customer settled outside the link.`]}),` 12927`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_delete_payment_link`}),` removes the link of an invoice already paid by transfer, to avoid 12928a double charge.`]}),` 12929`]}),` 12930`,(0,h.jsx)(t.p,{children:`This recipe answers the "have they paid me yet?" that eats administrative hours in businesses that 12931invoice companies: one list with invoices, links, status and payments received through any channel.`}),` 12932`,(0,h.jsx)(n,{type:`info`,children:(0,h.jsxs)(t.p,{children:[`The `,(0,h.jsx)(t.code,{children:`baas_*`}),` tools are read-only and require support to have registered the merchant's banking API 12933credentials. If they are not configured, the tool says so and the recipe keeps working with 12934payment links alone.`]})}),` 12935`,(0,h.jsx)(t.h2,{id:`cfo-de-bolsillo`,children:`Project cash with gateway and bank data (pocket CFO)`}),` 12936`,(0,h.jsxs)(t.ol,{children:[` 12937`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_sales_summary`}),` brings the last weeks of sales to estimate expected income for the next 12938period.`]}),` 12939`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_recurring_list_plans`}),` and `,(0,h.jsx)(t.code,{children:`tilopay_recurring_get_plan`}),` quantify committed recurring 12940charges and their dates.`]}),` 12941`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`baas_list_balances`}),` or `,(0,h.jsx)(t.code,{children:`baas_get_balance`}),` bring the real balance of each of the merchant's bank 12942accounts.`]}),` 12943`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`baas_list_payments`}),` lists the last months of transfers to detect recurring outflows: payroll, 12944rent, suppliers.`]}),` 12945`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`baas_analyze_payments`}),` summarises those movements in natural language to identify patterns and 12946peak dates.`]}),` 12947`,(0,h.jsx)(t.li,{children:`The agent combines balance, expected inflows and expected outflows into a daily projection, 12948flags the days with minimum or negative balance and proposes actions.`}),` 12949`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_create_payment_link`}),` and `,(0,h.jsx)(t.code,{children:`tilopay_send_payment_link_email`}),` put outstanding invoices out 12950for collection when the merchant approves that action.`]}),` 12951`]}),` 12952`,(0,h.jsx)(t.p,{children:`The value is in crossing two sources that normally live apart: the gateway knows what is coming in 12953and the bank knows what is there and what goes out. A weekly routine produces a short briefing with 12954the projection and the alerts, before the business opens.`}),` 12955`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsxs)(t.p,{children:[`The `,(0,h.jsx)(t.code,{children:`baas_*`}),` tools never initiate, approve or reverse transfers. If the projection suggests moving 12956funds between accounts, a person executes that at the bank; the agent only recommends and records 12957it. The projection is an estimate, not a financial statement.`]})}),` 12958`,(0,h.jsx)(t.h2,{id:`detector-anomalias`,children:`Detect anomalies and act`}),` 12959`,(0,h.jsxs)(t.ol,{children:[` 12960`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_sales_summary`}),` compares the current window (for example the last hour or the day) 12961against the same reference period to detect approval drops, decline spikes or sudden changes in 12962average ticket.`]}),` 12963`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_list_transactions`}),` filters by status to see whether declines concentrate on one payment 12964method, one currency or a pattern of repeated attempts.`]}),` 12965`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_get_transaction`}),` opens representative cases to read the response codes.`]}),` 12966`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_diagnostics`}),` checks credentials and endpoint availability to separate a problem in the 12967merchant's integration from a problem with customers or issuers.`]}),` 12968`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_help_guides`}),` searches the official guides for the explanation and the fix that match the 12969response code or the symptom.`]}),` 12970`,(0,h.jsx)(t.li,{children:`The agent raises the alert with the diagnosis already done: what changed, since when, probable 12971cause and suggested action.`}),` 12972`]}),` 12973`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsx)(t.p,{children:`The sales summary uses UTC. When comparing short windows, align the hours; a "drop" at local 12974midnight may just be the UTC day cut. Many declined attempts in a few minutes with small amounts 12975and different cards may indicate stolen-card testing: report it to supp
12975ort instead of retrying.`})}),` 12976`,(0,h.jsx)(t.h2,{id:`cierre-de-mes`,children:`Close the month sales`}),` 12977`,(0,h.jsxs)(t.ol,{children:[` 12978`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_sales_summary`}),` returns totals, costs and net for the period.`]}),` 12979`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_analyze_sales`}),` produces the natural-language report.`]}),` 12980`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_get_transaction`}),` brings the detail of the transactions that need review.`]}),` 12981`]}),` 12982`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsx)(t.p,{children:`The hours and days in the summary are in UTC, not local time. Trends and top customers come back 12983empty when the sample is small.`})}),` 12984`,(0,h.jsx)(t.h2,{id:`reembolso`,children:`Refund with human confirmation`}),` 12985`,(0,h.jsxs)(t.ol,{children:[` 12986`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_list_transactions`}),` locates the transaction in the date range.`]}),` 12987`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_get_transaction`}),` shows the detail to confirm it is the right one.`]}),` 12988`,(0,h.jsx)(t.li,{children:`The agent asks the user for confirmation. That step is enforced by the MCP client, not by Tilopay.`}),` 12989`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_modify_transaction`}),` runs the modification with the action and the amount.`]}),` 12990`]}),` 12991`,(0,h.jsx)(t.h2,{id:`suscripcion-recurrente`,children:`Review a re
12991curring subscription`}),` 12992`,(0,h.jsxs)(t.ol,{children:[` 12993`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_recurring_list_plans`}),` lists the merchant recurring billing plans.`]}),` 12994`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_recurring_get_plan`}),` opens the plan you care about by its ID.`]}),` 12995`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_recurring_get_subscriber`}),` shows the subscriber detail.`]}),` 12996`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_recurring_subscriber_payments`}),` lists that subscriber payments to see which went through 12997and which did not.`]}),` 12998`]}),` 12999`,(0,h.jsx)(t.p,{children:`Useful to answer "why does this customer show no charge this month?" without opening the dashboard.`}),` 13000`,(0,h.jsx)(t.h2,{id:`optimizar-planes`,children:`Optimise subscription plans`}),` 13001`,(0,h.jsxs)(t.ol,{children:[` 13002`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_recurring_list_plans`}),` lists the active plans with price and frequency.`]}),` 13003`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_recurring_get_plan`}),` opens each plan for its subscriber count and configuration.`]}),` 13004`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_recurring_subscriber_payments`}),` walks payments per subscriber to compute, per plan, the 13005successful-charge rate, the month when most subscribers stop paying and the average tenure.`]}),` 13006`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_recurring_get_subscriber`}),` reviews the outliers the analysis flags.`]}),` 13007`,(0,h.jsx)(t.li,{children:`The agent presents the comparison between plans: retention, revenue per subscriber and churn 13008point, and proposes changes to price, frequency or content.`}),` 13009`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_create_payment_link`}),` lets you test a new offer with a small segment of contacts before 13010modifying a plan.`]}),` 13011`]}),` 13012`,(0,h.jsx)(t.p,{children:`This is pricing analysis with real charge data. The agent does not modify plans: it proposes, and 13013the merchant decides in the panel.`}),` 13014`,(0,h.jsx)(t.h2,{id:`pausar-suscriptor`,children:`Pause or cancel a subscriber`}),` 13015`,(0,h.jsxs)(t.ol,{children:[` 13016`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_recurring_get_subscriber`}),` confirms the subscriber is the right one.`]}),` 13017`,(0,h.jsx)(t.li,{children:`The agent asks the user for confirmation, with the name and the plan in plain sight.`}),` 13018`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_recurring_manage_subscriber`}),` runs `,(0,h.jsx)(t.code,{children:`pause`}),`, `,(0,h.jsx)(t.code,{children:`reactivate`}),` or `,(0,h.jsx)(t.code,{children:`delete`}),`.`]}),` 13019`]}),` 13020`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.code,{children:`tilopay_recurring_manage_subscriber`}),` is marked sensitive: it affects future charges and `,(0,h.jsx)(t.code,{children:`delete`}),` 13021cannot be undone. Never run it without explicit human confirmation.`]})}),` 13022`,(0,h.jsx)(t.h2,{id:`cobro-masivo`,children:`Charge a group with stored cards`}),` 13023`,(0,h.jsxs)(t.ol,{children:[` 13024`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_saved_cards_list_groups`}),` lists the collection groups.`]}),` 13025`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_saved_cards_list_affiliates`}),` shows the affiliates of the chosen group, so you know how 13026many cards will be charged.`]}),` 13027`,(0,h.jsx)(t.li,{children:`The agent summarises amount, currency, reason and number of affiliates, and asks for confirmation.`}),` 13028`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_saved_cards_create_payments`}),` creates the charges.`]}),` 13029`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_saved_cards_list_collections`}),` and `,(0,h.jsx)(t.code,{children:`tilopay_saved_cards_collection_detail`}),` review the 13030result: the second one needs the `,(0,h.jsx)(t.code,{children:`code`}),` returned by the first.`]}),` 13031`]}),` 13032`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.code,{children:`tilopay_saved_cards_create_payments`}),` moves real money from the stored cards. Treat it as a 13033one-shot operation: confirm before, and verify after with the collection detail.`]})}),` 13034`,(0,h.jsx)(t.h2,{id:`depurar-integracion`,children:`Debug an integration and support a developer`}),` 13035`,(0,h.jsxs)(t.ol,{children:[` 13036`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_diagnostics`}),` tests the credentials and one endpoint per API group, to separate a 13037credentials problem from a request problem.`]}
13037),` 13038`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_debug_code`}),` receives the code snippet, log or stack trace and returns diagnosis, root 13039cause, fix and risks.`]}),` 13040`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_help_guides`}),` answers panel usage questions with the official guides.`]}),` 13041`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_list_transactions`}),` and `,(0,h.jsx)(t.code,{children:`tilopay_get_transaction`}),` confirm whether the operation the 13042developer believes failed actually reached Tilopay, and with what result.`]}),` 13043`]}),` 13044`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.code,{children:`tilopay_debug_code`}),` does not read the repository or run the code: it analyses only what you pass 13045in. Strip credentials from the snippet before sending; the tool masks what it recognises as a secret, 13046but that does not replace your review.`]}),` 13047`,(0,h.jsx)(t.p,{children:`With these four tools a support agent handles the whole technical onboarding: verifies the account, 13048finds the cause of the error, delivers the fix with the official guide and confirms against real 13049transactions. Repeated questions are the signal of which guide or example the portal still needs.`}),` 13050`,(0,h.jsx)(n,{type:`info`,children:(0,h.jsx)(t.p,{children:`Sandbox test cards are in the portal's testing guide. Sandbox mode is switched from the account; 13051there is no separate host.`})}),` 13052`,(0,h.jsx)(t.h2,{id:`tilopay-como-herramienta`,children:`Tilopay as a tool for other agents`}),` 13053`,(0,h.jsxs)(t.ol,{children:[` 13054`,(0,h.jsx)(t.li,{children:`The merchant requests MCP server access with the portal form (name of the responsible person, 13055merchant email and merchant name); support confirms approval and the terms of use.`}),` 13056`,(0,h.jsxs)(t.li,{children:[`The external agent (an ERP assistant, an online-store bot, an accounting agent) connects the MCP 13057server with those credentials and runs `,(0,h.jsx)(t.code,{children:`tilopay_diagnostics`}),` to verify the connection.`]}),` 13058`,(0,h.jsxs)(t.li,{children:[`With the tool catalogue loaded, the external agent uses the read tools (`,(0,h.jsx)(t.code,{children:`tilopay_sales_summary`}),`, 13059`,(0,h.jsx)(t.code,{children:`tilopay_list_transactions`}),`, `,(0,h.jsx)(t.code,{children:`tilopay_recurring_*`}),`, `,(0,h.jsx)(t.code,{children:`baas_*`}),`) to answer business questions inside 13060its own conversation.`]}),` 13061`,(0,h.jsxs)(t.li,{children:[`For actions that create or move money (`,(0,h.jsx)(t.code,{children:`tilopay_create_payment_link`}),`, 13062`,(0,h.jsx)(t.code,{children:`tilopay_modify_transaction`}),`, `,(0,h.jsx)(t.code,{children:`tilopay_saved_cards_create_payments`}),`, 13063`,(0,h.jsx)(t.code,{children:`tilopay_recurring_manage_subscriber`}),`) the external agent applies the confirmation policy 13064described on the permissions page before executing.`]}),` 13065`]}),` 13066`,(0,h.jsx)(t.p,{children:`This recipe changes the MCP's position: it is not just an assistant inside Tilopay, it is the 13067payments layer any agent can call. Every other recipe on this page works the same when a third-party 13068agent runs it.`}),` 13069`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsx)(t.p,{children:`MCP usage may carry additional costs depending on volume; support details them when validating the 13070merchant's transaction volume. Tools marked as sensitive require human confirmation in whichever 13071MCP client runs them, Tilopay's or a third party's.`})})]})}function Qa(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Za,{...e})}):Za(e)}function $a(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var eo=t({default:()=>ro,frontmatter:()=>to}),to={title:`Reminders`,kind:`mcp-tool`,access:`destructive`,status:`stable`,last_verified:`2026-09-14`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Tilopay MCP server (Tilopay Insight Engine code, reminders group), verified 2026-09-14`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/avisos`,`agentes/asistente-whatsapp`],description:`MCP tools to create, list and cancel WhatsApp reminders, with or without an agent action when they fire.`};function no(e){let t={a:`a`,h2:`h2`,li:`li`,p:`p`,strong:`strong`,ul:`ul`,...m(),...e.components},{McpToolGroup:n}=t;return n||io(`McpToolGroup`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`que-cubre`,children:`What it covers`}),` 13072`,(0,h.jsxs)(t.p,{children:[`A reminder is a scheduled WhatsApp message: one-off, daily, weekly or monthly. It can be plain text 13073or carry an `,(0,h.jsx)(t.strong,{children:`action`}),` the agent runs when it fires, written in natural language ("give me today's 13074sales summary", "list the pending payment links"), and the result is attached to the message.`]}
13074),` 13075`,(0,h.jsx)(t.p,{children:`Rules worth knowing:`}),` 13076`,(0,h.jsxs)(t.ul,{children:[` 13077`,(0,h.jsx)(t.li,{children:`Times are the merchant's local time, based on the country of their WhatsApp number.`}),` 13078`,(0,h.jsx)(t.li,{children:`There is a maximum of 20 active reminders.`}),` 13079`,(0,h.jsxs)(t.li,{children:[`Reminders about payment links or charges `,(0,h.jsx)(t.strong,{children:`always`}),` go to the merchant's WhatsApp, never to the 13080customer.`]}),` 13081`,(0,h.jsxs)(t.li,{children:[`To send to another number, save it first as a `,(0,h.jsx)(t.a,{href:`/developers/agentes/mcp/contactos`,children:`contact`}),`.`]}),` 13082`]}),` 13083`,(0,h.jsx)(t.h2,{id:`herramientas`,children:`Tools`}),` 13084`,(0,h.jsx)(n,{slug:`recordatorios`})]})}function ro(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(no,{...e})}):no(e)}function io(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var ao=t({default:()=>co,frontmatter:()=>oo}),oo={title:`Recurring billing`,kind:`mcp-tool`,access:`destructive`,status:`stable`,last_verified:`2026-09-02`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine y manifiesto generado), verificado 02-09-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/permisos`,`agentes/mcp/recetas`],description:`MCP tools to read recurring plans, subscribers and their payments, and to pause, reactivate or delete a subscriber.`};function so(e){let t={h2:`h2`,p:`p`,...m(),...e.components},{McpToolGroup:n}=t;return n||lo(`McpToolGroup`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`que-cubre`,children:`What it covers`}),` 13085`,(0,h.jsx)(t.p,{children:`Four read-only tools over recurring billing plans and their subscribers, plus one sensitive tool that pauses, reactivates or deletes a subscriber. That last one affects future charges: ask for human confirmation before running it.`}),` 13086`,(0,h.jsx)(t.h2,{id:`herramientas`,children:`Tools`}),` 13087`,(0,h.jsx)(n,{slug:`recurrentes`})]})}function co(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(so,{...e})}):so(e)}function lo(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var uo=t({default:()=>mo,frontmatter:()=>fo}),fo={title:`Support and diagnostics`,kind:`mcp-tool`,access:`read`,status:`stable`,last_verified:`2026-09-02`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (manifiesto y código), verificado 29-08-2026`,`Respuestas de TecnologÃa, 29-08-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/permisos`,`agentes/mcp/recetas`],description:`MCP tools to answer with the official guides and test the API connection.`};function po(e){let t={h2:`h2`,p:`p`,...m(),...e.components},{McpToolGroup:n}=t;return n||ho(`McpToolGroup`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`que-cubre`,children:`What it covers`}),` 13088`,(0,h.jsx)(t.p,{children:`Three read tools: one answers dashboard usage questions with the official guides at tilopay.com/guias, another tests the credentials and one endpoint of each API group to know which part responds when something fails, and the third analyses a code snippet or stack trace you pass it and returns a diagnosis, root cause, fix and risks. That last one does not read repositories and does not run code.`}),` 13089`,(0,h.jsx)(t.h2,{id:`herramientas`,children:`Tools`}),` 13090`,(0,h.jsx)(n,{slug:`soporte`})]})}function mo(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(po,{...e})}):po(e)}function ho(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var go=t({default:()=>yo,frontmatter:()=>_o}),_o={title:`Stored cards and bulk collections`,kind:`mcp-tool`,access:`destructive`,status:`stable`,last_verified:`2026-09-14`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Tilopay MCP server (Tilopay Insight Engine code, saved-cards group), verified 2026-09-14`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/recurrentes`,`agentes/mcp/permisos`],description:`MCP tools to store a customer card, charge it, remove it and work with bulk collection groups.`};function vo(e){let t={h2:`h2`,p:`p`,strong:`strong`,...m(),...e.components},{Callout:n,McpToolGroup:r}=t;return n||bo(`Callout`,!0),r||bo(`McpToolGroup`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`que-cubre`,children:`What it covers`}),` 13091`,(0,h.jsx)(t.p,{children:`This group works with the cards the merchant's customers already authorised to store 13092(tokenization) and with bulk collections against those cards.`}),` 13093`,(0,h.jsxs)(t.p,{children:[`How storing works: the agent generates a `,(0,h.jsx)(t.strong,{children:`secure link`}),` and shares it with the customer; the 13094customer types their card there. Neither the agent, nor the model, nor the merchant sees the full 13095number: the read tools return the brand and the last digits.`]}),` 13096`,(0,h.jsxs)(t.p,{children:[`The sensitive operations in this group â charging a stored card, removing a card and creating bulk 13097collections â require a `,(0,h.jsx)(t.strong,{children:`confirmation code`}),` sent to the merchant's email.`]}),` 13098`,(0,h.jsx)(n,{type:`note`,children:(0,h.jsx)(t.p,{children:`The API routes used by bulk collections live outside the portal reference, so these pages do not 13099publish them. What is documented is what each tool does, what it takes and what it returns.`})}),` 13100`,(0,h.jsx)(t.h2,{id:`herramientas`,children:`Tools`}),` 13101`,(0,h.jsx)(r,{slug:`tarjetas-guardadas`})]})}function yo(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(vo,{...e})}):vo(e)}function bo(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var xo=t({default:()=>wo,frontmatter:()=>So}),So={title:`Sales and transactions`,kind:`mcp-tool`,access:`destructive`,status:`stable`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (manifiesto y código), verificado 29-08-2026`,`Respuestas de TecnologÃa, 29-08-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/permisos`,`agentes/mcp/recetas`],description:`MCP tools to query transactions, measure sales and modify a transaction.`};function Co(e){let t={h2:`h2`,p:`p`,...m(),...e.components},{McpToolGroup:n}=t;return n||To(`McpToolGroup`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`que-cubre`,children:`What it covers`}),` 13102`,(0,h.jsx)(t.p,{children:`This group covers reading transactions and analysing the merchant sales, plus modifying a transaction: capture, refund or reversal. The modification moves real money and is marked as sensitive.`}),` 13103`,(0,h.jsx)(t.h2,{id:`herramientas`,children:`Tools`}),` 13104`,(0,h.jsx)(n,{slug:`ventas`})]})}function wo(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Co,{...e})}):Co(e)}function To(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Eo=t({default:()=>ko,frontmatter:()=>Do}),Do={title:`MCP server`,kind:`mcp-index`,status:`stable`,last_verified:`2026-09-23`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Tilopay MCP server code (Tilopay Insight Engine), verified 2026-09-23`],locales:[`es`,`en`],related:[`agentes`,`agentes/mcp/permisos`,`agentes/mcp/recetas`,`agentes/mcp/ventas`],description:`How to connect an MCP client to the Tilopay server with OAuth and the same Tilopay account credentials.`};function Oo(e){let t={a:`a`,code:`code`,h2:`h2`,li:`li`,ol:`ol`,p:`p`,strong:`strong`,ul:`ul`,...m(),...e.components},{Callout:n,ExternalLink:r}=t;return n||Ao(`Callout`,!0),r||Ao(`ExternalLink`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`acceso`,children:`How access works`}),` 13105`,(0,h.jsxs)(t.p,{children:[`Access is self-service: there is no registration form and no manual approval. The merchant 13106installs the connector with the server URL and, in the authorization window, signs in with the 13107`,(0,h.jsx)(t.strong,{children:`same credentials as their Tilopay account`}),` (email and password) and confirms the verification 13108code Tilopay sends. That automatically creates the assistant user, ties it to the merchant, and 13109registers the merchant's API credentials encrypted on the server side.`]}),` 13110`,(0,h.jsx)(t.p,{children:`Three things worth knowing:`}),` 13111`,(0,h.jsxs)(t.ol,{children:[` 13112`,(0,h.jsx)(t.li,{children:`The session is authorized with the Tilopay dashboard email and password, plus the verification 13113code. The assistant never sees or stores that password: the connection runs on OAuth 2.0.`}),` 13114`,(0,h.jsx)(t.li,{children:`Because the user is tied to one merchant, the agent only reaches the data and the operations of 13115that merchant.`}),` 13116`,(0,h.jsxs)(t.li,{children:[`The merchant never pastes its `,(0,h.jsx)(t.code,{children:`apiKey`}),`, `,(0,h.jsx)(t.code,{children:`apiUser`}),` or `,(0,h.jsx)(t.code,{children:`apiPassword`}),` into the MCP client.`]}),` 13117`]}),` 13118`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsx)(t.p,{children:`The merchant API credentials live encrypted on the Tilopay server and are decrypted on every call. 13119They are not pasted into the MCP client, nor into the assistant configuration file, and they are 13120never handed to the model. That is the security argument behind the whole design.`})}),` 13121`,(0,h.jsx)(t.h2,{id:`conexion`,children:`Connection`}),` 13122`,(0,h.jsxs)(t.p,{children:[`The server is `,(0,h.jsx)(t.code,{children:`https://mcp.tilopay.com/mcp`}),`. To connect:`]}),` 13123`,(0,h.jsxs)(t.ol,{children:[` 13124`,(0,h.jsx)(t.li,{children:`Add the server in the MCP client with that URL.`}),` 13125`,(0,h.jsxs)(t.li,{children:[`The client discovers authentication from the 401 with `,(0,h.jsx)(t.code,{children:`WWW-Authenticate`}),`, which points to 13126`,(0,h.jsx)(t.code,{children:`/.well-known/oauth-protected-resource`}),`.`]}),` 13127`,(0,h.jsx)(t.li,{children:`The client registers dynamically and opens the authorization screen.`}),` 13128`,(0,h.jsx)(t.li,{children:`The user signs in with their Tilopay account credentials, confirms the verification code and 13129sees a consent screen with the application requesting access, the return URL and the 13130permissions.`}),` 13131`,(0,h.jsx)(t.li,{children:`On approval, the client is connected.`}),` 13132`]}),` 13133`,(0,h.jsxs)(t.p,{children:[`The model is OAuth 2.0 with `,(0,h.jsx)(t.code,{children:`authorization_code`}),` and `,(0,h.jsx)(t.code,{children:`refresh_token`}),`. The client discovers the 13134identity provider endpoints on its own: the only thing to configure is the server URL.`]}),` 13135`,(0,h.jsx)(t.h2,{id:`clientes`,children:`From the most used MCP clients`}),` 13136`,(0,h.jsxs)(t.ul,{children:[` 13137`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`Claude`}),` (desktop and web): add a remote connector with the server URL and complete sign-in in 13138the window it opens. `,(0,h.jsx)(r,{href:`https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=Tilopay&connectorUrl=https://mcp.tilopay.com/mcp`,children:`Connect with Claude`})]}),` 13139`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`ChatGPT`}),`: add the server as a remote connector with that same URL; authorization completes in 13140the browser.`]}),`
13141`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`Cursor, VS Code and other editors`}),`: declare a remote HTTP MCP server with the URL, with no 13142token in the configuration file; the editor opens the browser to authorize.`]}),` 13143`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`Your own client`}),`: use an MCP client with Streamable HTTP transport and OAuth 2.0 support with 13144dynamic registration. The sequence is the one above: 401, discovery, registration, authorization, 13145connection.`]}),` 13146`]}),` 13147`,(0,h.jsxs)(t.p,{children:[`The transport is Streamable HTTP. The available tools are listed by group: 13148`,(0,h.jsx)(t.a,{href:`/en/developers/agentes/mcp/ventas`,children:`sales and transactions`}),`, 13149`,(0,h.jsx)(t.a,{href:`/en/developers/agentes/mcp/enlaces-de-pago`,children:`payment links`}),`, 13150`,(0,h.jsx)(t.a,{href:`/en/developers/agentes/mcp/catalogo`,children:`catalog`}),`, 13151`,(0,h.jsx)(t.a,{href:`/en/developers/agentes/mcp/contactos`,children:`contacts`}),`, 13152`,(0,h.jsx)(t.a,{href:`/en/developers/agentes/mcp/recurrentes`,children:`recurring billing`}),`, 13153`,(0,h.jsx)(t.a,{href:`/en/developers/agentes/mcp/soporte`,children:`support and diagnostics`}),`. 13154The `,(0,h.jsx)(t.a,{href:`/en/developers/agentes/mcp/api-bancario`,children:`banking API (BaaS)`}),` group is enabled on request and 13155only works for users with Tilopay banking API credentials. 13156Before connecting an agent, read `,(0,h.jsx)(t.a,{href:`/en/developers/agentes/mcp/permisos`,children:`what it can do`}),`.`]})]})}function ko(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Oo,{...e})}):Oo(e)}function Ao(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var jo=t({default:()=>Po,frontmatter:()=>Mo}),Mo={title:`AI agents`,kind:`guide`,status:`stable`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (manifiesto y código), verificado 29-08-2026`,`Respuestas de TecnologÃa, 29-08-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/permisos`,`agentes/documentacion-legible`,`agentes/mcp/recetas`],description:`The three planes Tilopay offers an AI agent: reading the documentation, operating the account through the MCP server, and integrating with the API and the SDK.`};function No(e){let t={a:`a`,code:`code`,h2:`h2`,li:`li`,p:`p`,ul:`ul`,...m(),...e.components};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`leer`,children:`Read`}),` 13157`,(0,h.jsxs)(t.p,{children:[`The whole portal is available in machine-readable form: the 13158`,(0,h.jsx)(t.a,{href:`https://www.tilopay.com/en/llms.txt`,children:(0,h.jsx)(t.code,{children:`llms.txt`})}),` index, the raw Markdown of any URL on the site 13159by adding `,(0,h.jsx)(t.code,{children:`.md`}),`, the API `,(0,h.jsx)(t.a,{href:`/developers/openapi.json`,children:(0,h.jsx)(t.code,{children:`openapi.json`})}),` and the MCP server 13160`,(0,h.jsx)(t.a,{href:`/developers/mcp.json`,children:(0,h.jsx)(t.code,{children:`mcp.json`})}),`.`]}),` 13161`,(0,h.jsx)(t.h2,{id:`actuar`,children:`Act on behalf of the merchant`}),` 13162`,(0,h.jsxs)(t.p,{children:[`The `,(0,h.jsx)(t.a,{href:`/en/developers/agentes/mcp`,children:`MCP server`}),` lets an assistant operate the merchant account: 13163query sales, create payment links, issue refunds. Access is self-service â you sign in with your 13164Tilopay credentials â and the merchant credentials never leave the Tilopay server.`]}),` 13165`,(0,h.jsx)(t.h2,{id:`integrar`,children:`Integrate into a product`}),` 13166`,(0,h.jsxs)(t.p,{children:[`When you are building a product that charges, the path is the `,(0,h.jsx)(t.a,{href:`/en/developers/sdk`,children:`JavaScript SDK`}),` 13167and the `,(0,h.jsx)(t.a,{href:`/en/developers/api/autenticacion`,children:`Acquiring API`}),`, not the MCP.`]}),` 13168`,(0,h.jsx)(t.h2,{id:`cual-elegir`,children:`Which one to choose`}),` 13169`,(0,h.jsxs)(t.ul,{children:[` 13170`,(0,h.jsxs)(t.li,{children:[`Operate the account from an assistant â `,(0,h.jsx)(t.a,{href:`/en/developers/agentes/mcp`,children:`MCP server`}),`.`]}),` 13171`,(0,h.jsxs)(t.li,{children:[`Build a product that charges â `,(0,h.jsx)(t.a,{href:`/en/developers/api/autenticacion`,children:`API`}),` and `,(0,h.jsx)(t.a,{href:`/en/developers/sdk`,children:`SDK`}),`.`]}),` 13172`,(0,h.jsxs)(t.li,{children:[`Feed an agent with the documentation â `,(0,h.jsx)(t.a,{href:`/en/developers/agentes/documentacion-legible`,children:`machine-readable documentation`}),`.`]}),` 13173`]}),` 13174`,(0,h.jsxs)(t.p,{children:[`MCP access is self-service: install the connector and sign in with your Tilopay credentials, as 13175the `,(0,h.jsx)(t.a,{href:`/en/developers/agentes/mcp`,children:`MCP server page`}),` explains.`]})]})}function Po(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(No,{...e})}):No(e)}var Fo=t({default:()=>Ro,frontmatter:()=>Io}),Io={title:`API · Get API token`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/procesos-operativos/errors`],description:`API login o
13175peration: returns the bearer token that signs every other call.`,gaps:[`Present in the collection example but absent from the endpoint description.`]};function Lo(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{Param:n}=t;return n||zo(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/login`})]})})})}),` 13176`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`What it does`}),` 13177`,(0,h.jsxs)(t.p,{children:[`Returns the security token needed to consume the API services. The API user and password come from `,(0,h.jsx)(t.a,{href:`https://admin.tilopay.com/admin/checkout`,children:`Admin · Tilopay Checkout`}),`.`]}),` 13178`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Authentication`}),` 13179`,(0,h.jsxs)(t.p,{children:[`It does not require a token: this is the operation that issues it. See `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`authentication`}),`.`]}),` 13180`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parameters`}),` 13181`,(0,h.jsx)(n,{id:`token-api-parametro-apiuser`,name:`apiuser`,type:`string`,children:(0,h.jsx)(t.p,{children:`Merchant API user, obtained in Admin · Tilopay Checkout.`})}),` 13182`,(0,h.jsx)(n,{id:`token-api-parametro-password`,name:`password`,type:`string`,children:(0,h.jsx)(t.p,{children:`Merchant API password, obtained in Admin · Tilopay Checkout.`})}),` 13183`,(0,h.jsx)(t.h2,{id:`request`,children:`Request example`}),` 13184`,(0,h.jsxs)(t.p,{children:[`The `,(0,h.jsx)(t.code,{children:`<...>`}),` values are placeholders: replace them with your own credentials and data.`]}),` 13185`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 13186`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "apiuser"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_user>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13187`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "password"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_password>"`})]}),` 13188`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 13189`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Response`}),` 13190`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 13191`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "access_token"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<jwt>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13192`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "token_type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"bearer"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13193`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "expires_in"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`86400`})]}),` 13194`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 13195`,(0,h.jsxs)(t.p,{children:[`To interpret a response that is not a success, see `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`how to read an error response`}),`.`]})]})}function Ro(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Lo,{...e})}):Lo(e)}function zo(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Bo=t({default:()=>Uo,frontmatter:()=>Vo}),Vo={title:`API · Get SDK token`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/procesos-operativos/errors`],description:`SDK login: returns the token that Tilopay.Init() uses in the browser.`,gaps:[`Present in the collection example but absent from the endpoint description.`]};function Ho(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{Param:n}=t;return n||Wo(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/loginSdk`})]})})})}),` 13196`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`What it does`}),` 13197`,(0,h.jsxs)(t.p,{children:[`Returns the security token needed to consume the SDK. All three credentials come from `,(0,h.jsx)(t.a,{href:`https://admin.tilopay.com/admin/checkout`,children:`Admin · Tilopay Checkout`}),`.`]}),` 13198`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Authentication`}),` 13199`,(0,h.jsxs)(t.p,{children:[`It does not require a token: this is the operation that issues it. See `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`authentication`}),`.`]}),` 13200`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parameters`}),` 13201`,(0,h.jsx)(n,{id:`token-sdk-parametro-apiuser`,name:`apiuser`,type:`string`,children:(0,h.jsx)(t.p,{children:`Merchant API user.`})}),` 13202`,(0,h.jsx)(n,{id:`token-sdk-parametro-password`,name:`password`,type:`string`,children:(0,h.jsx)(t.p,{children:`Merchant API password.`})}),` 13203`,(0,h.jsx)(n,{id:`token-sdk-parametro-key`,name:`key`,type:`string`,children:(0,h.jsx)(t.p,{children:`Merchant api key.`})}),` 13204`,(0,h.jsx)(t.h2,{id:`request`,children:`Request example`}),` 13205`,(0,h.jsxs)(t.p,{children:[`The `,(0,h.jsx)(t.code,{children:`<...>`}),` values are placeholders: replace them with your own credentials and data.`]}),` 13206`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 13207`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "apiuser"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_user>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13208`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "password"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_password>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13209`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`})]}),` 13210`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 13211`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Response`}),` 13212`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 13213`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "access_token"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`}
13213,children:`"351d477adaaa51cdbb33ae4b4b8c843aa759f131c1c38415180b5035543d59d2f23f4e049706f5fa71c5f0d9ff763960a3cd035b4c1cefa428c90bedb672f780"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13214`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "token_type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"bearer"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13215`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "expires_in"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2023-06-05 13:32:06"`})]}),` 13216`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 13217`,(0,h.jsxs)(t.p,{children:[`To interpret a response that is not a success, see `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`how to read an error response`}),`.`]})]})}function Uo(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Ho,{...e})}):Ho(e)}function Wo(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Go=t({default:()=>Jo,frontmatter:()=>Ko}),Ko={title:`API · Authentication`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-28`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Respuestas de TecnologÃa, 28-08-2026`],locales:[`es`,`en`],related:[`entornos`,`sdk/instalacion`,`api/hosted-payment-page`],description:`How to get the API token and the SDK token, how long each lasts, and how to send them on every call.`};function qo(e){let t={a:`a`,code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,table:`table`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,...m(),...e.components},{Callout:n,Param:r}=t;return n||Yo(`Callout`,!0),r||Yo(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(t.p,{children:[`The whole API and the SDK live on a single host: `,(0,h.jsx)(t.code,{children:`https://app.tilopay.com`}),`. There is no 13218separate host for testing â see `,(0,h.jsx)(t.a,{href:`/developers/entornos`,children:`environments`}),`.`]}),` 13219`,(0,h.jsx)(t.h2,{id:`operaciones`,children:`The two operations`}),` 13220`,(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Operation`}),(0,h.jsx)(t.th,{children:`Path`}),(0,h.jsx)(t.th,{children:`What for`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`API token`}),(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`POST /api/v1/login`})}),(0,h.jsx)(t.td,{children:`Server-to-server API calls`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`SDK token`}),(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`POST /api/v1/loginSdk`})}),(0,h.jsxs)(t.td,{children:[`The token passed to `,(0,h.jsx)(t.code,{children:`Tilopay.Init()`})]})]})]})]}),` 13221`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.code,{children:`loginSdk`}),` is the method the previous article called "GetTokenSdk". It is the same one.`]}),` 13222`,(0,h.jsx)(t.h2,{id:`token-api`,children:`Get the API token`}),` 13223`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:`curl`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` -X`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:` POST`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:` https://app.tilopay.com/api/v1/login`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` \\`})]}),` 13224`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` -H`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:` "Content-Type: application/json"`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` \\`})]}),` 13225`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` -d`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:` '{ "apiuser": "YOUR_APIUSER", "password": "YOUR_PASSWORD" }'`})]})]})})}),` 13226`,(0,h.jsx)(t.h3,{id:`cuerpo`,children:`Body`}),` 13227`,(0,h.jsx)(r,{id:`login-apiuser`,name:`apiuser`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`The merchant API user.`})}),` 13228`,(0,h.jsx)(r,{id:`login-password`,name:`password`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`The merchant API password.`})}),` 13229`,(0,h.jsx)(t.h3,{id:`respuesta`,children:`Response`}),` 13230`,(0,h.jsx)(r,{id:`login-access-token`,name:`access_token`,type:`string`,children:(0,h.jsx)(t.p,{children:`The token to
13230send on subsequent calls.`})}),` 13231`,(0,h.jsx)(r,{id:`login-token-type`,name:`token_type`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Always `,(0,h.jsx)(t.code,{children:`bearer`}),`.`]})}),` 13232`,(0,h.jsx)(r,{id:`login-expires-in`,name:`expires_in`,type:`integer`,children:(0,h.jsx)(t.p,{children:`Token lifetime. The exact value comes in this response: do not assume it on the client.`})}),` 13233`,(0,h.jsx)(t.h2,{id:`token-sdk`,children:`Get the SDK token`}),` 13234`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:`curl`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` -X`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:` POST`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:` https://app.tilopay.com/api/v1/loginSdk`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` \\`})]}),` 13235`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` -H`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:` "Content-Type: application/json"`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` \\`})]}),` 13236`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` -d`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:` '{ "apiuser": "YOUR_APIUSER", "password": "YOUR_PASSWORD" }'`})]})]})})}),` 13237`,(0,h.jsxs)(t.p,{children:[`The resulting token is the one passed to the `,(0,h.jsx)(t.code,{children:`token`}),` parameter of 13238`,(0,h.jsx)(t.a,{href:`/developers/sdk/reference/init`,children:(0,h.jsx)(t.code,{children:`Tilopay.Init()`})}),`.`]}),` 13239`,(0,h.jsx)(t.h2,{id:`vigencia`,children:`Lifetime`}),` 13240`,(0,h.jsxs)(t.ul,{children:[` 13241`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.strong,{children:`API token: 24 hours.`})}),` 13242`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.strong,{children:`SDK token: 1 hour.`})}),` 13243`]}),` 13244`,(0,h.jsxs)(t.p,{children:[`The exact value always arrives in `,(0,h.jsx)(t.code,{children:`expires_in`}),`. Cache it server-side and renew on expiry.`]}),` 13245`,(0,h.jsx)(t.h2,{id:`envio`,children:`How it is sent`}),` 13246`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#85E89D`},children:`Authorization`}),(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`:`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:` bearer <token>`})]})})})}),` 13247`,(0,h.jsx)(t.h2,{id:`revocacion`,children:`Revocation and limits`}),` 13248`,(0,h.jsxs)(t.ul,{children:[` 13249`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`Tokens cannot be revoked.`}),` If a token leaks there is no operation to invalidate it: 13250treat the leak as an incident and rotate credentials with Tilopay.`]}),` 13251`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`There is no limit`}),` on concurrent tokens per merchant. You can request one per process 13252without invalidating the previous ones.`]}),` 13253`]}),` 13254`,(0,h.jsx)(t.h2,{id:`credenciales`,children:`Where credentials come from`}),` 13255`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.code,{children:`apiuser`}),`, `,(0,h.jsx)(t.code,{children:`password`}),` and `,(0,h.jsx)(t.code,{children:`key`}),` are obtained in the merchant panel at 13256`,(0,h.jsx)(t.code,{children:`admin.tilopay.com/admin/checkout`}),`. If you do not have access yet, start with 13257`,(0,h.jsx)(t.a,{href:`/developers/registro`,children:`developer registration`}),`.`]}),` 13258`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsxs)(t.p,{children:[`Never put `,(0,h.jsx)(t.code,{children:`apiuser`}),` or `,(0,h.jsx)(t.code,{children:`password`}),` in the browser. The login runs on your server; only the 13259SDK token reaches the browser.`]})})]})}function Jo(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(qo,{...e})}):qo(e)}function Yo(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Xo=t({default:()=>$o,frontmatter:()=>Zo}),Zo={title:`API · processTokenize`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/cof`,`api/procesos-operativos/errors`],description:`Card tokenization with processTokenize: parameters, request and response.`,gaps:[`These error examples were saved without an HTTP status code. It is not possible to tell from the collection whether the API returns HTTP 4xx or HTTP 200 with an error body.`]};function Qo(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{Param:n}=t;return n||es(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/processTokenize`})]})})})}),` 13260`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`What it does`}),` 13261`,(0,h.jsx)(t.p,{children:`Tokenizes a card: returns the URL of the tokenization form.`}),` 13262`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Authentication`}),` 13263`,(0,h.jsxs)(t.p,{children:[`Requires the API bearer token in the `,(0,h.jsx)(t.code,{children:`Authorization`}),` header â see `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`authentication`}),`.`]}),` 13264`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parameters`}),` 13265`,(0,h.jsx)(n,{id:`process-tokenize-parametro-redirect`,name:`redirect`,type:`string`,children:(0,h.jsx)(t.p,{children:`Site where you wait for the transaction response.`})}),` 13266`,(0,h.jsx)(n,{id:`process-tokenize-parametro-key`,name:`key`,type:`string`,children:(0,h.jsx)(t.p,{children:`Key associated with the merchant.`})}),` 13267`,(0,h.jsx)(n,{id:`process-tokenize-parametro-email`,name:`email`,type:`string`,children:(0,h.jsx)(t.p,{children:`Cardholder email.`})}),` 13268`,(0,h.jsx)(n,{id:`process-tokenize-parametro-language`,name:`language`,type:`string`,children:(0,h.jsx)(t.p,{children:`Language [es, en].`})}),` 13269`,(0,h.jsx)(n,{id:`process-tokenize-parametro-firstname`,name:`firstName`,type:`string`,children:(0,h.jsx)(t.p,{children:`Cardholder first name.`})}),` 13270`,(0,h.jsx)(n,{id:`process-tokenize-parametro-lastname`,name:`lastName`,type:`string`,children:(0,h.jsx)(t.p,{children:`Cardholder last name.`})}),` 13271`,(0,h.jsx)(n,{id:`process-tokenize-parametro-token-version`,name:`token_version`,type:`string`,children:(0,h.jsx)(t.p,{children:`Send as value "v2".`})}),` 13272`,(0,h.jsx)(t.h2,{id:`request`,children:`Request example`}),` 13273`,(0,h.jsxs)(t.p,{children:[`The `,(0,h.jsx)(t.code,{children:`<...>`}),` values are placeholders: replace them with your own credentials and data.`]}),` 13274`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 13275`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "redirect"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://urlToRedirect.com"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13276`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13277`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "email"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"[email protected]"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13278`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "language"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"es"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13279`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "firstName"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"name"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13280`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "lastName"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"lastname"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13281`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "token_version"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"v2"`})]}),` 13282`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 13283`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Response`}),` 13284`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 13285`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"100"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13286`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`}
13286,children:`"https://secure.tilopay.com/htmls/TOK-5063-740506121440_1648145457file.html"`})]}),` 13287`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 13288`,(0,h.jsxs)(t.p,{children:[`To interpret a response that is not a success, see `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`how to read an error response`}),`.`]})]})}function $o(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Qo,{...e})}):Qo(e)}function es(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var ts=t({default:()=>is,frontmatter:()=>ns}),ns={title:`API · CoF · Charge`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/cof`,`api/procesos-operativos/errors`],description:`Server-to-server charge with a v2 card token through Credential on File.`,gaps:[`These error examples were saved without an HTTP status code. It is not possible to tell from the collection whether the API returns HTTP 4xx or HTTP 200 with an error body.`]};function rs(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{Param:n}=t;return n||as(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/processRecurrentPayment`})]})})})}),` 13289`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`What it does`}),` 13290`,(0,h.jsx)(t.p,{children:`Processes a charge with an already tokenized card, without a form.`}),` 13291`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Authentication`}),` 13292`,(0,h.jsxs)(t.p,{children:[`Requires the API bearer token in the `,(0,h.jsx)(t.code,{children:`Authorization`}),` header â see `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`authentication`}),`.`]}),` 13293`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parameters`}),` 13294`,(0,h.jsx)(n,{id:`realizar-cobro-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Key associated with the customer. It is obtained in Admin · Tilopay Checkout.`})}),` 13295`,(0,h.jsx)(n,{id:`realizar-cobro-parametro-amount`,name:`amount`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Purchase amount.`})}),` 13296`,(0,h.jsx)(n,{id:`realizar-cobro-parametro-currency`,name:`currency`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Purchase currency in ISO format, for example USD, CRC, GTQ.`})}),` 13297`,(0,h.jsx)(n,{id:`realizar-cobro-parametro-ordernumber`,name:`orderNumber`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Order number, it can be alphanumeric.`})}),` 13298`,(0,h.jsx)(n,{id:`realizar-cobro-parametro-capture`,name:`capture`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Capture and authorize: 1 yes, 0 no.`})}),` 13299`,(0,h.jsx)(n,{id:`realizar-cobro-parametro-email`,name:`email`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Cardholder email.`})}),` 13300`,(0,h.jsx)(n,{id:`realizar-cobro-parametro-card`,name:`card`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Card token. It must be the v2 token.`})}),` 13301`,(0,h.jsx)(t.h2,{id:`request`,children:`Request example`}),` 13302`,(0,h.jsxs)(t.p,{children:[`The `,(0,h.jsx)(t.code,{children:`<...>`}),` values are placeholders: replace them with your own credentials and data.`]}),` 13303`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 13304`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13305`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"10.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13306`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13307`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "orderNumber"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1213"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13308`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "capture"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13309`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "email"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"[email protected]"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13310`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "card"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"511111_00GOB1111"`})]}),` 13311`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 13312`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Response`}),` 13313`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 13314`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"200"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13315`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "response"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13316`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Transacción aprobada"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13317`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "auth"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"123456"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13318`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "tpt"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`734329`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13319`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "order_id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"12135"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13320`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "tilopayTransaction"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`734329`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13321`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "orderHash"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"f3ad85046d249bc7a781eed5285a5ded92045a2e11108063504deec72ec9b338"`})]}),` 13322`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 13323`,(0,h.jsxs)(t.p,{children:[`To interpret a response that is not a success, see `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`how to read an error response`}),`.`]})]})}function is(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(rs,{...e})}):rs(e)}function as(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var os=t({default:()=>ls,frontmatter:()=>ss}),ss={title:`API · Remove card`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/cof`,`api/procesos-operativos/errors`],description:`Removal of a saved card token from the merchant's private vault.`,gaps:[`No response example available.`]};function cs(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,...m(),...e.components},{Param:n}=t;return n||us(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/user/card-remove`})]})})})}),` 13324`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`What it does`}),` 13325`,(0,h.jsxs)(t.p,{children:[`Removes a saved card token. `,(0,h.jsx)(t.strong,{children:`Requirement:`}),` the merchant must have a private token vault.`]}),` 13326`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Authentication`}),` 13327`,(0,h.jsxs)(t.p,{children:[`Requires the API bearer token in the `,(0,h.jsx)(t.code,{children:`Authorization`}),` header â see `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`authentication`}),`.`]}),` 13328`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parameters`}),` 13329`,(0,h.jsx)(n,{id:`remove-card-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Key associated with the merchant.`})}),` 13330`,(0,h.jsx)(n,{id:`remove-card-parametro-email`,name:`email`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Customer email associated with the token.`})}),` 13331`,(0,h.jsx)(n,{id:`remove-card-parametro-token`,name:`token`,type:`string`,children:(0,h.jsx)(t.p,{children:`Token to remove.`})}),` 13332`,(0,h.jsx)(t.h2,{id:`request`,children:`Request example`}),` 13333`,(0,h.jsxs)(t.p,{children:[`The `,(0,h.jsx)(t.code,{children:`<...>`}),` values are placeholders: replace them with your own credentials and data.`]}),` 13334`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 13335`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1234-1234-1234-1234-1234"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13336`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "email"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"[email protected]"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13337`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "token"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"411111.......1111"`})]}),` 13338`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 13339`,(0,h.jsxs)(t.p,{children:[`To interpret a response that is not a success, see `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`how to read an error response`}),`.`]})]})}function ls(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(cs,{...e})}):cs(e)}function us(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var ds=t({default:()=>ms,frontmatter:()=>fs}),fs={title:`API · Credential on File (CoF)`,kind:`api-index`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/procesos-operativos/errors`],description:`Credential on File (CoF) operations of the Tilopay API, with parameters and examples.`};function ps(e){let t={a:`a`,code:`code`,h2:`h2`,li:`li`,p:`p`,ul:`ul`,...m(),...e.components};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`operaciones`,children:`Operations`}),` 13340`,(0,h.jsx)(t.p,{children:`3 operations:`}),` 13341`,(0,h.jsxs)(t.ul,{children:[` 13342`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.a,{href:`/developers/api/cof/process-tokenize`,children:`Tokenize c
13342ard`}),` â 1`]}),` 13343`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.a,{href:`/developers/api/cof/remove-card`,children:`Remove card`}),` â 1`]}),` 13344`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.a,{href:`/developers/api/cof/realizar-cobro`,children:`Charge`}),` â 1`]}),` 13345`]}),` 13346`,(0,h.jsxs)(t.p,{children:[`Every operation lives on `,(0,h.jsx)(t.code,{children:`https://app.tilopay.com`}),` and, except for the login operations, requires the API token â see `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`authentication`}),`.`]})]})}function ms(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(ps,{...e})}):ps(e)}var hs=t({default:()=>vs,frontmatter:()=>gs}),gs={title:`API · Response conventions`,kind:`concept`,status:`stable`,api_version:`v1`,last_verified:`2026-09-02`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Respuestas de TecnologÃa, 02-09-2026 (hoja de preguntas v2, validada)`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/procesos-operativos/errors`,`reintentos-seguros`],description:`How amounts are typed, where a JSON payload hides inside a string and why the same entity changes shape between fetching one and listing many.`};function _s(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,table:`table`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,...m(),...e.components},{Callout:n}=t;return n||ys(`Callout`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.p,{children:`The acquiring API responses have three details that you cannot infer by reading each 13347operation on its own, and that break typed integrations. They live here because they apply 13348to several operations at once.`}),` 13349`,(0,h.jsxs)(t.p,{children:[`For error handling, see `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`how to read an error response`}),`.`]}),` 13350`,(0,h.jsx)(t.h2,{id:`montos-cadena`,children:`Amounts come as strings, not numbers`}),` 13351`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsxs)(t.p,{children:[`Amounts, discounts and totals are serialized as strings: `,(0,h.jsx)(t.code,{children:`"discount": "40.00"`}),`, 13352`,(0,h.jsx)(t.code,{children:`"amount": "0.00"`}),`, `,(0,h.jsx)(t.code,{children:`"first_amount": "0.00"`}),`, `,(0,h.jsx)(t.code,{children:`"amount_max_daily": "1000.00"`}),`.`]})}),` 13353`,(0,h.jsx)(t.p,{children:`Any typed deserialization that declares those fields as numbers fails. Declare them as 13354strings and convert them yourself, with your language's decimal type, not with floating 13355point.`}),` 13356`,(0,h.jsxs)(t.p,{children:[`It shows up, among others, in `,(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/cupones/get-coupon`,children:`get a coupon`}),`, 13357`,(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/cupones/get-coupons`,children:`list coupons`}),`, 13358`,(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/planes/get-plans`,children:`list plans`}),` and 13359`,(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/suscriptores/suscriptor-payments`,children:`subscriber payments`}),`.`]}),` 13360`,(0,h.jsx)(t.h2,{id:`doble-encoding`,children:`There is a JSON payload inside a string`}),` 13361`,(0,h.jsxs)(t.p,{children:[`In `,(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/suscriptores/suscriptor-payments`,children:`subscriber payments`}),`, the 13362`,(0,h.jsx)(t.code,{children:`data`}),` field of each payment `,(0,h.jsx)(t.strong,{children:`is not an object: it is a string containing JSON`}),`.`]}),` 13363`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"data"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"{`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`\\"`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`first`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`\\"`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`:1,`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`\\"`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`expire`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`\\"`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`:`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`\\"`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`2024-12-28T19:05:29.572648Z`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`\\"`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`,`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`\\"`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`amount`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`\\"`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`:0,`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`\\"`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`activeAmount`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`\\"`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`:0,`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`\\"`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`originalAmount`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`\\"`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`:0,`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`\\"`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`key`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`\\"`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`:`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`\\"`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`XXXX-XXXX-XXXX-XXXX-XXXX`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`\\"`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`}"`})]})})})}),` 13364`,(0,h.jsxs)(t.p,{children:[`You have to deserialize twice: first the response, then the contents of `,(0,h.jsx)(t.code,{children:`data`}),`. Treat that 13365second deserialization the way you treat any external input: wrap it and log the raw string 13366when it does not parse.`]}),` 13367`,(0,h.jsx)(t.h2,{id:`uno-vs-lista`,children:`The same entity changes shape between "get one" and "list"`}),` 13368`,(0,h.jsx)(t.p,{children:`This is not a documentation slip: the two operations return different shapes of the same 13369coupon, and each needs its own mapping.`}),` 13370`,(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{}),(0,h.jsxs)(t.th,{children:[(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/cupones/get
13370-coupon`,children:(0,h.jsx)(t.code,{children:`getCoupon`})}),` (one)`]}),(0,h.jsxs)(t.th,{children:[(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/cupones/get-coupons`,children:(0,h.jsx)(t.code,{children:`getRepeatCoupons`})}),` (list)`]})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Creation date`}),(0,h.jsxs)(t.td,{children:[(0,h.jsx)(t.code,{children:`created_at`}),`, ISO format`]}),(0,h.jsxs)(t.td,{children:[(0,h.jsx)(t.code,{children:`create`}),`, `,(0,h.jsx)(t.code,{children:`Y-m-d H:i:s`}),` format`]})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Other fields`}),(0,h.jsxs)(t.td,{children:[`includes `,(0,h.jsx)(t.code,{children:`recurrent_id`}),`, `,(0,h.jsx)(t.code,{children:`updated_at`}),` and `,(0,h.jsx)(t.code,{children:`deleted_at`})]}),(0,h.jsx)(t.td,{children:`does not include them`})]})]})]}),` 13371`,(0,h.jsxs)(t.p,{children:[`The same happens in 13372`,(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/suscriptores/suscriptor-payments`,children:`subscriber payments`}),`, which 13373also uses `,(0,h.jsx)(t.code,{children:`create`}),` with the `,(0,h.jsx)(t.code,{children:`Y-m-d H:i:s`}),` format.`]}),` 13374`,(0,h.jsx)(t.h2,{id:`no-configurado`,children:`Two ways of saying "not configured"`}),` 13375`,(0,h.jsxs)(t.p,{children:[`In `,(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/planes/get-plans`,children:`list plans`}),`, a plan's webhook fields come 13376as an empty string when they are not configured, while `,(0,h.jsx)(t.code,{children:`return_url`}),` comes as `,(0,h.jsx)(t.code,{children:`null`}),`. Those 13377are two representations of the same state in the same object: when checking whether a 13378webhook is configured, treat the empty string and `,(0,h.jsx)(t.code,{children:`null`}),` as the same case.`]})]})}function vs(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(_s,{...e})}):_s(e)}function ys(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var bs=t({default:()=>Cs,frontmatter:()=>xs}),xs={title:`API · processPayment`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/hosted-payment-page`,`api/procesos-operativos/errors`],description:`Parameters, request example and response of processPayment, the operation that opens the payment form.`,gaps:[`These error examples were saved without an HTTP status code. It is not possible to tell from the collection whether the API returns HTTP 4xx or HTTP 200 with an error body.`]};function Ss(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,...m(),...e.components},{Param:n}=t;return n||ws(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/processPayment`})]})})})}),` 13379`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`What it does`}),` 13380`,(0,h.jsx)(t.p,{children:`Returns the URL of the payment form for a purchase.`}),` 13381`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Authentication`}),` 13382`,(0,h.jsxs)(t.p,{children:[`Requires the API bearer token in the `,(0,h.jsx)(t.code,{children:`Authorization`}),` header â see `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`authentication`}),`.`]}),` 13383`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parameters`}),` 13384`,(0,h.jsx)(n,{id:`process-payment-parametro-redirect`,name:`redirect`,type:`string`,required:!0,children:(0,h.jsxs)(t.p,{children:[`Site where you wait for the transaction response, for example `,(0,h.jsx)(t.code,{children:`mywebsite.com`}),`. It must support the `,(0,h.jsx)(t.strong,{children:`GET`}),` method. Example response to the redirect: `,(0,h.jsx)(t.code,{children:`mywebsite.com?code=1&description=Transaction%20is%20approved.&auth=123456&order=TPYS-881WROIBQA1405468&tpt=4300&crd=&tilopay-transaction=4300&OrderHash=b02927cb...&returnData=Tilopay-dataReturn123456789&form_update=ok`}),`. When `,(0,h.jsx)(t.code,{children:`code = 1`}),` the transaction is approved; anything else is declined. `,(0,h.jsx)(t.code,{children:`OrderHash`}),` is a unique string per transaction: to use it on the merchant side, write to `,(0,h.jsx)(t.code,{children:`[email protected]`}),` for instructions.`]})}),` 13385`,(0,h.jsx)(n,{id:`process-payment-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Key associated with the customer. It is obtained in Admin · Tilopay Checkout.`})}),` 13386`,(0,h.jsx)(n,{id:`process-payment-parametro-amount`,name:`amount`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Purchase amount.`})}),` 13387`,(0,h.jsx)(n,{id:`process-payment-parametro-currency`,name:`currency`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Purchase currency in ISO format, for example USD, CRC, GTQ.`})}),` 13388`,(0,h.jsx)(n,{id:`process-payment-parametro-ordernumber`,name:`orderNumber`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Order number, it can be alphanumeric.`})}),` 13389`,(0,h.jsx)(n,{id:`process-payment-parametro-capture`,name:`capture`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Capture and authorize: 1 yes, 0 no.`})}),` 13390`,(0,h.jsx)(n,{id:`process-payment-parametro-billtofirstname`,name:`billToFirstName`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`First name.`})}),` 13391`,(0,h.jsx)(n,{id:`process-payment-parametro-billtolastname`,name:`billToLastName`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Last names.`})}),` 13392`,(0,h.jsx)(n,{id:`process-payment-parametro-billtoaddress`,name:`billToAddress`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Address.`})}),` 13393`,(0,h.jsx)(n,{id:`process-payment-parametro-billtoaddress2`,name:`billToAddress2`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Address 2.`})}),` 13394`,(0,h.jsx)(n,{id:`process-payment-parametro-billtocity`,name:`billToCity`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`City.`})}),` 13395`,(0,h.jsx)(n,{id:`process-payment-parametro-billtostate`,name:`billToState`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`State in ISO format, for example CR-SJ (San José, Costa Rica) or US-CA
13395(California, USA).`})}),` 13396`,(0,h.jsx)(n,{id:`process-payment-parametro-billtozippostcode`,name:`billToZipPostCode`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Post code.`})}),` 13397`,(0,h.jsx)(n,{id:`process-payment-parametro-billtocountry`,name:`billToCountry`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Country in ISO Alpha-2 code, for example CR (Costa Rica), US (USA) or GT (Guatemala).`})}),` 13398`,(0,h.jsx)(n,{id:`process-payment-parametro-billtotelephone`,name:`billToTelephone`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Telephone.`})}),` 13399`,(0,h.jsx)(n,{id:`process-payment-parametro-billtoemail`,name:`billToEmail`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Buyer email.`})}),` 13400`,(0,h.jsx)(n,{id:`process-payment-parametro-shiptofirstname`,name:`shipToFirstName`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`First name.`})}),` 13401`,(0,h.jsx)(n,{id:`process-payment-parametro-shiptolastname`,name:`shipToLastName`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Last names.`})}),` 13402`,(0,h.jsx)(n,{id:`process-payment-parametro-shiptoaddress`,name:`shipToAddress`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Address.`})}),` 13403`,(0,h.jsx)(n,{id:`process-payment-parametro-shiptoaddress2`,name:`shipToAddress2`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Address 2.`})}),` 13404`,(0,h.jsx)(n,{id:`process-payment-parametro-shiptocity`,name:`shipToCity`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`City.`})}),` 13405`,(0,h.jsx)(n,{id:`process-payment-parametro-shiptostate`,name:`shipToState`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`State in ISO format, for example CR-SJ (San José, Costa Rica) or US-CA (California, USA).`})}),` 13406`,(0,h.jsx)(n,{id:`process-payment-parametro-shiptozippostcode`,name:`shipToZipPostCode`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Post code.`})}),` 13407`,(0,h.jsx)(n,{id:`process-payment-parametro-shiptocountry`,name:`shipToCountry`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Country in ISO Alpha-2 code, for example CR (Costa Rica), US (USA) or GT (Guatemala).`})}),` 13408`,(0,h.jsx)(n,{id:`process-payment-parametro-shiptotelephone`,name:`shipToTelephone`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Telephone.`})}),` 13409`,(0,h.jsx)(n,{id:`process-payment-parametro-subscription`,name:`subscription`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`1 to force the customer to save the card in Tilopay, 0 not to.`})}),` 13410`,(0,h.jsx)(n,{id:`process-payment-parametro-platform`,name:`platform`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`N
13410ame of the platform where the transaction is generated.`})}),` 13411`,(0,h.jsx)(n,{id:`process-payment-parametro-returndata`,name:`returnData`,type:`string`,children:(0,h.jsx)(t.p,{children:`Value that Tilopay returns in the final response. Sending a base 64 string is recommended.`})}),` 13412`,(0,h.jsx)(n,{id:`process-payment-parametro-hashversion`,name:`hashVersion`,type:`string`,children:(0,h.jsx)(t.p,{children:`Only used when implementing hash verification. Possible values [V1, V2]; V1 by default.`})}),` 13413`,(0,h.jsx)(n,{id:`process-payment-parametro-token-version`,name:`token_version`,type:`string`,children:(0,h.jsx)(t.p,{children:`Send as value "v2".`})}),` 13414`,(0,h.jsx)(t.h2,{id:`request`,children:`Request example`}),` 13415`,(0,h.jsxs)(t.p,{children:[`The `,(0,h.jsx)(t.code,{children:`<...>`}),` values are placeholders: replace them with your own credentials and data.`]}),` 13416`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 13417`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "redirect"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://www.urlToRedirect.com"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13418`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13419`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13420`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13421`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "orderNumber"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1212122"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13422`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "capture"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13423`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "billToFirstName"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"DEMO"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13424`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "billToLastName"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"DEMO"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13425`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "billToAddress"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"San Jose"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13426`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "billToAddress2"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Catedral"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13427`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "billToCity"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"JS"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13428`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "billToState"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"SJ"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13429`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`}
13429,children:` "billToZipPostCode"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"10061"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13430`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "billToCountry"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"CR"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13431`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "billToTelephone"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"88888888"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13432`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "billToEmail"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"[email protected]"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13433`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "shipToFirstName"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"DEMO"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13434`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "shipToLastName"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"DEMO"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13435`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "shipToAddress"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"San Jose"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13436`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "shipToAddress2"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Catedral"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13437`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "shipToCity"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"JS"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13438`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "shipToState"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"SJ"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13439`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "shipToZipPostCode"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"10061"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13440`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "shipToCountry"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"CR"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13441`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "shipToTelephone"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"88888888"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13442`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "subscription"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"0"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13443`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "platform"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"api"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13444`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "returnData"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"dXNlcl9pZD0xMg=="`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13445`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "hashVersion"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"V2"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13446`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "token_version"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"v2"`})]}),` 13447`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 13448`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Response`}),` 13449`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 13450`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"100"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13451`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "html"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Use url redirect"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13452`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`}
13452,children:`"https://secure.tilopay.com/htmls/1212122_574572148file.html"`})]}),` 13453`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 13454`,(0,h.jsxs)(t.p,{children:[`To interpret a response that is not a success, see `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`how to read an error response`}),`.`]})]})}function Cs(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Ss,{...e})}):Ss(e)}function ws(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Ts=t({default:()=>Os,frontmatter:()=>Es}),Es={title:`API · Create payment link`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/links-de-pago`,`api/procesos-operativos/errors`],description:`Payment link creation through the API, with response callback and webhook.`};function Ds(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,...m(),...e.components},{Param:n}=t;return n||ks(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/createLinkPayment`})]})})})}),` 13455`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`What it does`}),` 13456`,(0,h.jsx)(t.p,{children:`Creates a payment link with amount, currency and usage behaviour.`}),` 13457`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Authentication`}),` 13458`,(0,h.jsxs)(t.p,{children:[`Requires the API bearer token in the `,(0,h.jsx)(t.code,{children:`Authorization`}),` header â see `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`authentication`}),`.`]}),` 13459`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parameters`}),` 13460`,(0,h.jsx)(n,{id:`create-link-payment-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Tilopay integration key.`})}),` 13461`,(0,h.jsx)(n,{id:`create-link-payment-parametro-amount`,name:`amount`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Amount of the payment link.`})}),` 13462`,(0,h.jsx)(n,{id:`create-link-payment-parametro-currency`,name:`currency`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Currency code in ISO 4217 format.`})}),` 13463`,(0,h.jsx)(n,{id:`create-link-payment-parametro-reference`,name:`reference`,type:`string`,children:(0,h.jsx)(t.p,{children:`Reference of the payment link.`})}),` 13464`,(0,h.jsx)(n,{id:`create-link-payment-parametro-type`,name:`type`,type:`integer`,children:(0,h.jsx)(t.p,{children:`Link type: 0 unlimited, 1 single use.`})}),` 13465`,(0,h.jsx)(n,{id:`create-link-payment-parametro-description`,name:`description`,type:`string`,children:(0,h.jsx)(t.p,{children:`Payment description.`})}),` 13466`,(0,h.jsx)(n,{id:`create-link-payment-parametro-client`,name:`client`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Customer name. It only applies when `,(0,h.jsx)(t.code,{children:`type`}),` is 1.`]})}),` 13467`,(0,h.jsx)(n,{id:`create-link-payment-parametro-callback-url`,name:`callback_url`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Optional field. URL, over `,(0,h.jsx)(t.strong,{children:`GET`}),`, the customer is redirected to with the response once the payment is completed. Example of the data sent: `,(0,h.jsx)(t.code,{children:`code=Val&description=Val&auth=Val&tilopayLinkId=Val&orderNumber=Val&tilopayOrderId=Val&creditCardToken=Val&creditCardBrand=Val&last4CreditCardNumber=Val&orderHash=Val`})]})}),` 13468`,(0,h.jsxs)(n,{id:`create-link-payment-parametro-webhook-url`,name:`webhook_url`,type:`string`,children:[(0,h.jsxs)(t.p,{children:[`Optional field. URL to send the response webhook to once the payment is completed. 13469It must accept the `,(0,h.jsx)(t.strong,{children:`POST`}),` method to receive the data. Example of the data sent:`]}),(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 13470`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "code"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13471`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "codeDescription"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Aprobada"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13472`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "auth"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"123456"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13473`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "tilopayLinkId"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`54421`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13474`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "orderNumber"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"TPT123"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13475`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "tilopayOrderId"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`12233`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13476`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "creditCardToken"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"41111******11111"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13477`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "creditCardBrand"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Visa"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13478`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "last4CreditCardNumber"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1111"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13479`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "linkDescription"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Descripcion del link de pago"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13480`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "orderHash"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`})]}),` 13481`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})})]}),` 13482`,(0,h.jsx)(t.h2,{id:`request`,children:`Request example`}),` 13483`,(0,h.jsxs)(t.p,{children:[`The `,(0,h.jsx)(t.code,{children:`<...>`}),` values are placeholders: replace them with your own credentials and data.`]}),` 13484`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 13485`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13486`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"10"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13487`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13488`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "reference"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"123456"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13489`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13490`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13491`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "client"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Client name"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13492`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "callback_url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13493`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "webhook_url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`})]}),` 13494`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 13495`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Response`}),` 13496`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 13497`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"200"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13498`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Success"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13499`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://app.tilopay.com/link/MjMwMjQ="`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13500`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`})]}),` 13501`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 13502`,(0,h.jsxs)(t.p,{children:[`To interpret a response that is not a success, see `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`how to read an error response`}),`.`]})]})}function Os(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Ds,{...e})}):Ds(e)}function ks(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var As=t({default:()=>Ns,frontmatter:()=>js}),js={title:`API · Delete a payment link`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/links-de-pago`,`api/procesos-operativos/errors`],description:`Deletion of a payment link by id.`};function Ms(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{Param:n}=t;return n||Ps(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/deleteLinkPayment`})]})})})}),` 13503`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`What it does`}),` 13504`,(0,h.jsx)(t.p,{children:`Deletes an existing payment link.`}),` 13505`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Authentication`}),` 13506`,(0,h.jsxs)(t.p,{children:[`Requires the API bearer token in the `,(0,h.jsx)(t.code,{children:`Authorization`}),` header â see `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`authentication`}),`.`]}),` 13507`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parameters`}),` 13508`,(0,h.jsx)(n,{id:`delete-link-payment-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Tilopay integration key.`})}),` 13509`,(0,h.jsx)(n,{id:`delete-link-payment-parametro-id`,name:`id`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Payment link id.`})}),` 13510`,(0,h.jsx)(t.h2,{id:`request`,children:`Request example`}),` 13511`,(0,h.jsxs)(t.p,{children:[`The `,(0,h.jsx)(t.code,{children:`<...>`}),` values are placeholders: replace them with your own credentials and data.`]}),` 13512`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 13513`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13514`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"35"`})]}),` 13515`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 13516`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Response`}),` 13517`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor
13517:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 13518`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"200"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13519`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "status"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13520`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Success"`})]}),` 13521`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 13522`,(0,h.jsxs)(t.p,{children:[`To interpret a response that is not a success, see `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`how to read an error response`}),`.`]})]})}function Ns(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Ms,{...e})}):Ms(e)}function Ps(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Fs=t({default:()=>Rs,frontmatter:()=>Is}),Is={title:`API · Payment link detail`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/links-de-pago`,`api/procesos-operativos/errors`],description:`Detail of a payment link and its payments, queried by id.`,gaps:[`Type, format and constraints are not documented in the collection.`]};function Ls(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{Param:n}=t;return n||zs(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`GET`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/getDetailLinkPayment/{link_payment_id}/{api_key}`})]})})})}),` 13523`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`What it does`}),` 13524`,(0,h.jsx)(t.p,{children:`Returns the detail of a payment link and its associated payments. It takes no body: the data travels in the path.`}),` 13525`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Authentication`}),` 13526`,(0,h.jsxs)(t.p,{children:[`Requires the API bearer token in the `,(0,h.jsx)(t.code,{children:`Authorization`}),` header â see `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`authentication`}),`.`]}),` 13527`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parameters`}),` 13528`,(0,h.jsx)(t.p,{children:`Path parameters, in the order they appear in the URL:`}),` 13529`,(0,h.jsx)(n,{id:`detail-link-payment-parametro-link-payment-id`,name:`link_payment_id`,type:`string · path`,required:!0,children:(0,h.jsx)(t.p,{children:`Id of the payment link to query.`})}),` 13530`,(0,h.jsx)(n,{id:`detail-link-payment-parametro-api-key`,name:`api_key`,type:`string · path`,required:!0,children:(0,h.jsx)(t.p,{children:`Merchant api key.`})}),` 13531`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Response`}),` 13532`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 13533`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"200"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13534`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Success"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13535`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "detail"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: {`})]}),` 13536`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`6201`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13537`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"45.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13538`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13539`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "reference"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Producto de prueba 1 TP-Shop"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13540`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "client"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"NA"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13541`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Unlimited"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13542`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13543`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "callback_url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13544`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "create"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2022-10-24 08:45:14"`})]}),` 13545`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` },`})}),` 13546`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "payments"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: []`})]}),` 13547`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 13548`,(0,h.jsxs)(t.p,{children:[`To interpret a response that is not a success, see `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`how to read an error response`}),`.`]})]})}function Rs(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Ls,{...e})}):Ls(e)}function zs(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Bs=t({default:()=>Us,frontmatter:()=>Vs}),Vs={title:`API · Get a payment link by id`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/links-de-pago`,`api/procesos-operativos/errors`],description:`Query of a single payment link by its id.`,gaps:[`No description in the source collection.`,`Type, format and constraints are not documented in the collection.`]};function Hs(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{Param:n}=t;return n||Ws(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`GET`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/getLinkPaymentById/{link_payment_id}/{api_key}`})]})})})}),` 13549`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`What it does`}),` 13550`,(0,h.jsx)(t.p,{children:`Returns a single payment link. It takes no body: the data travels in the path.`}),` 13551`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Authentication`}),` 13552`,(0,h.jsxs)(t.p,{children:[`Requires the API bearer token in the `,(0,h.jsx)(t.code,{children:`Authorization`}),` header â see `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`authentication`}),`.`]}),` 13553`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parameters`}),` 13554`,(0,h.jsx)(t.p,{children:`Path parameters, in the order they appear in the URL:`}),` 13555`,(0,h.jsx)(n,{id:`payment-by-id-parametro-link-payment-id`,name:`link_payment_id`,type:`string · path`,required:!0,children:(0,h.jsx)(t.p,{children:`Id of the payment link to query.`})}),` 13556`,(0,h.jsx)(n,{id:`payment-by-id-parametro-api-key`,name:`api_key`,type:`string · path`,required:!0,children:(0,h.jsx)(t.p,{children:`Merchant api key.`})}),` 13557`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Response`}),` 13558`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 13559`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"200"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13560`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Success"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13561`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "data"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: {`})]}),` 13562`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13563`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"45.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13564`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13565`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "reference"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Producto de prueba 1 TP-Shop"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13566`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://admin.tilopay.com/link/loNj8E2MA=="`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13567`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "callback_url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13568`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13569`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "times_used"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13570`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "picture"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://storage.googleapis.com/tilo-uploads/items/51087219_.png"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13571`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "create"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2022-10-24 08:45:14"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13572`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "payments"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: []`})]}),` 13573`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` }`})}),` 13574`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 13575`,(0,h.jsxs)(t.p,{children:[`To interpret a response that is not a success, see `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`how to read an error response`}),`.`]})]})}function Us(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Hs,{...e})}):Hs(e)}function Ws(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Gs=t({default:()=>Js,frontmatter:()=>Ks}),Ks={title:`API · List payment links`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/links-de-pago`,`api/procesos-operativos/errors`],description:`Paginated listing of the merchant's payment links.`,gaps:[`No description in the source collection.`,`Typ
13575e, format and constraints are not documented in the collection.`]};function qs(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{Param:n}=t;return n||Ys(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`GET`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/getLinkPaymentList/{api_key}/{limit}`})]})})})}),` 13576`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`What it does`}),` 13577`,(0,h.jsx)(t.p,{children:`Returns the paginated list of the merchant's payment links. It takes no body: the data travels in the path.`}),` 13578`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Authentication`}),` 13579`,(0,h.jsxs)(t.p,{children:[`Requires the API bearer token in the `,(0,h.jsx)(t.code,{children:`Authorization`}),` header â see `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`authentication`}),`.`]}),` 13580`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parameters`}),` 13581`,(0,h.jsx)(t.p,{children:`Path parameters, in the order they appear in the URL:`}),` 13582`,(0,h.jsx)(n,{id:`payment-item-list-parametro-api-key`,name:`api_key`,type:`string · path`,required:!0,children:(0,h.jsx)(t.p,{children:`Merchant api key.`})}),` 13583`,(0,h.jsx)(n,{id:`payment-item-list-parametro-limit`,name:`limit`,type:`string · path`,required:!0,children:(0,h.jsx)(t.p,{children:`Number of records per page.`})}),` 13584`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Response`}),` 13585`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 13586`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"200"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13587`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Success"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13588`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "data"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: {`})]}),` 13589`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "current_page"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13590`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "first_page_url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"http://app.tilopay.com/api/v1/getLinkPaymentList/<api_key>/10?page=1"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13591`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "from"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13592`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "last_page"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`2`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13593`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "last_page_url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"http://app.tilopay.com/api/v1/getLinkPaymentList/<api_key>/10?page=2"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13594`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "next_page_url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"http://app.tilopay.com/api/v1/getLinkPaymentList/<api_key>/10?page=2"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13595`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "path"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"http://app.tilopay.com/api/v1/getLinkPaymentList/<api_key>/10"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13596`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "per_page"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`10`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13597`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "prev_page_url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13598`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "to"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`10`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13599`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "total"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`16`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13600`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "payment_link"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: [`})]}),` 13601`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 13602`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13603`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"45.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13604`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13605`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "reference"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Producto de prueba 1 TP-Shop"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13606`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://admin.tilopay.com/link/3dNjE2MA3sdd=="`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13607`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "callback_url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13608`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13609`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "times_used"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13610`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "picture"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://storage.googleapis.com/tilo-uploads/items/51087219_.png"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13611`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "create"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2022-10-24 08:45:14"`})]}),` 13612`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` },`})}),` 13613`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 13614`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`2`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13615`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"35.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13616`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13617`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "reference"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Producto de prueba 2"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13618`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://admin.tilopay.com/link/dwNjE2see3MA=="`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13619`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "callback_url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13620`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13621`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "times_used"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13622`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "picture"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://storage.googleapis.com/tilo-uploads/items/64156766_.png"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13623`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "create"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2022-10-24 08:45:14"`})]}),` 13624`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` },`})}),` 13625`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 13626`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`3`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13627`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"45.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13628`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13629`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "reference"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Producto de prueba 3"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13630`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://admin.tilopay.com/link/f4NjE2MwsdA=="`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13631`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "callback_url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13632`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13633`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "times_used"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13634`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "picture"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://storage.googleapis.com/tilo-uploads/items/88435879_.png"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`
13634,`})]}),` 13635`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "create"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2022-10-24 08:45:14"`})]}),` 13636`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` },`})}),` 13637`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 13638`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`4`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13639`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"45.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13640`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13641`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "reference"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"test"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13642`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://admin.tilopay.com/link/ceNjE2sxw2MA=="`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13643`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "callback_url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13644`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"ddd"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13645`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "times_used"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13646`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "picture"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://storage.googleapis.com/tilo-uploads/items/37716065_.png"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13647`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "create"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2022-10-24 08:45:14"`})]}),` 13648`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` },`})}),` 13649`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 13650`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`5`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13651`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"45.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13652`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13653`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "reference"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"test"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13654`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://admin.tilopay.com/link/cweNjE2Mfd5A=="`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13655`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "callback_url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13656`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"ddd"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13657`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "times_used"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13658`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "picture"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://storage.googleapis.com/tilo-uploads/items/37716065_.png"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13659`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "create"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2022-10-24 08:45:14"`})]}),` 13660`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` },`})}),` 13661`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 13662`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`6`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13663`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"45.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13664`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13665`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "reference"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"test"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13666`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://admin.tilopay.com/link/ce3NjE2fg5eMA=="`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13667`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "callback_url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13668`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"ddd"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13669`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "times_used"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13670`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "picture"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://storage.googleapis.com/tilo-uploads/items/37716065_.png"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13671`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "create"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2022-10-24 08:45:14"`})]}),` 13672`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` },`})}),` 13673`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 13674`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`7`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13675`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"45.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13676`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13677`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "reference"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"test"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13678`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://admin.tilopay.com/link/dsNjE2MAd32=="`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13679`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "callback_url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13680`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"ddd"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13681`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "times_used"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13682`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "picture"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://storage.googleapis.com/tilo-uploads/items/37716065_.png"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13683`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "create"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2022-10-24 08:45:14"`})]}),` 13684`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` },`})}),` 13685`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 13686`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`8`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13687`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"45.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13688`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13689`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "reference"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"test"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13690`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://admin.tilopay.com/link/NjE2sd32MA=="`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13691`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "callback_url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13692`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"ddd"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13693`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "times_used"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13694`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "picture"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.sp
13694an,{style:{color:`#9ECBFF`},children:`"https://storage.googleapis.com/tilo-uploads/items/37716065_.png"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13695`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "create"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2022-10-24 08:45:14"`})]}),` 13696`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` },`})}),` 13697`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 13698`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`9`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13699`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"45.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13700`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13701`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "reference"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"test"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13702`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://admin.tilopay.com/link/sd3NjE2MA=="`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13703`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "callback_url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13704`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"ddd"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13705`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "times_used"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13706`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "picture"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://storage.googleapis.com/tilo-uploads/items/37716065_.png"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13707`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "create"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2022-10-24 08:45:14"`})]}),` 13708`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` },`})}),` 13709`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 13710`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`10`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13711`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"45.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13712`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13713`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "reference"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"test"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13714`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://admin.tilopay.com/link/d3dNjE2MA=="`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13715`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "callback_url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13716`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"ddd"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13717`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "times_used"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13718`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "picture"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://storage.googleapis.com/tilo-uploads/items/37716065_.png"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13719`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "create"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2022-10-24 08:45:14"`})]}),` 13720`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` }`})}),` 13721`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` ]`})}),` 13722`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` }`})}),` 13723`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 13724`,(0,h.jsxs)(t.p,{children:[`To interpret a response that is not a success, see `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`how to read an error response`}),`.`]})]})}function Js(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(qs,{...e})}):qs(e)}function Ys(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Xs=t({default:()=>$s,frontmatter:()=>Zs}),Zs={title:`API · Payment links`,kind:`api-index`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/procesos-operativos/errors`],description:`Payment links operations of the Tilopay API, with parameters and examples.`};function Qs(e){let t={a:`a`,code:`code`,h2:`h2`,li:`li`,p:`p`,ul:`ul`,...m(),...e.components};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`operaciones`,children:`Operations`}),` 13725`,(0,h.jsxs)(t.ul,{children:[` 13726`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/links-de-pago/create-link-payment`,children:`Create payment link`})}),` 13727`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/links-de-pago/detail-link-payment`,children:`Payment link detail`})}),` 13728`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/links-de-pago/delete-link-payment`,children:`Delete a payment link`})}),` 13729`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/links-de-pago/payment-item-list`,children:`List payment links`})}),` 13730`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/links-de-pago/payment-by-id`,children:`Get a payment link by id`})}),` 13731`]}),` 13732`,(0,h.jsxs)(t.p,{children:[`Every operation lives on `,(0,h.jsx)(t.code,{children:`https://app.tilopay.com`}),` and, except for the login operations, requires the API token â see `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`authentication`}),`.`]})]})}function $s(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Qs,{...e})}):Qs(e)}var ec=t({default:()=>rc,frontmatter:()=>tc}),tc={title:`API · consultTransactions`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/procesos-operativos`,`api/procesos-operativos/errors`],description:`Bulk transaction query by date range, currency, order or email.`};function nc(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,table:`table`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,...m(),...e.components},{Param:n}=t;return n||ic(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/consultTransactions`})]})})})}),` 13733`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`What it does`}),` 13734`,(0,h.jsx)(t.p,{children:`Queries transactions by date range, with optional filters.`}),` 13735`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Authentication`}),` 13736`,(0,h.jsxs)(t.p,{children:[`Requires the API bearer token in the `,(0,h.jsx)(t.code,{children:`Authorization`}),` header â see `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`authentication`}),`.`]}),` 13737`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parameters`}),` 13738`,(0,h.jsx)(n,{id:`consult-transactions-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Tilopay integration key.`})}),` 13739`,(0,h.jsx)(n,{id:`consult-transactions-parametro-startdate`,name:`startDate`,type:`string`,required:!0,children:(0,h.jsxs)(t.p,{children:[`Start date, `,(0,h.jsx)(t.code,{children:`Y-m-d H:i:s`}),` format â for example "2022-01-15 00:00:00".`]})}),` 13740`,(0,h.jsx)(n,{id:`consult-transactions-parametro-enddate`,name:`endDate`,type:`string`,required:!0,children:(0,h.jsxs)(t.p,{children:[`End date, `,(0,h.jsx)(t.code,{children:`Y-m-d H:i:s`}),` format â for example "2022-08-01 23:59:59".`]})}),` 13741`,(0,h.jsxs)(n,{id:`consult-transactions-parametro-onlyaproved`,name:`onlyAproved`,type:`integer`,children:[(0,h.jsx)(t.p,{children:`Whether to return only approved transactions.`}),(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Code`}),(0,h.jsx)(t.th,{children:`Value`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`0`}),(0,h.jsx)(t.td,{children:`Any`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`1`}),(0,h.jsx)(t.td,{children:`Approved only`})]})]})]})]}),` 13742`,(0,h.jsxs)(n,{id:`consult-transactions-parametro-environment`,name:`environment`,type:`integer`,children:[(0,h.jsx)(t.p,{children:`Environment of the transactions to return.`}),(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Code`}),(0,h.jsx)(t.th,{children:`Value`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`0`}),(0,h.jsx)(t.td,{children:`Production`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`1`}),(0,h.jsx)(t.td,{children:`Test`})]})]})]})]}),` 13743`,(0,h.jsx)(n,{id:`consult-transactions-parametro-currency`,name:`currency`,type:`array`,children:(0,h.jsx)(t.p,{children:`Array of currencies to return, for example ["USD", "CRC"].`})}),` 13744`,(0,h.jsx)(n,{id:`consult-transactions-parametro-merchantid`,name:`merchantId`,type:`string`,children:(0,h.jsx)(t.p,{children:`Merchant id.`})}),` 13745`,(0,h.jsx)(n,{id:`consult-transactions-parametro-ordernumber`,name:`orderNumber`,type:`string`,children:(0,h.jsx)(t.p,{children:`Order number.`})}),` 13746`,(0,h.jsx)(n,{id:`consult-transactions-parametro-email`,name:`email`,type:`string`,children:(0,h.jsx)(t.p,{children:`Customer email.`})}),` 13747`,(0,h.jsx)(n,{id:`consult-transactions-parametro-auth`,name:`auth`,type:`string`,children:(0,h.jsx)(t.p,{children:`Authorization number.`})}),` 13748`,(0,h.jsx)(t.h2,{id:`request`,children:`Request example`}),` 13749`,(0,h.jsxs)(t.p,{children:[`The `,(0,h.jsx)(t.code,{children:`<...>`}),` values are placeholders: replace them with your own credentials and data.`]}),` 13750`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 13751`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13752`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "startDate"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2023-06-01 00:00:00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13753`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "endDate"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2023-06-30 23:59:59"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13754`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "onlyAproved"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13755`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "environment"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13756`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: [`})]}),` 13757`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:` "USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13758`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#9EC
13758BFF`},children:` "CRC"`})}),` 13759`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` ],`})}),` 13760`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "merchantId"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<merchantId>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13761`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "orderNumber"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"12135"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13762`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "email"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"[email protected]"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13763`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "auth"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"123456"`})]}),` 13764`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 13765`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Response`}),` 13766`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 13767`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"200"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13768`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13769`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "response"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: [`})]}),` 13770`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 13771`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`734329`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13772`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "orderNumber"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"12135"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13773`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"5.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13774`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "taxes"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"0.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13775`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "discount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"0.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13776`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "discount_name"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13777`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13778`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "merchantId"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<merchantId>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13779`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "code"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13780`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "response"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Transacción aprobada"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13781`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "auth"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"123456"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13782`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "card"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"4021"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13783`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "last"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"5221"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13784`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "email"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"[email protected]"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13785`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "commission"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0.18`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13786`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "iva_commission"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0.02`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13787`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "retention_iva"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0.27`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13788`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "retention_rent"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0.09`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13789`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "cost"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0.35`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13790`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "cost_iva"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0.05`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13791`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "net_to_liquidate"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`4.04`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13792`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "capture"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Capture"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13793`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Payment"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13794`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "environment"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Production"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13795`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "date"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2024-07-31 16:59:20"`})]}),` 13796`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` },`})}),` 13797`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 13798`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`734330`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13799`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "orderNumber"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"12136"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13800`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"5.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13801`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "taxes"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"0.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13802`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "discount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"0.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13803`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "discount_name"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13804`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13805`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "merchantId"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<merchantId>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13806`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "code"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13807`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "response"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Transacción aprobada"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13808`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "auth"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"123456"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13809`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "card"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"4021"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13810`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "last"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"5221"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13811`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "email"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"[email protected]"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13812`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "commission"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0.18`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13813`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "iva_commission"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0.02`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13814`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "retention_iva"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0.27`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13815`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "retention_rent"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0.09`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13816`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "cost"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0.35`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13817`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "cost_iva"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},childr
13817en:`0.05`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13818`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "net_to_liquidate"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`4.04`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13819`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "capture"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Capture"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13820`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Payment"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13821`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "environment"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Production"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13822`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "date"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2024-07-31 17:25:35"`})]}),` 13823`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` }`})}),` 13824`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` ]`})}),` 13825`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 13826`,(0,h.jsxs)(t.p,{children:[`To interpret a response that is not a success, see `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`how to read an error response`}),`.`]})]})}function rc(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(nc,{...e})}):nc(e)}function ic(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var ac=t({default:()=>cc,frontmatter:()=>oc}),oc={title:`API · consult`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/procesos-operativos`,`api/procesos-operativos/errors`],description:`Query the status and processed amount of a single transaction.`,gaps:[`Present in the collection example but absent from the endpoint description.`]};function sc(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{Param:n}=t;return n||lc(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/consult`})]})})})}),` 13827`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`What it does`}),` 13828`,(0,h.jsx)(t.p,{children:`Queries a specific transaction: returns the processed amount and the status of the transaction.`}),` 13829`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Authentication`}),` 13830`,(0,h.jsxs)(t.p,{children:[`Requires the API bearer token in the `,(0,h.jsx)(t.code,{children:`Authorization`}),` header â see `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`authentication`}),`.`]}),` 13831`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parameters`}),` 13832`,(0,h.jsx)(n,{id:`consult-parametro-key`,name:`key`,type:`string`,children:(0,h.jsx)(t.p,{children:`Tilopay integration key.`})}),` 13833`,(0,h.jsx)(n,{id:`consult-parametro-ordernumber`,name:`orderNumber`,type:`string`,children:(0,h.jsx)(t.p,{children:`Order number being queried.`})}),` 13834`,(0,h.jsx)(n,{id:`consult-parametro-merchantid`,name:`merchantId`,type:`string`,children:(0,h.jsx)(t.p,{children:`Merchant id.`})}),` 13835`,(0,h.jsx)(t.h2,{id:`request`,children:`Request example`}),` 13836`,(0,h.jsxs)(t.p,{children:[`The `,(0,h.jsx)(t.code,{children:`<...>`}),` values are placeholders: replace them with your own credentials and data.`]}),` 13837`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 13838`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13839`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "orderNumber"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1212122"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13840`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "merchantId"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`})]}),` 13841`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 13842`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Response`}),` 13843`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 13844`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"200"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13845`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13846`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "response"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: [`})]}),` 13847`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 13848`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id_tilopay"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`734312`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13849`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "orderNumber"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1212122"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13850`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"5.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13851`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13852`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "merchantId"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"88803956"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13853`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "code"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13854`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "response"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Transacción aprobada"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13855`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "auth"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"123456"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13856`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "commission"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0.18`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13857`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "iva_commission"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0.02`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13858`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "retention_iva"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0.27`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13859`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "retention_rent"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0.09`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13860`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "cost"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0.35`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13861`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "cost_iva"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0.05`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13862`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "net_to_liquidate"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"4.04"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13863`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "capture"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Capture"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13864`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "card"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"4021"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13865`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "last"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"5221"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13866`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "environment"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Test"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13867`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Payment"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13868`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "date"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2024-07-31 16:59:20"`})]}),` 13869`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` }`})}),` 13870`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` ]`})}),` 13871`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 13872`,(0,h.jsxs)(t.p,{children:[`To interpret a response that is not a success, see `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`how to read an error response`}),`.`]})]})}function cc(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(sc,{...e})}):sc(e)}function lc(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var uc=t({default:()=>pc,frontmatter:()=>dc}),dc={title:`API · How to read an error response`,kind:`concept`,status:`stable`,api_version:`v1`,last_verified:`2026-08-28`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Respuestas de TecnologÃa, 28-08-2026`],locales:[`es`,`en`],related:[`reintentos-seguros`,`api/webhooks`],gaps:[`Issuer decline code catalogue: no verified list exists.`],description:`An HTTP 200 does not mean success. Where the issuer decline arrives and how to write error handling.`};function fc(e){let t={a:`a`,code:`code`,h2:`h2`,li:`li`,p:`p`,strong:`strong`,ul:`ul`,...m(),...e.components},{Callout:n,Param:r}=t;return n||mc(`Callout`,!0),r||mc(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`rechazo`,children:`The issuer decline`}),` 13873`,(0,h.jsx)(t.p,{children:`When the issuer declines a transaction, the response carries two fields:`}),` 13874`,(0,h.jsx)(r,{id:`error-code`,name:`code`,type:`string`,children:(0,h.jsx)(t.p,{children:`The issuer decline code.`})}),` 13875`,(0,h.jsx)(r,{id:`error-description`,name:`description`,type:`string`,children:(0,h.jsx)(t.p,{children:`The decline text.`})}),` 13876`,(0,h.jsx)(t.h2,{id:`estado-http`,children:`An HTTP 200 does not mean success`}),` 13877`,(0,h.jsxs)(n,{type:`warn`,children:[(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`There is no defined standard for when the API responds HTTP 4xx and when it responds HTTP 200 13878with the error in the body.`}),` Both forms coexist, and there are `,(0,h.jsx)(t.strong,{children:`four different error envelopes 13879depending on the endpoint`}),`.`]}),(0,h.jsx)(t.p,{children:`Practical consequence: your error handling must always look at the body, not only the status 13880code, and tolerate more than one body shape.`})]}),` 13881`,(0,h.jsx)(t.h2,{id:`como-manejar`,children:`How to write error handling`}),` 13882`,(0,h.jsxs)(t.ul,{children:[` 13883`,(0,h.jsxs)(t.li,{children:[`Treat `,(0,h.jsx)(t.code,{children:`code`}),` and `,(0,h.jsx)(t.code,{children:`description`}),` as data to log and display, not as an enumeration to branch on.`]}),` 13884`,(0,h.jsxs)(t.li,{children:[`Do not write `,(0,h.jsx)(t.code,{children:`if (status === 200)
13884 success`}),`. Check the body.`]}),` 13885`,(0,h.jsx)(t.li,{children:`Store the raw response of every decline: it is what lets you reconstruct your merchant's 13886decline pattern.`}),` 13887`,(0,h.jsxs)(t.li,{children:[`To determine the real state of a transaction after a failure, use 13888`,(0,h.jsx)(t.a,{href:`/developers/reintentos-seguros`,children:`safe retries`}),`.`]}),` 13889`]})]})}function pc(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(fc,{...e})}):fc(e)}function mc(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var hc=t({default:()=>vc,frontmatter:()=>gc}),gc={title:`API · processModification`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`,`Respuestas de TecnologÃa, 28-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/procesos-operativos`,`api/procesos-operativos/errors`],description:`Capture, refund and reversal of a transaction with processModification.`,gaps:[`Present in the collection example but absent from the endpoint description.`,`No response example available.`,`Falta la lista completa de valores del campo type: se sabe que existen 1, 2 y 3, pero no la equivalencia con captura, reembolso y reversión.`]};function _c(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{Param:n}=t;return n||yc(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/processModification`})]})})})}),` 13890`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`What it does`}),` 13891`,(0,h.jsx)(t.p,{children:`Modifies an already processed transaction: capture, refund or reversal.`}),` 13892`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Authentication`}),` 13893`,(0,h.jsxs)(t.p,{children:[`Requires the API bearer token in the `,(0,h.jsx)(t.code,{children:`Authorization`}),` header â see `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`authentication`}),`.`]}),` 13894`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parameters`}),` 13895`,(0,h.jsx)(n,{id:`process-modification-parametro-ordernumber`,name:`orderNumber`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Example: `,(0,h.jsx)(t.code,{children:`1214352`})]})}),` 13896`,(0,h.jsx)(n,{id:`process-modification-parametro-type`,name:`type`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Example: `,(0,h.jsx)(t.code,{children:`2`})]})}),` 13897`,(0,h.jsx)(n,{id:`process-modification-parametro-amount`,name:`amount`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Example: `,(0,h.jsx)(t.code,{children:`1.00`})]})}),` 13898`,(0,h.jsx)(n,{id:`process-modification-parametro-key`,name:`key`,type:`string`,children:(0,h.jsx)(t.p,{children:`Key associated with the customer. It is obtained in Admin · Tilopay Checkout.`})}),` 13899`,(0,h.jsx)(t.h2,{id:`request`,children:`Request example`}),` 13900`,(0,h.jsxs)(t.p,{children:[`The `,(0,h.jsx)(t.code,{children:`<...>`}),` values are placeholders: replace them with your own credentials and data.`]}),` 13901`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 13902`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "orderNumber"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1214352"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13903`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13904`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13905`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`})]}),` 13906`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 13907`,(0,h.jsx)(t.h2,{id:`respuesta-modificacion`,children:`Response`}),` 13908`,(0,h.jsx)(n,{id:`modification-type`,name:`type`,type:`string`,children:(0,h.jsx)(t.p,{children:`Type of modification applied.`})}),` 13909`,(0,h.jsx)(n,{id:`modification-transactionid`,name:`transactionId`,type:`string`,children:(0,h.jsx)(t.p,{children:`Transaction identifier.`})}),` 13910`,(0,h.jsx)(n,{id:`modification-reasoncode`,name:`ReasonCode`,type:`string`,children:(0,h.jsx)(t.p,{children:`Result code of the modification.`})}),` 13911`,(0,h.jsx)(n,{id:`modification-reasoncodedescription`,name:`ReasonCodeDe
13911scription`,type:`string`,children:(0,h.jsx)(t.p,{children:`Result text.`})}),` 13912`,(0,h.jsx)(n,{id:`modification-orderhash`,name:`OrderHash`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Order hash. See the note about `,(0,h.jsx)(t.code,{children:`orderHash`}),` in `,(0,h.jsx)(t.a,{href:`/developers/api/webhooks#verificacion`,children:`webhooks`}),`.`]})}),` 13913`,(0,h.jsxs)(t.p,{children:[`To interpret a response that is not a success, see `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`how to read an error response`}),`.`]})]})}function vc(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(_c,{...e})}):_c(e)}function yc(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var bc=t({default:()=>Cc,frontmatter:()=>xc}),xc={title:`API · Split settlement`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/procesos-operativos`,`api/procesos-operativos/errors`],description:`Splitting the settlement of an order among several facilitated merchants.`,gaps:[`Present in the collection example but absent from the endpoint description.`]};function Sc(e){let t={a:`a`,code:`code`,h2:`h2`,li:`li`,p:`p`,pre:`pre`,span:`span`,ul:`ul`,...m(),...e.components},{Param:n}=t;return n||wc(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/orders/liquidation/split`})]})})})}),` 13914`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`What it does`}),` 13915`,(0,h.jsxs)(t.p,{children:[`Splits the settlement of an order among several merchants. It only applies to merchants that use Tilopay as a payment facilitator, and the resulting orders are identified by the `,(0,h.jsx)(t.code,{children:`SL|`}),` prefix.`]}),` 13916`,(0,h.jsx)(t.p,{children:`Rules:`}),` 13917`,(0,h.jsxs)(t.ul,{children:[` 13918`,(0,h.jsx)(t.li,{children:`The merchants must be approved and be from the same country.`}),` 13919`,(0,h.jsx)(t.li,{children:`If the split is lower than the total amount of the order, the remainder is assigned to the merchant that made the original transaction.`}),` 13920`,(0,h.jsx)(t.li,{children:`It only applies to fully approved orders.`}),` 13921`]}),` 13922`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Authentication`}),` 13923`,(0,h.jsxs)(t.p,{children:[`Requires the API bearer token in the `,(0,h.jsx)(t.code,{children:`Authorization`}),` header â see `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`authentication`}),`.`]}),` 13924`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parameters`}),` 13925`,(0,h.jsx)(n,{id:`split-parametro-order-id`,name:`order_id`,type:`string`,children:(0,h.jsx)(t.p,{children:`Id of the order approved in Tilopay.`})}),` 13926`,(0,h.jsx)(n,{id:`split-parametro-commerces`,name:`commerces`,type:`array`,children:(0,h.jsxs)(t.p,{children:[`Associative array with the `,(0,h.jsx)(t.code,{children:`email`}),` and `,(0,h.jsx)(t.code,{children:`amount`}),` keys of every merchant the settlement is divided with. Including the owner merchant is optional: when its amount is not specified the remainder of the split is assigned to it, and when it is included and there is a remainder, the remainder is added to it.`]})}),` 13927`,(0,h.jsx)(n,{id:`split-parametro-lang`,name:`lang`,type:`string`,children:(0,h.jsx)(t.p,{children:`Request language.`})}),` 13928`,(0,h.jsx)(t.h2,{id:`request`,children:`Request example`}),` 13929`,(0,h.jsxs)(t.p,{children:[`The `,(0,h.jsx)(t.code,{children:`<...>`}),` values are placeholders: replace them with your own credentials and data.`]}),` 13930`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 13931`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "order_id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13932`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "commerces"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: [`})]}),` 13933`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 13934`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "email"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"[email protected]"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13935`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"7.5"`})]}),` 13936`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` },`})}),` 13937`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 13938`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "email"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"[email protected]"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13939`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"5.5"`})]}),` 13940`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` }`})}),` 13941`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` ],`})}),` 13942`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "lang"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"en"`})]}),` 13943`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 13944`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Response`}),` 13945`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 13946`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"200"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13947`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Great"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13948`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Order splitted successfully"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13949`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "response"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: {`})]}),` 13950`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "total_order_splitted"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`3`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13951`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "order_id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13952`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "order_number"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"PFC000069-TYP785237_313"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13953`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "order_key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13954`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "order_currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13955`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "order_amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"33.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13956`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "splitted_orders"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: [`})]}),` 13957`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 13958`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13959`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`20`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13960`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "commerce_name"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Commerce owner name"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13961`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "commerce_email"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"[email protected]"`})]}),` 13962`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` },`})}),` 13963`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 13964`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`2`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13965`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`7.5`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13966`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "commerce_name"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Commerce name"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13967`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "commerce_email"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"[email protected]"`})]}),` 13968`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` },`})}),` 13969`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 13970`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`3`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13971`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`5.5`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13972`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "commerce_name"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Commerce name"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 13973`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "commerce_email"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"[email protected]"`})]}),` 13974`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` }`})}),` 13975`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` ]`})}),` 13976`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` }`})}),` 13977`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 13978`,(0,h.jsxs)(t.p,{children:[`To interpret a response that is not a success, see `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`how to read an error response`}),`.`]})]})}function Cc(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Sc,{...e})}):Sc(e)}function wc(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Tc=t({default:()=>Oc,frontmatter:()=>Ec}),Ec={title:`API · Operational processes`,kind:`api-index`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/procesos-operativos/errors`],description:`Operational processes operations of the Tilopay API, with parameters and examples.`};function Dc(e){let t={a:`a`,code:`code`,h2:`h2`,li:`li`,p:`p`,ul:`ul`,...m(),...e.components};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`operaciones`,children:`Operations`}),` 13979`,(0,h.jsxs)(t.ul,{children:[` 13980`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/process-modification`,children:`processModification`})}),` 13981`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/consult`,children:`consult`})}),` 13982`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativo
13982s/consult-transactions`,children:`consultTransactions`})}),` 13983`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/split`,children:`Split settlement`})}),` 13984`]}),` 13985`,(0,h.jsxs)(t.p,{children:[`These operations are cross-cutting: they work for any of the four `,(0,h.jsx)(t.a,{href:`/developers`,children:`integration paths`}),`, no matter how the charge was originated.`]}),` 13986`,(0,h.jsxs)(t.p,{children:[`To interpret a response that is not a success, see `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`how to read an error response`}),`.`]}),` 13987`,(0,h.jsxs)(t.p,{children:[`Every operation lives on `,(0,h.jsx)(t.code,{children:`https://app.tilopay.com`}),` and, except for the login operations, requires the API token â see `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`authentication`}),`.`]})]})}function Oc(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Dc,{...e})}):Dc(e)}var kc=t({default:()=>Mc,frontmatter:()=>Ac}),Ac={title:`API · Create coupon`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/recurrentes/cupones`,`api/procesos-operativos/errors`],description:`Creation of discount coupons for recurring plans.`,gaps:[`No response example available.`]};function jc(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,table:`table`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,...m(),...e.components},{Param:n}=t;return n||Nc(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/createCoupon`})]})})})}),` 13988`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`What it does`}),` 13989`,(0,h.jsx)(t.p,{children:`Creates a discount coupon for a recurring plan: discount type, expiration, user and email permissions, and usage limits.`}),` 13990`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Authentication`}),` 13991`,(0,h.jsxs)(t.p,{children:[`Requires the API bearer token in the `,(0,h.jsx)(t.code,{children:`Authorization`}),` header â see `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`authentication`}),`.`]}),` 13992`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parameters`}),` 13993`,(0,h.jsx)(n,{id:`create-coupon-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Tilopay integration key.`})}),` 13994`,(0,h.jsx)(n,{id:`create-coupon-parametro-planid`,name:`planId`,type:`integer`,required:!0,children:(0,h.jsx)(t.p,{children:`Recurring plan id.`})}),` 13995`,(0,h.jsxs)(n,{id:`create-coupon-parametro-active-users`,name:`active_users`,type:`integer`,required:!0,children:[(0,h.jsx)(t.p,{children:`User permission.`}),(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Code`}),(0,h.jsx)(t.th,{children:`Value`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`0`}),(0,h.jsx)(t.td,{children:`Allow new users only`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`1`}),(0,h.jsx)(t.td,{children:`Allow already registered users`})]})]})]})]}),` 13996`,(0,h.jsxs)(n,{id:`create-coupon-parametro-type-discount`,name:`type_discount`,type:`integer`,required:!0,children:[(0,h.jsx)(t.p,{children:`Discount type.`}),(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Code`}),(0,h.jsx)(t.th,{children:`Value`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`1`}),(0,h.jsx)(t.td,{children:`Percentage`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`2`}),(0,h.jsx)(t.td,{children:`Fixed amount`})]})]})]})]}),` 13997`,(0,h.jsx)(n,{id:`create-coupon-parametro-discount`,name:`discount`,type:`integer`,required:!0,children:(0,h.jsx)(t.p,{children:`Numeric value of the discount.`})}),` 13998`,(0,h.jsx)(n,{id:`create-coupon-parametro-expire`,name:`expire`,type:`string`,required:!0,children:(0,h.jsxs)(t.p,{children:[`Coupon expiration date, `,(0,h.jsx)(t.code,{children:`Y-m-d`}),` format (for example 2025-10-20).`]})}),` 13999`,(0,h.jsxs)(n,{id:`create-coupon-parametro-email-group`,name:`email_group`,type:`integer`,required:!0,children:[(0,h.jsx)(t.p,{children:`Email permission.`}),(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Code`}),(0,h.jsx)(t.th,{children:`Value`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`1`}),(0,h.jsx)(t.td,{children:`Specific emails`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`2`}),(0,h.jsx)(t.td,{children:`Any email`})]})]})]})]}),` 14000`,(0,h.jsx)(n,{id:`create-coupon-parametro-email`,name:`email`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Comma-separated list of emails. Required when `,(0,h.jsx)(t.code,{children:`email_group`}),` is sent as 1.`]})}),` 14001`,(0,h.jsx)(n,{id:`create-coupon-parametro-usage`,name:`usage`,type:`integer`,children:(0,h.jsx)(t.p,{children:`Total number of uses.`})}),` 14002`,(0,h.jsx)(n,{id:`create-coupon-parametro-renews`,name:`renews`,type:`integer`,children:(0,h.jsx)(t.p,{children:`Total number of valid renewals.`})}),` 14003`,(0,h.jsx)(n,{id:`create-coupon-parametro-renews-by-user`,name:`renews_by_user`,type:`integer`,children:(0,h.jsx)(t.p,{children:`Total uses by the same user.`})}),` 14004`,(0,h.jsx)(t.h2,{id:`request`,children:`Request example`}),` 14005`,(0,h.jsxs)(t.p,{children:[`The `,(0,h.jsx)(t.code,{children:`<...>`}),` values are placeholders: replace them with your own credentials and data.`]}),` 14006`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 14007`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14008`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "planId"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`10`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14009`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "active_users"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14010`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type_discount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14011`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "discount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`40`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14012`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "expire"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2025-10-20"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14013`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "email_group"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14014`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "email"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"[email protected], [email protected]"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14015`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "usage"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14016`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "renews"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`2`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14017`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "renews_by_user"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`2`})]}),` 14018`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 14019`,(0,h.jsxs)(t.p,{children:[`To interpret a response that is not a success, see `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`how to read an error response`}),`.`]})]})}function Mc(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(jc,{...e})}):jc(e)}function Nc(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Pc=t({default:()=>Lc,frontmatter:()=>Fc}),Fc={title:`API · Delete coupon`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/recurrentes/cupones`,`api/procesos-operativos/errors`],description:`Deletion of a recurring coupon by id.`,gaps:[`No response example available.`]};function Ic(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{Param:n}=t;return n||Rc(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/deleteCoupon`})]})})})}),` 14020`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`What it does`}),` 14021`,(0,h.jsx)(t.p,{children:`Deletes a coupon.`}),` 14022`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Authentication`}),` 14023`,(0,h.jsxs)(t.p,{children:[`Requires the API bearer token in the `,(0,h.jsx)(t.code,{children:`Authorization`}),` header â see `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`authentication`}),`.`]}),` 14024`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parameters`}),` 14025`,(0,h.jsx)(n,{id:`delete-coupon-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Tilopay integration key.`})}),` 14026`,(0,h.jsx)(n,{id:`delete-coupon-parametro-id`,name:`id`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Coupon id.`})}),` 14027`,(0,h.jsx)(t.h2,{id:`request`,children:`Request example`}),` 14028`,(0,h.jsxs)(t.p,{children:[`The `,(0,h.jsx)(t.code,{children:`<...>`}),` values are placeholders: replace them with your own credentials and data.`]}),` 14029`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 14030`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14031`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1"`})]}),` 14032`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 14033`,(0,h.jsxs)(t.p,{children:[`To interpret a response that is not a success, see `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`how to read an error response`}),`.`]})]})}function Lc(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Ic,{...e})}):Ic(e)}function Rc(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var zc=t({default:()=>Hc,frontmatter:()=>Bc}),Bc={title:`API · Get a coupon`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/recurrentes/cupones`,`api/procesos-operativos/errors`],description:`Query of a recurring coupon by id.`,gaps:[`No response example available.`]};function Vc(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{Param:n}=t;return n||Uc(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/getCoupon`})]})})})}),` 14034`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`What it does`}),` 14035`,(0,h.jsx)(t.p,{children:`Returns a single coupon.`}),` 14036`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Authentication`}),` 14037`,(0,h.jsxs)(t.p,{children:[`Requires the API bearer token in the `,(0,h.jsx)(t.code,{children:`Authorization`}),` header â see `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`authentication`}),`.`]}),` 14038`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parameters`}),` 14039`,(0,h.jsx)(n,{id:`get-coupon-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Tilopay integration key.`})}),` 14040`,(0,h.jsx)(n,{id:`get-coupon-parametro-id`,name:`id`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Coupon id.`})}),` 14041`,(0,h.jsx)(t.h2,{id:`request`,children:`Request example`}),` 14042`,(0,h.jsxs)(t.p,{children:[`The `,(0,h.jsx)(t.code,{children:`<...>`}),` values are placeholders: replace them with your own credentials and data.`]}),` 14043`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 14044`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14045`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1"`})]}),` 14046`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx
14046)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 14047`,(0,h.jsxs)(t.p,{children:[`To interpret a response that is not a success, see `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`how to read an error response`}),`.`]})]})}function Hc(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Vc,{...e})}):Vc(e)}function Uc(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Wc=t({default:()=>qc,frontmatter:()=>Gc}),Gc={title:`API · List coupons of a plan`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/recurrentes/cupones`,`api/procesos-operativos/errors`],description:`Listing of the coupons of a recurring plan.`,gaps:[`No response example available.`]};function Kc(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{Param:n}=t;return n||Jc(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/getRepeatCoupons`})]})})})}),` 14048`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`What it does`}),` 14049`,(0,h.jsx)(t.p,{children:`Returns the coupons associated with a recurring plan.`}),` 14050`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Authentication`}),` 14051`,(0,h.jsxs)(t.p,{children:[`Requires the API bearer token in the `,(0,h.jsx)(t.code,{children:`Authorization`}),` header â see `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`authentication`}),`.`]}),` 14052`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parameters`}),` 14053`,(0,h.jsx)(n,{id:`get-coupons-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Tilopay integration key.`})}),` 14054`,(0,h.jsx)(n,{id:`get-coupons-parametro-id`,name:`id`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Recurring plan id.`})}),` 14055`,(0,h.jsx)(t.h2,{id:`request`,children:`Request example`}),` 14056`,(0,h.jsxs)(t.p,{children:[`The `,(0,h.jsx)(t.code,{children:`<...>`}),` values are placeholders: replace them with your own credentials and data.`]}),` 14057`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 14058`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14059`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1"`})]}),` 14060`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 14061`,(0,h.jsxs)(t.p,{children:[`To interpret a response that is not a success, see `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`how to read an error response`}),`.`]})]})}function qc(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Kc,{...e})}):Kc(e)}function Jc(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Yc=t({default:()=>Qc,frontmatter:()=>Xc}),Xc={title:`API · Recurring · Coupons`,kind:`api-index`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/procesos-operativos/errors`],description:`Recurring · Coupons operations of the Tilopay API, with parameters and examples.`};function Zc(e){let t={a:`a`,code:`code`,h2:`h2`,li:`li`,p:`p`,ul:`ul`,...m(),...e.components};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`operaciones`,children:`Operations`}),` 14062`,(0,h.jsxs)(t.ul,{children:[` 14063`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/cupones/create-coupon`,children:`Create coupon`})}),` 14064`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/cupones/get
14064-coupons`,children:`List coupons of a plan`})}),` 14065`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/cupones/get-coupon`,children:`Get a coupon`})}),` 14066`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/cupones/delete-coupon`,children:`Delete coupon`})}),` 14067`]}),` 14068`,(0,h.jsxs)(t.p,{children:[`Every operation lives on `,(0,h.jsx)(t.code,{children:`https://app.tilopay.com`}),` and, except for the login operations, requires the API token â see `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`authentication`}),`.`]})]})}function Qc(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Zc,{...e})}):Zc(e)}var $c=t({default:()=>nl,frontmatter:()=>el}),el={title:`API · Create recurring plan`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/recurrentes/planes`,`api/procesos-operativos/errors`],description:`Recurring plan creation: frequencies, free trial, modalities and webhooks.`};function tl(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,table:`table`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,...m(),...e.components},{Param:n}=t;return n||rl(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/createPlanRepeat`})]})})})}),` 14069`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`What it does`}),` 14070`,(0,h.jsx)(t.p,{children:`Creates a subscription plan: charge frequency, currency, trial period, modalities and webhooks.`}),` 14071`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Authentication`}),` 14072`,(0,h.jsxs)(t.p,{children:[`Requires the API bearer token in the `,(0,h.jsx)(t.code,{children:`Authorization`}),` header â see `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`authentication`}),`.`]}),` 14073`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parameters`}),` 14074`,(0,h.jsx)(n,{id:`create-plan-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Tilopay integration key.`})}),` 14075`,(0,h.jsx)(n,{id:`create-plan-parametro-title`,name:`title`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Recurring plan title.`})}),` 14076`,(0,h.jsx)(n,{id:`create-plan-parametro-description`,name:`description`,type:`string`,children:(0,h.jsx)(t.p,{children:`Plan description.`})}),` 14077`,(0,h.jsxs)(n,{id:`create-plan-parametro-frecuency`,name:`frecuency`,type:`integer`,children:[(0,h.jsx)(t.p,{children:`Charge frequency.`}),(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Code`}),(0,h.jsx)(t.th,{children:`Value`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`1`}),(0,h.jsx)(t.td,{children:`Daily`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`2`}),(0,h.jsx)(t.td,{children:`Weekly`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`3`}),(0,h.jsx)(t.td,{children:`Monthly`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`4`}),(0,h.jsx)(t.td,{children:`Yearly`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`5`}),(0,h.jsx)(t.td,{children:`Fortnightly`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`6`}),(0,h.jsx)(t.td,{children:`Every two months`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`7`}),(0,h.jsx)(t.td,{children:`Quarterly`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`8`}),(0,h.jsx)(t.td,{children:`Every four months`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`9`}),(0,h.jsx)(t.td,{children:`Every six months`})]})]})]})]}),` 14078`,(0,h.jsx)(n,{id:`create-plan-parametro-currency`,name:`currency`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Currency code in ISO 4217 format.`})}),` 14079`,(0,h.jsx)(n,{id:`create-plan-parametro-first-amount`,name:`first_amount`,type:`integer`,required:!0,children:(0,h.jsx)(t.p,{children:`Initial payment amount.`})}),` 14080`,(0,h.jsx)(n,{id:`create-plan-parametro-trial`,name:`trial`,type:`integer`,required:!0,children:(0,h.jsx)(t.p,{children:`Enables the free trial period: 0 no, 1 yes.`})}),` 14081`,(0,h.jsx)(n,{id:`create-plan-parametro-trial-days`,name:`trial_days`,type:`integer`,required:!0,children:(0,h.jsx)(t.p,{children:`Days of the free trial period.`})}),` 14082`,(0,h.jsx)(n,{id:`create-plan-parametro-attempts`,name:`attempts`,type:`integer`,required:!0,children:(0,h.jsx)(t.p,{children:`Number of retries for failed charges.`})}),` 14083`,(0,h.jsx)(n,{id:`create-plan-parametro-modality`,name:`modality`,type:`array`,required:!0,children:(0,h.jsx)(t.p,{children:`Array of plan modalities.`})}),` 14084`,(0,h.jsx)(n,{id:`create-plan-parametro-thanks-url`,name:`thanks_url`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Optional field. The merchant's own thank-you URL; it must support the `,(0,h.jsx)(t.strong,{children:`GET`}),` method.`]})}),` 14085`,(0,h.jsx)(n,{id:`create-plan-parametro-webhook-subscribe`,name:`webhook_subscribe`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Optional field. Webhook URL, over `,(0,h.jsx)(t.strong,{children:`POST`}),`, that receives the callback in the request body when a customer successfully takes out a subscription. Example of the data sent: `,(0,h.jsx)(t.code,{children:`{'id_plan' : 1, 'email' : '[email protected]', 'modality' : 'ModalityName', 'amount' : 25, 'frequency' : '', 'coupon' : '5HT5W8YT', 'free_trial' : 1, 'next_payment_date' : '2023-02-25'}`})]})}),` 14086`,(0,h.jsx)(n,{id:`create-plan-parametro-webhook-payment`,name:`webhook_payment`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Optional field. Webhook URL, over `,(0,h.jsx)(t.strong,{children:`POST`}),`, that receives the callback in the request body when the customer is charged successfully. Example of the data sent: `,(0,h.jsx)(t.code,{children:`{'id_plan' : 1, 'email' : '[email protected]', 'amount' : 25, 'auth' : '123456', 'orderNumber' : 'PRE123456'}`})]})}),` 14087`,(0,h.jsx)(n,{id:`create-plan-parametro-webhook-rejected`,name:`webhook_rejected`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Optional field. Webhook URL, over `,(0,h.jsx)(t.strong,{children:`POST`}),`, that receives the callback in the request body when a payment fails. Example of the data sent: `,(0,h.jsx)(t.code,{children:`{'id_plan' : 1, 'email' : '[email protected]', 'amount' : 25}`})]})}),`
14088`,(0,h.jsx)(n,{id:`create-plan-parametro-webhook-unsubscribe`,name:`webhook_unsubscribe`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Optional field. Webhook URL, over `,(0,h.jsx)(t.strong,{children:`POST`}),`, that receives the callback in the request body when a customer cancels the subscription to one of their plans. Example of the data sent: `,(0,h.jsx)(t.code,{children:`{'id_plan' : 1, 'email' : '[email protected]', 'expire' : '2023-02-25'}`})]})}),` 14089`,(0,h.jsx)(n,{id:`create-plan-parametro-webhook-reactive`,name:`webhook_reactive`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Optional field. Webhook URL, over `,(0,h.jsx)(t.strong,{children:`POST`}),`, that receives the callback in the request body when a customer reactivates the subscription to one of their plans. Example of the data sent: `,(0,h.jsx)(t.code,{children:`{'id_plan' : 1, 'email' : '[email protected]', 'next_payment_date' : '2023-02-25'}`})]})}),` 14090`,(0,h.jsx)(n,{id:`create-plan-parametro-end-at`,name:`end_at`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`End date of the recurring plan, `,(0,h.jsx)(t.code,{children:`d-m-Y`}),` format (for example 25-09-2022). When the plan has no end date, send it empty.`]})}),` 14091`,(0,h.jsx)(n,{id:`create-plan-parametro-notify`,name:`notify`,type:`integer`,children:(0,h.jsxs)(t.p,{children:[`Set to 1 it adds the `,(0,h.jsx)(t.code,{children:`notify_detail`}),` and `,(0,h.jsx)(t.code,{children:`notify_note`}),` text to the notification email. Set to 0 it adds neither.`]})}),` 14092`,(0,h.jsx)(n,{id:`create-plan-parametro-notify-detail-es`,name:`notify_detail_es`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Detail text in Spanish. Optional when `,(0,h.jsx)(t.code,{children:`notify`}),` is 0.`]})}),` 14093`,(0,h.jsx)(n,{id:`create-plan-parametro-notify-detail-en`,name:`notify_detail_en`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Detail text in English. Optional when `,(0,h.jsx)(t.code,{children:`notify`}),` is 0.`]})}),` 14094`,(0,h.jsx)(n,{id:`create-plan-parametro-notify-note-es`,name:`notify_note_es`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Notes text in Spanish. Optional when `,(0,h.jsx)(t.code,{children:`notify`}),` is 0.`]})}),` 14095`,(0,h.jsx)(n,{id:`create-plan-parametro-notify-note-en`,name:`notify_note_en`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Notes text in English. Optional when `,(0,h.jsx)(t.code,{children:`notify`}),` is 0.`]})}),` 14096`,(0,h.jsx)(t.h2,{id:`request`,children:`Request example`}),` 14097`,(0,h.jsxs)(t.p,{children:[`The `,(0,h.jsx)(t.code,{children:`<...>`}),` values are placeholders: replace them with your own credentials and data.`]}),` 14098`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 14099`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14100`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "title"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Plan title"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14101`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Plan description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14102`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "frecuency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14103`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14104`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "first_amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14105`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "trial"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14106`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "trial_days"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14107`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "attempts"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14108`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "modality"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: [`})]}),` 14109`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 14110`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "title"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Basic"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14111`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`10`})]}),` 14112`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` },`})}),` 14113`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 14114`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "title"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Premium"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14115`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`30`})]}),` 14116`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` }`})}),` 14117`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` ],`})}),` 14118`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "thanks_url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14119`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "webhook_subscribe"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14120`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "webhook_payment"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14121`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "webhook_rejected"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14122`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "webhook_unsubscribe"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14123`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "webhook_reactive"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14124`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "end_at"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"25-10-2023"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14125`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "notify"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14126`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "notify_detail_es"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14127`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "notify_detail_en"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14128`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`}
14128,children:` "notify_note_es"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14129`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "notify_note_en"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`})]}),` 14130`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 14131`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Response`}),` 14132`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 14133`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"200"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14134`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "status"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14135`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Success"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14136`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`624`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14137`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://app.tilopay.com/link/TmpJMHwx"`})]}),` 14138`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 14139`,(0,h.jsxs)(t.p,{children:[`To interpret a response that is not a success, see `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`how to read an error response`}),`.`]})]})}function nl(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(tl,{...e})}):tl(e)}function rl(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var il=t({default:()=>sl,frontmatter:()=>al}),al={title:`API · Delete recurring plan`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/recurrentes/planes`,`api/procesos-operativos/errors`],description:`Deletion of a recurring plan by id.`};function ol(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{Param:n}=t;return n||cl(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/deletePlanRepeat`})]})})})}),` 14140`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`What it does`}),` 14141`,(0,h.jsx)(t.p,{children:`Deletes a recurring plan.`}),` 14142`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Authentication`}),` 14143`,(0,h.jsxs)(t.p,{children:[`Requires the API bearer token in the `,(0,h.jsx)(t.code,{children:`Authorization`}),` header â see `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`authentication`}),`.`]}),` 14144`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parameters`}),` 14145`,(0,h.jsx)(n,{id:`delete-plan-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Tilopay integration key.`})}),` 14146`,(0,h.jsx)(n,{id:`delete-plan-parametro-id`,name:`id`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Recurring plan id.`})}),` 14147`,(0,h.jsx)(t.h2,{id:`request`,children:`Request example`}),` 14148`,(0,h.jsxs)(t.p,{children:[`The `,(0,h.jsx)(t.code,{children:`<...>`}),` values are placeholders: replace them with your own credentials and data.`]}),` 14149`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 14150`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14151`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"625"`})]}),` 14152`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 14153`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Response`}),` 14154`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 14155`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"200"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14156`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "status"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14157`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Success"`})]}),` 14158`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 14159`,(0,h.jsxs)(t.p,{children:[`To interpret a response that is not a success, see `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`how to read an error response`}),`.`]})]})}function sl(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(ol,{...e})}):ol(e)}function cl(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var ll=t({default:()=>fl,frontmatter:()=>ul}),ul={title:`API · Edit recurring plan`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/recurrentes/planes`,`api/procesos-operativos/errors`],description:`Editing a recurring plan and its status.`};function dl(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,table:`table`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,...m(),...e.components},{Param:n}=t;return n||pl(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/editPlanRepeat`})]})})})}),` 14160`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`What it does`}),` 14161`,(0,h.jsx)(t.p,{children:`Edits an existing plan, including its status.`}),` 14162`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Authentication`}),` 14163`,(0,h.jsxs)(t.p,{children:[`Requires the API bearer token in the `,(0,h.jsx)(t.code,{children:`Authorization`}),` header â see `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`authentication`}),`.`]}),` 14164`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parameters`}),` 14165`,(0,h.jsx)(n,{id:`edit-plan-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Tilopay integration key.`})}),` 14166`,(0,h.jsx)(n,{id:`edit-plan-parametro-id`,name:`id`,type:`integer`,required:!0,children:(0,h.jsx)(t.p,{children:`Recurring plan id.`})}),` 14167`,(0,h.jsx)(n,{id:`edit-plan-parametro-title`,name:`title`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Recurring plan title.`})}),` 14168`,(0,h.jsx)(n,{id:`edit-plan-parametro-description`,name:`description`,type:`string`,children:(0,h.jsx)(t.p,{children:`Plan description.`})}),` 14169`,(0,h.jsxs)(n,{id:`edit-plan-parametro-frecuency`,name:`frecuency`,type:`integer`,children:[(0,h.jsx)(t.p,{children:`Charge frequency.`}),(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Code`}),(0,h.jsx)(t.th,{children:`Value`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`1`}),(0,h.jsx)(t.td,{children:`Daily`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`2`}),(0,h.jsx)(t.td,{children:`Weekly`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`3`}),(0,h.jsx)(t.td,{children:`Monthly`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`4`}),(0,h.jsx)(t.td,{children:`Yearly`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`5`}),(0,h.jsx)(t.td,{children:`Fortnightly`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`6`}),(0,h.jsx)(t.td,{children:`Every two months`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`7`}),(0,h.jsx)(t.td,{children:`Quarterly`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`8`}),(0,h.jsx)(t.td,{children:`Every four months`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`9`}),(0,h.jsx)(t.td,{children:`Every six months`})]})]})]})]}),` 14170`,(0,h.jsx)(n,{id:`edit-plan-parametro-currency`,name:`currency`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Currency code in ISO 4217 format.`})}),` 14171`,(0,h.jsx)(n,{id:`edit-plan-parametro-first-amount`,name:`first_amount`,type:`integer`,required:!0,children:(0,h.jsx)(t.p,{children:`Initial payment amount.`})}),` 14172`,(0,h.jsx)(n,{id:`edit-plan-parametro-trial`,name:`trial`,type:`integer`,required:!0,children:(0,h.jsx)(t.p,{children:`Enables the free trial period: 0 no, 1 yes.`})}),` 14173`,(0,h.jsx)(n,{id:`edit-plan-parametro-trial-days`,name:`trial_days`,type:`integer`,required:!0,children:(0,h.jsx)(t.p,{children:`Days of the free trial period.`})}),` 14174`,(0,h.jsx)(n,{id:`edit-plan-parametro-attempts`,name:`attempts`,type:`integer`,required:!0,children:(0,h.jsx)(t.p,{children:`Number of retries for failed charges.`})}),` 14175`,(0,h.jsxs)(n,{id:`edit-plan-parametro-status`,name:`status`,type:`integer`,required:!0,children:[(0,h.jsx)(t.p,{children:`Status of the recurring plan.`}),(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Code`}),(0,h.jsx)(t.th,{children:`Value`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`0`}),(0,h.jsx)(t.td,{children:`Inactive`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`1`}),(0,h.jsx)(t.td,{children:`Active`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`2`}),(0,h.jsx)(t.td,{children:`Active but with no new sign-ups`})]})]})]})]}),` 14176`,(0,h.jsx)(n,{id:`edit-plan-parametro-thanks-url`,name:`thanks_url`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Optional field. The merchant's own thank-you URL; it must support the `,(0,h.jsx)(t.strong,{children:`GET`}),` method.`]})}),` 14177`,(0,h.jsx)(n,{id:`edit-plan-parametro-webhook-subscribe`,name:`webhook_subscribe`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Optional field. Webhook URL, over `,(0,h.jsx)(t.strong,{children:`POST`}),`, that receives the callback in the request body when a customer successfully takes out a subscription. Example of the data sent: `,(0,h.jsx)(t.code,{children:`{'id_plan' : 1, 'email' : '[email protected]', 'modality' : 'ModalityName', 'amount' : 25, 'frequency' : '', 'coupon' : '5HT5W8YT', 'free_trial' : 1, 'next_payment_date' : '2023-02-25'}`})]})}),` 14178`,(0,h.jsx)(n,{id:`edit-plan-parametro-webhook-payment`,name:`webhook_payment`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Optional field. Webhook URL, over `,(0,h.jsx)(t.strong,{children:`POST`}),`, that receives the callback in the request body when the customer is charged successfully. Example of the data sent: `,(0,h.jsx)(t.code,{children:`{'id_plan' : 1, 'email' : '[email protected]', 'amount' : 25, 'auth' : '123456', 'orderNumber' : 'PRE123456'}`})]})}),` 14179`,(0,h.jsx)(n,{id:`edit-plan-parametro-webhook-rejected`,name:`webhook_rejected`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Optional field. Webhook URL, over `,(0,h.jsx)(t.strong,{children:`POST`}),`, that receives the callback in the request body when a payment fails. Example of the data sent: `,(0,h.jsx)(t.code,{children:`{'id_plan' : 1, 'email' : '[email protected]', 'amount' : 25}`})]})}),`
14180`,(0,h.jsx)(n,{id:`edit-plan-parametro-webhook-unsubscribe`,name:`webhook_unsubscribe`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Optional field. Webhook URL, over `,(0,h.jsx)(t.strong,{children:`POST`}),`, that receives the callback in the request body when a customer cancels the subscription to one of their plans. Example of the data sent: `,(0,h.jsx)(t.code,{children:`{'id_plan' : 1, 'email' : '[email protected]', 'expire' : '2023-02-25'}`})]})}),` 14181`,(0,h.jsx)(n,{id:`edit-plan-parametro-webhook-reactive`,name:`webhook_reactive`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Optional field. Webhook URL, over `,(0,h.jsx)(t.strong,{children:`POST`}),`, that receives the callback in the request body when a customer reactivates the subscription to one of their plans. Example of the data sent: `,(0,h.jsx)(t.code,{children:`{'id_plan' : 1, 'email' : '[email protected]', 'next_payment_date' : '2023-02-25'}`})]})}),` 14182`,(0,h.jsx)(n,{id:`edit-plan-parametro-end-at`,name:`end_at`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`End date of the recurring plan, `,(0,h.jsx)(t.code,{children:`d-m-Y`}),` format (for example 25-09-2022). When the plan has no end date, send it empty.`]})}),` 14183`,(0,h.jsx)(t.h2,{id:`request`,children:`Request example`}),` 14184`,(0,h.jsxs)(t.p,{children:[`The `,(0,h.jsx)(t.code,{children:`<...>`}),` values are placeholders: replace them with your own credentials and data.`]}),` 14185`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 14186`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14187`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`3`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14188`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "title"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Plan title"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14189`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Plan description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14190`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "frecuency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`2`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14191`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14192`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "first_amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14193`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "trial"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14194`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "trial_days"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14195`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "attempts"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`5`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14196`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "status"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14197`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "thanks_url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14198`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "webhook_subscribe"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14199`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "webhook_payment"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14200`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "webhook_rejected"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14201`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "webhook_unsubscribe"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14202`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "webhook_reactive"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14203`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "end_at"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"25-10-2023"`})]}),` 14204`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 14205`,(0,h.jsxs)(t.p,{children:[`To interpret a response that is not a success, see `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`how to read an error response`}),`.`]})]})}function fl(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(dl,{...e})}):dl(e)}function pl(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var ml=t({default:()=>_l,frontmatter:()=>hl}),hl={title:`API · Get a recurring plan`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/recurrentes/planes`,`api/procesos-operativos/errors`],description:`Query of a recurring plan by id.`};function gl(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{Param:n}=t;return n||vl(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/getPlanRepeat`})]})})})}),` 14206`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`What it does`}),` 14207`,(0,h.jsx)(t.p,{children:`Returns a single recurring plan.`}),` 14208`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Authentication`}),` 14209`,(0,h.jsxs)(t.p,{children:[`Requires the API bearer token in the `,(0,h.jsx)(t.code,{children:`Authorization`}),` header â see `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`authentication`}),`.`]}),` 14210`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parameters`}),` 14211`,(0,h.jsx)(n,{id:`get-plan-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Tilopay integration key.`})}),` 14212`,(0,h.jsx)(n,{id:`get-plan-parametro-id`,name:`id`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Recurring plan id.`})}),` 14213`,(0,h.jsx)(t.h2,{id:`request`,children:`Request example`}),` 14214`,(0,h.jsxs)(t.p,{children:[`The `,(0,h.jsx)(t.code,{children:`<...>`}),` values are placeholders: replace them with your own credentials and data.`]}),` 14215`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 14216`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14217`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"3"`})]}),` 14218`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 14219`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Response`}),` 14220`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 14221`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"200"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14222`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Success"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14223`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "plan"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: {`})]}),` 14224`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`232`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14225`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "title"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Prueba repeat"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14226`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Plan repeat de prueba mensual"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14227`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "frequency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`3`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14228`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14229`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "first_amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"5.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14230`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "trial"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14231`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "trial_days"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14232`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "attempts"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`5`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14233`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "thanks_url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14234`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "webhook_subscribe"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14235`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "webhook_payment"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14236`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "webhook_rejected"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14237`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "webhook_unsubscribe"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14238`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "webhook_reactive"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14239`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "modality"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: [`})]}),` 14240`,(0,h.jsx)(t.span,{className:`line`,childre
14240n:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 14241`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`292`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14242`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "title"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Pago mensual prueba repeat modalidad"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14243`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"10.00"`})]}),` 14244`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` }`})}),` 14245`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` ],`})}),` 14246`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "end_at"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`})]}),` 14247`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` }`})}),` 14248`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 14249`,(0,h.jsxs)(t.p,{children:[`To interpret a response that is not a success, see `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`how to read an error response`}),`.`]})]})}function _l(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(gl,{...e})}):gl(e)}function vl(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var yl=t({default:()=>Sl,frontmatter:()=>bl}),bl={title:`API · List recurring plans`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/recurrentes/planes`,`api/procesos-operativos/errors`],description:`Listing of the integration's recurring plans.`,gaps:[`No response example available.`]};function xl(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{Param:n}=t;return n||Cl(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/getPlansRepeat`})]})})})}),` 14250`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`What it does`}),` 14251`,(0,h.jsx)(t.p,{children:`Returns the merchant's recurring plans.`}),` 14252`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Authentication`}),` 14253`,(0,h.jsxs)(t.p,{children:[`Requires the API bearer token in the `,(0,h.jsx)(t.code,{children:`Authorization`}),` header â see `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`authentication`}),`.`]}),` 14254`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parameters`}),` 14255`,(0,h.jsx)(n,{id:`get-plans-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Tilopay integration key.`})}),` 14256`,(0,h.jsx)(t.h2,{id:`request`,children:`Request example`}),` 14257`,(0,h.jsxs)(t.p,{children:[`The `,(0,h.jsx)(t.code,{children:`<...>`}),` values are placeholders: replace them with your own credentials and data.`]}),` 14258`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 14259`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`})]}),` 14260`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 14261`,(0,h.jsxs)(t.p,{children:[`To interpret a response that is not a success, see `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`how to read an error response`}),`.`]})]})}function Sl(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(xl,{...e})}):xl(e)}function Cl(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var wl=t({default:()=>Dl,frontmatter:()=>Tl}),Tl={title:`API · Recurring · Plans`,kind:`api-index`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/procesos-operativos/errors`],description:`Recurring · Plans operations of the Tilopay API, with parameters and examples.`};function El(e){let t={a:`a`,code:`code`,h2:`h2`,li:`li`,p:`p`,ul:`ul`,...m(),...e.components};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`operaciones`,children:`Operations`}),` 14262`,(0,h.jsxs)(t.ul,{children:[` 14263`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/planes/create-plan`,children:`Create recurring plan`})}),` 14264`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/planes/edit-plan`,children:`Edit recurring plan`})}),` 14265`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/planes/get-plan`,children:`Get a recurring plan`})}),` 14266`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/planes/get-plans`,children:`List recurring plans`})}),` 14267`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/planes/delete-plan`,children:`Delete recurring plan`})}),` 14268`]}),` 14269`,(0,h.jsxs)(t.p,{children:[`Every operation lives on `,(0,h.jsx)(t.code,{children:`https://app.tilopay.com`}),` and, except for the login operations, requires the API token â see `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`authentication`}),`.`]})]})}function Dl(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(El,{...e})}):El(e)}var Ol=t({default:()=>jl,frontmatter:()=>kl}),kl={title:`API · Registration and renewal URL`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/recurrentes/suscriptores`,`api/procesos-operativos/errors`],description:`Registration or renewal URL of a recurring plan for a given email.`};function Al(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{Param:n}=t;return n||Ml(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/recurrentUrl`})]})})})}),` 14270`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`What it does`}),` 14271`,(0,h.jsx)(t.p,{children:`Returns the registration URL of a recurring plan for a new user, or the renewal URL when the email is already registered.`}),` 14272`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Authentication`}),` 14273`,(0,h.jsxs)(t.p,{children:[`Requires the API bearer token in the `,(0,h.jsx)(t.code,{children:`Authorization`}),` header â see `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`authentication`}),`.`]}),` 14274`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parameters`}),` 14275`,(0,h.jsx)(n,{id:`consult-url-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Tilopay integration key.`})}),` 14276`,(0,h.jsx)(n,{id:`consult-url-parametro-id`,name:`id`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Recurring plan id.`})}),` 14277`,(0,h.jsx)(n,{id:`consult-url-parametro-email`,name:`email`,type:`string`,children:(0,h.jsx)(t.p,{children:`Email of the user the registration link is created for.`})}),` 14278`,(0,h.jsx)(t.h2,{id:`request`,children:`Request example`}),` 14279`,(0,h.jsxs)(t.p,{children:[`The `,(0,h.jsx)(t.code,{children:`<...>`}),` values are placeholders: replace them with your own credentials and data.`]}),` 14280`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 14281`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14282`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14283`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "email"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"[email protected]"`})]}),` 14284`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 14285`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Response`}),` 14286`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 14287`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"200"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14288`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14289`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "url_register"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://app.tilopay.com/admin/recurrent/register/[email protected]"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14290`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "url_renew"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`})]}),` 14291`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 14292`,(0,h.jsxs)(t.p,{children:[`To interpret a response that is not a success, see `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`how to read an error response`}),`.`]})]})}function jl(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Al,{...e})}):Al(e)}function Ml(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Nl=t({default:()=>Il,frontmatter:()=>Pl}),Pl={title:`API · Delete subscriber`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/recurrentes/suscriptores`,`api/procesos-operativos/errors`],description:`Deletion of a subscriber from a recurring plan.`};function Fl(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{Param:n}=t;return n||Ll(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/deleteSuscriptorRepeat`})]})})})}),` 14293`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`What it does`}),` 14294`,(0,h.jsx)(t.p,{children:`Deletes a subscriber from a recurring plan.`}),` 14295`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Authentication`}),` 14296`,(0,h.jsxs)(t.p,{children:[`Requires the API bearer token in the `,(0,h.jsx)(t.code,{children:`Authorization`}),` header â see `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`authentication`}),`.`]}),` 14297`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parameters`}),` 14298`,(0,h.jsx)(n,{id:`delete-suscriptor-plan-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Tilopay integration key.`})}),` 14299`,(0,h.jsx)(n,{id:`delete-suscriptor-plan-parametro-id-suscriptor`,name:`id_suscriptor`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Subscriber id.`})}),` 14300`,(0,h.jsx)(t.h2,{id:`request`,children:`Request example`}),` 14301`,(0,h.jsxs)(t.p,{children:[`The `,(0,h.jsx)(t.code,{children:`<...>`}),` values are placeholders: replace them with your own credentials and data.`]}),` 14302`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 14303`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14304`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id_suscriptor"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1"`})]}),` 14305`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 14306`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Response`}),` 14307`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 14308`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"200"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14309`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "status"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`
14309},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14310`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Success"`})]}),` 14311`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 14312`,(0,h.jsxs)(t.p,{children:[`To interpret a response that is not a success, see `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`how to read an error response`}),`.`]})]})}function Il(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Fl,{...e})}):Fl(e)}function Ll(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Rl=t({default:()=>Vl,frontmatter:()=>zl}),zl={title:`API · Edit subscriber`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/recurrentes/suscriptores`,`api/procesos-operativos/errors`],description:`Editing the status and expiration of a subscriber.`};function Bl(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,table:`table`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,...m(),...e.components},{Param:n}=t;return n||Hl(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/editSuscriptorRepeat`})]})})})}),` 14313`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`What it does`}),` 14314`,(0,h.jsx)(t.p,{children:`Changes the status or the expiration date of a subscriber.`}),` 14315`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Authentication`}),` 14316`,(0,h.jsxs)(t.p,{children:[`Requires the API bearer token in the `,(0,h.jsx)(t.code,{children:`Authorization`}),` header â see `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`authentication`}),`.`]}),` 14317`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parameters`}),` 14318`,(0,h.jsx)(n,{id:`edit-suscriptor-plan-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Tilopay integration key.`})}),` 14319`,(0,h.jsx)(n,{id:`edit-suscriptor-plan-parametro-id`,name:`id`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Subscriber id.`})}),` 14320`,(0,h.jsxs)(n,{id:`edit-suscriptor-plan-parametro-status`,name:`status`,type:`string`,children:[(0,h.jsx)(t.p,{children:`Status of the subscriber.`}),(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Code`}),(0,h.jsx)(t.th,{children:`Value`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`1`}),(0,h.jsx)(t.td,{children:`Active`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`3`}),(0,h.jsx)(t.td,{children:`Paused`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`4`}),(0,h.jsx)(t.td,{children:`Deleted`})]})]})]})]}),` 14321`,(0,h.jsx)(n,{id:`edit-suscriptor-plan-parametro-expire`,name:`expire`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Plan expiration date, `,(0,h.jsx)(t.code,{children:`yy-m-d`}),` format.`]})}),` 14322`,(0,h.jsx)(t.h2,{id:`request`,children:`Request example`}),` 14323`,(0,h.jsxs)(t.p,{children:[`The `,(0,h.jsx)(t.code,{children:`<...>`}),` values are placeholders: replace them with your own credentials and data.`]}),` 14324`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 14325`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14326`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14327`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "status"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14328`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "expire"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2023-10-25"`})]}),` 14329`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 14330`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Response`}),` 14331`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 14332`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"200"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14333`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "status"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14334`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Success"`})]}),` 14335`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 14336`,(0,h.jsxs)(t.p,{children:[`To interpret a response that is not a success, see `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`how to read an error response`}),`.`]})]})}function Vl(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Bl,{...e})}):Bl(e)}function Hl(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Ul=t({default:()=>Kl,frontmatter:()=>Wl}),Wl={title:`API · Subscribers of a plan`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/recurrentes/suscriptores`,`api/procesos-operativos/errors`],description:`Query of the subscribers of a recurring plan.`};function Gl(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{Param:n}=t;return n||ql(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/getSuscriptorRepeat`})]})})})}),` 14337`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`What it does`}),` 14338`,(0,h.jsx)(t.p,{children:`Returns the subscribers associated with a recurring plan.`}),` 14339`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Authentication`}),` 14340`,(0,h.jsxs)(t.p,{children:[`Requires the API bearer token in the `,(0,h.jsx)(t.code,{children:`Authorization`}),` header â see `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`authentication`}),`.`]}),` 14341`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parameters`}),` 14342`,(0,h.jsx)(n,{id:`get-suscriptor-plan-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Tilopay integration key.`})}),` 14343`,(0,h.jsx)(n,{id:`get-suscriptor-plan-parametro-id`,name:`id`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Recurring plan id.`})}),` 14344`,(0,h.jsx)(t.h2,{id:`request`,children:`Request example`}),` 14345`,(0,h.jsxs)(t.p,{children:[`The `,(0,h.jsx)(t.code,{children:`<...>`}),` values are placeholders: replace them with your own credentials and data.`]}),` 14346`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 14347`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14348`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2"`})]}),` 14349`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 14350`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Response`}),` 14351`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 14352`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"200"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14353`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Success"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14354`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "suscriptor"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: [`})]}),` 14355`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 14356`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`360`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14357`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "name"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Jhon 1"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14358`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "lastname"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"D"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14359`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "email"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"[email protected]"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14360`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "modality"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Pago mensual prueba repeat modalidad"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14361`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"10.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14362`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "expire"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2023-03-26"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14363`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "coupon"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14364`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "status"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Delete"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14365`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "create"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2022-10-19 12:48:59"`})]}),` 14366`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` },`})}),` 14367`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 14368`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`33364`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14369`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "name"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Jhon 2"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14370`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "lastname"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"D"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14371`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "email"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"[email protected]"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14372`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "modality"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Pago mensual prueba repeat modalidad"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14373`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"10.00"`}),(0,h.jsx)(t.span,{s
14373tyle:{color:`#E1E4E8`},children:`,`})]}),` 14374`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "expire"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2023-08-05"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14375`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "coupon"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14376`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "status"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Active"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14377`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "create"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2023-06-05 14:24:18"`})]}),` 14378`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` }`})}),` 14379`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` ]`})}),` 14380`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 14381`,(0,h.jsxs)(t.p,{children:[`To interpret a response that is not a success, see `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`how to read an error response`}),`.`]})]})}function Kl(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Gl,{...e})}):Gl(e)}function ql(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Jl=t({default:()=>Zl,frontmatter:()=>Yl}),Yl={title:`API · Pause subscriber`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/recurrentes/suscriptores`,`api/procesos-operativos/errors`],description:`Pausing a subscriber's subscription.`};function Xl(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{Param:n}=t;return n||Ql(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/pauseSuscriptorRepeat`})]})})})}),` 14382`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`What it does`}),` 14383`,(0,h.jsx)(t.p,{children:`Pauses a subscriber's subscription.`}),` 14384`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Authentication`}),` 14385`,(0,h.jsxs)(t.p,{children:[`Requires the API bearer token in the `,(0,h.jsx)(t.code,{children:`Authorization`}),` header â see `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`authentication`}),`.`]}),` 14386`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parameters`}),` 14387`,(0,h.jsx)(n,{id:`pause-suscriptor-plan-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Tilopay integration key.`})}),` 14388`,(0,h.jsx)(n,{id:`pause-suscriptor-plan-parametro-id-suscriptor`,name:`id_suscriptor`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Subscriber id.`})}),` 14389`,(0,h.jsx)(t.h2,{id:`request`,children:`Request example`}),` 14390`,(0,h.jsxs)(t.p,{children:[`The `,(0,h.jsx)(t.code,{children:`<...>`}),` values are placeholders: replace them with your own credentials and data.`]}),` 14391`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 14392`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14393`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id_suscriptor"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1"`})]}),` 14394`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 14395`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Response`}),` 14396`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 14397`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"200"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14398`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "status"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14399`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Success"`})]}),` 14400`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 14401`,(0,h.jsxs)(t.p,{children:[`To interpret a response that is not a success, see `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`how to read an error response`}),`.`]})]})}function Zl(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Xl,{...e})}):Xl(e)}function Ql(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var $l=t({default:()=>nu,frontmatter:()=>eu}),eu={title:`API · Reactivate subscriber`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/recurrentes/suscriptores`,`api/procesos-operativos/errors`],description:`Reactivation of a subscriber's subscription.`};function tu(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{Param:n}=t;return n||ru(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/reactiveSuscriptorRepeat`})]})})})}),` 14402`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`What it does`}),` 14403`,(0,h.jsx)(t.p,{children:`Reactivates a paused subscriber's subscription.`}),` 14404`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Authentication`}),` 14405`,(0,h.jsxs)(t.p,{children:[`Requires the API bearer token in the `,(0,h.jsx)(t.code,{children:`Authorization`}),` header â see `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`authentication`}),`.`]}),` 14406`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parameters`}),` 14407`,(0,h.jsx)(n,{id:`reactive-suscriptor-plan-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Tilopay integration key.`})}),` 14408`,(0,h.jsx)(n,{id:`reactive-suscriptor-plan-parametro-id-suscriptor`,name:`id_suscriptor`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Subscriber id.`})}),` 14409`,(0,h.jsx)(t.h2,{id:`request`,children:`Request example`}),` 14410`,(0,h.jsxs)(t.p,{children:[`The `,(0,h.jsx)(t.code,{children:`<...>`}),` values are placeholders: replace them with your own credentials and data.`]}),` 14411`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 14412`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14413`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id_suscriptor"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1"`})]}),` 14414`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 14415`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Response`}),` 14416`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 14417`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"200"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14418`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "status"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14419`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Success"`})]}),` 14420`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 14421`,(0,h.jsxs)(t.p,{children:[`To interpret a response that is not a success, see `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`how to read an error response`}),`.`]})]})}function nu(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(tu,{...e})}):tu(e)}function ru(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var iu=t({default:()=>su,frontmatter:()=>au}),au={title:`API · Subscriber payments`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/recurrentes/suscriptores`,`api/procesos-operativos/errors`],description:`Payment history of the subscribers of a recurring plan.`,gaps:[`No response example available.`]};function ou(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{Param:n}=t;return n||cu(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/getSuscriptorPayments`})]})})})}),` 14422`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`What it does`}),` 14423`,(0,h.jsx)(t.p,{children:`Returns the payments of the subscribers of a recurring plan.`}),` 14424`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Authentication`}),` 14425`,(0,h.jsxs)(t.p,{children:[`Requires the API bearer token in the `,(0,h.jsx)(t.code,{children:`Authorization`}),` header â see `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`authentication`}),`.`]}),` 14426`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parameters`}),` 14427`,(0,h.jsx)(n,{id:`suscriptor-payments-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Tilopay integration key.`})}),` 14428`,(0,h.jsx)(n,{id:`suscriptor-payments-parametro-id`,name:`id`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Recurring plan id.`})}),` 14429`,(0,h.jsx)(t.h2,{id:`request`,children:`Request example`}),` 14430`,(0,h.jsxs)(t.p,{children:[`The `,(0,h.jsx)(t.code,{children:`<...>`}),` values are placeholders: replace them with your own credentials and data.`]}),` 14431`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 14432`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14433`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1"`})]}),` 14434`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 14435`,(0,h.jsxs)(t.p,{children:[`To interpret a response that is not a success, see `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`how to read an error response`}),`.`]})]})}function su(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(ou,{...e})}):ou(e)}function cu(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var lu=t({default:()=>fu,frontmatter:()=>uu}),uu={title:`API · Recurring · Subscribers`,kind:`api-index`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/procesos-operativos/errors`],description:`Recurring · Subscribers operations of the Tilopay API, with parameters and examples.`};function du(e){let t={a:`a`,code:`code`,h2:`h2`,li:`li`,p:`p`,ul:`ul`,...m(),...e.components};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`operaciones`,children:`Operations`}),` 14436`,(0,h.jsxs)(t.ul,{children:[` 14437`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/suscriptores/get-suscriptor-plan`,children:`Subscribers of a plan`})}),` 14438`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/suscriptores/edit-suscriptor-plan`,children:`Edit subscriber`})}),` 14439`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/suscriptores/pause-suscriptor-plan`,children:`Pause subscriber`})}),` 14440`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/suscriptores/reactive-suscriptor-plan`,children:`Reactivate subscriber`})}),` 14441`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/re
14441currentes/suscriptores/delete-suscriptor-plan`,children:`Delete subscriber`})}),` 14442`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/suscriptores/consult-url`,children:`Registration and renewal URL`})}),` 14443`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/suscriptores/suscriptor-payments`,children:`Subscriber payments`})}),` 14444`]}),` 14445`,(0,h.jsxs)(t.p,{children:[`Every operation lives on `,(0,h.jsx)(t.code,{children:`https://app.tilopay.com`}),` and, except for the login operations, requires the API token â see `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`authentication`}),`.`]})]})}function fu(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(du,{...e})}):du(e)}var pu=t({default:()=>gu,frontmatter:()=>mu}),mu={title:`API · Recurring charges`,kind:`api-index`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/procesos-operativos/errors`],description:`Recurring charges operations of the Tilopay API, with parameters and examples.`};function hu(e){let t={a:`a`,code:`code`,h2:`h2`,li:`li`,p:`p`,ul:`ul`,...m(),...e.components};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`operaciones`,children:`Operations`}),` 14446`,(0,h.jsx)(t.p,{children:`16 operations in three subgroups:`}),` 14447`,(0,h.jsxs)(t.ul,{children:[` 14448`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/planes`,children:`Plans`}),` â 5`]}),` 14449`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/suscriptores`,children:`Subscribers`}),` â 7`]}),` 14450`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/cupones`,children:`Coupons`}),` â 4`]}),` 14451`]}),` 14452`,(0,h.jsxs)(t.p,{children:[`Every operation lives on `,(0,h.jsx)(t.code,{children:`https://app.tilopay.com`}),` and, except for the login operations, requires the API token â see `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`authentication`}),`.`]})]})}function gu(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(hu,{...e})}):hu(e)}var _u=t({default:()=>bu,frontmatter:()=>vu}),vu={title:`API · Webhooks`,kind:`concept`,status:`stable`,api_version:`v1`,last_verified:`2026-08-28`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Respuestas de TecnologÃa, 28-08-2026`],locales:[`es`,`en`],related:[`api/procesos-operativos/errors`,`reintentos-seguros`],gaps:[`orderHash algorithm: not public, delivered through [email protected].`,`processPayment webhook contract: delivered on request, not publishable.`],description:`Which events exist, how many retries there are, in what format they arrive and how to confirm the state of a charge.`};function yu(e){let t={code:`code`,h2:`h2`,p:`p`,strong:`strong`,table:`table`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,...m(),...e.components},{Callout:n}=t;return n||xu(`Callout`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`recurrencia`,children:`Recurrence`}),` 14453`,(0,h.jsxs)(t.p,{children:[`Six fields configured when `,(0,h.jsx)(t.strong,{children:`creating or editing a plan`}),`. All optional.`]}),` 14454`,(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Field`}),(0,h.jsx)(t.th,{children:`What it is`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`webhook_subscribe`})}),(0,h.jsx)(t.td,{children:`Subscription webhook`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`webhook_payment`})}),(0,h.jsx)(t.td,{children:`Charge webhook`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`webhook_rejected`})}),(0,h.jsx)(t.td,{children:`Rejected charge webhook`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`webhook_unsubscribe`})}),(0,h.jsx)(t.td,{children:`Unsubscribe webhook`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`webhook_reactive`})}),(0,h.jsx)(t.td,{children:`Reactivation webhook`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`thanks_url`})}),(0,h.jsxs)(t.td,{children:[(0,h.jsx)(t.strong,{children:`Not a webhook:`}),` it is a GET callback`]})]})]})]}),` 14455`,(0,h.jsx)(t.h2,{id:`links-de-pago`,children:`Payment links`}),` 14456`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.code,{children:`webhook_url`}),` is configured when creating the link.`]}),` 14457`,(0,h.jsx)(t.h2,{id:`reintentos`,children:`Retries`}),` 14458`,(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Source`}),(0,h.jsx)(t.th,{children:`Attempts`}),(0,h.jsx)(t.th,{children:`When it retries`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Recurrence`}),(0,h.jsx)(t.td,{children:`5`}),(0,h.jsx)(t.td,{children:`When your response is 400, 404, 502, 504 or 403`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Purchases`}),(0,h.jsx)(t.td,{children:`1`}),(0,h.jsx)(t.td,{children:`â`})]})]})]}),` 14459`,(0,h.jsxs)(t.p,{children:[`Delivery is considered successful on an `,(0,h.jsx)(t.strong,{children:`HTTP 200`}),`. Respond 200 as soon as you receive the 14460event and process it separately: anything else counts as a failure, and purchases have no second 14461attempt.`]}),` 14462`,(0,h.jsx)(t.h2,{id:`formato`,children:`Format`}),` 14463`,(0,h.jsx)(t.p,{children:`JSON.`}),` 14464`,(0,h.jsx)(t.h2,{id:`token`,children:`The card token`}),` 14465`,(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Source`}),(0,h.jsx)(t.th,{children:`Token`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Recurrence`}),(0,h.jsx)(t.td,{children:(0,h.jsx)(t.strong,{children:`Not sent`})})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Purchases`}),(0,h.jsxs)(t.td,{children:[`Sent and `,(0,h.jsx)(t.strong,{children:`usable`})]})]})]})]}),` 14466`,(0,h.jsx)(t.h2,{id:`verificacion`,children:`Origin verification`}),` 14467`,(0,h.jsxs)(n,{type:`warn`,children:[(0,h.jsxs)(t.p,{children:[`The only origin verification available is the `,(0,h.jsx)(t.code,{children:`orderHash`}),`, and `,(0,h.jsx)(t.strong,{children:`its algorithm is not public`}),`: 14468it is delivered to merchants who request it by writing to `,(0,h.jsx)(t.code,{children:`[email protected]`}),`.`]}),(0,h.jsx)(t.p,{children:`Until you have the algorithm, do not take irreversible business decisions from webhook content 14469alone: confirm the state against the API before shipping or releasing a service.`})]}),` 14470`,(0,h.jsx)(t.h2,{id:`processpayment`,children:`Main flow webhook`}),` 14471`,(0,h.jsx)(n,{type:`info`,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.code,{children:`processPayment`}),` also has a webhook. Its contract `,(0,h.jsx)(t.strong,{children:`is delivered to merchants who request it`}),`: 14472write to `,(0,h.jsx)(t.code,{children:`[email protected]`}
14472),` to receive it.`]})})]})}function bu(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(yu,{...e})}):yu(e)}function xu(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Su=t({default:()=>Tu,frontmatter:()=>Cu}),Cu={title:`Banking API authentication`,kind:`concept`,status:`stable`,api_version:`1.0.0`,last_verified:`2026-09-02`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Tilopay_API_BaaS.yaml â Banking API OpenAPI 3.0.3 spec, version 1.0.0`],locales:[`es`,`en`],description:`Login, token exchange and Bearer JWT usage in Tilopay's Banking API.`};function wu(e){let t={code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,table:`table`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,...m(),...e.components};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.p,{children:`The Banking API uses a two-step flow: first you authenticate the customer with email and 14473password, then you exchange the resulting token for a JWT access token that signs every 14474other call.`}),` 14475`,(0,h.jsxs)(t.p,{children:[`The three endpoints in the `,(0,h.jsx)(t.code,{children:`Auth`}),` group are the only ones that carry `,(0,h.jsx)(t.strong,{children:`no`}),` 14476`,(0,h.jsx)(t.code,{children:`Authorization`}),` header. Every other endpoint requires 14477`,(0,h.jsx)(t.code,{children:`Authorization: Bearer <access_token>`}),`.`]}),` 14478`,(0,h.jsx)(t.h2,{id:`login`,children:`Step 1 â Login`}),` 14479`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/public/v1/auth/login`})]})})})}),` 14480`,(0,h.jsxs)(t.p,{children:[`Required body: `,(0,h.jsx)(t.code,{children:`email`}),` (email format) and `,(0,h.jsx)(t.code,{children:`password`}),`.`]}),` 14481`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 14482`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "email"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"[email protected]"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14483`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "password"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"â¢â¢â¢â¢â¢â¢â¢â¢"`})]}),` 14484`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 14485`,(0,h.jsxs)(t.p,{children:[`The `,(0,h.jsx)(t.code,{children:`200`}),` response returns in `,(0,h.jsx)(t.code,{children:`data`}),`:`]}),` 14486`,(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Field`}),(0,h.jsx)(t.th,{children:`Type`}),(0,h.jsx)(t.th,{children:`Description`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`gidp_id_token`})}),(0,h.jsx)(t.td,{children:`string`}),(0,h.jsx)(t.td,{children:`Identity token for step 2.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`assignments`})}),(0,h.jsx)(t.td,{children:`array`}),(0,h.jsx)(t.td,{children:`Available customer contexts.`})]})]})]}),` 14487`,(0,h.jsxs)(t.p,{children:[`Each `,(0,h.jsx)(t.code,{children:`assignments`}),` item carries `,(0,h.jsx)(t.code,{children:`assignment_id`}),`, `,(0,h.jsx)(t.code,{children:`owner_type`}),`, `,(0,h.jsx)(t.code,{children:`owner_id`}),`, `,(0,h.jsx)(t.code,{children:`tenant_id`}),`, 14488`,(0,h.jsx)(t.code,{children:`tenant_code`}),`, `,(0,h.jsx)(t.code,{children:`country_code`}),`, `,(0,h.jsx)(t.code,{children:`role`}),`, `,(0,h.jsx)(t.code,{children:`roles`}),` and `,(0,h.jsx)(t.code,{children:`status`}),`. Pick the `,(0,h.jsx)(t.code,{children:`assignment_id`}),` of 14489the context you will operate with.`]}),` 14490`,(0,h.jsx)(t.h2,{id:`exchange`,children:`Step 2 â Token exchange`}),` 14491`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/public/v1/auth/token/exchange`})]})})})}),` 14492`,(0,h.jsxs)(t.p,{children:[`Required body: `,(0,h.jsx)(t.code,{children:`gidp_id_token`}),` (from step 1) and `,(0,h.jsx)(t.code,{children:`assignment_id`}),` (the chosen context).`]}),` 14493`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 14494`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "gidp_id_token"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"eyJhbGciOi..."`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14495`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "assignment_id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"3fa85f64-5717-4562-b3fc-2c963f66afa6"`})]}),` 14496`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 14497`,(0,h.jsxs)(t.p,{children:[`The `,(0,h.jsx)(t.code,{children:`200`}),` response returns in `,(0,h.jsx)(t.code,{children:`data`}),`:`]}),` 14498`,(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Field`}),(0,h.jsx)(t.th,{children:`Type`}),(0,h.jsx)(t.th,{children:`Description`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`token`})}),(0,h.jsx)(t.td,{children:`string`}),(0,h.jsx)(t.td,{children:`JWT access token.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`expires_in`})}),(0,h.jsx)(t.td,{children:`integer`}),(0,h.jsx)(t.td,{children:`Token lifetime in seconds.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`claims`})}),(0,h.jsx)(t.td,{children:`object`}),(0,h.jsx)(t.td,{children:`Resolved token context.`})]})]})]}),` 14499`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.code,{children:`claims`}),` includes `,(0,h.jsx)(t.code,{children:`sub`}),`, `,(0,h.jsx)(t.code,{children:`subject_kind`}),`, `,(0,h.jsx)(t.code,{children:`user_type`}),`, `,(0,h.jsx)(t.code,{children:`tenant_id`}),`, `,(0,h.jsx)(t.code,{children:`owner_type`}),`, 14500`,(0,h.jsx)(t.code,{children:`owner_id`}),`, `,(0,h.jsx)(t.code,{children:`roles`}),`, `,(0,h.jsx)(t.code,{children:`scopes`}),`, `,(0,h.jsx)(t.code,{children:`country_code`}),`, `,(0,h.jsx)(t.code,{children:`locale`}),`, `,(0,h.jsx)(t.code,{children:`channel`}),`, `,(0,h.jsx)(t.code,{children:`idp`}),`, `,(0,h.jsx)(t.code,{children:`idp_sub`}),` and 14501`,(0,h.jsx)(t.code,{children:`idempotency_key`}),`.`]}),` 14502`,(0,h.jsx)(t.h2,{id:`bearer`,children:`Step 3 â Use the Bearer token`}),` 14503`,(0,h.jsxs)(t.p,{children:[`The declared security scheme is `,(0,h.jsx)(t.code,{children:`BearerAuth`}),`: HTTP bearer with JWT format.`]}),` 14504`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#85E89D`},children:`Authorization`}),(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`:`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:` Bearer <access_token>`})]})})})}),` 14505`,(0,h.jsxs)(t.p,{children:[`Context travels `,(0,h.jsx)(t.strong,{children:`inside`}),` the token: business operations do not take `,(0,h.jsx)(t.code,{children:`tenant_id`}),`, 14506`,(0,h.jsx)(t.code,{children:`owner_id`}),` or `,(0,h.jsx)(t.code,{children:`owner_type`}),` as parameters. The token alone scopes which accounts and 14507payments you can reach.`]}),` 14508`,(0,h.jsxs)(t.p,{children:[`When the token is absent, expired or invalid, the response is `,(0,h.jsx)(t.code,{children:`401`}),` with 14509`,(0,h.jsx)(t.code,{children:`response_code: UNAUTHORIZED`}),`. If the token is valid but the context does not authorize 14510the resource, it is `,(0,h.jsx)(t.code,{children:`403`}),` with `,(0,h.jsx)(t.code,{children:`FORBIDDEN`}),`. Repeat step 2 to renew the access token 14511before `,(0,h.jsx)(t.code,{children:`expires_in`}),` elapses.`]}),` 14512`,(0,h.jsx)(t.h2,{id:`password`,children:`Passwords`}),` 14513`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/public/v1/auth/request-set-password`})]})})})}),` 14514`,(0,h.jsx)(t.p,{children:`Starts the set/reset password process for the given email. It requires no prior 14515authentication and always responds the same way whether or not the account exists, so it 14516never reveals if an email is registered.`}),` 14517`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 14518`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "email"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"[email protected]"`})]}),` 14519`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})})]})}function Tu(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(wu,{...e})}):wu(e)}var Eu=t({default:()=>ku,frontmatter:()=>Du}),Du={title:`Banking API catalogs`,kind:`api-operation`,status:`stable`,api_version:`1.0.0`,last_verified:`2026-09-02`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Tilopay_API_BaaS.yaml â Banking API OpenAPI 3.0.3 spec, version 1.0.0`],locales:[`es`,`en`],description:`Customer identification type catalog per country in the Banking API.`};function Ou(e){let t={code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{BaasOperations:n}=t;return n||Au(`BaasOperations`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(t.p,{children:[`The `,(0,h.jsx)(t.code,{children:`Catalogs`}),` group publishes the values your integration must use in customer 14520identification fields, instead of hardcoding them.`]}),` 14521`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`GET`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/public/v1/catalogs/customer-identification-types`})]})})})}),` 14522`,(0,h.jsxs)(t.p,{children:[`Filter by two-letter `,(0,h.jsx)(t.code,{children:`country_code`}),` to get the types in force in that country. Fetch the 14523catalog when you start the integration and cache the result; read it again before adding a 14524new country.`]}),` 14525`,(0,h.jsx)(t.h2,{id:`operaciones`,children:`Operations`}),` 14526`,(0,h.jsx)(n,{slug:`api-bancario/catalogos`})]})}function ku(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Ou,{...e})}):Ou(e)}function Au(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var ju=t({default:()=>Pu,frontmatter:()=>Mu}),Mu={title:`Banking API conventions`,kind:`concept`,status:`stable`,api_version:`1.0.0`,last_verified:`2026-09-02`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Tilopay_API_BaaS.yaml â Banking API OpenAPI 3.0.3 spec, version 1.0.0`],locales:[`es`,`en`],description:`Response envelope, correlation, safe retries, pagination and date format in the Banking API.`};function Nu(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,table:`table`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,...m(),...e.components};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.p,{children:`Every Banking API operation shares the same response shape, the same pagination rules 14527and the same date format. This page describes what the spec declares across all 14528endpoints.`}),` 14529`,(0,h.jsx)(t.h2,{id:`envelope`,children:`Response envelope`}),` 14530`,(0,h.jsx)(t.p,{children:`Every response, successful or not, travels in the same envelope:`}),` 14531`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 14532`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "success"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`true`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14533`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "http_status_code"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`200`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14534`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "response_code"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"OK"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14535`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"The request was processed successfully."`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14536`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "correlation_id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"3fa85f64-5717-4562-b3fc-2c963f66afa6"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14537`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "data"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: {}`})]}),` 14538`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 14539`,(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Field`}),(0,h.jsx)(t.th,{children:`Type`}),(0,h.jsx)(t.th,{children:`Description`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`success`})}),(0,h.jsx)(t.td,{children:`boolean`}),(0,h.jsxs)(t.td,{children:[(0,h.jsx)(t.code,{children:`true`}),` on successful responses; `,(0,h.jsx)(t.code,{children:`false`}),` on errors.`]})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`http_status_code`})}),(0,h.jsx)(t.td,{children:`integer`}),(0,h.jsx)(t.td,{children:`Repeats the HTTP status i
14539nside the body.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`response_code`})}),(0,h.jsx)(t.td,{children:`string`}),(0,h.jsxs)(t.td,{children:[`Code from the `,(0,h.jsxs)(t.a,{href:`/developers/api-bancario/errores`,children:[(0,h.jsx)(t.code,{children:`response_code`}),` catalog`]}),`.`]})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`message`})}),(0,h.jsx)(t.td,{children:`string`}),(0,h.jsx)(t.td,{children:`Human-readable response message.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`correlation_id`})}),(0,h.jsx)(t.td,{children:`string`}),(0,h.jsx)(t.td,{children:`Call identifier.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`data`})}),(0,h.jsx)(t.td,{children:`object`}),(0,h.jsx)(t.td,{children:`Operation payload.`})]})]})]}),` 14540`,(0,h.jsxs)(t.p,{children:[`Error responses also carry `,(0,h.jsx)(t.code,{children:`errors`}),`, a detail object that may include arbitrary fields 14541such as `,(0,h.jsx)(t.code,{children:`code`}),`, `,(0,h.jsx)(t.code,{children:`message`}),` or `,(0,h.jsx)(t.code,{children:`detail`}),`.`]}),` 14542`,(0,h.jsxs)(t.p,{children:[`Branch your logic on `,(0,h.jsx)(t.code,{children:`response_code`}),`, never on the `,(0,h.jsx)(t.code,{children:`message`}),` text.`]}),` 14543`,(0,h.jsx)(t.h2,{id:`correlacion`,children:`Correlation`}),` 14544`,(0,h.jsxs)(t.p,{children:[`Send `,(0,h.jsx)(t.code,{children:`X-Correlation-Id`}),` on the request to propagate your own identifier; the value comes 14545back as `,(0,h.jsx)(t.code,{children:`correlation_id`}),` in the envelope. Keep it in your logs: it is what support uses 14546to trace a specific call.`]}),` 14547`,(0,h.jsx)(t.h2,{id:`reintentos`,children:`Safe retries`}),` 14548`,(0,h.jsxs)(t.p,{children:[`Two operations accept the `,(0,h.jsx)(t.code,{children:`Idempotency-Key`}),` header:`]}),` 14549`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/public/v1/transactions/payments`})]}),` 14550`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/public/v1/accounts/statements`})]})]})})}),` 14551`,(0,h.jsxs)(t.p,{children:[`Resending the same key with the same body returns the original result instead of 14552creating a second record, so a network timeout can be retried without duplicating. If 14553you reuse a key with a different body, the response is `,(0,h.jsx)(t.code,{children:`409`}),` with 14554`,(0,h.jsx)(t.code,{children:`response_code: IDEMPOTENCY_CONFLICT`}),`.`]}),` 14555`,(0,h.jsx)(t.p,{children:`Generate one key per business intent (for example a UUID per order), not one per retry. 14556Every other operation is a read and can be repeated with no additional effects.`}),` 14557`,(0,h.jsx)(t.h2,{id:`paginacion`,children:`Pagination`}),` 14558`,(0,h.jsx)(t.p,{children:`The API uses two schemes depending on the resource.`}),` 14559`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`Cursor, on the payment list.`}),` `,(0,h.jsx)(t.code,{children:`GET /api/public/v1/transactions/payments`}),` accepts 14560`,(0,h.jsx)(t.code,{children:`limit`}),` (default 20, maximum 100) and `,(0,h.jsx)(t.code,{children:`cursor`}),`. The response carries 14561`,(0,h.jsx)(t.code,{children:`pagination.next_cursor`}),`: pass it as `,(0,h.jsx)(t.code,{children:`cursor`}),` on the next request. When it is empty or 14562omitted, there are no more pages.`]}),` 14563`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`Offset, on accounts.`}),` `,(0,h.jsx)(t.code,{children:`GET /api/public/v1/accounts`}),` and 14564`,(0,h.jsx)(t.code,{children:`GET /api/public/v1/accounts/balances`}),` accept `,(0,h.jsx)(t.code,{children:`limit`}),` (1 to 100) and `,(0,h.jsx)(t.code,{children:`offset`}),` (from 0), 14565and return `,(0,h.jsx)(t.code,{children:`pagination`}),` with `,(0,h.jsx)(t.code,{children:`limit`}),`, `,(0,h.jsx)(t.code,{children:`offset`}),` and `,(0,h.jsx)(t.code,{children:`total`}),`.`]}),` 14566`,(0,h.jsx)(t.h2,{id:`formatos`,children:`Dates and amounts`}),` 14567`,(0,h.jsxs)(t.p,{children:[`Date parameters and fields use RFC 3339, for example `,(0,h.jsx)(t.code,{children:`2026-09-02T15:04:05Z`}),`. The 14568`,(0,h.jsx)(t.code,{children:`date_from`}),` and `,(0,h.jsx)(t.code,{children:`date_to`}),` filters on the payment list follow that same format.`]}),` 14569`,(0,h.jsx)(t.h2,{id:`host`,children:`Host health and documentation`}),` 14570`,(0,h.jsx)(t.p,{children:`The host itself exposes three service routes:`}),` 14571`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`GET`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/public/v1/healthz`})]}),` 14572`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`GET`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /openapi.yaml`})]}),` 14573`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`GET`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /docs`})]})]})})}),` 14574`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.code,{children:`healthz`}),` is for availability checks, `,(0,h.jsx)(t.code,{children:`openapi.yaml`}),` returns the raw spec and `,(0,h.jsx)(t.code,{children:`/docs`}),` the 14575service's documentation UI. In this portal the same spec is available at 14576`,(0,h.jsx)(t.a,{href:`/developers/api-bancario/openapi.json`,children:`openapi.json`}),` and 14577`,(0,h.jsx)(t.a,{href:`/developers/api-bancario/openapi.yaml`,children:`openapi.yaml`}),`.`]})]})}function Pu(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Nu,{...e})}):Nu(e)}var Fu=t({default:()=>Ru,frontmatter:()=>Iu}),Iu={title:`Banking API accounts`,kind:`api-operation`,status:`stable`,api_version:`1.0.0`,last_verified:`2026-09-02`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Tilopay_API_BaaS.yaml â Banking API OpenAPI 3.0.3 spec, version 1.0.0`],locales:[`es`,`en`],description:`Banking API account operations: validation, listing, balances and statements.`};function Lu(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,...m(),...e.components},{BaasOperations:n}=t;return n||zu(`BaasOperations`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(t.p,{children:[`The `,(0,h.jsx)(t.code,{children:`Accounts`}),` group covers the account as a resource: validate a destination account 14578before transferring, list accessible accounts, check balances and request statements.`]}),` 14579`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/public/v1/accounts/validate`})]}),` 14580`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`GET`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/public/v1/accounts`})]}),` 14581`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`GET`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/public/v1/accounts/balances`})]}),` 14582`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`GET`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/public/v1/accounts/balance`})]}),` 14583`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/public/v1/accounts/statements`})]}),` 14584`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`GET`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/public/v1/accounts/statements/{request_id}`})]})]})})}),` 14585`,(0,h.jsx)(t.h2,{id:`reglas`,children:`Resource rules`}),` 14586`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`Scope.`}),` The listing returns only the accounts the token authorizes; `,(0,h.jsx)(t.code,{children:`tenant_id`}),` and 14587`,(0,h.jsx)(t.code,{children:`owner_id`}),` are never sent as parameters.`]}),` 14588`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`Validate first.`}),` Validate the destination account before creating a payment: the 14589operation confirms the account exists and is eligible, and returns the holder data the 14590service exposes.`]}),` 14591`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`Asynchronous statements.`}),` Generation is requested with a `,(0,h.jsx)(t.code,{children:`POST`}),` that accepts 14592`,(0,h.jsx)(t.code,{children:`Idempotency-Key`}),` and returns a `,(0,h.jsx)(t.code,{children:`request_id`}),`; you then poll that `,(0,h.jsx)(t.code,{children:`request_id`}),` until the 14593result is available. See 14594`,(0,h.jsx)(t.a,{href:`/developers/api-bancario/convenciones#reintentos`,children:`safe retries`}),`.`]}),` 14595`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`Pagination.`}),` `,(0,h.jsx)(t.code,{children:`GET /api/public/v1/accounts`}),` and `,(0,h.jsx)(t.code,{children:`GET /api/public/v1/accounts/balances`}),` 14596use `,(0,h.jsx)(t.code,{children:`limit`}),` and `,(0,h.jsx)(t.code,{children:`offset`}),`, and return `,(0,h.jsx)(t.code,{children:`pagination`}),` with `,(0,h.jsx)(t.code,{children:`limit`}),`, `,(0,h.jsx)(t.code,{children:`offset`}),` and `,(0,h.jsx)(t.code,{children:`total`}),`.`]}),` 14597`,(0,h.jsx)(t.h2,{id:`operaciones`,children:`Operations`}),` 14598`,(0,h.jsx)(n,{slug:`api-bancario/cuentas`})]})}function Ru(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Lu,{...e})}):Lu(e)}function zu(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Bu=t({default:()=>Uu,frontmatter:()=>Vu}),Vu={title:`Banking API response codes`,kind:`concept`,status:`stable`,api_version:`1.0.0`,last_verified:`2026-09-02`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Tilopay_API_BaaS.yaml â Banking API OpenAPI 3.0.3 spec, version 1.0.0`],locales:[`es`,`en`],description:`Full response_code catalog for Tilopay's Banking API and how to react to each family.`};function Hu(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,strong:`strong`,...m(),...e.components},{BaasResponseCodes:n}=t;return n||Wu(`BaasResponseCodes`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(t.p,{children:[`Every Banking API error arrives in the 14599`,(0,h.jsx)(t.a,{href:`/developers/api-bancario/convenciones#envelope`,children:`standard envelope`}),`, with `,(0,h.jsx)(t.code,{children:`success: false`}),`, 14600the HTTP status in `,(0,h.jsx)(t.code,{children:`http_status_code`}),` and a `,(0,h.jsx)(t.code,{children:`response_code`}),` from the catalog. Branch on 14601`,(0,h.jsx)(t.code,{children:`response_code`}),`.`]}),` 14602`,(0,h.jsx)(t.h2,{id:`familias`,children:`How to react per family`}),` 14603`,(0,h.jsxs)(t.p,{children:[(0,h.jsxs)(t.strong,{children:[`Request `,(0,h.jsx)(t.code,{children:`4xx`}),`.`]}),` The body or parameters are invalid, or the resource does not exist. 14604Fix the call before resending it: retrying as-is returns the same error. This covers 14605`,(0,h.jsx)(t.code,{children:`INVALID_REQUEST`}),`, `,(0,h.jsx)(t.code,{children:`VALIDATION_ERROR`}),`, `,(0,h.jsx)(t.code,{children:`NOT_FOUND`}),` and business codes such as 14606`,(0,h.jsx)(t.code,{children:`INSUFFICIENT_FUNDS`}),` or `,(0,h.jsx)(t.code,{children:`LIMIT_EXCEEDED`}),`.`]}),` 14607`,(0,h.jsxs)(t.p,{children:[(0,h.jsxs)(t.strong,{children:[(0,h.jsx)(t.code,{children:`401`}),` and `,(0,h.jsx)(t.code,{children:`403`}),`.`]}),` The token is absent, expired, or its context does not authorize the 14608resource. Renew the access token with the 14609`,(0,h.jsx)(t.a,{href:`/developers/api-bancario/autenticacion#exchange`,children:`token exchange`}),`; if it persists with a 14610fresh token, that context has no permission over the resource.`]}),` 14611`,(0,h.jsxs)(t.p,{children:[(0,h.jsxs)(t.strong,{children:[(0,h.jsx)(t.code,{children:`409 IDEMPOTENCY_CONFLICT`}),`.`]}),` You reused an `,(0,h.jsx)(t.code,{children:`Idempotency-Key`}),` with a different body. Use 14612a new key for the new intent; see 14613`,(0,h.jsx)(t.a,{href:`/developers/api-bancario/convenciones#reintentos`,children:`safe retries`}),`.`]}),` 14614`,(0,h.jsxs)(t.p,{children:[(0,h.jsxs)(t.strong,{children:[(0,h.jsx)(t.code,{children:`429`}),`.`]}),` You exceeded the call limit. Space out requests and retry with backoff.`]}),` 14615`,(0,h.jsxs)(t.p,{children:[(0,h.jsxs)(t.strong,{children:[(0,h.jsx)(t.code,{children:`5xx`}),`.`]}),` Service-side failure. Retry with backoff, and on `,(0,h.jsx)(t.code,{children:`POST`}
14615),` calls resend the 14616`,(0,h.jsx)(t.strong,{children:`same`}),` `,(0,h.jsx)(t.code,{children:`Idempotency-Key`}),` so the record is not duplicated. Keep the `,(0,h.jsx)(t.code,{children:`correlation_id`}),` 14617before escalating to support.`]}),` 14618`,(0,h.jsx)(t.h2,{id:`catalogo`,children:`Full catalog`}),` 14619`,(0,h.jsxs)(t.p,{children:[`These are the 28 values the spec declares in the `,(0,h.jsx)(t.code,{children:`ResponseCode`}),` enum, with the HTTP 14620statuses they appear under. `,(0,h.jsx)(t.code,{children:`OK`}),` is the code of successful responses.`]}),` 14621`,(0,h.jsx)(n,{}),` 14622`,(0,h.jsxs)(t.p,{children:[`A `,(0,h.jsx)(t.code,{children:`response_code`}),` outside this list is not part of the API's 1.0.0 contract: treat it as a 14623generic error based on its HTTP status and report it with the `,(0,h.jsx)(t.code,{children:`correlation_id`}),`.`]})]})}function Uu(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Hu,{...e})}):Hu(e)}function Wu(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Gu=t({default:()=>Ju,frontmatter:()=>Ku}),Ku={title:`Banking API payments`,kind:`api-operation`,status:`stable`,api_version:`1.0.0`,last_verified:`2026-09-02`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Tilopay_API_BaaS.yaml â Banking API OpenAPI 3.0.3 spec, version 1.0.0`],locales:[`es`,`en`],description:`Banking API payment operations: create, fetch, list and search PIN and SINPE Móvil payments.`};function qu(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,...m(),...e.components},{BaasOperations:n}=t;return n||Yu(`BaasOperations`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(t.p,{children:[`The `,(0,h.jsx)(t.code,{children:`Payments`}),` group covers a payment's full cycle: create it, fetch it by identifier, 14624list it with filters and search it by any of its references.`]}),` 14625`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/public/v1/transactions/payments`})]}),` 14626`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`GET`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/public/v1/transactions/payments`})]}),` 14627`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`GET`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/public/v1/transactions/payments/{payment_id}`})]}),` 14628`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/public/v1/transactions/payments/search`})]})]})})}),` 14629`,(0,h.jsx)(t.h2,{id:`reglas`,children:`Resource rules`}),` 14630`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`Methods.`}),` `,(0,h.jsx)(t.code,{children:`payment_method_code`}),` accepts `,(0,h.jsx)(t.code,{children:`PIN`}),` and `,(0,h.jsx)(t.code,{children:`SINPE_MOVIL`}),`. `,(0,h.jsx)(t.strong,{children:`Direction.`}),` 14631`,(0,h.jsx)(t.code,{children:`direction`}),` accepts `,(0,h.jsx)(t.code,{children:`OUT`}),` (outbound) and `,(0,h.jsx)(t.code,{children:`IN`}),` (inbound). `,(0,h.jsx)(t.strong,{children:`Destination account.`}),` it is 14632identified by `,(0,h.jsx)(t.code,{children:`IBAN`}),` or by `,(0,h.jsx)(t.code,{children:`PHONE`}),`, depending on the method.`]}),` 14633`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`Your own reference.`}),` `,(0,h.jsx)(t.code,{children:`client_reference`}),` is your payment identifier and is unique per 14634tenant: two payments of the same customer cannot share it. Use it to look a payment up 14635without storing the `,(0,h.jsx)(t.code,{children:`payment_id`}),`.`]}),` 14636`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`Safe retries.`}),` Creation accepts `,(0,h.jsx)(t.code,{children:`Idempotency-Key`}),`; resending the same key with the same 14637body returns the original payment instead of creating another one. See 14638`,(0,h.jsx)(t.a,{href:`/developers/api-bancario/convenciones#reintentos`,children:`safe retries`}),`.`]}),` 14639`,(0,h.jsx)(t.h2,{id:`estados`,children:`States`}),` 14640`,(0,h.jsxs)(t.p,{children:[`A payment moves through five states: `,(0,h.jsx)(t.code,{children:`pending`}),`, `,(0,h.jsx)(t.code,{children:`processing`}),`, `,(0,h.jsx)(t.code,{children:`confirmed`}),`, `,(0,h.jsx)(t.code,{children:`posted`}),` and 14641`,(0,h.jsx)(t.code,{children:`failed`}),`.`]}),` 14642`,(0,h.jsxs)(t.p,{children:[`A reversal is `,(0,h.jsx)(t.strong,{children:`not a state`}),`: a reversed payment stays in `,(0,h.jsx)(t.code,{children:`posted`}),` and is recognized by 14643`,(0,h.jsx)(t.code,{children:`result: reversed`}),` and `,(0,h.jsx)(t.code,{children:`has_reversal: true`}),`, plus the 14644`,(0,h.jsx)(t.a,{href:`/developers/api-bancario/webhooks`,children:(0,h.jsx)(t.code,{children:`payment.reversed`})}),` event. Always check those two 14645fields before treating a payment as final.`]}),` 14646`,(0,h.jsx)(t.h2,{id:`operaciones`,children:`Operations`}),` 14647`,(0,h.jsx)(n,{slug:`api-bancario/pagos`})]})}function Ju(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(qu,{...e})}):qu(e)}function Yu(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Xu=t({default:()=>$u,frontmatter:()=>Zu}),Zu={title:`Banking API webhooks`,kind:`api-operation`,status:`stable`,api_version:`1.0.0`,last_verified:`2026-09-02`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Tilopay_API_BaaS.yaml â Banking API OpenAPI 3.0.3 spec, version 1.0.0`],locales:[`es`,`en`],description:`Destination registration, subscribable features and payload contracts for Banking API webhooks.`};function Qu(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,table:`table`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,...m(),...e.components},{BaasOperations:n,BaasWebhookContracts:r}=t;return n||ed(`BaasOperations`,!0),r||ed(`BaasWebhookContracts`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(t.p,{children:[`The `,(0,h.jsx)(t.code,{children:`Webhooks`}),` group lets you register the HTTPS destination where you receive events, see 14648which features you can subscribe to per payment method and fetch each event's payload 14649contract before writing the receiver.`]}),` 14650`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/public/v1/webhook/destination`})]}),` 14651`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`GET`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/public/v1/webhook/features`})]}),` 14652`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`GET`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/public/v1/webhook/event-contracts/{event_type}`})]})]})})}),` 14653`,(0,h.jsx)(t.h2,{id:`eventos`,children:`Events`}),` 14654`,(0,h.jsx)(t.p,{children:`The spec declares four event types:`}),` 14655`,(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Event`}),(0,h.jsx)(t.th,{children:`When it arrives`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`payin.posted`})}),(0,h.jsx)(t.td,{children:`An inbound movement was credited.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`payment.succeeded`})}),(0,h.jsx)(t.td,{children:`The payment finished successfully.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`payment.failed`})}),(0,h.jsx)(t.td,{children:`The payment finished with a failure.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`payment.reversed`})}),(0,h.jsx)(t.td,{children:`The payment was reversed.`})]})]})]}),` 14656`,(0,h.jsxs)(t.p,{children:[`A reversed payment keeps the `,(0,h.jsx)(t.code,{children:`posted`}),` state and is told apart by `,(0,h.jsx)(t.code,{children:`result: reversed`}),` and 14657`,(0,h.jsx)(t.code,{children:`has_reversal: true`}),`; see `,(0,h.jsx)(t.a,{href:`/developers/api-bancario/pagos#estados`,children:`payment states`}),`.`]}),` 14658`,(0,h.jsx)(t.h2,{id:`receptor`,children:`Receiver best practices`}),` 14659`,(0,h.jsxs)(t.p,{children:[`Respond `,(0,h.jsx)(t.code,{children:`2xx`}),` as soon as you receive the event and process it separately: a slow receiver 14660causes redeliveries. Treat events as potentially repeated and deduplicate by the payment 14661identifier. And do not trust the final state to the webhook alone: confirm it with 14662`,(0,h.jsx)(t.a,{href:`/developers/api-bancario/pagos#operaciones`,children:`the payment lookup`}),`.`]}),` 14663`,(0,h.jsx)(t.h2,{id:`operaciones`,children:`Operations`}),` 14664`,(0,h.jsx)(n,{slug:`api-bancario/webhooks`}),` 14665`,(0,h.jsx)(t.h2,{id:`contratos`,children:`Payload contracts`}),` 14666`,(0,h.jsx)(t.p,{children:`Each event declares its own field contract. These are the ones the spec publishes:`}),` 14667`,(0,h.jsx)(r,{})]})}function $u(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Qu,{...e})}):Qu(e)}function ed(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var td=t({default:()=>id,frontmatter:()=>nd}),nd={title:`Tilopay Banking API`,kind:`api-index`,status:`stable`,api_version:`1.0.0`,last_verified:`2026-09-02`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Tilopay_API_BaaS.yaml â Banking API OpenAPI 3.0.3 spec, version 1.0.0`],locales:[`es`,`en`],related:[`server-to-server`],description:`Reference for Tilopay's Banking API (BaaS), generated from its OpenAPI 3.0.3 spec, version 1.0.0.`};function rd(e){let t={a:`a`,code:`code`,h2:`h2`,h3:`h3`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,...m(),...e.components};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.p,{children:`Tilopay's Banking API lets an integrated client initiate payments (PIN and SINPE Móvil), 14668check their status, manage accounts and subscribe to payment event webhooks, always 14669limited to the accounts the access token authorizes.`}),` 14670`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`It is a separate product from the payment gateway.`}),` It runs on its own
14671infrastructure, with its own host, credentials and authentication. A merchant already 14672integrated with the acquiring API does not get access to this one automatically.`]}),` 14673`,(0,h.jsxs)(t.p,{children:[`This reference is generated from the Banking API OpenAPI 3.0.3 spec, version `,(0,h.jsx)(t.strong,{children:`1.0.0`}),`.`]}),` 14674`,(0,h.jsx)(t.h2,{id:`que-permite`,children:`What it can do`}),` 14675`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`Payments.`}),` Create a payment, fetch it by identifier, list it by account and search it 14676by `,(0,h.jsx)(t.code,{children:`payment_id`}),`, `,(0,h.jsx)(t.code,{children:`public_id`}),` or `,(0,h.jsx)(t.code,{children:`client_reference`}),`; the declared methods are `,(0,h.jsx)(t.code,{children:`PIN`}),` and 14677`,(0,h.jsx)(t.code,{children:`SINPE_MOVIL`}),`, in `,(0,h.jsx)(t.code,{children:`OUT`}),` or `,(0,h.jsx)(t.code,{children:`IN`}),` direction. 14678`,(0,h.jsx)(t.a,{href:`/developers/api-bancario/pagos`,children:`See payment operations`}),`.`]}),` 14679`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`Accounts.`}),` Validate a destination account before transferring, list accessible 14680accounts with or without balances, check an account balance and request statements 14681asynchronously. 14682`,(0,h.jsx)(t.a,{href:`/developers/api-bancario/cuentas`,children:`See account operations`}),`.`]}),` 14683`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`Webhooks.`}),` Register an encrypted HTTPS destination, list the features you can 14684subscribe to per payment method and fetch each event's payload contract. 14685`,(0,h.jsx)(t.a,{href:`/developers/api-bancario/webhooks`,children:`See webhook operations`}),`.`]}),` 14686`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`Catalogs.`}),` Customer identification person types per country. 14687`,(0,h.jsx)(t.a,{href:`/developers/api-bancario/catalogos`,children:`See catalogs`}),`.`]}),` 14688`,(0,h.jsxs)(t.p,{children:[`The API also exposes `,(0,h.jsx)(t.code,{children:`GET /api/public/v1/healthz`}),` for health checks, plus `,(0,h.jsx)(t.code,{children:`GET /openapi.yaml`}),` and `,(0,h.jsx)(t.code,{children:`GET /docs`}),` for the raw spec and the host's own documentation UI.`]}),` 14689`,(0,h.jsx)(t.h3,{id:`fuera-de-alcance`,children:`Platform capabilities outside public API v1`}),` 14690`,(0,h.jsxs)(t.p,{children:[`Tilopay's banking platform offers commercial capabilities that `,(0,h.jsx)(t.strong,{children:`public API v1 does not 14691declare`}),`: DTR transfers, VISA or Mastercard card issuing and collections management. 14692There are no operations for them in this version of the API; to evaluate them, write to 14693`,(0,h.jsx)(t.strong,{children:(0,h.jsx)(t.a,{href:`mailto:[email protected]`,children:`[email protected]`})}),`.`]}),` 14694`,(0,h.jsx)(t.h2,{id:`entornos`,children:`Environments`}),` 14695`,(0,h.jsx)(t.p,{children:`The spec declares a single server, the sandbox one:`}),` 14696`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{children:`https://api-baas-sandbox.tilopay.com`})})})})}),` 14697`,(0,h.jsx)(t.p,{children:`The production host and each environment's credentials are handed over when access is 14698enabled. Routes and contracts are the same in both environments.`}),` 14699`,(0,h.jsx)(t.h2,{id:`artefactos`,children:`Machine-readable artifacts`}),` 14700`,(0,h.jsx)(t.p,{children:`The full spec is served, with open CORS, in two formats:`}),` 14701`,(0,h.jsxs)(t.ul,{children:[` 14702`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api-bancario/openapi.json`,children:`openapi.json`})}),` 14703`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api-bancario/openapi.yaml`,children:`openapi.yaml`})}),` 14704`]}),` 14705`,(0,h.jsxs)(t.p,{children:[`It is a different artifact from the acquiring API spec 14706(`,(0,h.jsx)(t.a,{href:`/developers/openapi.json`,children:`/developers/openapi.json`}),`): they are two separate APIs.`]}),` 14707`,(0,h.jsx)(t.h2,{id:`acceso`,children:`How to get access`}),` 14708`,(0,h.jsxs)(t.p,{children:[`Access is restricted and granted on request, for operations in Costa Rica. To learn 14709about the product and request it: `,(0,h.jsx)(t.a,{href:`https://baas.tilopay.com`,children:`baas.tilopay.com`}),`, stating 14710estimated monthly volume, use case and systems to integrate.`]}),` 14711`,(0,h.jsx)(t.h2,{id:`siguiente`,children:`Where to go next`}),` 14712`,(0,h.jsxs)(t.ol,{children:[` 14713`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.a,{href:`/developers/api-bancario/autenticacion`,children:`Authentication`}),` â login, token exchange and Bearer.`]}),` 14714`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.a,{href:`/developers/api-bancario/convenciones`,children:`Conventions`}),` â envelope, correlation, safe retries, pagination and dates.`]}),` 14715`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.a,{href:`/developers/api-bancario/errores`,children:`Response codes`}),` â full `,(0,h.jsx)(t.code,{children:`response_code`}
14715),` catalog.`]}),` 14716`]})]})}function id(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(rd,{...e})}):rd(e)}var ad=t({default:()=>cd,frontmatter:()=>od}),od={title:`Tokenization and saved cards`,kind:`concept`,status:`draft`,last_verified:`2026-08-28`,verified_by:`henry`,owner:`equipo-integraciones`,sources:[],locales:[`es`,`en`],related:[],draft:!0,description:`Page pending verified content.`};function sd(e){let t={p:`p`,...m(),...e.components},{Callout:n}=t;return n||ld(`Callout`,!0),(0,h.jsx)(n,{type:`warn`,children:(0,h.jsx)(t.p,{children:`Page pending. The previous content did not come from a verified source and was removed. 14717Nothing here is normative: no method names, no fields, no behaviour.`})})}function cd(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(sd,{...e})}):sd(e)}function ld(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var ud=t({default:()=>pd,frontmatter:()=>dd}),dd={title:`Environments: testing and production`,kind:`concept`,status:`stable`,api_version:`v1`,last_verified:`2026-08-28`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Respuestas de TecnologÃa, 28-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`sdk/reference/init`,`tarjetas-de-prueba`],description:`Testing and production share one host. The mode is switched from the account and verified with the test field returned by Init().`};function fd(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,strong:`strong`,table:`table`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,...m(),...e.components},{Callout:n}=t;return n||md(`Callout`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(n,{type:`warn`,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`There is no sandbox host.`}),` Testing and production use the same host: 14718`,(0,h.jsx)(t.code,{children:`app.tilopay.com`}),`. The URL does not tell you which mode you are in.`]})}),` 14719`,(0,h.jsx)(t.h2,{id:`como-se-cambia`,children:`How the mode is switched`}),` 14720`,(0,h.jsxs)(t.p,{children:[`The mode is switched `,(0,h.jsx)(t.strong,{children:`from the account in the Tilopay portal`}),`, not from the integration. 14721There is no parameter, header or alternate URL that changes it from code.`]}),` 14722`,(0,h.jsx)(t.h2,{id:`como-se-verifica`,children:`How to verify it`}),` 14723`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.code,{children:`Tilopay.Init()`}),` returns a `,(0,h.jsx)(t.strong,{children:(0,h.jsx)(t.code,{children:`test`})}),` field:`]}),` 14724`,(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Value`}),(0,h.jsx)(t.th,{children:`Meaning`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`0`})}),(0,h.jsx)(t.td,{children:`Production`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`1`})}),(0,h.jsx)(t.td,{children:`Testing`})]})]})]}),` 14725`,(0,h.jsx)(t.p,{children:`That is the only signal available at runtime. Read it and surface it in your own checkout 14726while developing.`}),` 14727`,(0,h.jsx)(t.h2,{id:`riesgo`,children:`The real risk`}),` 14728`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsxs)(t.p,{children:[`Because the host is the same, an integrator can believe they are testing while actually 14729being in production, taking real money. `,(0,h.jsxs)(t.strong,{children:[`Verify `,(0,h.jsx)(t.code,{children:`test`}),` before assuming the mode.`]}),` If your 14730integration moves money, make an unexpected `,(0,h.jsx)(t.code,{children:`test: 0`}),` fail loudly in your development 14731environments.`]})}),` 14732`,(0,h.jsx)(t.h2,{id:`tarjetas`,children:`Test cards`}),` 14733`,(0,h.jsxs)(t.p,{children:[`In testing mode you charge with the `,(0,h.jsx)(t.a,{href:`/en/developers/tarjetas-de-prueba`,children:`test cards`}),`: each 14734one lists the number, brand, expected result and whether it opens the 3DS challenge screen.`]})]})}function pd(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(fd,{...e})}):fd(e)}function md(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var hd=t({default:()=>vd,frontmatter:()=>gd}),gd={title:`Hosted payment page`,kind:`guide`,status:`stable`,api_version:`v1`,last_verified:`2026-08-28`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Respuestas de TecnologÃa, 28-08-2026`],locales:[`es`,`en`],related:[`sdk`,`api/hosted-payment-page`,`api/autenticacion`,`api/webhooks`],gaps:[`Hosted payment page endpoint, parameters and callback format: unverified.`],description:`The integration path where the customer pays on a page hosted by Tilopay and your server receives the result.`};function _d(e){let t={a:`a`,h2:`h2`,li:`li`,ol:`ol`,p:`p`,strong:`strong`,ul:`ul`,...m(),...e.components};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`que-es`,children:`What it is`}),` 14735`,(0,h.jsx)(t.p,{children:`Your server requests a payment URL from the API, redirects the customer to that Tilopay page 14736and receives the result on your callback URL.`}),` 14737`,(0,h.jsxs)(t.p,{children:[`Card data is typed on a Tilopay page: `,(0,h.jsx)(t.strong,{children:`the merchant never sees a card number`}),` and the 14738merchant server stays out of that flow.`]}),` 14739`,(0,h.jsxs)(t.p,{children:[`The API operation for this path lives in `,(0,h.jsx)(t.a,{href:`/developers/api/hosted-payment-page/process-payment`,children:`API · processPayment`}),`.`]}),` 14740`,(0,h.jsx)(t.h2,{id:`diferencia-link`,children:`Difference from a payment link`}),` 14741`,(0,h.jsxs)(t.ul,{children:[` 14742`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`Hosted payment page`}),`: your server requests a payment URL via API and redirects the customer to it. Best for integrated checkout flows in your site or app.`]}),` 14743`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`Payment link`}),`: a reusable URL created via API or the dashboard and shared by message, email, social media or QR. The customer pays when convenient; no redirect from your flow is needed.`]}),` 14744`,(0,h.jsx)(t.li,{children:`In short: HPP for integrated, one-time checkout; payment links for shared, low-front-end charges.`}),` 14745`]}),` 14746`,(0,h.jsx)(t.h2,{id:`para-quien`,children:`Who it is for`}),` 14747`,(0,h.jsx)(t.p,{children:`For teams that take payments with their own code but prefer not to build or maintain the card 14748form. What you need is backend work: request the URL and handle the callback.`}),` 14749`,(0,h.jsx)(t.h2,{id:`requisitos`,children:`What you need before starting`}),` 14750`,(0,h.jsxs)(t.ol,{children:[` 14751`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`Your own credentials.`}),` There are no shared sandbox credentials: every developer gets 14752theirs through `,(0,h.jsx)(t.a,{href:`/developers/registro`,children:`developer registration`}),`.`]}),` 14753`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`API authentication.`}),` See `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`authentication`}),`.`]}),` 14754`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`A callback URL of yours`}),` that can receive the transaction result.`]}),` 14755`]}),` 14756`,(0,h.jsx)(t.h2,{id:`confirmacion`,children:`How to confirm the state of a charge`}),` 14757`,(0,h.jsx)(t.p,{children:`The result arriving on your callback is not the only signal available, and not every error 14758response travels with an HTTP 4xx:`}),` 14759`,(0,h.jsxs)(t.ul,{children:[` 14760`,(0,h.jsxs)(t.li,{children:[`Read `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`how to read an error response`}),` before declaring success.`]}),` 14761`,(0,h.jsxs)(t.li,{children:[`Configure `,(0,h.jsx)(t.a,{href:`/developers/api/webhooks`,children:`webhooks`}),` for the events you care about.`]}),` 14762`,(0,h.jsxs)(t.li,{children:[`If a call fails without a clear response, resolve the state with 14763`,(0,h.jsx)(t.a,{href:`/developers/reintentos-seguros`,children:`safe retries`}),`.`]}),` 14764`]}),` 14765`,(0,h.jsx)(t.h2,{id:`entornos`,children:`Environments`}),` 14766`,(0,h.jsxs)(t.p,{children:[`Testing and production share the same host. See 14767`,(0,h.jsx)(t.a,{href:`/developers/entornos`,children:`environments`}),` before taking real money.`]}),` 14768`,(0,h.jsx)(t.h2,{id:`cumplimiento`,children:`Compliance`}),` 14769`,(0,h.jsx)(t.p,{children:`Together with the no-code path, this is the one that exposes your infrastru
14769cture the least. 14770Confirm the applicable scope with your compliance team.`}),` 14771`,(0,h.jsx)(t.h2,{id:`alternativa`,children:`If you prefer the form on your own site`}),` 14772`,(0,h.jsxs)(t.p,{children:[`Use the `,(0,h.jsx)(t.a,{href:`/developers/sdk`,children:`JavaScript SDK`}),`: the design is yours and the data still does not 14773pass through your server.`]})]})}function vd(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(_d,{...e})}):_d(e)}var yd=t({default:()=>Sd,frontmatter:()=>bd}),bd={title:`Safe retries and orderNumber`,kind:`concept`,status:`stable`,api_version:`v1`,last_verified:`2026-08-28`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Respuestas de TecnologÃa, 28-08-2026`],locales:[`es`,`en`],related:[`api/hosted-payment-page`,`sdk/reference/init`,`concepts/flujo-de-pago`],description:`The API is not idempotent. Exactly what to do when a payment call dies on a timeout.`};function xd(e){let t={code:`code`,h2:`h2`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,table:`table`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,...m(),...e.components},{Callout:n}=t;return n||Cd(`Callout`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(n,{type:`warn`,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`The Tilopay API is not idempotent.`}),` There is no idempotency key and no retry that returns the 14774original transaction. If you come from other processors, this is the assumption to dismantle 14775before writing code.`]})}),` 14776`,(0,h.jsxs)(t.h2,{id:`ordernumber`,children:[(0,h.jsx)(t.code,{children:`orderNumber`}),` is unique forever`]}),` 14777`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.code,{children:`orderNumber`}),` is unique per merchant `,(0,h.jsx)(t.strong,{children:`across their entire operation`}),`, forever. It does not 14778reset daily, monthly or seasonally.`]}),` 14779`,(0,h.jsxs)(t.p,{children:[`If it repeats, `,(0,h.jsx)(t.strong,{children:`the new transaction is rejected`}),` with the response `,(0,h.jsx)(t.strong,{children:`"Transacción 14780duplicada"`}),` (duplicate transaction). It does not return the original transaction: it returns a 14781rejection.`]}),` 14782`,(0,h.jsx)(t.h2,{id:`timeout`,children:`The timeout problem`}),` 14783`,(0,h.jsx)(t.p,{children:`When a payment call dies on a network error or timeout, you do not know whether the transaction 14784was created. And neither intuitive way out works:`}),` 14785`,(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`What you would do`}),(0,h.jsx)(t.th,{children:`What happens`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsxs)(t.td,{children:[`Retry with the same `,(0,h.jsx)(t.code,{children:`orderNumber`})]}),(0,h.jsx)(t.td,{children:`Duplicate rejection, even if the first one went through`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsxs)(t.td,{children:[`Retry with a new `,(0,h.jsx)(t.code,{children:`orderNumber`})]}),(0,h.jsx)(t.td,{children:`Risk of double charge`})]})]})]}),` 14786`,(0,h.jsx)(t.p,{children:(0,h.jsx)(t.strong,{children:`On a network timeout there is no safe retry.`})}),` 14787`,(0,h.jsx)(t.h2,{id:`que-hacer`,children:`What to do instead`}),` 14788`,(0,h.jsx)(t.p,{children:`Query the state before deciding:`}),` 14789`,(0,h.jsxs)(t.ol,{children:[` 14790`,(0,h.jsxs)(t.li,{children:[`Call `,(0,h.jsx)(t.code,{children:`POST /api/v1/consult`}),` with the original `,(0,h.jsx)(t.code,{children:`orderNumber`}),`.`]}),` 14791`,(0,h.jsx)(t.li,{children:`If the transaction exists, use its result. Do not retry.`}),` 14792`,(0,h.jsxs)(t.li,{children:[`If it does not exist, then you can retry â and you can reuse the same `,(0,h.jsx)(t.code,{children:`orderNumber`}),`, because 14793it was not consumed.`]}),` 14794`]}),` 14795`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{children:`payment â timeout`})}),` 14796`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{children:` â`})}),` 14797`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{children:` âââ consult(original orderNumber)`})}),` 14798`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{children:` ââ exists â use that result`})}),` 14799`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{children:` ââ not found â retry`})})]})})}),` 14800`,(0,h.jsx)(t.h2,{id:`diseno`,children:`Design consequences`}),` 14801`,(0,h.jsxs)(t.ul,{children:[` 14802`,(0,h.jsxs)(t.li,{children:[`Generate the `,(0,h.jsx)(t.code,{children:`orderNumber`}),` in your system `,(0,h.jsx)(t.strong,{children:`before`}),` calling the payment and persist it. If you 14803generate it on the fly, after a timeout you have nothing to query with.`]}),` 14804`,(0,h.jsxs)(t.li,{children:[`Never derive the `,(0,h.jsx)(t.code,{children:`orderNumber`}),` from something that can repeat (recycled cart number, truncated 14805timestamp, resettable counter).`]}),` 14806`,(0,h.jsxs)(t.li,{children:[`A "Transacción duplicada" does not mean the charge failed: it means that `,(0,h.jsx)(t.code,{children:`orderNumber`}),` was 14807already used. Query before showing the customer an error.`]}),` 14808`]})]})}function Sd(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(xd,{...e})}):xd(e)}function Cd(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var wd=t({default:()=>Dd,frontmatter:()=>Td}
14808),Td={title:`Form fields`,kind:`concept`,status:`stable`,last_verified:`2026-08-28`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Respuestas de TecnologÃa, 28-08-2026`],locales:[`es`,`en`],related:[`sdk`,`sdk/instalacion`,`sdk/reference/init`],gaps:[`Whether the SDK also reads a tlpy_phone_number input from the DOM: unconfirmed.`],description:`The tlpy_* ids the V2 SDK looks for in your form, and the responseTilopay container it needs for 3DS.`};function Ed(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,...m(),...e.components},{Callout:n,Param:r}=t;return n||Od(`Callout`,!0),r||Od(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(t.p,{children:[`The V2 SDK does not render the form: it takes over the inputs that already exist on your 14809page, finding them by `,(0,h.jsx)(t.code,{children:`id`}),`. Those ids are a contract â change one and the SDK stops finding 14810the field.`]}),` 14811`,(0,h.jsx)(n,{type:`info`,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`The contract is the inputs, not the containers.`}),` You can name the `,(0,h.jsx)(t.code,{children:`div`}),` elements that 14812wrap the fields however you want: the SDK does not look for them. The only exception is 14813`,(0,h.jsx)(t.code,{children:`responseTilopay`}),`, which is required.`]})}),` 14814`,(0,h.jsx)(t.h2,{id:`campos`,children:`Fields`}),` 14815`,(0,h.jsx)(r,{id:`campo-tlpy-payment-method`,name:`tlpy_payment_method`,type:`text | select`,required:!0,children:(0,h.jsx)(t.p,{children:`Holds the payment method id obtained from Tilopay. It may be visible or hidden, at the 14816merchant's discretion.`})}),` 14817`,(0,h.jsx)(r,{id:`campo-tlpy-saved-cards`,name:`tlpy_saved_cards`,type:`select`,required:!0,children:(0,h.jsx)(t.p,{children:`Holds the saved card id obtained from Tilopay. If the customer has no saved cards, hide it.`})}),` 14818`,(0,h.jsx)(r,{id:`campo-tlpy-cc-number`,name:`tlpy_cc_number`,type:`text`,required:!0,children:(0,h.jsx)(t.p,{children:`Card number.`})}),` 14819`,(0,h.jsx)(r,{id:`campo-tlpy-cc-expiration-date`,name:`tlpy_cc_expiration_date`,type:`text`,required:!0,children:(0,h.jsxs)(t.p,{children:[`Expiration date in month/year format, for example `,(0,h.jsx)(t.code,{children:`01/25`}),`.`]})}),` 14820`,(0,h.jsx)(r,{id:`campo-tlpy-cvv`,name:`tlpy_cvv`,type:`text`,required:!0,children:(0,h.jsx)(t.p,{children:`Security code. When the customer uses a saved card, this field must be enabled so they can 14821type the CVV.`})}),` 14822`,(0,h.jsx)(r,{id:`campo-response-tilopay`,name:`responseTilopay`,type:`div`,required:!0,children:(0,h.jsxs)(t.p,{children:[`Required container, `,(0,h.jsx)(t.strong,{children:`outside the form`}),`. This is where the SDK mounts the 3DS flow.`]})}),` 14823`,(0,h.jsx)(t.h2,{id:`yappy`,children:`The Yappy phone does not travel through the DOM`}),` 14824`,(0,h.jsxs)(t.p,{children:[`The Yappy phone number is `,(0,h.jsx)(t.strong,{children:`not`}),` read from a form field: it is sent in the `,(0,h.jsx)(t.code,{children:`phoneYappy`}),` 14825parameter of `,(0,h.jsx)(t.a,{href:`/developers/sdk/reference/init`,children:(0,h.jsx)(t.code,{children:`Init()`})}),` or 14826`,(0,h.jsx)(t.a,{href:`/developers/sdk/reference/update-options`,children:(0,h.jsx)(t.code,{children:`updateOptions()`})}),`.`]}),` 14827`,(0,h.jsx)(t.h2,{id:`estructura`,children:`Example structure`}),` 14828`,(0,h.jsxs)(t.p,{children:[`The `,(0,h.jsx)(t.code,{children:`div`}),` elements in this example are free-form; the input `,(0,h.jsx)(t.code,{children:`id`}),`s and `,(0,h.jsx)(t.code,{children:`responseTilopay`}),` are 14829not.`]}),` 14830`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`<`}),(0,h.jsx)(t.span,{style:{color:`#85E89D`},children:`div`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:` class`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`=`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"payFormTilopay"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`>`})]}),` 14831`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` <`}),(0,h.jsx)(t.span,{style:{color:`#85E89D`},children:`select`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:` id`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`=`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"tlpy_payment_method"`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:` name`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`=`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"tlpy_payment_method"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`></`}),(0,h.jsx)(t.span,{style:{color:`#85E89D`},children:`select`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`>`})]}),` 14832`,(0,h.jsx)(t.span,{className:`line`}),` 14833`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` <`}),(0,h.jsx)(t.span,{style:{color:`#85E89D`},children:`div`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`>`})]}),` 14834`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` <`}),(0,h.jsx)(t.span,{style:{color:`#85E89D`},children:`select`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:` id`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`=`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"tlpy_saved_cards"`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:` name`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`=`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"tlpy_saved_cards"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`></`}),(0,h.jsx)(t.span,{style:{color:`#85E89D`},children:`select`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`>`})]}),` 14835`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` <`}),(0,h.jsx)(t.span,{style:{color:`#85E89D`},children:`input`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:` type`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`=`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"text"`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:` id`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`=`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"tlpy_cc_number"`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:` name`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`=`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"tlpy_cc_number"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` />`})]}),` 14836`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` <`}),(0,h.jsx)(t.span,{style:{color:`#85E89D`},children:`input`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:` type`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`=`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"text"`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:` id`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`=`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"tlpy_cc_expiration_date"`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:` name`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`=`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"tlpy_cc_expiration_date"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` />`})]}),` 14837`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` <`}),(0,h.jsx)(t.span,{style:{color:`#85E89D`},children:`input`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:` type`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`=`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"text"`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:` id`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`=`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"tlpy_cvv"`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:` name`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`=`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"tlpy_cvv"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` />`})]}),` 14838`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` </`}),(0,h.jsx)(t.span,{style:{color:`#85E89D`},children:`div`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`>`})]}),` 14839`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`</`}),(0,h.jsx)(t.span,{style:{color:`#85E89D`},children:`div`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`>`})]}),` 14840`,(0,h.jsx)(t.span,{className:`line`}),` 14841`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`<`}),(0,h.jsx)(t.span,{style:{color:`#85E89D`},children:`div`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:` id`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`=`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"responseTilopay"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`></`}),(0,h.jsx)(t.span,{style:{color:`#85E89D`},children:`div`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`>`})]})]})})})]})}function Dd(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Ed,{...e})}):Ed(e)}function Od(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var kd=t({default:()=>Md,frontmatter:()=>Ad}
14841),Ad={title:`SDK installation`,kind:`guide`,status:`stable`,last_verified:`2026-08-28`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Respuestas de TecnologÃa, 28-08-2026`],locales:[`es`,`en`],related:[`sdk`,`sdk/campos-del-formulario`,`sdk/reference/init`],description:`The V2 SDK script tag, which versions exist, and which versioning guarantees do not exist.`};function jd(e){let t={a:`a`,code:`code`,h2:`h2`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,table:`table`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,...m(),...e.components},{Callout:n}=t;return n||Nd(`Callout`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`script`,children:`The script`}),` 14842`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`<`}),(0,h.jsx)(t.span,{style:{color:`#85E89D`},children:`script`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:` src`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`=`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://app.tilopay.com/sdk/v2/sdk_tpay.min.js"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`></`}),(0,h.jsx)(t.span,{style:{color:`#85E89D`},children:`script`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`>`})]})})})}),` 14843`,(0,h.jsxs)(t.p,{children:[`Load it before your own checkout code. The SDK exposes the global `,(0,h.jsx)(t.code,{children:`Tilopay`}),` object.`]}),` 14844`,(0,h.jsx)(t.h2,{id:`jquery`,children:`jQuery is not required`}),` 14845`,(0,h.jsx)(n,{type:`info`,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`jQuery is NOT required.`}),` It was a leftover from SDK V1. The article published so far 14846said otherwise and it is wrong: you can install SDK V2 without jQuery on the page.`]})}),` 14847`,(0,h.jsx)(t.h2,{id:`versiones`,children:`Versions`}),` 14848`,(0,h.jsx)(t.p,{children:`There are only two versions:`}),` 14849`,(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Version`}),(0,h.jsx)(t.th,{children:`Status`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`v1`})}),(0,h.jsx)(t.td,{children:`Unsupported`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`v2`})}),(0,h.jsx)(t.td,{children:`Current`})]})]})]}),` 14850`,(0,h.jsx)(t.h2,{id:`garantias`,children:`What does not exist`}),` 14851`,(0,h.jsxs)(n,{type:`warn`,children:[(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`There is no immutable versioning, no SRI hash and no changelog.`}),` The 14852`,(0,h.jsx)(t.code,{children:`/sdk/v2/sdk_tpay.min.js`}),` URL is not pinned to a specific version: its contents can change 14853without prior notice and without public release notes.`]}),(0,h.jsx)(t.p,{children:`Practical consequences:`}),(0,h.jsxs)(t.ul,{children:[` 14854`,(0,h.jsxs)(t.li,{children:[`You cannot set `,(0,h.jsx)(t.code,{children:`integrity="sha384-..."`}),` on the `,(0,h.jsx)(t.code,{children:`script`}),` tag, because the file changes.`]}),` 14855`,(0,h.jsx)(t.li,{children:`You cannot rely on a build number to reproduce a bug.`}),` 14856`,(0,h.jsx)(t.li,{children:`Keep smoke tests for your checkout running periodically, not only on deploy.`}),` 14857`]})]}),` 14858`,(0,h.jsx)(t.h2,{id:`que-sigue`,children:`What is next`}),` 14859`,(0,h.jsxs)(t.ul,{children:[` 14860`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.a,{href:`/developers/sdk/campos-del-formulario`,children:`Form fields`}),` â the ids the SDK looks for.`]}),` 14861`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.a,{href:`/developers/sdk/reference/init`,children:(0,h.jsx)(t.code,{children:`Tilopay.Init()`})}),` â start the purchase.`]}),` 14862`]})]})}function Md(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(jd,{...e})}):jd(e)}function Nd(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Pd=t({default:()=>Ld,frontmatter:()=>Fd}),Fd={title:`Tilopay.getCardType()`,kind:`sdk-method`,status:`stable`,last_verified:`2026-08-28`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Respuestas de TecnologÃa, 28-08-2026`],locales:[`es`,`en`],related:[`sdk/reference/update-options`,`sdk/campos-del-formulario`],gaps:[`What it returns for an unsupported brand or an incomplete number: unverified.`],description:`Returns the brand of the card the customer is typing, so you can show an icon while they type.`};function Id(e){let t={code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,...m(),...e.components},{Param:n}=t;return n||Rd(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(t.p,{children:[`Returns the card brand from the number the customer already typed into `,(0,h.jsx)(t.code,{children:`tlpy_cc_number`}),`. The 14863typical use is showing the brand icon while the customer types.`]}),` 14864`,(0,h.jsx)(t.h2,{id:`firma`,children:`Signature`}),` 14865`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`await`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` Tilopay.`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:`getCardType`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`()`})]})})})}),` 14866`,(0,h.jsx)(t.p,{children:`It takes no parameters.`}),` 14867`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`Precondition:`}),` the customer must have already typed the card number.`]}),` 14868`,(0,h.jsx)(t.h2,{id:`llamada`,children:`Call`}),` 14869`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`const`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` type`}),(0,h.jsx)(t.span,{style:{color:`#F97583`},children:` =`}),(0,h.jsx)(t.span,{style:{color:`#F97583`},children:` await`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` Tilopay.`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:`getCardType`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`();`})]})})})}),` 14870`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Response`}),` 14871`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 14872`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"visa"`})]}),` 14873`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 14874`,(0,h.jsx)(n,{id:`get-card-type-message`,name:`message`,type:`string`,children:(0,h.jsx)(t.p,{children:`The card brand.`})}),` 14875`,(0,h.jsx)(t.h2,{id:`marcas-soportadas`,children:`Supported brands`}),` 14876`,(0,h.jsx)(t.p,{children:`VISA · MASTERCARD · AMEX`}),` 14877`,(0,h.jsx)(t.p,{children:`Use the result for presentation only: brand validation happens when Tilopay processes the 14878charge, not in this method.`})]})}
14878function Ld(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Id,{...e})}):Id(e)}function Rd(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var zd=t({default:()=>Hd,frontmatter:()=>Bd}),Bd={title:`Tilopay.getSinpeMovil()`,kind:`sdk-method`,status:`stable`,last_verified:`2026-08-28`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Respuestas de TecnologÃa, 28-08-2026`],locales:[`es`,`en`],related:[`sdk/reference/update-options`,`payment-methods/sinpe-movil`],description:`Returns the data to show the customer to pay via SINPE Móvil and activates the collection listener.`};function Vd(e){let t={a:`a`,code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,...m(),...e.components},{Callout:n,Param:r}=t;return n||Ud(`Callout`,!0),r||Ud(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.p,{children:`SINPE Móvil is not charged from the form: the customer makes the transfer from their own bank. 14879This method returns the data you must show them â destination phone, exact amount and 14880description code.`}),` 14881`,(0,h.jsx)(t.h2,{id:`cuando`,children:`When to use it`}),` 14882`,(0,h.jsxs)(t.p,{children:[`When the merchant has a SINPE Móvil method available and the customer selects it from the list 14883returned by `,(0,h.jsx)(t.a,{href:`/developers/sdk/reference/init`,children:(0,h.jsx)(t.code,{children:`Init()`})}),`.`]}),` 14884`,(0,h.jsx)(n,{type:`info`,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`It is not just a getter.`}),` Besides returning the data, this method `,(0,h.jsx)(t.strong,{children:`triggers the SINPE 14885listener with the Tilopay backend`}),`. Calling it is part of the collection flow, not a 14886presentation detail.`]})}),` 14887`,(0,h.jsx)(t.h2,{id:`firma`,children:`Signature`}),` 14888`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`await`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` Tilopay.`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:`getSinpeMovil`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`()`})]})})})}),` 14889`,(0,h.jsx)(t.p,{children:`It takes no parameters.`}),` 14890`,(0,h.jsx)(t.p,{children:(0,h.jsx)(t.strong,{children:`Preconditions:`})}),` 14891`,(0,h.jsxs)(t.ul,{children:[` 14892`,(0,h.jsx)(t.li,{children:`The customer must have selected SINPE Móvil as the payment method.`}),` 14893`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`typeDni`}),` and `,(0,h.jsx)(t.code,{children:`dni`}),` must have been sent earlier, via `,(0,h.jsx)(t.code,{children:`Init()`}),` or 14894`,(0,h.jsx)(t.a,{href:`/developers/sdk/reference/update-options`,children:(0,h.jsx)(t.code,{children:`updateOptions()`})}),`.`]}),` 14895`]}),` 14896`,(0,h.jsx)(t.h2,{id:`llamada`,children:`Call`}),` 14897`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`const`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` params`}),(0,h.jsx)(t.span,{style:{color:`#F97583`},children:` =`}),(0,h.jsx)(t.span,{style:{color:`#F97583`},children:` await`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` Tilopay.`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:`getSinpeMovil`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`();`})]})})})}),` 14898`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Response`}),` 14899`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 14900`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Success"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14901`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "code"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"863"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14902`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`10`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14903`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "number"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"70599200"`})]}),` 14904`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 14905`,(0,h.jsx)(r,{id:`get-sinpe-movil-message`,name:`message`,type:`string`,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.code,{children:`Success`}),` when the operation succeeded.`]})}),` 14906`,(0,h.jsx)(r,{id:`get-sinpe-movil-code`,name:`code`,type:`string`,children:(0,h.jsx)(t.p,{children:`The code the customer must write in the transfer description. It is what identifies the payment.`})}),` 14907`,(0,h.jsx)(r,{id:`get-sinpe-movil-amount`,name:`amount`,type:`number`,children:(0,h.jsx)(t.p,{children:`The exact amount they must transfer.`})}),` 14908`,(0,h.jsx)(r,{id:`get-sinpe-movil-number`,name:`number`,type:`string`,children:(0,h.jsx)(t.p,{children:`The destination phone number for the transfer.`})}),` 14909`,(0,h.jsx)(t.h3,{id:`respuesta-de-error`,children:`On error`}),` 14910`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`On error it returns nothing.`}),` Do not expect an object with empty fields: treat the absence of 14911a response as the error case.`]}),` 14912`,(0,h.jsx)(t.h2,{id:`que-hacer`,children:`What to do with this data`}),` 14913`,(0,h.jsx)(t.p,{children:`When SINPE Móvil is selected, hide the card fields and show the customer this data: destination 14914phone, exact amount and the code for the description.`}),` 14915`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`No pay button is needed:`}),` the collection is processed when the transfer arrives.`]})]})}function Hd(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Vd,{...e})}):Vd(e)}function Ud(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Wd=t({default:()=>qd,frontmatter:()=>Gd}),Gd={title:`SDK · Tilopay.Init()`,kind:`sdk-method`,status:`stable`,last_verified:`2026-08-28`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Respuestas de TecnologÃa, 28-08-2026`],locales:[`es`,`en`],related:[`sdk/campos-del-formulario`,`sdk/reference/update-options`,`sdk/reference/startpayment`,`entornos`],gaps:[`Full parameter list and response of InitTokenize(): unverified.`,`Full Init() response example: the published one is outdated.`],description:`Starts a purchase: authenticates the checkout and returns the available payment methods and the customer's saved cards.`};function Kd(e){let t={a:`a`,code:`code`,h2:`h2`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,...m(),...e.components},{Param:n}=t;return n||Jd(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.p,{children:`Starts a purchase. It authenticates the checkout with the SDK token and returns the payment 14916methods available to the merchant.`}),` 14917`,(0,h.jsxs)(t.p,{children:[`To save a card without charging it, the SDK has a second start flow: 14918`,(0,h.jsx)(t.strong,{children:(0,h.jsx)(t.code,{children:`Tilopay.InitTokenize()`})}),`, with the same parameters as `,(0,h.jsx)(t.code,{children:`Init()`}),` except `,(0,h.jsx)(t.code,{children:`amount`}),`, 14919`,(0,h.jsx)(t.code,{children:`orderNumber`}),`, `,(0,h.jsx)(t.code,{children:`capture`}),` and `,(0,h.jsx)(t.code,{children:`subscription`}),`, which do not apply because nothing is charged.`]}),` 14920`,(0,h.jsx)(t.h2,{id:`firma`,children:`Signature`}),` 14921`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`await`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` Tilopay.`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:`Init`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`({ `}),(0,h.jsx)(t.span,{style:{color:`#6A737D`},children:`/* parameters */`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` })`})]})})})}),` 14922`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parameters`}),` 14923`,(0,h.jsx)(n,{id:`init-token`,name:`token`,type:`string`,required:!0,children:(0,h.jsxs)(t.p,{children:[`SDK token, obtained with `,(0,h.jsx)(t.code,{children:`POST /api/v1/loginSdk`}),`. See 14924`,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`authentication`}),`.`]})}),` 14925`,(0,h.jsx)(n,{id:`init-currency`,name:`currency`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Purchase currency, ISO 4217.`})}),` 14926`,(0,h.jsx)(n,{id:`init-language`,name:`language`,type:`string`,required:!0,children:(0,h.jsxs)(t.p,{children:[`Checkout `,(0,h.jsx)(t.strong,{children:`language`}),`, ISO 639-1. Only `,(0,h.jsx)(t.code,{children:`es`}),` and `,(0,h.jsx)(t.code,{children:`en`}),` are supported; defaults to `,(0,h.jsx)(t.code,{children:`es`}),`.`]})}),` 14927`,(0,h.jsx)(n,{id:`init-amount`,name:`amount`,type:`decimal`,required:!0,children:(0,h.jsx)(t.p,{children:`Purchase amount.`})}),` 14928`,(0,h.jsx)(n,{id:`init-billtoemail`,name:`billToEmail`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Customer email. Required for the response to include saved cards.`})}),` 14929`,(0,h.jsx)(n,{id:`init-ordernumber`,name:`orderNumber`,type:`string`,required:!0,children:(0,h.jsxs)(t.p,{children:[`Order number, unique per merchant. See 14930`,(0,h.jsx)(t.a,{href:`/developers/reintentos-seguros`,children:`safe retries`}),`.`]})}),` 14931`,(0,h.jsx)(n,{id:`init-typedni`,name:`typeDni`,type:`integer`,children:(0,h.jsxs)(t.p,{children:[`Customer identification type. Conditional. See the 14932`,(0,h.jsx)(t.a,{href:`/developers/sdk/reference/update-options#tipos-de-identificacion`,children:`type table`}),`.`]})}),` 14933`,(0,h.jsx)(n,{id:`init-dni`,name:`dni`,type:`string`,children:(0,h.jsx)(t.p,{children:`Customer identification number. Conditional.`})}),` 14934`,(0,h.jsx)(n,{id:`init-billtofirstname`,name:`billToFirstName`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Customer first name.`})}),` 14935`,(0,h.jsx)(n,{id:`init-billtolastname`,name:`billToLastName`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Customer last name.`})}),` 14936`,(0,h.jsx)(n,{id:`init-billtoaddress`,name:`billToAddress`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Customer address line 1.`})}),` 14937`,(0,h.jsx)(n,{id:`init-billtoaddress2`,name:`billToAddress2`,type:`string`,children:(0,h.jsx)(t.p,{children:`Customer address line 2. Optional.`})}),` 14938`,(0,h.jsx)(n,{id:`init-billtocity`,name:`billToCity`,type:`string`,children:(0,h.jsx)(t.p,{children:`City. Recommended.`})}),` 14939`,(0,h.jsx)(n,{id:`init-billtostate`,name:`billToState`,type:`string`,children:(0,h.jsx)(t.p,{children:`State or province. Recommended.`})}),`
14940`,(0,h.jsx)(n,{id:`init-billtozippostcode`,name:`billToZipPostCode`,type:`string`,children:(0,h.jsx)(t.p,{children:`Postal code. Recommended.`})}),` 14941`,(0,h.jsx)(n,{id:`init-billtocountry`,name:`billToCountry`,type:`string`,children:(0,h.jsx)(t.p,{children:`Country, ISO 3166-1 alpha-2. Recommended.`})}),` 14942`,(0,h.jsx)(n,{id:`init-billtotelephone`,name:`billToTelephone`,type:`string`,children:(0,h.jsx)(t.p,{children:`Customer phone. Recommended.`})}),` 14943`,(0,h.jsx)(n,{id:`init-capture`,name:`capture`,type:`integer`,required:!0,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.code,{children:`0`}),` authorizes; `,(0,h.jsx)(t.code,{children:`1`}),` authorizes and captures.`]})}),` 14944`,(0,h.jsx)(n,{id:`init-redirect`,name:`redirect`,type:`string (URL)`,required:!0,children:(0,h.jsx)(t.p,{children:`URL where the SDK renders the final purchase response.`})}),` 14945`,(0,h.jsx)(n,{id:`init-subscription`,name:`subscription`,type:`integer`,required:!0,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.code,{children:`1`}),` saves the customer card in Tilopay; `,(0,h.jsx)(t.code,{children:`0`}),` does not save it.`]})}),` 14946`,(0,h.jsx)(n,{id:`init-phoneyappy`,name:`phoneYappy`,type:`string`,children:(0,h.jsx)(t.p,{children:`Yappy phone. Required when paying with Yappy. It is not read from the DOM.`})}),` 14947`,(0,h.jsx)(n,{id:`init-hashversion`,name:`hashVersion`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Optional. Values `,(0,h.jsx)(t.code,{children:`"V1"`}),` or `,(0,h.jsx)(t.code,{children:`"V2"`}),`. If omitted, the final response hash is built with V1.`]})}),` 14948`,(0,h.jsx)(n,{id:`init-returndata`,name:`returnData`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Optional. Returned as-is in the final payment response and recovered on the transaction 14949response URL. Supports up to `,(0,h.jsx)(t.strong,{children:`65,535 characters`}),`, although a very long value can affect 14950the response URL. You can send a base64-serialized array so it satisfies the string format.`]})}),` 14951`,(0,h.jsx)(t.h2,{id:`llamada`,children:`Call`}),` 14952`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`const`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` init`}),(0,h.jsx)(t.span,{style:{color:`#F97583`},children:` =`}),(0,h.jsx)(t.span,{style:{color:`#F97583`},children:` await`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` Tilopay.`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:`Init`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`({`})]}),` 14953`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` token: sdkToken,`})}),` 14954`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` currency: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"CRC"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14955`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` language: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"es"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14956`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` amount: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`100.0`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14957`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` billToEmail: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"[email protected]"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14958`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` orderNumber: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"ORD-2026-000123"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14959`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` billToFirstName: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Ana"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14960`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` billToLastName: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Rojas"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14961`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` billToAddress: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Avenida 1, Local 2"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14962`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` billToCountry: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"CR"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14963`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` capture: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14964`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` redirect: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://ejemplo.com/checkout/respuesta"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14965`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` subscription: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 14966`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`});`})})]})})}),` 14967`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Response`}),` 14968`,(0,h.jsx)(n,{id:`init-res-message`,name:`message`,type:`string`,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.code,{children:`Success`}),`, or the error description.`]})}),` 14969`,(0,h.jsx)(n,{id:`init-res-test`,name:`test`,type:`integer`,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.code,{children:`0`}),` production, `,(0,h.jsx)(t.code,{children:`1`}),` testing. See `,(0,h.jsx)(t.a,{href:`/developers/entornos`,children:`environments`}),`.`]})}),` 14970`,(0,h.jsx)(n,{id:`init-res-sinpemovil`,name:`sinpemovil`,type:`object`,children:(0,h.jsxs)(t.p,{children:[`Ob
14970ject with `,(0,h.jsx)(t.code,{children:`code`}),` and `,(0,h.jsx)(t.code,{children:`amount`}),`, present when the merchant has SINPE Móvil. The full data, 14971including the destination phone, is obtained with 14972`,(0,h.jsx)(t.a,{href:`/developers/sdk/reference/get-sinpe-movil`,children:(0,h.jsx)(t.code,{children:`getSinpeMovil()`})}),`.`]})}),` 14973`,(0,h.jsx)(n,{id:`init-res-methods`,name:`methods`,type:`array`,children:(0,h.jsxs)(t.p,{children:[`Array of `,(0,h.jsx)(t.code,{children:`{id, name, type}`}),` with the available payment methods.`]})}),` 14974`,(0,h.jsx)(n,{id:`init-res-cards`,name:`cards`,type:`array`,children:(0,h.jsxs)(t.p,{children:[`Array of `,(0,h.jsx)(t.code,{children:`{id, name, brand}`}),` with the customer's saved cards.`]})}),` 14975`,(0,h.jsx)(t.h2,{id:`formato-id-metodo`,children:`Payment method id format`}),` 14976`,(0,h.jsxs)(t.p,{children:[`Each method `,(0,h.jsx)(t.code,{children:`id`}),` has the shape `,(0,h.jsx)(t.code,{children:`A:B:C`}),`. `,(0,h.jsxs)(t.strong,{children:[`The second segment defines the payment method, and 14977`,(0,h.jsx)(t.code,{children:`18`}),` corresponds to Yappy.`]})]}),` 14978`,(0,h.jsx)(t.h2,{id:`tarjetas-guardadas`,children:`Saved cards`}),` 14979`,(0,h.jsxs)(t.ul,{children:[` 14980`,(0,h.jsxs)(t.li,{children:[`For the response to include `,(0,h.jsx)(t.code,{children:`cards`}),`, `,(0,h.jsxs)(t.strong,{children:[(0,h.jsx)(t.code,{children:`billToEmail`}),` is required`]}),`.`]}),` 14981`,(0,h.jsxs)(t.li,{children:[`Once the cards are obtained, `,(0,h.jsx)(t.strong,{children:`the email can no longer be changed`}),` with 14982`,(0,h.jsx)(t.a,{href:`/developers/sdk/reference/update-options`,children:(0,h.jsx)(t.code,{children:`updateOptions()`})}),`.`]}),` 14983`]})]})}function qd(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Kd,{...e})}):Kd(e)}function Jd(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Yd=t({default:()=>Qd,frontmatter:()=>Xd}),Xd={title:`SDK · Tilopay.startPayment()`,kind:`sdk-method`,status:`stable`,last_verified:`2026-08-28`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Respuestas de TecnologÃa, 28-08-2026`],locales:[`es`,`en`],related:[`sdk/reference/init`,`sdk/campos-del-formulario`,`reintentos-seguros`],gaps:[`Success response shape of startPayment(): unverified.`],description:`Closes the purchase. The SDK handles the whole 3DS flow and renders the response on the redirect URL.`};function Zd(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,...m(),...e.components};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(t.p,{children:[`Closes the purchase started with `,(0,h.jsx)(t.a,{href:`/developers/sdk/reference/init`,children:(0,h.jsx)(t.code,{children:`Tilopay.Init()`})}),`.`]}),` 14984`,(0,h.jsx)(t.h2,{id:`firma`,children:`Signature`}),` 14985`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`await`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` Tilopay.`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:`startPayment`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`()`})]})})})}),` 14986`,(0,h.jsx)(t.p,{children:`It takes no parameters.`}),` 14987`,(0,h.jsx)(t.h2,{id:`tres-ds`,children:`3DS: the SDK handles it`}),` 14988`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`The SDK handles the whole 3D Secure flow.`}),` All you have to do is make sure the 14989`,(0,h.jsx)(t.code,{children:`responseTilopay`}),` container is on the page: that is where the SDK inserts what 3DS needs and 14990drives the process.`]}),` 14991`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`<`}),(0,h.jsx)(t.span,{style:{color:`#85E89D`},children:`div`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:` id`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`=`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"responseTilopay"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`></`}),(0,h.jsx)(t.span,{style:{color:`#85E89D`},children:`div`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`>`})]})})})}),` 14992`,(0,h.jsxs)(t.p,{children:[`See `,(0,h.jsx)(t.a,{href:`/developers/sdk/campos-del-formulario#campos`,children:`form fields`}),`.`]}),` 14993`,(0,h.jsx)(t.h2,{id:`resultado`,children:`Where the result arrives`}),` 14994`,(0,h.jsxs)(t.p,{children:[`When it finishes, the SDK renders the response on the URL given in the `,(0,h.jsx)(t.code,{children:`redirect`}),` parameter of 14995`,(0,h.jsx)(t.code,{children:`Init()`}),`. `,(0,h.jsx)(t.strong,{children:`That is the final purchase response`}),`: treat the `,(0,h.jsx)(t.code,{children:`redirect`}),` URL as the point where 14996your application decides the outcome.`]}),` 14997`,(0,h.jsx)(t.p,{children:`On error, the method returns the description:`}),` 14998`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 14999`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"error description"`})]}),` 15000`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})})]})}function Qd(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Zd,{...e})}):Zd(e)}var $d=t({default:()=>nf,frontmatter:()=>ef}),ef={title:`Tilopay.updateOptions()`,kind:`sdk-method`,status:`stable`,last_verified:`2026-08-28`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Respuestas de TecnologÃa, 28-08-2026`],locales:[`es`,`en`],related:[`sdk/reference/get-sinpe-movil`,`sdk/campos-del-formulario`,`sdk/reference/init`],description:`Partially updates the parameters sent to Init() when they change before closing the payment.`};function tf(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,table:`table`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,...m(),...e.components},{Callout:n,Param:r}=t;return n||rf(`Callout`,!0),r||rf(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(t.p,{children:[`Updates values already sent in `,(0,h.jsx)(t.a,{href:`/developers/sdk/reference/init`,children:(0,h.jsx)(t.code,{children:`Tilopay.Init()`})}),` that changed 15001during checkout â typically when the customer edits their data, or when they select SINPE Móvil 15002or Yappy and information that did not apply before must be added.`]}),` 15003`,(0,h.jsx)(n,{type:`info`,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`It is a patch.`}),` Send only the fields you want to update; there is no need to resend everything.`]})}),` 15004`,(0,h.jsx)(t.h2,{id:`obligatorio`,children:`What "required" means here`}),` 15005`,(0,h.jsxs)(t.p,{children:[`In the list below, "required" means the field `,(0,h.jsxs)(t.strong,{children:[`must have been sent either in `,(0,h.jsx)(t.code,{children:`Init()`}),` or in 15006`,(0,h.jsx)(t.code,{children:`updateOptions()`})]}),`. If it was never sent in either, the payment cannot proceed. It does not mean 15007you must resend it on every call.`]}),` 15008`,(0,h.jsx)(t.h2,{id:`firma`,children:`Signature`}),` 15009`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`await`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` Tilopay.`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:`updateOptions`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`({ `}),(0,h.jsx)(t.span,{style:{color:`#6A737D`},children:`/* only the fields that change */`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` })`})]})})})}),` 15010`,(0,h.jsx)(t.h2,{id:`llamada`,children:`Call`}),` 15011`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`const`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` update`}),(0,h.jsx)(t.span,{style:{color:`#F97583`},children:` =`}),(0,h.jsx)(t.span,{style:{color:`#F97583`},children:` await`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` Tilopay.`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:`updateOptions`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`({`})]}),` 15012`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` typeDni: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15013`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` dni: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"0707770777"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15014`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` billToFirstName: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Ana"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15015`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` billToLastName: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Rojas"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15016`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`});`})})]})})}),` 15017`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parameters`}),` 15018`,(0,h.jsx)(r,{id:`update-options-typedni`,name:`typeDni`,type:`integer`,children:(0,h.jsxs)(t.p,{children:[`Customer identification type. Required for SINPE Móvil. See 15019`,(0,h.jsx)(t.a,{href:`#tipos-de-identificacion`,children:`identification types`}),`.`]})}),` 15020`,(0,h.jsx)(r,{id:`update-options-dni`,name:`dni`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Customer identification number. Required for SINPE Móvil. `,(0,h.jsx)(t.strong,{children:`Accepted with and without hyphens.`})]})}),` 15021`,(0,h.jsx)(r,{id:`update-options-billtofirstname`,name:`billToFirstName`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Customer first name.`})}),` 15022`,(0,h.jsx)(r,{id:`update-options-billtolastname`,name:`billToLastName`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Customer last name.`})}),` 15023`,(0,h.jsx)(r,{id:`update-options-billtoaddress`,name:`billToAddress`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Customer address line 1.`})}),` 15024`,(0,h.jsx)(r,{id:`update-options-billtoaddress2`,name:`billToAddress2`,type:`string`,children:(0,h.jsx)(t.p,{children:`Customer address line 2. Optional.`})}),` 15025`,(0,h.jsx)(r,{id:`update-options-billtocity`,name:`billToCity`,type:`string`,children:(0,h.jsx)(t.p,{children:`Customer city. Recommended.`})}),` 15026`,(0,h.jsx)(r,{id:`update-options-billtostate`,name:`billToState`,type:`string`,children:(0,h.jsx)(t.p,{children:`State or province. Recommended.`})}),` 15027`,(0,h.jsx)(r,{id:`update-options-billtozippostcode`,name:`billToZipPost
15027Code`,type:`string`,children:(0,h.jsx)(t.p,{children:`Postal code. Recommended.`})}),` 15028`,(0,h.jsx)(r,{id:`update-options-billtocountry`,name:`billToCountry`,type:`string`,children:(0,h.jsx)(t.p,{children:`Country, ISO 3166-1 alpha-2. Recommended.`})}),` 15029`,(0,h.jsx)(r,{id:`update-options-billtotelephone`,name:`billToTelephone`,type:`string`,children:(0,h.jsx)(t.p,{children:`Customer phone. Recommended.`})}),` 15030`,(0,h.jsx)(r,{id:`update-options-capture`,name:`capture`,type:`integer`,required:!0,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.code,{children:`0`}),` authorizes; `,(0,h.jsx)(t.code,{children:`1`}),` authorizes and captures.`]})}),` 15031`,(0,h.jsx)(r,{id:`update-options-redirect`,name:`redirect`,type:`string (URL)`,required:!0,children:(0,h.jsx)(t.p,{children:`URL where the final purchase response is expected.`})}),` 15032`,(0,h.jsx)(r,{id:`update-options-subscription`,name:`subscription`,type:`integer`,required:!0,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.code,{children:`1`}),` if the customer wants to save their card in Tilopay; `,(0,h.jsx)(t.code,{children:`0`}),` if not.`]})}),` 15033`,(0,h.jsx)(r,{id:`update-options-phoneyappy`,name:`phoneYappy`,type:`string`,children:(0,h.jsx)(t.p,{children:`Yappy phone. Required when the customer pays with Yappy.`})}),` 15034`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsxs)(t.p,{children:[(0,h.jsxs)(t.strong,{children:[(0,h.jsx)(t.code,{children:`billToEmail`}),` cannot be updated after saved cards are obtained.`]}),` Once `,(0,h.jsx)(t.code,{children:`Init()`}),` returned the 15035customer's cards, the email cannot be changed through this method.`]})}),` 15036`,(0,h.jsx)(t.h2,{id:`tipos-de-identificacion`,children:`Identification types`}),` 15037`,(0,h.jsxs)(t.p,{children:[`Applies to the `,(0,h.jsx)(t.code,{children:`typeDni`}),` parameter, both here and in `,(0,h.jsx)(t.code,{children:`Tilopay.Init()`}),`. In the masks, `,(0,h.jsx)(t.code,{children:`#`}),` is a 15038`,(0,h.jsx)(t.strong,{children:`numeric`}),` character and `,(0,h.jsx)(t.code,{children:`&`}),` is `,(0,h.jsx)(t.strong,{children:`alphanumeric`}),`. Lengths do not count hyphens.`]}),` 15039`,(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Code`}),(0,h.jsx)(t.th,{children:`Type`}),(0,h.jsx)(t.th,{children:`Format`}),(0,h.jsx)(t.th,{children:`Length`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`1`}),(0,h.jsx)(t.td,{children:`Cédula de identidad`}),(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`0#-####-####`})}),(0,h.jsx)(t.td,{children:`10`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`2`}),(0,h.jsx)(t.td,{children:`Cédula jurÃdica`}),(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`3-###-######`})}),(0,h.jsx)(t.td,{children:`10`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`3`}),(0,h.jsx)(t.td,{children:`Gobierno central`}),(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`2-###-######`})}),(0,h.jsx)(t.td,{children:`10`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`4`}),(0,h.jsx)(t.td,{children:`Institución autónoma`}),(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`4-###-######`})}),(0,h.jsx)(t.td,{children:`10`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`5`}),(0,h.jsx)(t.td,{children:`Extranjero no residente`}),(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`9&&&&&&&&&&&&&&&&&&&`})}),(0,h.jsx)(t.td,{children:`20`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`6`}),(0,h.jsx)(t.td,{children:`DIMEX`}),(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`1###########`})}),(0,h.jsx)(t.td,{children:`12`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`7`}),(0,h.jsx)(t.td,{children:`DIDI`}),(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`5###########`})}),(0,h.jsx)(t.td,{children:`12`})]})]})]}),` 15040`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Response`}),` 15041`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 15042`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Success"`})]}),` 15043`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 15044`,(0,h.jsx)(r,{id:`update-options-message`,name:`message`,type:`string`,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.code,{children:`Success`}),` when the update succeeded; the error description otherwise.`]})})]})}function nf(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(tf,{...e})}):tf(e)}function rf(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var af=t({default:()=>cf,frontmatter:()=>of}),of={title:`JavaScript SDK`,kind:`guide`,status:`stable`,last_verified:`2026-08-28`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Respuestas de TecnologÃa, 28-08-2026`],locales:[`es`,`en`],related:[`sdk/instalacion`,`sdk/campos-del-formulario`,`sdk/reference/init`],description:`The integration path where the card form lives on your page and the SDK sends the data straight to Tilopay.`};function sf(e){let t={a:`a`,code:`code`,h2:`h2`,li:`li`,ol:`ol`,p:`p`,strong:`strong`,...m(),...e.components};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`que-es`,children:`What it is`}),` 15045`,(0,h.jsxs)(t.p,{children:[`The card fields live on your page. The V2 SDK takes over those inputs and sends the data 15046`,(0,h.jsx)(t.strong,{children:`from the browser straight to Tilopay`}),`: it never passes through your server.`]}),` 15047`,(0,h.jsx)(t.h2,{id:`para-quien`,children:`Who it is for`}),` 15048`,(0,h.jsx)(t.p,{children:`For teams that want to control the checkout design without card data touching their backend. 15049You need a JavaScript frontend and a minimal backend to obtain the SDK token.`}),` 15050`,(0,h.jsx)(t.h2,{id:`orden`,children:`How to build it, in order`}),` 15051`,(0,h.jsxs)(t.ol,{children:[` 15052`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`Credentials.`}),` There are no shared sandbox credentials: get yours through 15053`,(0,h.jsx)(t.a,{href:`/developers/registro`,children:`developer registration`}),`.`]}),` 15054`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`SDK token.`}),` Your backend requests it with `,(0,h.jsx)(t.code,{children:`POST /api/v1/loginSdk`}),`. See 15055`,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`authentication`}),`.`]}),` 15056`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`Load the script.`}),` See `,(0,h.jsx)(t.a,{href:`/developers/sdk/instalacion`,children:`installation`}),`.`]}),` 15057`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`Add the inputs with the contract ids`}),` and the `,(0,h.jsx)(t.code,{children:`responseTilopay`}),` container. See 15058`,(0,h.jsx)(t.a,{href:`/developers/sdk/campos-del-formulario`,children:`form fields`}),`.`]}),` 15059`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`Start the purchase`}),` with `,(0,h.jsx)(t.a,{href:`/developers/sdk/reference/init`,children:(0,h.jsx)(t.code,{children:`Tilopay.Init()`})}),` and show the 15060customer the payment methods it returns.`]}),` 15061`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`Close the purchase`}),` with 15062`,(0,h.jsx)(t.a,{href:`/developers/sdk/reference/startpayment`,children:(0,h.jsx)(t.code,{children:`Tilopay.startPayment()`})}),`. The SDK handles 3DS and 15063renders the result on your `,(0,h.jsx)(t.code,{children:`redirect`}),` URL.`]}),` 15064`]}),` 15065`,(0,h.jsx)(t.h2,{id:`entornos`,children:`Before assuming you are in test mode`}),` 15066`,(0,h.jsxs)(t.p,{children:[`Testing and production share one host: the mode is verified with the `,(0,h.jsx)(t.code,{children:`test`}),` field returned by 15067`,(0,h.jsx)(t.code,{children:`Init()`}),`. See `,(0,h.jsx)(t.a,{href:`/developers/entornos`,children:`environments`}),`.`]}),` 15068`,(0,h.jsx)(t.h2,{id:`cumplimiento`,children:`Compliance`}),` 15069`,(0,h.jsx)(t.p,{children:`Card data does not pass through your server, but your page captures it: check the applicable 15070scope with your compliance team.`})]})}function cf(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(sf,{...e})}):sf(e)}var lf=t({default:()=>ff,frontmatter:()=>uf}),uf={title:`API · Server-to-server`,kind:`guide`,status:`stable`,last_verified:`2026-08-28`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Respuestas de TecnologÃa, 28-08-2026`,`Documentación Server to server (colección Postman TILOPAY API), 13-09-2026`],locales:[`es`,`en`],related:[`hosted-payment-page`,`sdk`,`sin-codigo`],description:`A service exclusive to PCI-certified merchants. The URL is provisioned per merchant: it is not self-serve.`};function df(e){let t={a:`a`,code:`code`,h2:`h2`,h3:`h3`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,...m(),...e.components},{Callout:n,Param:r}=t;return n||pf(`Callout`,!0),r||pf(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(n,{type:`warn`,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`Restricted access. This is not a self-serve path.`}),` You cannot start this integration on your own 15071today: it requires merchant PCI certification and a URL provisioned individually by Tilopay.`]})}),` 15072`,(0,h.jsx)(t.h2,{id:`que-es`,children:`What it is`}),` 15073`,(0,h.jsx)(t.p,{children:`The path where card data passes through the merchant's server, which then sends it to the Tilopay 15074API.`}),` 15075`,(0,h.jsx)(t.h2,{id:`para-quien`,children:`Who it is for`}),` 15076`,(0,h.jsxs)(t.ul,{children:[` 15077`,(0,h.jsxs)(t.li,{children:[`It is a `,(0,h.jsx)(t.strong,{children:`service exclusive to merchants holding PCI certification`}),`.`]}),` 15078`,(0,h.jsxs)(t.li,{children:[`The `,(0,h.jsx)(t.strong,{children:`URL is customized per merchant`}),`, with its own key. `,(0,h.jsx)(t.strong,{children:`It is not a public URL.`})]}),` 15079`]}),`
15080`,(0,h.jsxs)(t.p,{children:[`That is why the examples on this page carry no real URL: the `,(0,h.jsx)(t.code,{children:`Host`}),` and the proxy key are delivered 15081to each approved merchant.`]}),` 15082`,(0,h.jsx)(t.h2,{id:`requisitos`,children:`Requirements`}),` 15083`,(0,h.jsxs)(t.ol,{children:[` 15084`,(0,h.jsx)(t.li,{children:`Valid PCI certification for the merchant.`}),` 15085`,(0,h.jsx)(t.li,{children:`An active Tilopay account.`}),` 15086`,(0,h.jsx)(t.li,{children:`An approved request, with the URL and key provisioned by Tilopay for your merchant.`}),` 15087`]}),` 15088`,(0,h.jsx)(t.h2,{id:`solicitud`,children:`How to request it`}),` 15089`,(0,h.jsxs)(t.p,{children:[`Write to `,(0,h.jsx)(t.code,{children:`[email protected]`}),` with the merchant name and the status of your PCI certification. The URL 15090and key are delivered directly to the approved merchant.`]}),` 15091`,(0,h.jsx)(t.h2,{id:`referencia`,children:`Request reference`}),` 15092`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsxs)(t.p,{children:[`The `,(0,h.jsx)(t.code,{children:`Host`}),` and the `,(0,h.jsx)(t.code,{children:`tx-proxy-key`}),` header are delivered by Tilopay to each approved merchant. There is 15093no public URL: the examples use placeholders.`]})}),` 15094`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` / `}),(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`HTTP`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`/`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1.1`})]}),` 15095`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#85E89D`},children:`Host`}),(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`:`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:` url provided by tilopay`})]})]})})}),` 15096`,(0,h.jsx)(t.h3,{id:`encabezados`,children:`Headers`}),` 15097`,(0,h.jsx)(r,{id:`s2s-header-authorization`,name:`Authorization`,type:`string`,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.code,{children:`bearer {API token}`}),` â see `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`authentication`}),`.`]})}),` 15098`,(0,h.jsx)(r,{id:`s2s-header-tx-proxy-key`,name:`tx-proxy-key`,type:`string`,children:(0,h.jsx)(t.p,{children:`Transaction proxy key, provided by Tilopay.`})}),` 15099`,(0,h.jsx)(t.h3,{id:`parametros`,children:`Parameters`}),` 15100`,(0,h.jsx)(r,{id:`s2s-parametro-key`,name:`key`,type:`string`,children:(0,h.jsx)(t.p,{children:`Key tied to the merchant (required).`})}),` 15101`,(0,h.jsx)(r,{id:`s2s-parametro-card`,name:`card`,type:`string`,children:(0,h.jsx)(t.p,{children:`Card number (required).`})}),` 15102`,(0,h.jsx)(r,{id:`s2s-parametro-cvv`,name:`cvv`,type:`string`,children:(0,h.jsx)(t.p,{children:`Security code (required).`})}),` 15103`,(0,h.jsx)(r,{id:`s2s-parametro-expire`,name:`expire`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Expiration date in monthYear format, for example `,(0,h.jsx)(t.code,{children:`1023`}),` (required).`]})}),` 15104`,(0,h.jsx)(r,{id:`s2s-parametro-name`,name:`name`,type:`string`,children:(0,h.jsx)(t.p,{children:`Cardholder first name (required).`})}),` 15105`,(0,h.jsx)(r,{id:`s2s-parametro-lastname`,name:`lastname`,type:`string`,children:(0,h.jsx)(t.p,{children:`Cardholder last name (required).`})}),` 15106`,(0,h.jsx)(r,{id:`s2s-parametro-phone`,name:`phone`,type:`string`,children:(0,h.jsx)(t.p,{children:`Customer phone (required).`})}),` 15107`,(0,h.jsx)(r,{id:`s2s-parametro-email`,name:`email`,type:`string`,children:(0,h.jsx)(t.p,{children:`Customer email (required).`})}),` 15108`,(0,h.jsx)(r,{id:`s2s-parametro-address`,name:`address`,type:`string`,children:(0,h.jsx)(t.p,{children:`Customer address (required).`})}),` 15109`,(0,h.jsx)(r,{id:`s2s-parametro-city`,name:`city`,type:`string`,children:(0,h.jsx)(t.p,{children:`Customer city (required).`})}),` 15110`,(0,h.jsx)(r,{id:`s2s-parametro-state`,name:`state`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`State in ISO format, for example `,(0,h.jsx)(t.code,{children:`CR-SJ`}),` (San José, Costa Rica) or `,(0,h.jsx)(t.code,{children:`US-CA`}),` (California, USA) (required).`]})}),` 15111`,(0,h.jsx)(r,{id:`s2s-parametro-zipcode`,name:`zipcode`,type:`string`,children:(0,h.jsx)(t.p,{children:`Postal code (required).`})}),` 15112`,(0,h.jsx)(r,{id:`s2s-parametro-country`,name:`country`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Country as ISO Alpha-2 code, for example `,(0,h.jsx)(t.code,{children:`CR`}),`, `,(0,h.jsx)(t.code,{children:`US`}),`, `,(0,h.jsx)(t.code,{children:`GT`}),` (required).`]})}),` 15113`,(0,h.jsx)(r,{id:`s2s-parametro-amount`,name:`amount`,type:`string`,children:(0,h.jsx)(t.p,{children:`Purchase amount (required).`})}),` 15114`,(0,h.jsx)(r,{id:`s2s-parametro-currency`,name:`currency`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Currency in ISO format, for example `,(0,h.jsx)(t.code,{children:`USD`}),`, `,(0,h.jsx)(t.code,{children:`CRC`}),`, `,(0,h.jsx)(t.code,{children:`GTQ`}),` (required).`]})}),` 15115`,(0,h.jsx)(r,{id:`s2s-parametro-ordernumber`,name:`orderNumber`,type:`string`,children:(0,h.jsx)(t.p,{children:`Order number (required).`})}),` 15116`,(0,h.jsx)(r,{id:`s2s-parametro-capture`,name:`capture`,type:`number`,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.code,{children:`1`}),` captures and authorizes, `,(0,h.jsx)(t.code,{children:`0`}),` only authorizes (required).`]})}),` 15117`,(0,h.jsx)(r,{id:`s2s-parametro-redirect`,name:`redirect`,type:`string`,children:(0,h.jsx)(t.p,{children:`Response URL (required).`})}),` 15118`,(0,h.jsxs)(t.p,{children:[`The `,(0,h.jsx)(t.code,{children:`shipTo*`}),` fields (`,(0,h.jsx)(t.code,{children:`shipToFirstName`}),`, `,(0,h.jsx)(t.code,{children:`shipToLastName`}),`, `,(0,h.jsx)(t.code,{children:`shipToAddress`}),`, `,(0,h.jsx)(t.code,{children:`shipToAddress2`}),`, 15119`,(0,h.jsx)(t.code,{children:`shipToCity`}),`, `,(0,h.jsx)(t.code,{children:`shipToState`}
15119),`, `,(0,h.jsx)(t.code,{children:`shipToZipPostCode`}),`, `,(0,h.jsx)(t.code,{children:`shipToCountry`}),`, `,(0,h.jsx)(t.code,{children:`shipToTelephone`}),`) appear in the 15120collection examples as shipping data.`]}),` 15121`,(0,h.jsx)(t.h3,{id:`peticion`,children:`Request`}),` 15122`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 15123`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15124`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "card"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"card PAN"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15125`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "cvv"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"CVV Number"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15126`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "expire"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1023"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15127`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "name"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"firstname"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15128`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "lastname"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"lastname"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15129`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "phone"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"88888888"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15130`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "email"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"[email protected]"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15131`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "address"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"user address"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15132`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "city"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"city"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15133`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "state"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"state"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15134`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "zipcode"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"zipcode"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15135`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "country"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"country"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15136`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "shipToFirstName"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Nombre"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15137`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "shipToLastName"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Apellido"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15138`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "shipToAddress"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"San Jose"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15139`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "shipToAddress2"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Escazu"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15140`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "shipToCity"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"San Jose"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15141`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "shipToState"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"SJ"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15142`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`}
15142,children:` "shipToZipPostCode"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"10101"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15143`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "shipToCountry"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"CR"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15144`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "shipToTelephone"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"88778877"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15145`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15146`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"currency code"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15147`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "orderNumber"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Order Number"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15148`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "capture"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15149`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "redirect"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"url to redirect"`})]}),` 15150`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 15151`,(0,h.jsxs)(t.p,{children:[`The collection includes two examples, `,(0,h.jsx)(t.strong,{children:`with 3DS`}),` and `,(0,h.jsx)(t.strong,{children:`without 3DS`}),`, sharing the same request body.`]}),` 15152`,(0,h.jsx)(t.h3,{id:`respuesta`,children:`Response`}),` 15153`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 15154`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "code"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15155`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Transaccion aprobada"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15156`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "auth"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"123456"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15157`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "orderNumber"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"12345"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15158`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "urlRedirect"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15159`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "error"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`})]}),` 15160`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 15161`,(0,h.jsxs)(t.p,{children:[`When the transaction requires 3DS authentication, the response carries the URL in `,(0,h.jsx)(t.code,{children:`urlRedirect`}),`; that 15162is where the cardholder is sent. To interpret `,(0,h.jsx)(t.code,{children:`code`}),`, `,(0,h.jsx)(t.code,{children:`description`}),` and `,(0,h.jsx)(t.code,{children:`error`}),`, see 15163`,(0,h.jsx)(t.a,{href:`/developers/api/convenciones`,children:`response conventions`}),` and 15164`,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`how to read an error response`}),`.`]}),` 15165`,(0,h.jsx)(t.h2,{id:`alternativas`,children:`Alternatives without PCI certification`}),` 15166`,(0,h.jsx)(t.p,{children:`If you do not hold PCI certification, these paths avoid that scope entirely:`}),` 15167`,(0,h.jsxs)(t.ul,{children:[` 15168`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.a,{href:`/developers/hosted-payment-page`,children:`Hosted payment page`}),` â Tilopay hosts the form.`]}),` 15169`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.a,{href:`/developers/sdk`,children:`JavaScript SDK`}),` â the form lives on your page, but the data travels from the 15170browser straight to Tilopay.`]}),` 15171`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.a,{href:`/developers/sin-codigo`,children:`No code`}),` â a plugin or an already-integrated platform.`]}),` 15172`]})]})}function ff(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(df,{...e})}):df(e)}function pf(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var mf=t({default:()=>_f,frontmatter:()=>hf}
15172),hf={title:`Test cards`,kind:`guide`,status:`stable`,api_version:`v1`,last_verified:`2026-09-03`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Respuestas de TecnologÃa, 03-09-2026 (tarjetas de prueba del ambiente de pruebas)`],locales:[`es`,`en`],related:[`entornos`,`sdk/reference/startpayment`,`api/procesos-operativos/errors`],description:`The 27 cards of the Tilopay testing environment, with the expected result and the 3DS friction of each one.`};function gf(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,strong:`strong`,table:`table`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,...m(),...e.components},{Callout:n}=t;return n||vf(`Callout`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(t.p,{children:[`These cards only work when the account is in `,(0,h.jsx)(t.strong,{children:`testing mode`}),`. The mode is switched from the 15173account and verified with the `,(0,h.jsx)(t.code,{children:`test`}),` field returned by `,(0,h.jsx)(t.code,{children:`Init()`}),`: see 15174`,(0,h.jsx)(t.a,{href:`/en/developers/entornos`,children:`environments and testing`}),`.`]}),` 15175`,(0,h.jsx)(t.h2,{id:`uso`,children:`How to use them`}),` 15176`,(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Field`}),(0,h.jsx)(t.th,{children:`What to enter`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Expiry date`}),(0,h.jsx)(t.td,{children:`Any date in the future`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`CVV`}),(0,h.jsx)(t.td,{children:`Any value`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Code on the 3DS challenge screen`}),(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`3ds2`})})]})]})]}),` 15177`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsxs)(t.p,{children:[`On the 3DS challenge screen the code to enter is `,(0,h.jsx)(t.strong,{children:(0,h.jsx)(t.code,{children:`3ds2`})}),`. There is no other code and nothing is 15178sent over SMS in testing.`]})}),` 15179`,(0,h.jsx)(t.h2,{id:`tarjetas`,children:`Cards`}),` 15180`,(0,h.jsxs)(t.p,{children:[`The brand comes from the prefix: `,(0,h.jsx)(t.code,{children:`4`}),` Visa, `,(0,h.jsx)(t.code,{children:`51`}),`â`,(0,h.jsx)(t.code,{children:`55`}),` Mastercard, `,(0,h.jsx)(t.code,{children:`34`}),` American Express.`]}),` 15181`,(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Number`}),(0,h.jsx)(t.th,{children:`Brand`}),(0,h.jsx)(t.th,{children:`Expected result`}),(0,h.jsx)(t.th,{children:`Friction`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`4111111111111111`})}),(0,h.jsx)(t.td,{children:`Visa`}),(0,h.jsx)(t.td,{children:`Approved`}),(0,h.jsx)(t.td,{children:`No friction`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`4012000000020089`})}),(0,h.jsx)(t.td,{children:`Visa`}),(0,h.jsx)(t.td,{children:`Approved`}),(0,h.jsx)(t.td,{children:`No friction`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`4012000000020006`})}),(0,h.jsx)(t.td,{children:`Visa`}),(0,h.jsx)(t.td,{children:`Approved`}),(0,h.jsx)(t.td,{children:`No friction`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`4012010000020088`})}),(0,h.jsx)(t.td,{children:`Visa`}),(0,h.jsx)(t.td,{children:`Approved`}),(0,h.jsx)(t.td,{children:`No friction`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`5100270000000072`})}),(0,h.jsx)(t.td,{children:`Mastercard`}),(0,h.jsx)(t.td,{children:`Approved`}),(0,h.jsx)(t.td,{children:`No friction`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`5100270000000031`})}),(0,h.jsx)(t.td,{children:`Mastercard`}),(0,h.jsx)(t.td,{children:`Approved`}),(0,h.jsx)(t.td,{children:`No friction`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`341111000000009`})}),(0,h.jsx)(t.td,{children:`American Express`}),(0,h.jsx)(t.td,{children:`Approved`}),(0,h.jsx)(t.td,{children:`No friction`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`341111000000011`})}),(0,h.jsx)(t.td,{children:`American Express`}),(0,h.jsx)(t.td,{children:`Approved`}),(0,h.jsx)(t.td,{children:`No friction`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`341112000000001`})}),(0,h.jsx)(t.td,{children:`American Express`}),(0,h.jsx)(t.td,{children:`Approved`}),(0,h.jsx)(t.td,{children:`No friction`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`341111000000037`})}),(0,h.jsx)(t.td,{children:`American Express`}),(0,h.jsx)(t.td,{children:`Approved`}),(0,h.jsx)(t.td,{children:`No friction`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`341112000008012`})}),(0,h.jsx)(t.td,{children:`American Express`}),(0,h.jsx)(t.td,{children:`Approved`}),(0,h.jsx)(t.td,{children:`No friction`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`4012000000020071`})}),(0,h.jsx)(t.td,{children:`Visa`}),(0,h.jsx)(t.td,{children:`Approved`}),(0,h.jsx)(t.td,{children:`3DS challenge`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`4012010000020070`})}),(0,h.jsx)(t.td,{children:`Visa`}),(0,h.jsx)(t.td,{children:`Approved`}),(0,h.jsx)(t.td,{children:`3DS challenge`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`4012010000020005`})}),(0,h.jsx)(t.td,{children:`Visa`}),(0,h.jsx)(t.td,{children:`Approved`}),(0,h.jsx)(t.td,{children:`3DS challenge`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`5100270000000023`})}),(0,h.jsx)(t.td,{children:`Mastercard`}),(0,h.jsx)(t.td,{children:`Approved`}),(0,h.jsx)(t.td,{children:`3DS challenge`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`5100271000000120`})}),(0,h.jsx)(t.td,{children:`Mastercard`}),(0,h.jsx)(t.td,{children:`Approved`}),(0,h.jsx)(t.td,{children:`3DS challenge`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`4112613451591116`})}),(0,h.jsx)(t.td,{children:`Visa`}),(0,h.jsx)(t.td,{children:`Insufficient funds`}),(0,h.jsx)(t.td,{children:`3DS challenge`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`4523080346468525`})}),(0,h.jsx)(t.td,{children:`Visa`}),(0,h.jsx)(t.td,{children:`Incorrect CVV`}),(0,h.jsx)(t.td,{children:`No friction`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`4549179990476733`})}),(0,h.jsx)(t.td,{children:`Visa`}),(0,h.jsx)(t.td,{children:`Restricted card`}),(0,h.jsx)(t.td,{children:`No friction`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`4012000000020121`})}),(0,h.jsx)(t.td,{children:`Visa`}),(0,h.jsx)(t.td,{children:`Declined`}),(0,h.jsx)(t.td,{children:`No friction`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`4111111111119999`})}),(0,h.jsx)(t.td,{children:`Visa`}),(0,h.jsx)(t.td,{children:`Declined`}),(0,h.jsx)(t.td,{children:`No friction`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`4111111111110000`})}),(0,h.jsx)(t.td,{children:`Visa`}),(0,h.jsx)(t.td,{children:`Declined`}),(0,h.jsx)(t.td,{children:`No friction`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`5100270000000056`})}),(0,h.jsx)(t.td,{children:`Mastercard`}),(0,h.jsx)(t.td,{children:`Declined`}),(0,h.jsx)(t.td,{children:`No friction`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`5111111111113333`})}),(0,h.jsx)(t.td,{children:`Mastercard`}),(0,h.jsx)(t.td,{children:`Declined`}),(0,h.jsx)(t.td,{children:`No friction`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`4666666666662222`})}),(0,h.jsx)(t.td,{children:`Visa`}),(0,h.jsx)(t.td,{children:`Declined`}),(0,h.jsx)(t.td,{children:`No friction`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`5555666666662222`})}),(0,h.jsx)(t.td,{children:`Mastercard`}),(0,h.jsx)(t.td,{children:`Declined`}),(0,h.jsx)(t.td,{children:`No friction`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`5100270000000098`})}),(0,h.jsx)(t.td,{children:`Mastercard`}),(0,h.jsx)(t.td,{children:`Declined`}),(0,h.jsx)(t.td,{children:`3DS challenge`})]})]})]}),` 15182`,(0,h.jsxs)(t.p,{children:[`Cards with `,(0,h.jsx)(t.strong,{children:`3DS challenge`}),` friction open the authentication screen; `,(0,h.jsx)(t.strong,{children:`No friction`}),` cards 15183resolve without it. The expected result is always the same: the card determines the response, not 15184the amount.`]})]})}function _f(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(gf,{...e})}):gf(e)}function vf(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var yf=t({default:()=>Sf,frontmatter:()=>bf}),bf={title:`Asistente en WhatsApp`,kind:`guide`,status:`stable`,last_verified:`2026-09-23`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Tilopay Insight Engine, flujo de vinculación de WhatsApp y pantalla de respaldo web (código, commit 55ba257a), verificado 23-09-2026`],locales:[`es`,`en`],related:[`agentes`,`agentes/mcp`,`agentes/mcp/adquirencia`,`agentes/mcp/api-bancario`],description:`Qué es el Asistente de Tilopay en WhatsApp, cómo se activa, cómo se usa y qué puede hacer: ventas, transacciones, enlaces de pago, catálogo, microtienda y pedidos, comprobantes, suscripciones, tarjetas guardadas, recordatorios y avisos.`};function xf(e){let t={a:`a`,h2:`h2`,li:`li`,ol:`ol`,p:`p`,strong:`strong`,table:`table`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,...m(),...e.components};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`que-es`,children:`Qué es`}),` 15185`,(0,h.jsx)(t.p,{children:`El Asistente de Tilopay en WhatsApp es el mismo
15185servidor MCP de Tilopay conectado a un chat de 15186WhatsApp. En vez de configurar un cliente MCP, el comercio le escribe en lenguaje natural desde el 15187WhatsApp que ya usa y el asistente ejecuta las herramientas sobre su cuenta de Tilopay.`}),` 15188`,(0,h.jsxs)(t.p,{children:[`Las capacidades son las mismas que expone el MCP: lo que un agente puede hacer por 15189`,(0,h.jsx)(t.a,{href:`/developers/agentes/mcp/adquirencia`,children:`herramientas de adquirencia`}),` y, bajo solicitud, por 15190`,(0,h.jsx)(t.a,{href:`/developers/agentes/mcp/api-bancario`,children:`herramientas bancarias`}),`, el asistente lo puede hacer desde 15191el chat.`]}),` 15192`,(0,h.jsx)(t.p,{children:`No es un chatbot de respuestas armadas: consulta y opera datos reales de la cuenta, y responde en 15193texto plano pensado para leerse en el teléfono.`}),` 15194`,(0,h.jsx)(t.h2,{id:`activacion`,children:`Cómo se activa`}),` 15195`,(0,h.jsx)(t.p,{children:`La vinculación se hace desde el mismo chat de WhatsApp y toma alrededor de un minuto. El comercio 15196debe estar afiliado a Tilopay y la persona necesita su correo y contraseña de Tilopay.`}),` 15197`,(0,h.jsxs)(t.ol,{children:[` 15198`,(0,h.jsxs)(t.li,{children:[`Escribà cualquier mensaje al número oficial de Tilopay. Si el número todavÃa no está vinculado, 15199el chat muestra una bienvenida con el botón `,(0,h.jsx)(t.strong,{children:`Vincular mi cuenta`}),`. También podés escribir 15200«vincular mi cuenta» para pedir el botón de nuevo.`]}),` 15201`,(0,h.jsxs)(t.li,{children:[`Tocá `,(0,h.jsx)(t.strong,{children:`Vincular mi cuenta`}),`. Las credenciales y los códigos se ingresan en el formulario seguro 15202que se abre, nunca como mensajes dentro del chat.`]}),` 15203`,(0,h.jsx)(t.li,{children:`Ingresá el mismo correo y contraseña que usás para entrar al panel de Tilopay.`}),` 15204`,(0,h.jsx)(t.li,{children:`Si tu cuenta tiene verificación en dos pasos, escribà el código que Tilopay envÃa al método 15205mostrado en pantalla.`}),` 15206`,(0,h.jsx)(t.li,{children:`Escribà el código de 6 dÃgitos que llega al correo de Tilopay. Este último código se solicita 15207siempre para confirmar la vinculación.`}),` 15208`,(0,h.jsx)(t.li,{children:`Si tu usuario tiene varios comercios, elegà cuál querés usar. Al terminar, cerrá el formulario y 15209ya podés pedirle al asistente que consulte u opere esa cuenta.`}),` 15210`]}),` 15211`,(0,h.jsx)(t.p,{children:`Por seguridad, el número de WhatsApp debe coincidir con uno de estos datos de la cuenta: un teléfono 15212configurado para la verificación en dos pasos, el teléfono de uno de los comercios disponibles o un 15213número autorizado previamente por el administrador del comercio. Si no coincide, la cuenta no se 15214vincula. Actualizá el teléfono en el panel de Tilopay o pedile al administrador que autorice ese 15215número en el panel del asistente y volvé a escribir «vincular mi cuenta».`}),` 15216`,(0,h.jsx)(t.p,{children:`Un número sin cuenta vinculada no puede ejecutar consultas ni operaciones. La bienvenida de 15217vinculación se envÃa como máximo una vez al dÃa; aunque no vuelva a aparecer ese dÃa, podés pedir el 15218botón escribiendo «vincular mi cuenta».`}),` 15219`,(0,h.jsx)(t.h2,{id:`revincular`,children:`Volver a vincular la cuenta`}),` 15220`,(0,h.jsx)(t.p,{children:`Si la sesión deja de funcionar o cambia la contraseña, escribà «vincular mi cuenta» y completá el 15221mismo proceso. Volver a vincular el mismo número actualiza la conexión existente: no crea otro 15222perfil ni desconecta los clientes MCP que ya estén vinculados. Cada canal conserva su propia sesión, 15223por lo que un problema en WhatsApp no cierra automáticamente las sesiones de Claude, ChatGPT, 15224Cursor u otros clientes MCP.`}),` 15225`,(0,h.jsx)(t.h2,{id:`uso`,children:`Cómo se usa`}),` 15226`,(0,h.jsx)(t.p,{children:`No hay comandos ni menús. Se escribe como se le hablarÃa a alguien del equipo:`}),` 15227`,(0,h.jsxs)(t.ul,{children:[` 15228`,(0,h.jsx)(t.li,{children:`«¿cómo van las ventas de los últimos 30 dÃas?»`}),` 15229`,(0,h.jsx)(t.li,{children:`«cobrale 25 mil colones a Ana por la consulta y mandámelo por WhatsApp»`}),` 15230`,(0,h.jsx)(t.li,{children:`«buscá la orden 10432»`}),` 15231`,(0,h.jsx)(t.li,{children:`«todos los dÃas a las 8pm mandame el resumen de ventas de hoy»`}),` 15232`]}),` 15233`,(0,h.jsx)(t.p,{children:`El asistente recuerda los últimos mensajes del hilo, asà que se puede seguir la conversación sin 15234repetir los datos («mandálo también por correo», «eliminá ese enlace»).`}),` 15235`,(0,h.jsx)(t.h2,{id:`capacidades`,children:`Qué puede hacer`}),` 15236`,(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Ãrea`}),(0,h.jsx)(t.th,{children:`Qué resuelve desde el chat`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Ventas`}),(0,h.jsx)(t.td,{children:`Resumen y tendencias por dÃa, semana o mes, y análisis con ticket promedio, tasa de aprobación, mejores clientes y motivos de rechazo.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Transacciones`}),(0,h.jsx)(t.td,{children:`Listar y consultar transacciones, y capturar, reembolsar o reversar un cobro.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Enlaces de pago`}),(0,h.jsx)(t.td,{children:`Crear un enlace, compartirlo por WhatsApp o correo, ver su detalle y eliminarlo.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Catálogo`}),(0,h.jsx)(t.td,{children:`Listar productos o servicios, ver su detalle, crear, cambiar o eliminar un Ãtem.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Microtienda`}),(0,h.jsx)(t.td,{children:`Armar una tienda con carrito a partir de los productos del catálogo, listar las tiendas activas y desactivar una.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Pedidos`}),(0,h.jsx)(t.td,{children:`Activar la gestión de pedidos con nombre y logo de la tienda, ver el resumen, listar pedidos por estado, ver los pagados sin entregar y marcarlos como entregados.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Comprobantes`}),(0,h.jsx)(t.td,{children:`Listar los comprobantes de los cobros aprobados y reenviarle a un cliente el comprobante de su pago.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Contactos`}),(0,h.jsx)(t.td,{children:`Guardar, listar y eliminar contactos para cobrarles por nombre.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Cobros recurrentes`}),(0,h.jsx)(t.td,{children:`Crear, editar y eliminar planes, armarlos paso a paso desde el chat, generar el enlace de suscripción, consultar suscriptores y sus pagos, editar, pausar, reactivar o eliminar un suscriptor, ver cobros fallidos, generar el enlace para poner al dÃa un cobro rechazado y administrar cupones.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Tarjetas guardadas`}),(0,h.jsx)(t.td,{children:`Tokenizar la tarjeta de un cliente, listar o eliminar sus tarjetas, consultar métodos de pago y cuotas, cobrar a una tarjeta guardada y ver grupos, afiliados y cobros masivos.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Recordatorios`}),(0,h.jsx)(t.td,{children:`Programar recordatorios de una sola vez, diarios, semanales o mensuales, que además pueden ejecutar una consulta del asistente al enviarse; listarlos y cancelarlos. Máximo 20 activos.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Avisos`}),(0,h.jsx)(t.td,{children:`Prender, apagar y consultar los avisos del comercio: cobros aprobados, cobros rechazados, pedidos y el resumen diario a la hora que elija.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Perfil y recetas`}),(0,h.jsx)(t.td,{children:`Guardar el perfil del negocio y recibir recomendaciones de automatización según lo que vende.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Soporte`}),(0,h.jsx)(t.td,{children:`Buscar la guÃa oficial de un tema, correr el diagnóstico de conexión y revisar un error de integración.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Bancario (bajo solicitud)`}),(0,h.jsx)(t.td,{children:`Cuentas, saldos, pagos, estados de cuenta y análisis de movimientos; y, con confirmación por correo, validar una cuenta destino, enviar una transferencia y consultar su estado. Solo con credenciales del API bancario.`})]})]})]}),` 15237`,(0,h.jsxs)(t.p,{children:[`Hoy son 86 herramientas en 13 grupos. El detalle de parámetros y el nivel de acceso de cada una 15238vive en las páginas del `,(0,h.jsx)(t.a,{href:`/developers/agentes/mcp`,children:`servidor MCP`}),`.`]}),` 15239`,(0,h.jsxs)(t.p,{children:[`El asistente también recibe `,(0,h.jsx)(t.strong,{children:`imágenes`}),` por el chat: por ejemplo, la foto de un producto para el 15240catálogo o el logo que se muestra en la microtienda y en los comprobantes.`]}),` 15241`,(0,h.jsx)(t.h2,{id:`autorizacion`,children:`Autorización de operaciones sensibles`}),` 15242`,(0,h.jsx)(t.p,{children:`Las operaciones que mueven dinero o alteran cobros âreembolsos, capturas, reversiones, cobros a 15243tarjetas guardadas, cambios a suscriptores, eliminación de enlaces, productos o planes y el envÃo de 15244una transferencia bancariaâ piden un código de 6 dÃgitos 15245que Tilopay envÃa al correo registrado del usuario. Sin ese código el asistente no las ejecuta.`}),` 15246`,(0,h.jsx)(t.p,{children:`Las llaves del comercio nunca viajan por el chat y el asistente no muestra credenciales, tokens ni 15247identificadores internos. Cada consulta y cada operación queda auditada con usuario, herramienta, 15248fecha y resultado, con lÃmites de uso por cuenta.`}),` 15249`,(0,h.jsx)(t.h2,{id:`avisos`,children:`Avisos que el asistente manda solo`}),` 15250`,(0,h.jsxs)(t.ul,{children:[` 15251`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`Pago recibido:`}),` cuando un cliente paga un enlace creado desde el asistente, llega un mensaje 15252por WhatsApp con monto, cliente, concepto, referencia y número de orden.`]}),` 15253`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`Reportes programados:`}),` el resumen o la consulta que se haya agendado, con el dato ya 15254consultado al momento del envÃo.`]}),` 15255`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`Recordatorios:`}),` el recordatorio agendado, con el resultado de la consulta adjunta si se pidió 15256una acción. Los recordatorios de cobros o enlaces siempre llegan al WhatsApp del comercio, nunca 15257al cliente.`]}
15257),` 15258`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`Pedidos por entregar:`}),` el recordatorio diario de los pedidos ya pagados que siguen sin entregar, 15259cuando la gestión de pedidos está activa.`]}),` 15260`]}),` 15261`,(0,h.jsx)(t.h2,{id:`mcp`,children:`Si preferÃs tu propio agente`}),` 15262`,(0,h.jsxs)(t.p,{children:[`Las mismas herramientas están disponibles por MCP para Claude, ChatGPT, Cursor u otro cliente: 15263empezá por `,(0,h.jsx)(t.a,{href:`/developers/agentes/mcp/conectar`,children:`Conectar tu agente`}),` y por 15264`,(0,h.jsx)(t.a,{href:`/developers/agentes/mcp/permisos`,children:`Permisos`}),`.`]})]})}function Sf(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(xf,{...e})}):xf(e)}var Cf=t({default:()=>Ef,frontmatter:()=>wf}),wf={title:`Documentación legible por máquina`,kind:`guide`,status:`stable`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (manifiesto y código), verificado 29-08-2026`,`Respuestas de TecnologÃa, 29-08-2026`],locales:[`es`,`en`],related:[`agentes`,`agentes/mcp`,`api/autenticacion`,`sdk`],description:`Los artefactos que el portal publica para agentes: llms.txt, Markdown crudo en cualquier URL, openapi.json y mcp.json.`};function Tf(e){let t={a:`a`,code:`code`,h2:`h2`,li:`li`,p:`p`,ul:`ul`,...m(),...e.components};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`llms`,children:`Ãndices para modelos`}),` 15265`,(0,h.jsxs)(t.ul,{children:[` 15266`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.a,{href:`https://www.tilopay.com/llms.txt`,children:`www.tilopay.com/llms.txt`}),` â Ãndice del sitio en español, con la URL y una descripción 15267de cada página.`]}),` 15268`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.a,{href:`https://www.tilopay.com/llms-full.txt`,children:`www.tilopay.com/llms-full.txt`}),` â el mismo Ãndice con el contenido completo.`]}),` 15269`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.a,{href:`https://www.tilopay.com/en/llms.txt`,children:`www.tilopay.com/en/llms.txt`}),` y `,(0,h.jsx)(t.a,{href:`https://www.tilopay.com/en/llms-full.txt`,children:`www.tilopay.com/en/llms-full.txt`}),` â las 15270versiones en inglés, con las URLs `,(0,h.jsx)(t.code,{children:`/en`}),`.`]}),` 15271`]}),` 15272`,(0,h.jsx)(t.h2,{id:`markdown`,children:`Markdown crudo`}),` 15273`,(0,h.jsxs)(t.p,{children:[`Cualquier URL del sitio devuelve su Markdown agregándole `,(0,h.jsx)(t.code,{children:`.md`}),`: por ejemplo 15274`,(0,h.jsx)(t.a,{href:`https://www.tilopay.com/developers/sdk/instalacion.md`,children:`www.tilopay.com/developers/sdk/instalacion.md`}),` o 15275`,(0,h.jsx)(t.a,{href:`https://www.tilopay.com/tarifas.md`,children:`www.tilopay.com/tarifas.md`}),`. Se sirve como `,(0,h.jsx)(t.code,{children:`text/markdown`}),`, con un encabezado de 15276metadatos (tipo de página, estado, versión y fecha de última verificación). Una URL que no existe 15277devuelve 404, no HTML.`]}),` 15278`,(0,h.jsx)(t.h2,{id:`openapi`,children:`Spec del API`}),` 15279`,(0,h.jsxs)(t.ul,{children:[` 15280`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.a,{href:`/developers/openapi.json`,children:(0,h.jsx)(t.code,{children:`openapi.json`})}),` â spec OpenAPI 3.1 del API de Tilopay: endpoints, 15281parámetros, respuestas y ejemplos. Es la fuente de verdad del API.`]}),` 15282`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.a,{href:`/developers/openapi.yaml`,children:(0,h.jsx)(t.code,{children:`openapi.yaml`})}),` â el mismo contenido en YAML.`]}),` 15283`]}),` 15284`,(0,h.jsxs)(t.p,{children:[`Las dos rutas responden con `,(0,h.jsx)(t.code,{children:`Access-Control-Allow-Origin: *`}),`, asà que se pueden leer desde el 15285navegador.`]}),` 15286`,(0,h.jsx)(t.h2,{id:`mcp-json`,children:`Catálogo del MCP`}),` 15287`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.a,{href:`/developers/mcp.json`,children:(0,h.jsx)(t.code,{children:`mcp.json`})}),` describe el servidor MCP: su URL, el modelo de acceso y el 15288catálogo completo de herramientas con parámetros, salida y nivel de acceso. Cuando la herramienta 15289envuelve una operación del API, la entrada incluye ese endpoint.`]}),` 15290`,(0,h.jsxs)(t.p,{children:[`El campo `,(0,h.jsx)(t.code,{children:`verified_at`}),` en la raÃz trae la fecha (`,(0,h.jsx)(t.code,{children:`YYYY-MM-DD`}),`) en que el catálogo se comparó con el 15291servidor. La versión del servidor no cambia cuando se agregan herramientas, asà que ésa es la señal 15292que conviene mirar para saber si una copia en caché quedó vieja.`]})]})}function Ef(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Tf,{...e})}):Tf(e)}var Df=t({default:()=>Af,frontmatter:()=>Of}),Of={title:`Herramientas de adquirencia`,kind:`mcp-index`,status:`stable`,last_verified:`2026-09-03`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (manifiesto y código), verificado 03-09-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/permisos`,`agentes/mcp/api-bancario`],description:`Resumen de los grupos de herramientas del MCP sobre el API de adquirencia: ventas, enlaces de pago, catálogo, contactos, perfil del negocio, microtienda y pedidos, avisos, comprobantes, recordatorios, cobros recurrentes, tarjetas guardadas y soporte.`};function kf(e){let t={a:`a`,h2:`h2`,p:`p`,strong:`strong`,...m(),...e.components},{McpGroupIndex:n}=t;return n||jf(`McpGroupIndex`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`que-cubre`,children:`Qué cubre`}),` 15293`,(0,h.jsxs)(t.p,{children:[`Estas son las herramientas que trabajan sobre el `,(0,h.jsx)(t.strong,{children:`API de adquirencia`}),` de Tilopay: cobros con 15294tarjeta, enlaces de pago y los datos que los rodean. Vienen activadas con el acceso MCP estándar, 15295sin solicitud adicional, y operan siempre sobre el comercio asociado al usuario del MCP.`]}),` 15296`,(0,h.jsxs)(t.p,{children:[`Las herramientas del `,(0,h.jsx)(t.a,{href:`/developers/agentes/mcp/api-bancario`,children:`API bancario`}),` son un caso aparte: se 15297activan bajo solicitud y exigen credenciales del API bancario.`]}),` 15298`,(0,h.jsx)(t.h2,{id:`grupos`,children:`Grupos`}),` 15299`,(0,h.jsx)(n,{slugs:`ventas, enlaces-de-pago, catalogo, contactos, perfil, microtienda, avisos, comprobantes, recordatorios, recurrentes, tarjetas-guardadas, soporte`}),` 15300`,(0,h.jsxs)(t.p,{children:[`El nivel de acceso de cada herramienta y el detalle de sus parámetros está en la página de su 15301grupo; el resumen de permisos está en `,(0,h.jsx)(t.a,{href:`/developers/agentes/mcp/permisos`,children:`Permisos`}),`.`]})]})}function Af(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(kf,{...e})}):kf(e)}function jf(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Mf=t({default:()=>Ff,frontmatter:()=>Nf}),Nf={title:`Analista de pagos`,kind:`mcp-tool`,access:`read`,status:`stable`,last_verified:`2026-09-03`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo baas), verificado 03-09-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/api-bancario`,`agentes/mcp/permisos`],description:`Analiza, sólo lectura, los pagos de una cuenta en un rango de fechas y devuelve un informe en lenguaje natural: éxito, fallas, reversiones, montos netos y recomendaciones. Usa un modelo de lenguaje sobre las cifras calculadas.`};function Pf(e){let{McpTool:t}={...m(),...e.components};return t||If(`McpTool`,!0),(0,h.jsx)(t,{name:`baas_analyze_payments`})}function Ff(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Pf,{...e})}):Pf(e)}function If(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Lf=t({default:()=>Bf,frontmatter:()=>Rf}),Rf={title:`Detalle de un pago`,kind:`mcp-tool`,access:`read`,status:`stable`,last_verified:`2026-09-03`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo baas), verificado 03-09-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/api-bancario`,`agentes/mcp/permisos`],description:`Obtiene el detalle de un pago del API bancario por su UUID interno, sólo lectura.`};function zf(e){let{McpTool:t}={...m(),...e.components};return t||Vf(`McpTool`,!0),(0,h.jsx)(t,{name:`baas_get_payment`})}function Bf(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(zf,{...e})}):zf(e)}function Vf(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Hf=t({default:()=>Gf,frontmatter:()=>Uf}),Uf={title:`Estado de una transferencia`,kind:`mcp-tool`,access:`read`,status:`stable`,last_verified:`2026-09-14`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo baas), verificado 14-09-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/api-bancario`,`agentes/mcp/api-bancario/sen
15301d-transfer`],description:`Consulta el estado actual de una transferencia por su payment_id: estado, resultado, monto, moneda, destino y fecha.`};function Wf(e){let{McpTool:t}={...m(),...e.components};return t||Kf(`McpTool`,!0),(0,h.jsx)(t,{name:`baas_get_transfer_status`})}function Gf(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Wf,{...e})}):Wf(e)}function Kf(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var qf=t({default:()=>Xf,frontmatter:()=>Jf}),Jf={title:`Saldos`,kind:`mcp-tool`,access:`read`,status:`stable`,last_verified:`2026-09-03`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo baas), verificado 03-09-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/api-bancario`,`agentes/mcp/permisos`],description:`Lista los saldos en tiempo real de las cuentas accesibles: cuenta, montos y fecha de corte.`};function Yf(e){let{McpTool:t}={...m(),...e.components};return t||Zf(`McpTool`,!0),(0,h.jsx)(t,{name:`baas_list_balances`})}function Xf(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Yf,{...e})}):Yf(e)}function Zf(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Qf=t({default:()=>tp,frontmatter:()=>$f}),$f={title:`Pagos`,kind:`mcp-tool`,access:`read`,status:`stable`,last_verified:`2026-09-03`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo baas), verificado 03-09-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/api-bancario`,`agentes/mcp/permisos`],description:`Consulta, sólo lectura, los pagos de una cuenta propia identificada por IBAN, con filtros de fecha, estado, moneda, método y dirección. Paginación por cursor.`};function ep(e){let{McpTool:t}={...m(),...e.components};return t||np(`McpTool`,!0),(0,h.jsx)(t,{name:`baas_list_payments`})}function tp(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(ep,{...e})}):ep(e)}function np(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var rp=t({default:()=>op,frontmatter:()=>ip}),ip={title:`Otras operaciones`,kind:`mcp-tool`,access:`read`,status:`stable`,last_verified:`2026-09-03`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo baas), verificado 03-09-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/api-bancario`,`agentes/mcp/permisos`],description:`Contextos (assignments), diagnóstico de credenciales, listado de cuentas, saldo de una cuenta y estado de una solicitud de estado de cuenta, en una sola página.`};function ap(e){let{McpTools:t}={...m(),...e.components};return t||sp(`McpTools`,!0),(0,h.jsx)(t,{names:`baas_list_assignments, baas_diagnostics, baas_list_accounts, baas_get_balance, baas_get_statement_status`})}function op(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(ap,{...e})}):ap(e)}function sp(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var cp=t({default:()=>dp,frontmatter:()=>lp}),lp={title:`Estado de cuenta`,kind:`mcp-tool`,access:`write`,status:`stable`,last_verified:`2026-09-03`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo baas), verificado 03-09-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/api-bancario`,`agentes/mcp/permisos`],description:`Solicita la generación de un estado de cuenta para una cuenta del API bancario, con rango máximo de 60 dÃas. No mueve dinero: genera un documento de consulta y devuelve request_id con status PENDING.`};function up(e){let{McpTool:t}={...m(),...e.components};return t||fp(`McpTool`,!0),(0,h.jsx)(t,{name:`baas_request_statement`})}function dp(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(up,{...e})}):up(e)}function fp(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var pp=t({default:()=>gp,frontmatter:()=>mp}),mp={title:`Buscar un pago`,kind:`mcp-tool`,access:`read`,status:`stable`,last_verified:`2026-09-03`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo baas), verificado 03-09-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/api-bancario`,`agentes/mcp/permisos`],description:`Busca un pago dentro de una cuenta por exactamente uno de: paymentId (UUID), publicId (número) o clientReference. Si se envÃa más de uno, la herramienta devuelve error.`};function hp(e){let{McpTool:t}={...m(),...e.components};return t||_p(`McpTool`,!0),(0,h.jsx)(t,{name:`baas_search_payment`})}function gp(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(hp,{...e})}):hp(e)}function _p(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var vp=t({default:()=>xp,frontmatter:()=>yp}),yp={title:`Enviar transferencia`,kind:`mcp-tool`,access:`destructive`,status:`stable`,last_verified:`2026-09-14`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo baas), verificado 14-09-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/api-bancario`,`agentes/mcp/api-bancario/validate-destination`],description:`EnvÃa una transferencia desde una cuenta bancaria del comercio. Valida la cuenta destino antes y exige un código de confirmación que llega al correo del comercio.`};function bp(e){let t={p:`p`,strong:`strong`,...m(),...e.components},{Callout:n,McpTool:r}=t;return n||Sp(`Callout`,!0),r||Sp(`McpTool`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(n,{type:`warn`,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`Esta herramienta mueve dinero real.`}),` Antes de enviar, valida la cuenta destino; y para ejecutar 15302la transferencia exige un `,(0,h.jsx)(t.strong,{children:`código de confirmación`}),` que llega al correo del comercio. Sin ese 15303código la operación no se envÃa.`]})}),` 15304`,(0,h.jsx)(r,{name:`baas_send_transfer`})]})}function xp(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(bp,{...e})}):bp(e)}function Sp(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Cp=t({default:()=>Ep,frontmatter:()=>wp}),wp={title:`Validar cuenta destino`,kind:`mcp-tool`,access:`read`,status:`stable`,last_verified:`2026-09-14`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo baas), verificado 14-09-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/api-bancario`,`agentes/mcp/api-bancario/sen
15304d-transfer`],description:`Consulta los datos de una cuenta destino antes de enviarle una transferencia: titular, tipo de cuenta, moneda y estado. No mueve dinero.`};function Tp(e){let{McpTool:t}={...m(),...e.components};return t||Dp(`McpTool`,!0),(0,h.jsx)(t,{name:`baas_validate_destination`})}function Ep(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Tp,{...e})}):Tp(e)}function Dp(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Op=t({default:()=>jp,frontmatter:()=>kp}),kp={title:`Herramientas bancarias`,kind:`mcp-tool`,access:`write`,status:`stable`,last_verified:`2026-09-03`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo baas), verificado 03-09-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/permisos`,`api-bancario`,`api-bancario/cuentas`,`api-bancario/pagos`],description:`Herramientas del MCP para consultar el API bancario de Tilopay: cuentas, saldos, pagos y estados de cuenta. Se activan bajo solicitud y sólo para usuarios con credenciales del API bancario.`};function Ap(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,strong:`strong`,...m(),...e.components},{Callout:n,McpToolIndex:r}=t;return n||Mp(`Callout`,!0),r||Mp(`McpToolIndex`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(n,{type:`warn`,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`Estas herramientas no vienen activadas.`}),` Se habilitan `,(0,h.jsx)(t.strong,{children:`bajo solicitud`}),` y sólo funcionan para 15305usuarios con `,(0,h.jsx)(t.strong,{children:`credenciales del API bancario de Tilopay`}),` registradas por Tilopay del lado del 15306servidor. Con el acceso MCP estándar el grupo no aparece; y si la herramienta se invoca sin esas 15307credenciales, responde que no existen. Para pedirlo, escribinos desde 15308`,(0,h.jsx)(t.a,{href:`/contacto`,children:`contacto`}),` e indicá que necesitás el API bancario.`]})}),` 15309`,(0,h.jsx)(t.h2,{id:`que-cubre`,children:`Qué cubre`}),` 15310`,(0,h.jsxs)(t.p,{children:[`Catorce herramientas sobre el `,(0,h.jsx)(t.a,{href:`/developers/api-bancario`,children:`API bancario`}),`: contextos (assignments), 15311diagnóstico de credenciales, cuentas, saldos, pagos, estados de cuenta, un informe analÃtico de 15312pagos, la validación de una cuenta destino y el envÃo de una transferencia con su consulta de 15313estado.`]}),` 15314`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`Once de las catorce sólo extraen información.`}),` `,(0,h.jsx)(t.code,{children:`baas_request_statement`}),` genera un documento de 15315consulta y no mueve dinero. La única que mueve dinero es `,(0,h.jsx)(t.code,{children:`baas_send_transfer`}),`: valida antes la 15316cuenta destino y exige un código de confirmación que llega al correo del comercio, asà que no puede 15317ejecutarse por decisión del modelo.`]}),` 15318`,(0,h.jsxs)(t.p,{children:[`Las cuentas se identifican con `,(0,h.jsx)(t.code,{children:`accountType: "IBAN"`}),` más `,(0,h.jsx)(t.code,{children:`accountValue`}),`, las fechas son RFC 3339 15319(`,(0,h.jsx)(t.code,{children:`2026-01-01T00:00:00Z`}),`) y `,(0,h.jsx)(t.code,{children:`assignmentId`}),` se envÃa únicamente cuando el usuario tiene varios 15320contextos.`]}),` 15321`,(0,h.jsx)(t.h2,{id:`herramientas`,children:`Herramientas`}),` 15322`,(0,h.jsx)(r,{slug:`api-bancario`})]})}function jp(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Ap,{...e})}):Ap(e)}function Mp(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Np=t({default:()=>Ip,frontmatter:()=>Pp}),Pp={title:`Avisos y notificaciones`,kind:`mcp-tool`,access:`write`,status:`stable`,last_verified:`2026-09-14`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo notifications), verificado 14-09-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/recordatorios`,`agentes/asistente-whatsapp`],description:`Herramientas del MCP para ver y cambiar los avisos por WhatsApp del comercio: cobros aprobados, cobros fallidos, resumen diario y pedidos.`};function Fp(e){let t={h2:`h2`,p:`p`,...m(),...e.components},{McpToolGroup:n}=t;return n||Lp(`McpToolGroup`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`que-cubre`,children:`Qué cubre`}),` 15323`,(0,h.jsx)(t.p,{children:`El agente puede avisarle al comercio por WhatsApp cuando entra un cobro, cuando un cobro se 15324rechaza, cuando entra un pedido, y enviarle un resumen diario a la hora que elija. Estas dos
15325herramientas son las que leen y cambian esa configuración.`}),` 15326`,(0,h.jsx)(t.p,{children:`No envÃan mensajes por su cuenta: solamente prenden, apagan y consultan los avisos. Los campos que 15327no se envÃan se conservan.`}),` 15328`,(0,h.jsx)(t.h2,{id:`herramientas`,children:`Herramientas`}),` 15329`,(0,h.jsx)(n,{slug:`avisos`})]})}function Ip(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Fp,{...e})}):Fp(e)}function Lp(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Rp=t({default:()=>Vp,frontmatter:()=>zp}),zp={title:`Catálogo`,kind:`mcp-tool`,access:`read`,status:`stable`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (manifiesto y código), verificado 29-08-2026`,`Respuestas de TecnologÃa, 29-08-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/permisos`,`agentes/mcp/recetas`],description:`Herramientas del MCP para leer el catálogo de productos y servicios del comercio.`};function Bp(e){let t={h2:`h2`,p:`p`,...m(),...e.components},{McpToolGroup:n}=t;return n||Hp(`McpToolGroup`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`que-cubre`,children:`Qué cubre`}),` 15330`,(0,h.jsx)(t.p,{children:`Sólo lectura: lista los productos o servicios que el comercio ya tiene creados en enlaces de pago y devuelve el detalle de uno.`}),` 15331`,(0,h.jsx)(t.h2,{id:`herramientas`,children:`Herramientas`}),` 15332`,(0,h.jsx)(n,{slug:`catalogo`})]})}function Vp(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Bp,{...e})}):Bp(e)}function Hp(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Up=t({default:()=>Kp,frontmatter:()=>Wp}),Wp={title:`Comprobantes de cobro`,kind:`mcp-tool`,access:`write`,status:`stable`,last_verified:`2026-09-14`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo receipts), verificado 14-09-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/microtienda`,`agentes/mcp/enlaces-de-pago`],description:`Herramientas del MCP para listar los comprobantes de los cobros aprobados y reenviarle a un cliente el comprobante de su pago.`};function Gp(e){let t={h2:`h2`,p:`p`,...m(),...e.components},{McpToolGroup:n}=t;return n||qp(`McpToolGroup`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`que-cubre`,children:`Qué cubre`}),` 15333`,(0,h.jsx)(t.p,{children:`Cada cobro aprobado que pasa por el agente genera un comprobante con su propio código, una página 15334para verlo y una imagen para compartir. Con estas dos herramientas el comercio lista los 15335comprobantes de un perÃodo y reenvÃa uno al cliente por WhatsApp.`}),` 15336`,(0,h.jsx)(t.p,{children:`El comprobante es un documento informativo del cobro. No es una factura electrónica.`}),` 15337`,(0,h.jsx)(t.h2,{id:`herramientas`,children:`Herramientas`}),` 15338`,(0,h.jsx)(n,{slug:`comprobantes`})]})}function Kp(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Gp,{...e})}):Gp(e)}function qp(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Jp=t({default:()=>Zp,frontmatter:()=>Yp}),Yp={title:`Conectar tu agente de IA`,kind:`guide`,status:`stable`,last_verified:`2026-09-23`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Código del servidor MCP de Tilopay (Tilopay Insight Engine), verificado 23-09-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/permisos`,`agentes/mcp/recetas`,`agentes`],description:`Cómo conectar Claude, ChatGPT, GitHub Copilot, Cursor, Gemini u otro cliente MCP al servidor MCP de Tilopay.`};function Xp(e){let t={a:`a`,code:`code`,h2:`h2`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,...m(),...e.components},{Callout:n}=t;return n||Qp(`Callout`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.p,{children:`Todos los agentes se conectan al mismo servidor y con el mismo flujo: se agrega un servidor MCP 15339remoto con la URL de Tilopay y la sesión se autoriza en el navegador. Lo único que cambia entre 15340agentes es dónde se agrega.`}),` 15341`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{children:`https://mcp.tilopay.com/mcp`})})})})}),` 15342`,(0,h.jsxs)(t.p,{children:[`La versión del servidor MCP en producción es `,(0,h.jsx)(t.strong,{children:`0.3.0`}),`.`]}),` 15343`,(0,h.jsx)(t.h2,{id:`antes`,children:`Antes de conectar`}),` 15344`,(0,h.jsxs)(t.ol,{children:[` 15345`,(0,h.jsx)(t.li,{children:`No hay formulario ni aprobación previa: basta tener una cuenta activa de Tilopay.`}),` 15346`,(0,h.jsx)(t.li,{children:`Al autorizar, la sesión se inicia con el correo y la contraseña del panel de Tilopay y se 15347confirma el código de verificación que Tilopay envÃa. El usuario del asistente se crea solo en 15348ese momento y queda asociado al comercio.`}),` 15349`,(0,h.jsxs)(t.li,{children:[`Revisá `,(0,h.jsx)(t.a,{href:`/developers/agentes/mcp/permisos`,children:`qué puede hacer un agente`}),` antes de conectarlo, sobre 15350todo las herramientas marcadas como sensibles.`]}),` 15351`]}),` 15352`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsxs)(t.p,{children:[`Nunca pegues `,(0,h.jsx)(t.code,{children:`apiKey`}),`, `,(0,h.jsx)(t.code,{children:`apiUser`}),` ni `,(0,h.jsx)(t.code,{children:`apiPassword`}),` del comercio en el agente ni en su archivo de 15353configuración. Las credenciales del comercio viven cifradas en el servidor de Tilopay: el agente 15354sólo maneja su propia sesión OAuth.`]})}),` 15355`,(0,h.jsx)(t.h2,{id:`claude`,children:`Claude`}),` 15356`,(0,h.jsx)(t.p,{children:`Claude soporta conectores remotos, tanto en la app de escritorio como en la web.`}),` 15357`,(0,h.jsxs)(t.ol,{children:[` 15358`,(0,h.jsx)(t.li,{children:`Agregá un conector personalizado remoto con la URL del servidor.`}),` 15359`,(0,h.jsx)(t.li,{children:`Claude abre la pantalla de autorización de Tilopay: iniciá sesión con tus credenciales de 15360Tilopay y confirmá el código de verificación.`}),` 15361`,(0,h.jsx)(t.li,{children:`Revisá la pantalla de consentimiento (aplicación que pide acceso, URL de retorno y permisos) y 15362aprobá.`}),` 15363`,(0,h.jsx)(t.li,{children:`Al volver a la conversación, las herramientas de Tilopay quedan disponibles.`}),` 15364`]}),` 15365`,(0,h.jsx)(t.p,{children:`No hay que pegar ningún token: el conector se registra solo.`}),` 15366`,(0,h.jsx)(t.h2,{id:`chatgpt`,children:`ChatGPT`}),` 15367`,(0,h.jsx)(t.p,{children:`ChatGPT se conecta como conector remoto usando la misma URL.`}),` 15368`,(0,h.jsxs)(t.ol,{children:[` 15369`,(0,h.jsx)(t.li,{children:`Agregá el servidor como conector remoto con la URL de arriba.`}),` 15370`,(0,h.jsx)(t.li,{children:`La autorización se completa en el navegador con tus credenciales de Tilopay y el código de 15371verificación.`}),` 15372`,(0,h.jsx)(t.li,{children:`Al aprobar, el conector queda activo y el modelo puede llamar las herramientas.`}),` 15373`]}),` 15374`,(0,h.jsx)(t.h2,{id:`copilot`,children:`GitHub Copilot y VS Code`}),` 15375`,(0,h.jsx)(t.p,{children:`En VS Code (con Copilot en modo agente) se declara un servidor MCP remoto de tipo HTTP.`}),` 15376`,(0,h.jsxs)(t.ol,{children:[` 15377`,(0,h.jsx)(t.li,{children:`Declará el servidor con la URL, sin token ni credenciales en el archivo de configuración.`}),` 15378`,(0,h.jsx)(t.li,{children:`Al primer uso, el editor abre el navegador para autorizar.`}),` 15379`,(0,h.jsx)(t.li,{children:`Después de aprobar, las herramientas aparecen en la lista de herramientas del agente.`}),` 15380`]}),`
15381`,(0,h.jsx)(t.h2,{id:`cursor`,children:`Cursor y otros editores`}),` 15382`,(0,h.jsx)(t.p,{children:`Cursor y editores equivalentes usan el mismo esquema: un servidor MCP remoto por HTTP.`}),` 15383`,(0,h.jsxs)(t.ol,{children:[` 15384`,(0,h.jsx)(t.li,{children:`Agregá el servidor remoto con la URL, sin token en la configuración.`}),` 15385`,(0,h.jsx)(t.li,{children:`Autorizá en el navegador cuando el editor lo pida.`}),` 15386`,(0,h.jsx)(t.li,{children:`Habilitá las herramientas para el chat o el agente del editor.`}),` 15387`]}),` 15388`,(0,h.jsx)(t.h2,{id:`gemini`,children:`Gemini`}),` 15389`,(0,h.jsx)(t.p,{children:`Los clientes de Gemini que soportan MCP remoto se conectan igual: se registra la URL del 15390servidor y la autorización ocurre en el navegador. Si el cliente sólo soporta servidores MCP 15391locales por stdio, se requiere un puente que hable Streamable HTTP contra la URL de Tilopay.`}),` 15392`,(0,h.jsx)(t.h2,{id:`otros`,children:`Otros clientes MCP`}),` 15393`,(0,h.jsxs)(t.p,{children:[`Para un cliente propio o cualquier otro agente, el requisito es soportar transporte 15394`,(0,h.jsx)(t.strong,{children:`Streamable HTTP`}),` y `,(0,h.jsx)(t.strong,{children:`OAuth 2.0 con registro dinámico de cliente`}),`. La secuencia es:`]}),` 15395`,(0,h.jsxs)(t.ol,{children:[` 15396`,(0,h.jsxs)(t.li,{children:[`El cliente llama al servidor y recibe un `,(0,h.jsx)(t.code,{children:`401`}),` con `,(0,h.jsx)(t.code,{children:`WWW-Authenticate`}),`, que apunta a 15397`,(0,h.jsx)(t.code,{children:`/.well-known/oauth-protected-resource`}),`.`]}),` 15398`,(0,h.jsx)(t.li,{children:`El cliente descubre los endpoints del proveedor de identidad.`}),` 15399`,(0,h.jsx)(t.li,{children:`Se registra dinámicamente y abre la pantalla de autorización.`}),` 15400`,(0,h.jsx)(t.li,{children:`El usuario inicia sesión y aprueba el consentimiento.`}),` 15401`,(0,h.jsxs)(t.li,{children:[`El cliente queda conectado con `,(0,h.jsx)(t.code,{children:`authorization_code`}),` y `,(0,h.jsx)(t.code,{children:`refresh_token`}),`.`]}),` 15402`]}),` 15403`,(0,h.jsx)(t.p,{children:`Lo único que se configura es la URL del servidor.`}),` 15404`,(0,h.jsx)(t.h2,{id:`verificar`,children:`Verificar la conexión`}),` 15405`,(0,h.jsxs)(t.p,{children:[`Pedile al agente que liste las herramientas disponibles: deberÃan aparecer las de Tilopay 15406agrupadas en `,(0,h.jsx)(t.a,{href:`/developers/agentes/mcp/ventas`,children:`ventas y transacciones`}),`, 15407`,(0,h.jsx)(t.a,{href:`/developers/agentes/mcp/enlaces-de-pago`,children:`enlaces de pago`}),`, 15408`,(0,h.jsx)(t.a,{href:`/developers/agentes/mcp/catalogo`,children:`catálogo`}),`, 15409`,(0,h.jsx)(t.a,{href:`/developers/agentes/mcp/contactos`,children:`contactos`}),`, 15410`,(0,h.jsx)(t.a,{href:`/developers/agentes/mcp/recurrentes`,children:`cobros recurrentes`}),` y 15411`,(0,h.jsx)(t.a,{href:`/developers/agentes/mcp/soporte`,children:`soporte y diagnóstico`}),`. 15412El grupo `,(0,h.jsx)(t.a,{href:`/developers/agentes/mcp/api-bancario`,children:`API bancario (BaaS)`}),` se activa bajo solicitud y 15413sólo funciona para usuarios con credenciales del API bancario de Tilopay.`]}),` 15414`,(0,h.jsxs)(t.p,{children:[`Una primera prueba segura es una consulta de sólo lectura, por ejemplo pedir las transacciones de 15415un rango de fechas. Para flujos completos mirá las `,(0,h.jsx)(t.a,{href:`/developers/agentes/mcp/recetas`,children:`recetas`}),`.`]}),` 15416`,(0,h.jsx)(t.h2,{id:`problemas`,children:`Si algo falla`}),` 15417`,(0,h.jsxs)(t.ul,{children:[` 15418`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`El cliente no abre la autorización`}),`: revisá que el servidor esté declarado como remoto por 15419HTTP y no como servidor local.`]}),` 15420`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`La autorización no termina`}),`: la sesión se inicia con el correo y la contraseña del panel de 15421Tilopay; además hay que confirmar el código de verificación que llega al correo.`]}),` 15422`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`El agente no ve herramientas`}),`: en varios clientes hay que habilitarlas para la conversación 15423o para el modo agente después de conectar.`]}),` 15424`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`Una herramienta responde vacÃo`}),`: puede ser el ambiente consultado; varias herramientas 15425trabajan en `,(0,h.jsx)(t.code,{children:`production`}),` por defecto.`]}),` 15426`]})]})}function Zp(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Xp,{...e})}):Xp(e)}function Qp(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var $p=t({default:()=>nm,frontmatter:()=>em}),em={title:`Contactos`,kind:`mcp-tool`,access:`destructive`,status:`stable`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (manifiesto y código), verificado 29-08-2026`,`Respuestas de TecnologÃa, 29-08-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/permisos`,`agentes/mcp/recetas`],description:`Herramientas del MCP para la agenda del comercio: ver, guardar y borrar contactos.`};function tm(e){let t={h2:`h2`,p:`p`,...m(),...e.components},{McpToolGroup:n}=t;return n||rm(`McpToolGroup`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`que-cubre`,children:`Qué cubre`}),` 15427`,(0,h.jsx)(t.p,{children:`La agenda le permite al agente reutilizar teléfono y correo al enviar un enlace de pago, sin volver a pedirlos. Borrar un contacto es irreversible.`}),` 15428`,(0,h.jsx)(t.h2,{id:`herramientas`,children:`Herramientas`}),` 15429`,(0,h.jsx)(n,{slug:`contactos`})]})}function nm(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(tm,{...e})}):tm(e)}function rm(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var im=t({default:()=>sm,frontmatter:()=>am}),am={title:`Enlaces de pago`,kind:`mcp-tool`,access:`destructive`,status:`stable`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (manifiesto y código), verificado 29-08-2026`,`Respuestas de TecnologÃa, 29-08-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/permisos`,`agentes/mcp/recetas`],description:`Herramientas del MCP para crear, consultar y borrar enlaces de pago, y preparar su envÃo.`};function om(e){let t={h2:`h2`,p:`p`,...m(),...e.components},{McpToolGroup:n}=t;return n||cm(`McpToolGroup`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`que-cubre`,children:`Qué cubre`}),` 15430`,(0,h.jsx)(t.p,{children:`Con este grupo el agente crea un enlace de cobro, consulta su detalle, lo borra y prepara el envÃo al cliente por WhatsApp o por correo. El envÃo por WhatsApp no manda el mensaje: devuelve un enlace listo para enviar.`}),` 15431`,(0,h.jsx)(t.h2,{id:`herramientas`,children:`Herramientas`}),` 15432`,(0,h.jsx)(n,{slug:`enlaces-de-pago`})]})}function sm(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(om,{...e})}):om(e)}function cm(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var lm=t({default:()=>fm,frontmatter:()=>um}),um={title:`Microtienda y pedidos`,kind:`mcp-tool`,access:`destructive`,status:`stable`,last_verified:`2026-09-14`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo store), verificado 14-09-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/catalogo`,`agentes/mcp/comprobantes`],description:`Herramientas del MCP para armar microtiendas con carrito desde el catálogo y administrar los pedidos que entran por ahÃ.`};function dm(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,strong:`strong`,...m(),...e.components},{McpToolGroup:n}=t;return n||pm(`McpToolGroup`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`que-cubre`,children:`Qué cubre`}),` 15433`,(0,h.jsxs)(t.p,{children:[`Con los productos del `,(0,h.jsx)(t.a,{href:`/developers/agentes/mcp/catalogo`,children:`catálogo`}),` el agente arma una 15434`,(0,h.jsx)(t.strong,{children:`microtienda con carrito`}),`: una página pública con varios productos donde el cliente elige 15435cantidades y paga todo junto. Cada microtienda tiene su propio enlace.`]}),` 15436`,(0,h.jsxs)(t.p,{children:[`La segunda mitad del grupo es la `,(0,h.jsx)(t.strong,{children:`gestión de pedidos`}),`: se activa una vez (nombre de la tienda, 15437logo opcional y hora del recordatorio diario), y a partir de ahà el comercio puede ver el resumen, 15438listar pedidos por estado, ver los que están pagados sin entregar y marcarlos como entregados.`]}),` 15439`,(0,h.jsxs)(t.p,{children:[`Los estados de un pedido son `,(0,h.jsx)(t.code,{children:`pending`}),` (sin pagar), `,(0,h.jsx)(t.code,{children:`paid`}),` (pagado sin entregar) y 15440`,(0,h.jsx)(t.code,{children:`delivered`}),` (entregado). Desactivar una microtienda o apagar la gestión de pedidos no borra los 15441productos del catálogo ni los pedidos ya registrados.`]}),` 15442`,(0,h.jsx)(t.p,{children:`Estas herramientas no llaman al API de Tilopay: trabajan sobre los datos del propio servidor MCP, 15443salvo el cobro, que sale por el enlace de pago de cada producto.`}),` 15444`,(0,h.jsx)(t.h2,{id:`herramientas`,children:`Herramientas`}),` 15445`,(0,h.jsx)(n,{slug:`microtienda`})]})}function fm(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(dm,{...e})}):dm(e)}function pm(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var mm=t({default:()=>_m,frontmatter:()=>hm}),hm={title:`Perfil del negocio y recetas`,kind:`mcp-tool`,access:`write`,status:`stable`,last_verified:`2026-09-14`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo profile), verificado 14-09-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/adquirencia`,`agentes/mcp/recetas`],description:`Herramientas del MCP para ver y completar el perfil del negocio y obtener recetas de automatización a partir de ese perfil.`};function gm(e){let t={a:`a`,h2:`h2`,p:`p`,...m(),...e.components},{McpToolGroup:n}=t;return n||vm(`McpToolGroup`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`que-cubre`,children:`Qué cubre`}),` 15446`,(0,h.jsx)(t.p,{children:`El agente guarda un perfil corto del negocio: a qué se dedica, qué vende, por dónde vende, cómo 15447son sus cobros y qué quiere mejorar. Con ese perfil arma las recetas de automatización que le 15448propone al comercio, y sabe cuál es la siguiente pregunta que corresponde hacer (el cuestionario es de cuatro preguntas 15449como máximo).`}),` 15450`,(0,h.jsxs)(t.p,{children:[`El perfil se guarda campo por campo: lo que no se envÃa se conserva. Las recetas cambian según 15451los módulos que el usuario tenga activos: las recetas bancarias sólo aparecen si tiene habilitado 15452el `,(0,h.jsx)(t.a,{href:`/developers/agentes/mcp/api-bancario`,children:`API bancario`}),`.`]}),` 15453`,(0,h.jsx)(t.p,{children:`Estas herramientas no llaman al API de Tilopay: trabajan sobre los datos del propio servidor MCP.`}),` 15454`,(0,h.jsx)(t.h2,{id:`herramientas`,children:`Herramientas`}),` 15455`,(0,h.jsx)(n,{slug:`perfil`})]})}function _m(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(gm,{...e})}):gm(e)}function vm(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var ym=t({default:()=>Sm,frontmatter:()=>bm}),bm={title:`Qué puede hacer un agente`,kind:`guide`,status:`stable`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (manifiesto y código), verificado 29-08-2026`,`Respuestas de TecnologÃa, 29-08-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/ventas`,`agentes/mcp/recetas`],description:`Alcance real de un agente conectado al servidor MCP: qué herramientas leen, qué herramientas modifican estado y qué controles existen.`};function xm(e){let t={a:`a`,code:`code`,h2:`h2`,li:`li`,p:`p`,ul:`ul`,...m(),...e.components},{Callout:n,McpCounts:r}=t;return n||Cm(`Callout`,!0),r||Cm(`McpCounts`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`alcance`,children:`Alcance de las herramientas`}),` 15456`,(0,h.jsx)(r,{}),`
15457`,(0,h.jsx)(t.p,{children:`Las marcadas como sensibles son reembolsos y capturas, cobros con tarjetas guardadas, borrado de 15458enlaces de pago, borrado de contactos y gestión de suscriptores.`}),` 15459`,(0,h.jsx)(t.p,{children:`Un grupo no tiene referencia publicada: el de cobros con tarjetas almacenadas. Está activo en el 15460servidor y cuenta para estos números, asà que un agente conectado puede usar sus herramientas, 15461pero el detalle de cada una no se documenta en el portal. Si necesitás ese detalle, pedilo a 15462soporte.`}),` 15463`,(0,h.jsx)(t.h2,{id:`herencia-de-permisos`,children:`Herencia de permisos`}),` 15464`,(0,h.jsx)(t.p,{children:`El servidor usa las credenciales de API del comercio, asà que hereda exactamente sus permisos: no 15465impone barreras adicionales por herramienta. Un usuario activo puede reembolsar y hacer cobros 15466masivos.`}),` 15467`,(0,h.jsx)(t.h2,{id:`controles`,children:`Controles que existen`}),` 15468`,(0,h.jsxs)(t.ul,{children:[` 15469`,(0,h.jsx)(t.li,{children:`Un interruptor de activación por usuario, que corta el acceso sin borrar la cuenta.`}),` 15470`,(0,h.jsx)(t.li,{children:`Un rol de administrador separado, que sólo sirve para gestionar usuarios y credenciales.`}),` 15471`,(0,h.jsx)(t.li,{children:`Un lÃmite de tasa de 60 llamadas por minuto por usuario.`}),` 15472`]}),` 15473`,(0,h.jsx)(t.h2,{id:`confirmacion-humana`,children:`Confirmación humana`}),` 15474`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsx)(t.p,{children:`La confirmación humana antes de una operación sensible depende del cliente MCP, no de Tilopay. 15475Exigila siempre para las herramientas de escritura, y no la negocies en reembolsos ni en cobros 15476masivos.`})}),` 15477`,(0,h.jsxs)(t.p,{children:[`El detalle por herramienta, con parámetros y salida, está en las páginas de cada grupo y en el 15478`,(0,h.jsx)(t.a,{href:`/developers/mcp.json`,children:(0,h.jsx)(t.code,{children:`mcp.json`})}),`.`]})]})}function Sm(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(xm,{...e})}):xm(e)}function Cm(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var wm=t({default:()=>Dm,frontmatter:()=>Tm}),Tm={title:`Recetas`,kind:`guide`,status:`stable`,last_verified:`2026-09-04`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (manifiesto y código), verificado 29-08-2026`,`Respuestas de TecnologÃa, 29-08-2026`,`Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine y manifiesto generado), verificado 02-09-2026`,`Catálogo de herramientas del servidor MCP (mcp.tilopay.com), verificado 04-09-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/ventas`,`agentes/mcp/enlaces-de-pago`,`agentes/mcp/recurrentes`,`agentes/mcp/soporte`,`agentes/mcp/permisos`],description:`Catorce flujos de punta a punta con el servidor MCP: dashboard de insights, ventas por WhatsApp, recuperación de cobros recurrentes fallidos, cobranza B2B, proyección de caja con datos bancarios, detección de anomalÃas, cierre de mes, reembolsos, suscripciones recurrentes, optimización de planes, cobros a tarjetas almacenadas, depuración de integraciones y Tilopay como herramienta de otros agentes.`};function Em(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,ol:`ol`,p:`p`,ul:`ul`,...m(),...e.components},{Callout:n}=t;return n||Om(`Callout`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`dashboard-insights`,children:`Construir un dashboard de insights en tiempo real`}),` 15479`,(0,h.jsxs)(t.ol,{children:[` 15480`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_sales_summary`}),` trae los totales, costos y neto del perÃodo que querés monitorear.`]}),` 15481`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_analyze_sales`}),` convierte esos números en un resumen narrativo con tendencias y 15482observaciones.`]}),` 15483`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_list_transactions`}),` lista las transacciones recientes para completar el tablero.`]}),` 15484`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_get_transaction`}),` abre el detalle de cualquier operación que necesite revisión.`]}),` 15485`]}),` 15486`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsx)(t.p,{children:`El resumen usa UTC, no hora local. Si el comercio tiene poco volumen, las tendencias y los 15487clientes destacados pueden venir vacÃos.`})}),` 15488`,(0,h.jsx)(t.h3,{id:`ejemplos-dashboard`,children:`Ejemplos de preguntas para el dashboard`}),` 15489`,(0,h.jsxs)(t.ul,{children:[` 15490`,(0,h.jsxs)(t.li,{children:[`â¿Cómo me fue hoy?â â `,(0,h.jsx)(t.code,{children:`tilopay_sales_summary`}),` + `,(0,h.jsx)(t.code,{children:`tilopay_analyze_sales`}),`.`]}),` 15491`,(0,h.jsxs)(t.li,{children:[`â¿Cuáles son mis productos o servicios más vendidos esta semana?â â `,(0,h.jsx)(t.code,{children:`tilopay_analyze_sales`}),` 15492sobre el rango de los últimos 7 dÃas.`]}),` 15493`,(0,h.jsxs)(t.li,{children:[`â¿Tengo transacciones fallidas o sin liquidar?â â `,(0,h.jsx)(t.code,{children:`tilopay_list_transactions`}),` filtrando por 15494estado, luego `,(0,h.jsx)(t.code,{children:`tilopay_get_transaction`}),` para cada caso.`]}),` 15495`,(0,h.jsxs)(t.li,{children:[`â¿Cómo evolucionan mis ingresos netos respecto al mes pasado?â â comparar dos llamadas a 15496`,(0,h.jsx)(t.code,{children:`tilopay_sales_summary`}),` con ventanas de fechas distintas.`]}),` 15497`]}),` 15498`,(0,h.jsx)(t.h2,{id:`cobrar-por-whatsapp`,children:`Vender por WhatsApp desde el catálogo`}),` 15499`,(0,h.jsxs)(t.ol,{children:[` 15500`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_catalog_list_items`}),` lista los productos o servicios del comercio para responder la 15501consulta del cliente con nombres y precios reales.`]}),` 15502`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_catalog_get_item`}),` abre el detalle del Ãtem elegido cuando hay que confirmar precio, 15503moneda o descripción antes de armar el pedido.`]}),` 15504`,(0,h.jsx)(t.li,{children:`El agente arma el pedido, calcula el total y se lo confirma al cliente antes de cobrar.`}),` 15505`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_save_contact`}),` guarda al comprador (nombre, correo, teléfono) para asociarlo al cobro y 15506reutilizarlo en ventas futuras.`]}),` 15507`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_create_payment_link`}),` crea el enlace por el total del pedido, con una descripción que 15508identifique la orden.`]}),` 15509`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_send_payment_link_whatsapp`}),` prepara el envÃo al cliente.`]}
15509),` 15510`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_get_payment_link`}),` consulta el estado del enlace para confirmar el pago y cerrar la 15511conversación con el comprobante.`]}),` 15512`]}),` 15513`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.code,{children:`tilopay_send_payment_link_whatsapp`}),` no envÃa el mensaje: devuelve un enlace `,(0,h.jsx)(t.code,{children:`wa.me`}),` con el texto 15514listo para enviar con un toque. Si no hay teléfono ni contacto guardado con ese nombre, la 15515herramienta lo pide. El agente puede quedarse consultando `,(0,h.jsx)(t.code,{children:`tilopay_get_payment_link`}),` cada cierto 15516tiempo para avisarle al comercio en cuanto el enlace pase a pagado.`]}),` 15517`,(0,h.jsx)(n,{type:`info`,children:(0,h.jsx)(t.p,{children:`Con esta receta un comercio sin tienda en lÃnea vende de punta a punta dentro del chat: catálogo, 15518pedido, cobro y confirmación, sin intervención humana salvo la que el propio comercio quiera 15519exigir.`})}),` 15520`,(0,h.jsx)(t.h2,{id:`dunning-inteligente`,children:`Recuperar cobros recurrentes fallidos (dunning inteligente)`}),` 15521`,(0,h.jsxs)(t.ol,{children:[` 15522`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_recurring_list_plans`}),` lista los planes activos del comercio.`]}),` 15523`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_recurring_subscriber_payments`}),` recorre los pagos de los suscriptores de cada plan y 15524separa los cobros rechazados del perÃodo.`]}),` 15525`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_get_transaction`}),` abre cada rechazo para leer el código de respuesta y clasificar la 15526causa: fondos insuficientes, tarjeta vencida, tarjeta bloqueada, sospecha de fraude.`]}),` 15527`,(0,h.jsx)(t.li,{children:`Según la causa, el agente decide la acción y se la propone al comercio: esperar el reintento del 15528plan cuando el rechazo es transitorio (fondos insuficientes), o pedirle al cliente un nuevo medio 15529de pago cuando el rechazo es definitivo (tarjeta vencida o bloqueada).`}),` 15530`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_create_payment_link`}),` crea un enlace por el saldo por cobrar cuando hay que pedirle al 15531cliente que pague la cuota con otra tarjeta.`]}),` 15532`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_send_payment_link_whatsapp`}),` o `,(0,h.jsx)(t.code,{children:`tilopay_send_payment_link_email`}),` prepara el mensaje al 15533cliente con un texto adaptado al motivo del rechazo.`]}),` 15534`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_get_payment_link`}),` confirma cuando el cliente pagó, y `,(0,h.jsx)(t.code,{children:`tilopay_recurring_get_subscriber`}),` 15535verifica el estado del suscriptor después de la recuperación.`]}),` 15536`]}),` 15537`,(0,h.jsx)(t.p,{children:`Un agente que corre esta receta cada mañana convierte la lista de rechazos en dos colas: la que se 15538resuelve sola con el reintento del plan y la que necesita un mensaje al cliente. El comercio recibe 15539solo el resumen: cuántos cobros se recuperaron y cuáles siguen sin recuperarse.`}),` 15540`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsxs)(t.p,{children:[`No uses `,(0,h.jsx)(t.code,{children:`tilopay_recurring_manage_subscriber`}),` para "castigar" un rechazo: `,(0,h.jsx)(t.code,{children:`pause`}),` y `,(0,h.jsx)(t.code,{children:`delete`}),` 15541afectan cobros futuros y `,(0,h.jsx)(t.code,{children:`delete`}),` no se deshace. Pausar o dar de baja a un suscriptor es una 15542decisión del comercio, con confirmación humana explÃcita, nunca una reacción automática a un cobro 15543fallido.`]})}),` 15544`,(0,h.jsx)(t.h2,{id:`cobranza-b2b`,children:`Cobranza B2B con cuentas por cobrar`}),` 15545`,(0,h.jsxs)(t.ol,{children:[` 15546`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_list_contacts`}),` trae los clientes empresariales del comercio; `,(0,h.jsx)(t.code,{children:`tilopay_save_contact`}),` 15547registra los que falten con nombre, correo y teléfono de la persona que paga.`]}),` 15548`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_create_payment_link`}),` crea un enlace por cada factura sin pagar, con el número de 15549factura en la descripción y una fecha de vencimiento.`]}),` 15550`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_send_payment_link_email`}),` prepara el primer envÃo; `,(0,h.jsx)(t.code,{children:`tilopay_send_payment_link_whatsapp`}),`
15551prepara el recordatorio cuando la factura sigue sin pagar.`]}),` 15552`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_get_payment_link`}),` revisa el estado de cada enlace para actualizar la lista de cuentas 15553por cobrar sin entrar al panel.`]}),` 15554`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`baas_search_payment`}),` o `,(0,h.jsx)(t.code,{children:`baas_list_payments`}),` buscan en las cuentas bancarias del comercio una 15555transferencia directa (SINPE o transferencia bancaria) que coincida con el monto y el cliente, 15556para marcar como pagada una factura que el cliente liquidó fuera del enlace.`]}),` 15557`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_delete_payment_link`}),` elimina el enlace de una factura que ya se pagó por transferencia, 15558para evitar un cobro doble.`]}),` 15559`]}),` 15560`,(0,h.jsx)(t.p,{children:`Esta receta responde el "¿ya me pagaron?" que consume horas administrativas en negocios que 15561facturan a empresas: una sola lista con facturas, enlaces, estado y pagos recibidos por cualquier vÃa.`}),` 15562`,(0,h.jsx)(n,{type:`info`,children:(0,h.jsxs)(t.p,{children:[`Las herramientas `,(0,h.jsx)(t.code,{children:`baas_*`}),` son de solo consulta y requieren que soporte haya registrado las 15563credenciales del API bancario del comercio. Si no están configuradas, la herramienta lo indica y 15564la receta sigue funcionando solo con los enlaces de pago.`]})}),` 15565`,(0,h.jsx)(t.h2,{id:`cfo-de-bolsillo`,children:`Proyectar la caja con datos de la pasarela y del banco (CFO de bolsillo)`}),` 15566`,(0,h.jsxs)(t.ol,{children:[` 15567`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_sales_summary`}),` trae las ventas de las últimas semanas para estimar los ingresos 15568esperados del perÃodo siguiente.`]}),` 15569`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_recurring_list_plans`}),` y `,(0,h.jsx)(t.code,{children:`tilopay_recurring_get_plan`}),` cuantifican los cobros recurrentes 15570comprometidos y sus fechas.`]}),` 15571`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`baas_list_balances`}),` o `,(0,h.jsx)(t.code,{children:`baas_get_balance`}),` traen el saldo real de cada cuenta bancaria del 15572comercio.`]}),` 15573`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`baas_list_payments`}),` lista las transferencias de los últimos meses para detectar las salidas 15574recurrentes: planilla, alquiler, proveedores.`]}),` 15575`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`baas_analyze_payments`}),` resume esos movimientos en lenguaje natural para identificar patrones y 15576fechas pico.`]}),` 15577`,(0,h.jsx)(t.li,{children:`El agente combina saldo, entradas previstas y salidas previstas en una proyección diaria, señala 15578los dÃas con saldo mÃnimo o negativo y propone acciones.`}),` 15579`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_create_payment_link`}),` y `,(0,h.jsx)(t.code,{children:`tilopay_send_payment_link_email`}),` ponen a cobro facturas 15580sin pagar cuando el comercio aprueba esa acción.`]}),` 15581`]}),` 15582`,(0,h.jsx)(t.p,{children:`El valor está en cruzar dos fuentes que normalmente viven separadas: la pasarela sabe qué va a 15583entrar y el banco sabe qué hay y qué sale. Una rutina semanal produce un briefing corto con la 15584proyección y las alertas, antes de que abra el negocio.`}),` 15585`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsxs)(t.p,{children:[`Las herramientas `,(0,h.jsx)(t.code,{children:`baas_*`}),` nunca inician, aprueban ni revierten transferencias. Si la proyección 15586sugiere mover fondos entre cuentas, esa acción la ejecuta una persona en el banco; el agente solo 15587la recomienda y la registra. La proyección es una estimación, no un estado financiero.`]})}),` 15588`,(0,h.jsx)(t.h2,{id:`detector-anomalias`,children:`Detectar anomalÃas y actuar`}),` 15589`,(0,h.jsxs)(t.ol,{children:[` 15590`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_sales_summary`}),` compara la ventana actual (por ejemplo la última hora o el dÃa) contra 15591el mismo perÃodo de referencia para detectar caÃdas de aprobación, picos de rechazos o cambios 15592bruscos en el ticket promedio.`]}),` 15593`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_list_transactions`}),` filtra por estado para ver si los rechazos se concentran en un 15594método de pago, una moneda o un patrón de intentos repetidos.`]}),` 15595`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_get_transaction`}),` abre casos representativos para leer los códigos de respuesta.`]}),` 15596`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_diagnostics`}),` verifica credenciales y disponibilidad de los endpoints para separar un 15597problema de la integración del comercio de un problema de los clientes o del emisor.`]}),` 15598`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_help_guides`}),` busca en las guÃas oficiales la explicación y los pasos de corrección que 15599correspondan al código de respuesta o al sÃntoma.`]}),` 15600`,(0,h.jsx)(t.li,{children:`El agente abre la alerta con el diagnóstico ya hecho: qué cambió, desde cuándo, causa probable y 15601acción sugerida.`}),` 15602`]}),` 15603`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsx)(t.p,{children:`El resumen de ventas usa UTC. Al comparar ventanas cortas, alineá las horas; una "caÃda" a 15604medianoche local puede ser solo el corte del dÃa en UTC. Muchos intentos rechazados en pocos 15605minutos con montos pequeños y tarjetas distintas pueden indicar pruebas de tarjetas robadas:
15606reportalo a soporte en vez de reintentar.`})}),` 15607`,(0,h.jsx)(t.h2,{id:`cierre-de-mes`,children:`Cerrar las ventas del mes`}),` 15608`,(0,h.jsxs)(t.ol,{children:[` 15609`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_sales_summary`}),` devuelve los totales, costos y neto del perÃodo.`]}),` 15610`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_analyze_sales`}),` produce el informe en lenguaje natural.`]}),` 15611`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_get_transaction`}),` trae el detalle de las transacciones que haya que revisar.`]}),` 15612`]}),` 15613`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsx)(t.p,{children:`Las horas y los dÃas del resumen están en UTC, no en hora local. Las tendencias y los clientes 15614destacados vienen vacÃos si la muestra es chica.`})}),` 15615`,(0,h.jsx)(t.h2,{id:`reembolso`,children:`Reembolsar con confirmación humana`}),` 15616`,(0,h.jsxs)(t.ol,{children:[` 15617`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_list_transactions`}),` localiza la transacción en el rango de fechas.`]}),` 15618`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_get_transaction`}),` muestra el detalle para confirmar que es la correcta.`]}),` 15619`,(0,h.jsx)(t.li,{children:`El agente le pide confirmación al usuario. Este paso lo impone el cliente MCP, no Tilopay.`}),` 15620`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_modify_transaction`}),` ejecuta la modificación con la acción y el monto.`]}),` 15621`]}),` 15622`,(0,h.jsx)(t.h2,{id:`suscripcion-recurrente`,children:`Revisar una suscripción recurrente`}),` 15623`,(0,h.jsxs)(t.ol,{children:[` 15624`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_recurring_list_plans`}),` lista los planes de cobro recurrente del comercio.`]}),` 15625`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_recurring_get_plan`}),` abre el plan que interesa por su ID.`]}),` 15626`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_recurring_get_subscriber`}),` muestra el detalle del suscriptor.`]}),` 15627`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_recurring_subscriber_payments`}),` lista los pagos de ese suscriptor para ver cuáles 15628pasaron y cuáles no.`]}),` 15629`]}),` 15630`,(0,h.jsx)(t.p,{children:`Sirve para responder "¿por qué este cliente aparece sin cobrar este mes?" sin entrar al panel.`}),` 15631`,(0,h.jsx)(t.h2,{id:`optimizar-planes`,children:`Optimizar los planes de suscripción`}),` 15632`,(0,h.jsxs)(t.ol,{children:[` 15633`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_recurring_list_plans`}),` lista los planes activos con su precio y periodicidad.`]}),` 15634`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_recurring_get_plan`}),` abre cada plan para conocer la cantidad de suscriptores y su 15635configuración.`]}),` 15636`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_recurring_subscriber_payments`}),` recorre los pagos por suscriptor para calcular, por plan, 15637la tasa de cobros exitosos, el mes en que más suscriptores dejan de pagar y la antigüedad promedio.`]}),` 15638`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_recurring_get_subscriber`}),` revisa los casos atÃpicos que el análisis señale.`]}),` 15639`,(0,h.jsx)(t.li,{children:`El agente presenta el comparativo entre planes: retención, ingreso por suscriptor y punto de 15640abandono, y propone cambios de precio, periodicidad o contenido.`}),` 15641`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_create_payment_link`}),` permite probar una oferta nueva con un segmento pequeño de 15642contactos antes de modificar un plan.`]}),` 15643`]}),` 15644`,(0,h.jsx)(t.p,{children:`Es análisis de precios con datos reales de cobro. El agente no modifica planes: propone, y el 15645comercio decide en el panel.`}),` 15646`,(0,h.jsx)(t.h2,{id:`pausar-suscriptor`,children:`Pausar o dar de baja a un suscriptor`}),` 15647`,(0,h.jsxs)(t.ol,{children:[` 15648`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_recurring_get_subscriber`}),` confirma que el suscriptor es el correcto.`]}),` 15649`,(0,h.jsx)(t.li,{children:`El agente le pide confirmación al usuario, con el nombre y el plan a la vista.`}),` 15650`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_recurring_manage_subscriber`}),` ejecuta `,(0,h.jsx)(t.code,{children:`pause`}),`, `,(0,h.jsx)(t.code,{children:`reactivate`}),` o `,(0,h.jsx)(t.code,{children:`delete`}),`.`]}),` 15651`]}),` 15652`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.code,{children:`tilopay_recurring_manage_subscriber`}),` está marcada como sensible: afecta cobros futuros y `,(0,h.jsx)(t.code,{children:`delete`}),` 15653no se deshace. Nunca la ejecutés sin confirmación humana explÃcita.`]})}),` 15654`,(0,h.jsx)(t.h2,{id:`cobro-masivo`,children:`Cobrar a un grupo con tarjetas almacenadas`}),` 15655`,(0,h.jsxs)(t.ol,{children:[` 15656`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_saved_cards_list_groups`}),` lista los grupos de cobro.`]}),` 15657`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_saved_cards_list_affiliates`}),` muestra los afiliados del grupo elegido, para saber a 15658cuántas tarjetas se le va a cobrar.`]}),` 15659`,(0,h.jsx)(t.li,{children:`El agente resume monto, moneda, motivo y cantidad de afiliados, y pide confirmación.`}),` 15660`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_saved_cards_create_payments`}),` crea los cobros.`]}),` 15661`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_saved_cards_list_collections`}),` y `,(0,h.jsx)(t.code,{children:`tilopay_saved_cards_collection_detail`}),` revisan el 15662resultado: la segunda necesita el `,(0,h.jsx)(t.code,{children:`code`}),` que devuelve la primera.`]}),` 15663`]}),` 15664`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.code,{children:`tilopay_saved_cards_create_payments`}),` mueve dinero real de las tarjetas almacenadas. Tratala como 15665una operación de un solo intento: confirmá antes, y verificá después con el detalle del cobro.`]})}),` 15666`,(0,h.jsx)(t.h2,{id:`depurar-integracion`,children:`Depurar una integración y acompañar a un desarrollador`}),` 15667`,(0,h.jsxs)(t.ol,{children:[` 15668`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_diagnostics`}),` prueba las credenciales y un endpoint de cada grupo del API, para separar 15669un problema de credenciales de un problema de la petición.`]}),` 15670`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_debug_code`}),` recibe el fragmento de código, el log o el stack trace y devuelve 15671diagnóstico, causa raÃz, corrección y riesgos.`]}),` 15672`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_help_guides`}),` responde las dudas de uso del panel con las guÃas oficiales.`]}),` 15673`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`tilopay_list_transactions`}),` y `,(0,h.jsx)(t.code,{children:`tilopay_get_transaction`}),` confirman si la operación que el 15674desarrollador cree fallida en realidad llegó a Tilopay y con qué resultado.`]}),` 15675`]}),` 15676`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.code,{children:`tilopay_debug_code`}),` no lee el repositorio ni ejecuta el código: analiza sólo lo que le pasás. Antes 15677de mandarlo, quitá credenciales del fragmento; la herramienta oculta lo que reconoce como secreto, 15678pero no reemplaza esa revisión.`]}),` 15679`,(0,h.jsx)(t.p,{children:`Con estas cuatro herramientas un agente de soporte atiende el onboarding técnico completo: verifica 15680la cuenta, encuentra la causa del error, entrega la corrección con la guÃa oficial y confirma contra 15681las transacciones reales. Las preguntas que se repiten son la señal de qué guÃa o ejemplo debe agregarse al 15682portal.`}),` 15683`,(0,h.jsx)(n,{type:`info`,children:(0,h.jsx)(t.p,{children:`Las tarjetas de prueba del modo s
15683andbox están en la guÃa de pruebas del portal. El modo sandbox se 15684alterna desde la cuenta; no existe un host separado.`})}),` 15685`,(0,h.jsx)(t.h2,{id:`tilopay-como-herramienta`,children:`Tilopay como herramienta de otros agentes`}),` 15686`,(0,h.jsxs)(t.ol,{children:[` 15687`,(0,h.jsx)(t.li,{children:`El comercio solicita acceso al servidor MCP con el formulario del portal (nombre de la persona 15688responsable, correo del comercio y nombre del comercio); soporte confirma la aprobación y las 15689condiciones de uso.`}),` 15690`,(0,h.jsxs)(t.li,{children:[`El agente externo (el asistente de un ERP, un bot de tienda en lÃnea, un agente contable) 15691conecta el servidor MCP con esas credenciales y ejecuta `,(0,h.jsx)(t.code,{children:`tilopay_diagnostics`}),` para verificar la 15692conexión.`]}),` 15693`,(0,h.jsxs)(t.li,{children:[`Con el catálogo de herramientas cargado, el agente externo usa las herramientas de consulta 15694(`,(0,h.jsx)(t.code,{children:`tilopay_sales_summary`}),`, `,(0,h.jsx)(t.code,{children:`tilopay_list_transactions`}),`, `,(0,h.jsx)(t.code,{children:`tilopay_recurring_*`}),`, `,(0,h.jsx)(t.code,{children:`baas_*`}),`) para 15695responder preguntas del negocio dentro de su propia conversación.`]}),` 15696`,(0,h.jsxs)(t.li,{children:[`Para acciones que crean o mueven dinero (`,(0,h.jsx)(t.code,{children:`tilopay_create_payment_link`}),`, 15697`,(0,h.jsx)(t.code,{children:`tilopay_modify_transaction`}),`, `,(0,h.jsx)(t.code,{children:`tilopay_saved_cards_create_payments`}),`, 15698`,(0,h.jsx)(t.code,{children:`tilopay_recurring_manage_subscriber`}),`) el agente externo aplica la polÃtica de confirmación 15699descrita en la página de permisos antes de ejecutar.`]}),` 15700`]}),` 15701`,(0,h.jsx)(t.p,{children:`Esta receta cambia la posición del MCP: no es solo un asistente dentro de Tilopay, es la capa de 15702pagos que cualquier agente puede invocar. Las demás recetas de esta página funcionan igual cuando 15703las ejecuta un agente de terceros.`}),` 15704`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsx)(t.p,{children:`El consumo del MCP puede tener costos adicionales según el volumen; soporte lo detalla al validar 15705el volumen transaccional del comercio. Las herramientas marcadas como sensibles exigen 15706confirmación humana en el cliente MCP que las ejecute, sea de Tilopay o de un tercero.`})})]})}function Dm(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Em,{...e})}):Em(e)}function Om(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var km=t({default:()=>Mm,frontmatter:()=>Am}),Am={title:`Recordatorios`,kind:`mcp-tool`,access:`destructive`,status:`stable`,last_verified:`2026-09-14`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo reminders), verificado 14-09-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/avisos`,`agentes/asistente-whatsapp`],description:`Herramientas del MCP para crear, ver y cancelar recordatorios por WhatsApp, con o sin una acción del agente al enviarse.`};function jm(e){let t={a:`a`,h2:`h2`,li:`li`,p:`p`,strong:`strong`,ul:`ul`,...m(),...e.components},{McpToolGroup:n}=t;return n||Nm(`McpToolGroup`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`que-cubre`,children:`Qué cubre`}),` 15707`,(0,h.jsxs)(t.p,{children:[`Un recordatorio es un mensaje de WhatsApp programado: una sola vez, diario, semanal o mensual. Puede 15708ser sólo texto o traer una `,(0,h.jsx)(t.strong,{children:`acción`}),` que el agente ejecuta al enviarlo, escrita en lenguaje natural 15709("dame el resumen de ventas de hoy", "listá los enlaces de pago sin cobrar"), y el resultado se 15710adjunta al mensaje.`]}),` 15711`,(0,h.jsx)(t.p,{children:`Reglas que conviene tener claras:`}),` 15712`,(0,h.jsxs)(t.ul,{children:[` 15713`,(0,h.jsx)(t.li,{children:`Las horas son la hora local del comercio, según el paÃs de su teléfono de WhatsApp.`}),` 15714`,(0,h.jsx)(t.li,{children:`Hay un máximo de 20 recordatorios activos.`}),` 15715`,(0,h.jsxs)(t.li,{children:[`Los recordatorios de enlaces de pago o de cobros `,(0,h.jsx)(t.strong,{children:`siempre`}),` llegan al WhatsApp del comercio, 15716nunca al cliente.`]}
15716),` 15717`,(0,h.jsxs)(t.li,{children:[`Para enviar a otro número, primero hay que guardarlo como 15718`,(0,h.jsx)(t.a,{href:`/developers/agentes/mcp/contactos`,children:`contacto`}),`.`]}),` 15719`]}),` 15720`,(0,h.jsx)(t.h2,{id:`herramientas`,children:`Herramientas`}),` 15721`,(0,h.jsx)(n,{slug:`recordatorios`})]})}function Mm(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(jm,{...e})}):jm(e)}function Nm(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Pm=t({default:()=>Lm,frontmatter:()=>Fm}),Fm={title:`Cobros recurrentes`,kind:`mcp-tool`,access:`destructive`,status:`stable`,last_verified:`2026-09-02`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine y manifiesto generado), verificado 02-09-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/permisos`,`agentes/mcp/recetas`],description:`Herramientas del MCP para consultar planes recurrentes, suscriptores y sus pagos, y para pausar, reactivar o eliminar un suscriptor.`};function Im(e){let t={h2:`h2`,p:`p`,...m(),...e.components},{McpToolGroup:n}=t;return n||Rm(`McpToolGroup`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`que-cubre`,children:`Qué cubre`}),` 15722`,(0,h.jsx)(t.p,{children:`Cuatro herramientas de lectura sobre los planes de cobro recurrente y sus suscriptores, y una sensible que pausa, reactiva o elimina un suscriptor. Esa última afecta cobros futuros: pedà confirmación humana antes de ejecutarla.`}),` 15723`,(0,h.jsx)(t.h2,{id:`herramientas`,children:`Herramientas`}),` 15724`,(0,h.jsx)(n,{slug:`recurrentes`})]})}function Lm(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Im,{...e})}):Im(e)}function Rm(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var zm=t({default:()=>Hm,frontmatter:()=>Bm}),Bm={title:`Soporte y diagnóstico`,kind:`mcp-tool`,access:`read`,status:`stable`,last_verified:`2026-09-02`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (manifiesto y código), verificado 29-08-2026`,`Respuestas de TecnologÃa, 29-08-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/permisos`,`agentes/mcp/recetas`],description:`Herramientas del MCP para responder con las guÃas oficiales y probar la conexión con el API.`};function Vm(e){let t={h2:`h2`,p:`p`,...m(),...e.components},{McpToolGroup:n}=t;return n||Um(`McpToolGroup`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`que-cubre`,children:`Qué cubre`}),` 15725`,(0,h.jsx)(t.p,{children:`Tres herramientas de lectura: una responde preguntas de uso del panel con las guÃas oficiales de tilopay.com/guias, otra prueba las credenciales y un endpoint de cada grupo del API para saber qué parte responde cuando algo falla, y la tercera analiza un fragmento de código o un stack trace que le pases y devuelve diagnóstico, causa raÃz, corrección y riesgos. Esa última no lee repositorios ni ejecuta código.`}),` 15726`,(0,h.jsx)(t.h2,{id:`herramientas`,children:`Herramientas`}),` 15727`,(0,h.jsx)(n,{slug:`soporte`})]})}function Hm(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Vm,{...e})}):Vm(e)}function Um(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Wm=t({default:()=>qm,frontmatter:()=>Gm}),Gm={title:`Tarjetas guardadas y cobros masivos`,kind:`mcp-tool`,access:`destructive`,status:`stable`,last_verified:`2026-09-14`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (código del proyecto Tilopay Insight Engine, grupo saved-cards), verificado 14-09-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/recurrentes`,`agentes/mcp/permisos`],description:`Herramientas del MCP para guardar la tarjeta de un cliente, cobrarle, eliminarla y trabajar con los grupos de cobro masivo.`};function Km(e){let t={h2:`h2`,p:`p`,strong:`strong`,...m(),...e.components},{Callout:n,McpToolGroup:r}=t;return n||Jm(`Callout`,!0),r||Jm(`McpToolGroup`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`que-cubre`,children:`Qué cubre`}),` 15728`,(0,h.jsx)(t.p,{children:`Este grupo trabaja con las tarjetas que los clientes del comercio ya autorizaron guardar 15729(tokenización) y con los cobros masivos a esas tarjetas.`}),` 15730`,(0,h.jsxs)(t.p,{children:[`Cómo funciona el guardado: el agente genera un `,(0,h.jsx)(t.strong,{children:`enlace seguro`}),` y lo comparte con el cliente; el 15731cliente digita ahà su tarjeta. Ni el agente, ni el modelo, ni el comercio ven el número completo: 15732las herramientas de consulta devuelven la marca y los últimos dÃgitos.`]}),` 15733`,(0,h.jsxs)(t.p,{children:[`Las operaciones sensibles del grupo âcobrar a una tarjeta guardada, eliminar una tarjeta y crear 15734cobros masivosâ exigen un `,(0,h.jsx)(t.strong,{children:`código de confirmación`}),` que llega al correo del comercio.`]}),` 15735`,(0,h.jsx)(n,{type:`note`,children:(0,h.jsx)(t.p,{children:`Las rutas del API que usan los cobros masivos quedan fuera de la referencia del portal, asà que 15736estas páginas no las publican. Lo que sà queda documentado es qué hace cada herramienta, qué 15737recibe y qué devuelve.`})}),` 15738`,(0,h.jsx)(t.h2,{id:`herramientas`,children:`Herramientas`}),` 15739`,(0,h.jsx)(r,{slug:`tarjetas-guardadas`})]})}function qm(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Km,{...e})}):Km(e)}function Jm(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Ym=t({default:()=>Qm,frontmatter:()=>Xm}),Xm={title:`Ventas y transacciones`,kind:`mcp-tool`,access:`destructive`,status:`stable`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (manifiesto y código), verificado 29-08-2026`,`Respuestas de TecnologÃa, 29-08-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/permisos`,`agentes/mcp/recetas`],description:`Herramientas del MCP para consultar transacciones, medir ventas y modificar una transacción.`};function Zm(e){let t={h2:`h2`,p:`p`,...m(),...e.components},{McpToolGroup:n}=t;return n||$m(`McpToolGroup`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`que-cubre`,children:`Qué cubre`}),` 15740`,(0,h.jsx)(t.p,{children:`Este grupo cubre la lectura de transacciones y el análisis de ventas del comercio, más la modificación de una transacción: captura, reembolso o reversión. La modificación mueve dinero real y está marcada como sensible.`}),` 15741`,(0,h.jsx)(t.h2,{id:`herramientas`,children:`Herramientas`}),` 15742`,(0,h.jsx)(n,{slug:`ventas`})]})}function Qm(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Zm,{...e})}):Zm(e)}function $m(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var eh=t({default:()=>rh,frontmatter:()=>th}),th={title:`Servidor MCP`,kind:`mcp-index`,status:`stable`,last_verified:`2026-09-23`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Código del servidor MCP de Tilopay (Tilopay Insight Engine), verificado 23-09-2026`],locales:[`es`,`en`],related:[`agentes`,`agentes/mcp/permisos`,`agentes/mcp/recetas`,`agentes/mcp/ventas`],description:`Cómo conectar un cliente MCP al servidor de Tilopay con OAuth y las mismas credenciales de la cuenta de Tilopay.`};function nh(e){let t={a:`a`,code:`code`,h2:`h2`,li:`li`,ol:`ol`,p:`p`,strong:`strong`,ul:`ul`,...m(),...e.components},{Callout:n,ExternalLink:r}=t;return n||ih(`Callout`,!0),r||ih(`ExternalLink`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`acceso`,children:`Cómo
15742se obtiene el acceso`}),` 15743`,(0,h.jsx)(t.p,{children:`El acceso es autoservicio, el comercio instala el conector con la URL del servidor y, en la ventana de autorización, inicia sesión con las mismas credenciales de su cuenta de Tilopay (correo y contraseña) y confirma el código de verificación que Tilopay envÃa. Con eso el usuario del asistente se crea solo, queda asociado al comercio y sus credenciales de API se registran cifradas del lado del servidor.`}),` 15744`,(0,h.jsx)(t.p,{children:`Tres cosas que conviene tener claras:`}),` 15745`,(0,h.jsxs)(t.ol,{children:[` 15746`,(0,h.jsx)(t.li,{children:`La sesión se autoriza con el correo y la contraseña del panel de Tilopay, más el código de 15747verificación. El asistente nunca ve ni guarda esa contraseña: la conexión queda con OAuth 2.0.`}),` 15748`,(0,h.jsx)(t.li,{children:`Como el usuario queda asociado a un comercio, el agente sólo alcanza los datos y las 15749operaciones de ese comercio.`}),` 15750`,(0,h.jsxs)(t.li,{children:[`El comercio nunca pega su `,(0,h.jsx)(t.code,{children:`apiKey`}),`, `,(0,h.jsx)(t.code,{children:`apiUser`}),` ni `,(0,h.jsx)(t.code,{children:`apiPassword`}),` en el cliente MCP.`]}),` 15751`]}),` 15752`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsx)(t.p,{children:`Las credenciales de API del comercio viven cifradas en el servidor de Tilopay y se descifran en 15753cada llamada. No se pegan en el cliente MCP, ni en el archivo de configuración del asistente, ni 15754se le pasan al modelo. Ese es el argumento de seguridad de todo el diseño.`})}),` 15755`,(0,h.jsx)(t.h2,{id:`conexion`,children:`Conexión`}),` 15756`,(0,h.jsxs)(t.p,{children:[`El servidor es `,(0,h.jsx)(t.code,{children:`https://mcp.tilopay.com/mcp`}),`. Para conectarlo:`]}),` 15757`,(0,h.jsxs)(t.ol,{children:[` 15758`,(0,h.jsx)(t.li,{children:`Agregar el servidor en el cliente MCP con esa URL.`}),` 15759`,(0,h.jsxs)(t.li,{children:[`El cliente descubre la autenticación por el 401 con `,(0,h.jsx)(t.code,{children:`WWW-Authenticate`}),`, que apunta a 15760`,(0,h.jsx)(t.code,{children:`/.well-known/oauth-protected-resource`}),`.`]}),` 15761`,(0,h.jsx)(t.li,{children:`El cliente se registra dinámicamente y abre la pantalla de autorización.`}),` 15762`,(0,h.jsx)(t.li,{children:`El usuario inicia sesión con las credenciales de su cuenta de Tilopay, confirma el código de 15763verificación y ve una pantalla de consentimiento con la aplicación que pide acceso, la URL de 15764retorno y los permisos.`}),` 15765`,(0,h.jsx)(t.li,{children:`Al aprobar, el cliente queda conectado.`}),` 15766`]}),` 15767`,(0,h.jsxs)(t.p,{children:[`El modelo es OAuth 2.0 con `,(0,h.jsx)(t.code,{children:`authorization_code`}),` y `,(0,h.jsx)(t.code,{children:`refresh_token`}),`. El cliente descubre los 15768endpoints del proveedor de identidad por sà mismo: lo único que hay que configurar es la URL del 15769servidor.`]}),` 15770`,(0,h.jsx)(t.h2,{id:`clientes`,children:`Desde los clientes MCP más usados`}),` 15771`,(0,h.jsxs)(t.ul,{children:[` 15772`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`Claude`}),` (escritorio y web): agregar un conector remoto con la URL del servidor y completar 15773el inicio de sesión en la ventana que abre. `,(0,h.jsx)(r,{href:`https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=Tilopay&connectorUrl=https://mcp.tilopay.com/mcp`,children:`Conectar con Claude`})]}),` 15774`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`ChatGPT`}),`: agregar el servidor como conector remoto con esa misma URL; la autorización se 15775completa en el navegador.`]}),` 15776`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`Cursor, VS Code y otros editores`}),`: declarar un servidor MCP remoto de tipo HTTP con la URL, 15777sin token en el archivo de configuración; el editor abre el navegador para autorizar.`]}),` 15778`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`Cliente propio`}
15778),`: usar un cliente MCP con transporte Streamable HTTP y soporte de OAuth 2.0 15779con registro dinámico. La secuencia es la de arriba: 401, descubrimiento, registro, 15780autorización, conexión.`]}),` 15781`]}),` 15782`,(0,h.jsxs)(t.p,{children:[`El transporte es Streamable HTTP. Las herramientas disponibles se listan por grupo: 15783`,(0,h.jsx)(t.a,{href:`/developers/agentes/mcp/ventas`,children:`ventas y transacciones`}),`, 15784`,(0,h.jsx)(t.a,{href:`/developers/agentes/mcp/enlaces-de-pago`,children:`enlaces de pago`}),`, 15785`,(0,h.jsx)(t.a,{href:`/developers/agentes/mcp/catalogo`,children:`catálogo`}),`, 15786`,(0,h.jsx)(t.a,{href:`/developers/agentes/mcp/contactos`,children:`contactos`}),`, 15787`,(0,h.jsx)(t.a,{href:`/developers/agentes/mcp/recurrentes`,children:`cobros recurrentes`}),`, 15788`,(0,h.jsx)(t.a,{href:`/developers/agentes/mcp/soporte`,children:`soporte y diagnóstico`}),`. 15789El grupo `,(0,h.jsx)(t.a,{href:`/developers/agentes/mcp/api-bancario`,children:`API bancario (BaaS)`}),` se activa bajo solicitud y 15790sólo funciona para usuarios con credenciales del API bancario de Tilopay. 15791Antes de conectar un agente, leé `,(0,h.jsx)(t.a,{href:`/developers/agentes/mcp/permisos`,children:`qué puede hacer`}),`.`]})]})}function rh(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(nh,{...e})}):nh(e)}function ih(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var ah=t({default:()=>ch,frontmatter:()=>oh}),oh={title:`Agentes de IA`,kind:`guide`,status:`stable`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Servidor MCP de Tilopay (manifiesto y código), verificado 29-08-2026`,`Respuestas de TecnologÃa, 29-08-2026`],locales:[`es`,`en`],related:[`agentes/mcp`,`agentes/mcp/permisos`,`agentes/documentacion-legible`,`agentes/mcp/recetas`],description:`Los tres planos que Tilopay le ofrece a un agente de IA: leer la documentación, operar la cuenta por el servidor MCP, e integrar con el API y el SDK.`};function sh(e){let t={a:`a`,code:`code`,h2:`h2`,li:`li`,p:`p`,ul:`ul`,...m(),...e.components};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`leer`,children:`Leer`}),` 15792`,(0,h.jsxs)(t.p,{children:[`Todo el portal está disponible en formato legible por máquina: el Ãndice 15793`,(0,h.jsx)(t.a,{href:`https://www.tilopay.com/llms.txt`,children:(0,h.jsx)(t.code,{children:`llms.txt`})}),`, el Markdown crudo de cualquier URL del sitio 15794agregándole `,(0,h.jsx)(t.code,{children:`.md`}),`, el `,(0,h.jsx)(t.a,{href:`/developers/openapi.json`,children:(0,h.jsx)(t.code,{children:`openapi.json`})}),` del API y el 15795`,(0,h.jsx)(t.a,{href:`/developers/mcp.json`,children:(0,h.jsx)(t.code,{children:`mcp.json`})}),` del servidor MCP.`]}),` 15796`,(0,h.jsx)(t.h2,{id:`actuar`,children:`Actuar por cuenta del comercio`}),` 15797`,(0,h.jsxs)(t.p,{children:[`El `,(0,h.jsx)(t.a,{href:`/developers/agentes/mcp`,children:`servidor MCP`}),` le permite a un asistente operar la cuenta del 15798comercio: consultar ventas, crear enlaces de pago, reembolsar. El acceso es autoservicio âse 15799inicia sesión con las credenciales de Tilopayâ y las credenciales del comercio nunca salen del 15800servidor de Tilopay.`]}),` 15801`,(0,h.jsx)(t.h2,{id:`integrar`,children:`Integrar en producto`}),` 15802`,(0,h.jsxs)(t.p,{children:[`Cuando lo que se construye es un producto que cobra, el camino son el `,(0,h.jsx)(t.a,{href:`/developers/sdk`,children:`SDK JavaScript`}),` 15803y el `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`API Adquirencia`}),`, no el MCP.`]}),` 15804`,(0,h.jsx)(t.h2,{id:`cual-elegir`,children:`Cuál elegir`}),` 15805`,(0,h.jsxs)(t.ul,{children:[` 15806`,(0,h.jsxs)(t.li,{children:[`Operar la cuenta desde un asistente â `,(0,h.jsx)(t.a,{href:`/developers/agentes/mcp`,children:`servidor MCP`}),`.`]}),` 15807`,(0,h.jsxs)(t.li,{children:[`Construir un producto que cobra â `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`API`}),` y `,(0,h.jsx)(t.a,{href:`/developers/sdk`,children:`SDK`}),`.`]}),` 15808`,(0,h.jsxs)(t.li,{children:[`Alimentar un agente con la documentación â `,(0,h.jsx)(t.a,{href:`/developers/agentes/documentacion-legible`,children:`documentación legible`}),`.`]}),` 15809`]}),` 15810`,(0,h.jsxs)(t.p,{children:[`El acceso al MCP es autoservicio: se instala el conector y se inicia sesión con las credenciales 15811de Tilopay, como explica la `,(0,h.jsx)(t.a,{href:`/developers/agentes/mcp`,children:`página del servidor MCP`}),`.`]})]})}function ch(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(sh,{...e})}):sh(e)}var lh=t({default:()=>fh,frontmatter:()=>uh}),uh={title:`Obtener token del API`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/procesos-operativos/errors`],description:`Operación de login del API: devuelve el token bearer que firma el resto de las llamadas.`,gaps:[`Present in the collection example but absent from the endpoint description.`]};function dh(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{Param:n}=t;return n||ph(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/login`})]})})})}),` 15812`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`Qué hace`}),` 15813`,(0,h.jsxs)(t.p,{children:[`Devuelve el token de seguridad necesario para consumir los servicios del API. El usuario y la contraseña de API se obtienen en `,(0,h.jsx)(t.a,{href:`https://admin.tilopay.com/admin/checkout`,children:`Admin · Tilopay Checkout`}),`.`]}),` 15814`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Autenticación`}),` 15815`,(0,h.jsxs)(t.p,{children:[`No requiere token: es la operación que lo emite. Ver `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`autenticación`}),`.`]}),` 15816`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parámetros`}),` 15817`,(0,h.jsx)(n,{id:`token-api-parametro-apiuser`,name:`apiuser`,type:`string`,children:(0,h.jsx)(t.p,{children:`Usuario de API del comercio, obtenido en Admin · Tilopay Checkout.`})}),` 15818`,(0,h.jsx)(n,{id:`token-api-parametro-password`,name:`password`,type:`string`,children:(0,h.jsx)(t.p,{children:`Contraseña de API del comercio, obtenida en Admin · Tilopay Checkout.`})}),` 15819`,(0,h.jsx)(t.h2,{id:`request`,children:`Ejemplo de request`}),` 15820`,(0,h.jsxs)(t.p,{children:[`Los valores `,(0,h.jsx)(t.code,{children:`<...>`}),` son marcadores: reemplazalos por tus credenciales y datos.`]}),` 15821`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 15822`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "apiuser"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_user>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15823`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "password"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_password>"`})]}),` 15824`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 15825`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Respuesta`}),` 15826`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 15827`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "access_token"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<jwt>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15828`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "token_type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"bearer"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15829`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "expires_in"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`86400`})]}),` 15830`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 15831`,(0,h.jsxs)(t.p,{children:[`Para interpretar una respuesta que no es de éxito, ver `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`cómo leer una respuesta de error`}),`.`]})]})}function fh(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(dh,{...e})}):dh(e)}function ph(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var mh=t({default:()=>_h,frontmatter:()=>hh}),hh={title:`Obtener token del SDK`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/procesos-operativos/errors`],description:`Login del SDK: devuelve el token que usa Tilopay.Init() en el navegador.`,gaps:[`Present in the collection example but absent from the endpoint description.`]};function gh(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{Param:n}=t;return n||vh(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/loginSdk`})]})})})}),` 15832`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`Qué hace`}),` 15833`,(0,h.jsxs)(t.p,{children:[`Devuelve el token de seguridad necesario para consumir el SDK. Las tres credenciales se obtienen en `,(0,h.jsx)(t.a,{href:`https://admin.tilopay.com/admin/checkout`,children:`Admin · Tilopay Checkout`}),`.`]}),` 15834`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Autenticación`}),` 15835`,(0,h.jsxs)(t.p,{children:[`No requiere token: es la operación que lo emite. Ver `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`autenticación`}),`.`]}),` 15836`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parámetros`}),` 15837`,(0,h.jsx)(n,{id:`token-sdk-parametro-apiuser`,name:`apiuser`,type:`string`,children:(0,h.jsx)(t.p,{children:`Usuario de API del comercio.`})}),` 15838`,(0,h.jsx)(n,{id:`token-sdk-parametro-password`,name:`password`,type:`string`,children:(0,h.jsx)(t.p,{children:`Contraseña de API del comercio.`})}),` 15839`,(0,h.jsx)(n,{id:`token-sdk-parametro-key`,name:`key`,type:`string`,children:(0,h.jsx)(t.p,{children:`Api key del comercio.`})}),` 15840`,(0,h.jsx)(t.h2,{id:`request`,children:`Ejemplo de request`}),` 15841`,(0,h.jsxs)(t.p,{children:[`Los valores `,(0,h.jsx)(t.code,{children:`<...>`}),` son marcadores: reemplazalos por tus credenciales y datos.`]}),` 15842`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 15843`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "apiuser"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_user>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15844`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "password"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_password>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15845`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`})]}),` 15846`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 15847`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Respuesta`}),` 15848`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 15849`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "access_token"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`}
15849,children:`"351d477adaaa51cdbb33ae4b4b8c843aa759f131c1c38415180b5035543d59d2f23f4e049706f5fa71c5f0d9ff763960a3cd035b4c1cefa428c90bedb672f780"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15850`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "token_type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"bearer"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15851`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "expires_in"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2023-06-05 13:32:06"`})]}),` 15852`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 15853`,(0,h.jsxs)(t.p,{children:[`Para interpretar una respuesta que no es de éxito, ver `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`cómo leer una respuesta de error`}),`.`]})]})}function _h(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(gh,{...e})}):gh(e)}function vh(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var yh=t({default:()=>Sh,frontmatter:()=>bh}),bh={title:`Autenticación`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-28`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Respuestas de TecnologÃa, 28-08-2026`],locales:[`es`,`en`],related:[`entornos`,`sdk/instalacion`,`api/hosted-payment-page`],description:`Cómo obtener el token del API y el token del SDK, cuánto duran y cómo se envÃan en cada llamada.`};function xh(e){let t={a:`a`,code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,table:`table`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,...m(),...e.components},{Callout:n,Param:r}=t;return n||Ch(`Callout`,!0),r||Ch(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(t.p,{children:[`Todo el API y el SDK viven en un único host: `,(0,h.jsx)(t.code,{children:`https://app.tilopay.com`}),`. No hay un host 15854distinto para pruebas â ver `,(0,h.jsx)(t.a,{href:`/developers/entornos`,children:`entornos`}),`.`]}),` 15855`,(0,h.jsx)(t.h2,{id:`operaciones`,children:`Las dos operaciones`}),` 15856`,(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Operación`}),(0,h.jsx)(t.th,{children:`Ruta`}),(0,h.jsx)(t.th,{children:`Para qué`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Token del API`}),(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`POST /api/v1/login`})}),(0,h.jsx)(t.td,{children:`Llamadas servidor a servidor al API`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Token del SDK`}),(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`POST /api/v1/loginSdk`})}),(0,h.jsxs)(t.td,{children:[`El token que se le pasa a `,(0,h.jsx)(t.code,{children:`Tilopay.Init()`})]})]})]})]}),` 15857`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.code,{children:`loginSdk`}),` es el método que el artÃculo anterior llamaba "GetTokenSdk". Es el mismo.`]}),` 15858`,(0,h.jsx)(t.h2,{id:`token-api`,children:`Obtener el token del API`}),` 15859`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:`curl`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` -X`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:` POST`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:` https://app.tilopay.com/api/v1/login`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` \\`})]}),` 15860`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` -H`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:` "Content-Type: application/json"`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` \\`})]}),` 15861`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` -d`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:` '{ "apiuser": "TU_APIUSER", "password": "TU_PASSWORD" }'`})]})]})})}),` 15862`,(0,h.jsx)(t.h3,{id:`cuerpo`,children:`Cuerpo`}),` 15863`,(0,h.jsx)(r,{id:`login-apiuser`,name:`apiuser`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Usuario de API del comercio.`})}),` 15864`,(0,h.jsx)(r,{id:`login-password`,name:`password`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Contraseña de API del comercio.`})}),` 15865`,(0,h.jsx)(t.h3,{id:`respuesta`,children:`Respuesta`}),` 15866`,(0,h.jsx)(r,{id:`login-access-token`,name:`access_token`,type:`string`,children:(0,h.jsx)(t.p,{children:`El token que se envÃa en las llamadas siguientes.`})}),` 15867`,(0,h.jsx)(r,{id:`login-token-type`,name:`token_type`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Siempre `,(0,h.jsx)(t.code,{children:`bearer`}),`.`]})}),` 15868`,(0,h.jsx)(r,{id:`login-expires-in`,name:`expires_in`,type:`integer`,children:(0,h.jsx)(t.p,{children:`Vigencia del token. El tiempo exacto viene en esta respuesta: no lo asumás desde el 15869cliente.`})}),` 15870`,(0,h.jsx)(t.h2,{id:`token-sdk`,children:`Obtener el token del SDK`}),` 15871`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:`curl`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` -X`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:` POST`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:` https://app.tilopay.com/api/v1/loginSdk`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` \\`})]}),` 15872`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` -H`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:` "Content-Type: application/json"`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` \\`})]}),` 15873`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` -d`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:` '{ "apiuser": "TU_APIUSER", "password": "TU_PASSWORD" }'`})]})]})})}),` 15874`,(0,h.jsxs)(t.p,{children:[`El token resultante es el que se pasa al parámetro `,(0,h.jsx)(t.code,{children:`token`}),` de 15875`,(0,h.jsx)(t.a,{href:`/developers/sdk/reference/init`,children:(0,h.jsx)(t.code,{children:`Tilopay.Init()`})}),`.`]}),` 15876`,(0,h.jsx)(t.h2,{id:`vigencia`,children:`Vigencia`}),` 15877`,(0,h.jsxs)(t.ul,{children:[` 15878`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.strong,{children:`Token del API: 24 horas.`})}),` 15879`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.strong,{children:`Token del SDK: 1 hora.`})}),` 15880`]}),` 15881`,(0,h.jsxs)(t.p,{children:[`El valor exacto siempre llega en `,(0,h.jsx)(t.code,{children:`expires_in`}),`. Cachealo del lado servidor y renovalo 15882cuando expire.`]}
15882),` 15883`,(0,h.jsx)(t.h2,{id:`envio`,children:`Cómo se envÃa`}),` 15884`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#85E89D`},children:`Authorization`}),(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`:`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:` bearer <token>`})]})})})}),` 15885`,(0,h.jsx)(t.h2,{id:`revocacion`,children:`Revocación y lÃmites`}),` 15886`,(0,h.jsxs)(t.ul,{children:[` 15887`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`Los tokens no se pueden revocar.`}),` Si un token se filtra, no hay una operación para 15888invalidarlo: hay que tratar la fuga como un incidente y rotar credenciales con Tilopay.`]}),` 15889`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`No hay lÃmite`}),` de tokens simultáneos por comercio. Podés pedir uno por proceso sin 15890invalidar los anteriores.`]}),` 15891`]}),` 15892`,(0,h.jsx)(t.h2,{id:`credenciales`,children:`Dónde se obtienen las credenciales`}),` 15893`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.code,{children:`apiuser`}),`, `,(0,h.jsx)(t.code,{children:`password`}),` y `,(0,h.jsx)(t.code,{children:`key`}),` se obtienen en el panel del comercio, en 15894`,(0,h.jsx)(t.code,{children:`admin.tilopay.com/admin/checkout`}),`. Si no tenés acceso todavÃa, empezá por 15895`,(0,h.jsx)(t.a,{href:`/developers/registro`,children:`el registro de developer`}),`.`]}),` 15896`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsxs)(t.p,{children:[`Nunca pongas `,(0,h.jsx)(t.code,{children:`apiuser`}),` ni `,(0,h.jsx)(t.code,{children:`password`}),` en el navegador. El login corre en tu servidor; al 15897navegador solo baja el token del SDK.`]})})]})}function Sh(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(xh,{...e})}):xh(e)}function Ch(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var wh=t({default:()=>Dh,frontmatter:()=>Th}),Th={title:`API · Crear CoF (Tokenizar)`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/cof`,`api/procesos-operativos/errors`],description:`Tokenización de tarjeta con processTokenize: parámetros, request y respuesta.`,gaps:[`These error examples were saved without an HTTP status code. It is not possible to tell from the collection whether the API returns HTTP 4xx or HTTP 200 with an error body.`]};function Eh(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{Param:n}=t;return n||Oh(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/processTokenize`})]})})})}),` 15898`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`Qué hace`}),` 15899`,(0,h.jsx)(t.p,{children:`Tokeniza una tarjeta: devuelve la URL del formulario de tokenización.`}),` 15900`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Autenticación`}),` 15901`,(0,h.jsxs)(t.p,{children:[`Requiere el token bearer del API en el header `,(0,h.jsx)(t.code,{children:`Authorization`}),` â ver `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`autenticación`}),`.`]}),` 15902`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parámetros`}),` 15903`,(0,h.jsx)(n,{id:`process-tokenize-parametro-redirect`,name:`redirect`,type:`string`,children:(0,h.jsx)(t.p,{children:`Sitio donde espera la respuesta de la transacción.`})}),` 15904`,(0,h.jsx)(n,{id:`process-tokenize-parametro-key`,name:`key`,type:`string`,children:(0,h.jsx)(t.p,{children:`Key asociado al comercio.`})}),` 15905`,(0,h.jsx)(n,{id:`process-tokenize-parametro-email`,name:`email`,type:`string`,children:(0,h.jsx)(t.p,{children:`Correo electrónico del tarjetahabiente.`})}),` 15906`,(0,h.jsx)(n,{id:`process-tokenize-parametro-language`,name:`language`,type:`string`,children:(0,h.jsx)(t.p,{children:`Idioma [es, en].`})}),` 15907`,(0,h.jsx)(n,{id:`process-tokenize-parametro-firstname`,name:`firstName`,type:`string`,children:(0,h.jsx)(t.p,{children:`Nombre del tarjetahabiente.`})}),` 15908`,(0,h.jsx)(n,{id:`process-tokenize-parametro-lastname`,name:`lastName`,type:`string`,children:(0,h.jsx)(t.p,{children:`Apellido del tarjetahabiente.`})}),` 15909`,(0,h.jsx)(n,{id:`process-tokenize-parametro-token-version`,name:`token_version`,type:`string`,children:(0,h.jsx)(t.p,{children:`Enviar como valor "v2".`})}),` 15910`,(0,h.jsx)(t.h2,{id:`request`,children:`Ejemplo de request`}),` 15911`,(0,h.jsxs)(t.p,{children:[`Los valores `,(0,h.jsx)(t.code,{children:`<...>`}),` son marcadores: reemplazalos por tus credenciales y datos.`]}),` 15912`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 15913`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "redirect"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://urlToRedirect.com"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15914`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15915`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "email"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"[email protected]"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15916`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "language"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"es"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15917`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "firstName"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"name"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15918`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "lastName"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"lastname"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15919`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "token_version"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"v2"`})]}),` 15920`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 15921`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Respuesta`}),` 15922`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 15923`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"100"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15924`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`}
15924,children:`"https://secure.tilopay.com/htmls/TOK-5063-740506121440_1648145457file.html"`})]}),` 15925`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 15926`,(0,h.jsxs)(t.p,{children:[`Para interpretar una respuesta que no es de éxito, ver `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`cómo leer una respuesta de error`}),`.`]})]})}function Dh(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Eh,{...e})}):Eh(e)}function Oh(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var kh=t({default:()=>Mh,frontmatter:()=>Ah}),Ah={title:`API · Realizar cobro CoF`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/cof`,`api/procesos-operativos/errors`],description:`Cobro servidor a servidor con token de tarjeta v2 mediante Credential on File.`,gaps:[`These error examples were saved without an HTTP status code. It is not possible to tell from the collection whether the API returns HTTP 4xx or HTTP 200 with an error body.`]};function jh(e){let t={a:`a`,code:`code`,h2:`h2`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,...m(),...e.components},{Param:n}=t;return n||Nh(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/processRecurrentPayment`})]})})})}),` 15927`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`Qué hace`}),` 15928`,(0,h.jsx)(t.p,{children:`Procesa un cobro con una tarjeta ya tokenizada, sin formulario.`}),` 15929`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Autenticación`}),` 15930`,(0,h.jsxs)(t.p,{children:[`Requiere el token bearer del API en el header `,(0,h.jsx)(t.code,{children:`Authorization`}),` â ver `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`autenticación`}),`.`]}),` 15931`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parámetros`}),` 15932`,(0,h.jsx)(n,{id:`realizar-cobro-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Llave relacionada con el cliente. Se obtiene en Admin · Tilopay Checkout.`})}),` 15933`,(0,h.jsx)(n,{id:`realizar-cobro-parametro-amount`,name:`amount`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Monto de la compra.`})}),` 15934`,(0,h.jsx)(n,{id:`realizar-cobro-parametro-currency`,name:`currency`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Moneda de la compra en formato ISO, por ejemplo USD, CRC, GTQ.`})}),` 15935`,(0,h.jsx)(n,{id:`realizar-cobro-parametro-ordernumber`,name:`orderNumber`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Número de orden, puede ser alfanumérico.`})}),` 15936`,(0,h.jsx)(n,{id:`realizar-cobro-parametro-capture`,name:`capture`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Captura y autoriza: 1 sÃ, 0 no.`})}),` 15937`,(0,h.jsx)(n,{id:`realizar-cobro-parametro-email`,name:`email`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Correo del tarjetahabiente.`})}),` 15938`,(0,h.jsxs)(n,{id:`realizar-cobro-parametro-card`,name:`card`,type:`string`,required:!0,children:[(0,h.jsx)(t.p,{children:`Token de tarjeta, debe ser el token v2`}),(0,h.jsxs)(t.ul,{children:[` 15939`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`hashVersion`}),`: Utilizar solo en caso de implementar la verificación de hash, posibles valores [V1, V2], pod defecto se usa V1.`]}),` 15940`]})]}),` 15941`,(0,h.jsx)(t.h2,{id:`request`,children:`Ejemplo de request`}),` 15942`,(0,h.jsxs)(t.p,{children:[`Los valores `,(0,h.jsx)(t.code,{children:`<...>`}),` son marcadores: reemplazalos por tus credenciales y datos.`]}),` 15943`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 15944`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15945`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"10.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15946`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15947`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "orderNumber"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1213"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15948`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "capture"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15949`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "email"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"[email protected]"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15950`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "card"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"511111_00GOB1111"`})]}),` 15951`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 15952`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Respuesta`}),` 15953`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 15954`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"200"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15955`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "response"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15956`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Transacción aprobada"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15957`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "auth"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"123456"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15958`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "tpt"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`734329`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15959`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "order_id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"12135"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15960`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "tilopayTransaction"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`734329`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15961`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "orderHash"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"f3ad85046d249bc7a781eed5285a5ded92045a2e11108063504deec72ec9b338"`})]}),` 15962`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 15963`,(0,h.jsxs)(t.p,{children:[`Para interpretar una respuesta que no es de éxito, ver `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`cómo leer una respuesta de error`}),`.`]})]})}function Mh(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(jh,{...e})}):jh(e)}function Nh(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Ph=t({default:()=>Lh,frontmatter:()=>Fh}),Fh={title:`API · Eliminar CoF`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/cof`,`api/procesos-operativos/errors`],description:`Eliminación de un token de tarjeta guardado en la bóveda privada del comercio.`,gaps:[`No response example available.`]};function Ih(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,...m(),...e.components},{Param:n}=t;return n||Rh(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/user/card-remove`})]})})})}),` 15964`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`Qué hace`}),` 15965`,(0,h.jsxs)(t.p,{children:[`Elimina un token de tarjeta guardado. `,(0,h.jsx)(t.strong,{children:`Requisito:`}),` el comercio debe contar con una bóveda de tokens privada.`]}),` 15966`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Autenticación`}),` 15967`,(0,h.jsxs)(t.p,{children:[`Requiere el token bearer del API en el header `,(0,h.jsx)(t.code,{children:`Authorization`}),` â ver `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`autenticación`}),`.`]}),` 15968`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parámetros`}),` 15969`,(0,h.jsx)(n,{id:`remove-card-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Llave relacionada con el comercio.`})}),` 15970`,(0,h.jsx)(n,{id:`remove-card-parametro-email`,name:`email`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Correo del cliente asociad
15970o al token.`})}),` 15971`,(0,h.jsx)(n,{id:`remove-card-parametro-token`,name:`token`,type:`string`,children:(0,h.jsx)(t.p,{children:`Token a eliminar.`})}),` 15972`,(0,h.jsx)(t.h2,{id:`request`,children:`Ejemplo de request`}),` 15973`,(0,h.jsxs)(t.p,{children:[`Los valores `,(0,h.jsx)(t.code,{children:`<...>`}),` son marcadores: reemplazalos por tus credenciales y datos.`]}),` 15974`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 15975`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1234-1234-1234-1234-1234"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15976`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "email"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"[email protected]"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 15977`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "token"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"411111.......1111"`})]}),` 15978`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 15979`,(0,h.jsxs)(t.p,{children:[`Para interpretar una respuesta que no es de éxito, ver `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`cómo leer una respuesta de error`}),`.`]})]})}function Lh(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Ih,{...e})}):Ih(e)}function Rh(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var zh=t({default:()=>Hh,frontmatter:()=>Bh}),Bh={title:`Credential on File (CoF)`,kind:`api-index`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/procesos-operativos/errors`],description:`Operaciones de credential on file (cof) del API de Tilopay, con parámetros y ejemplos.`};function Vh(e){let t={a:`a`,code:`code`,h2:`h2`,li:`li`,p:`p`,ul:`ul`,...m(),...e.components};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`operaciones`,children:`Operaciones`}),` 15980`,(0,h.jsx)(t.p,{children:`3 operaciones:`}),` 15981`,(0,h.jsxs)(t.ul,{children:[` 15982`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.a,{href:`/developers/api/cof/process-tokenize`,children:`Tokenizar tarjeta`}),` â 1`]}),` 15983`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.a,{href:`/developers/api/cof/remove-card`,children:`Eliminar tarjeta`}),` â 1`]}),` 15984`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.a,{href:`/developers/api/cof/realizar-cobro`,children:`Realizar cobro`}),` â 1`]}),` 15985`]}),` 15986`,(0,h.jsxs)(t.p,{children:[`Todas las operaciones viven en `,(0,h.jsx)(t.code,{children:`https://app.tilopay.com`}),` y, salvo las de login, requieren el token del API â ver `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`autenticación`}),`.`]})]})}function Hh(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Vh,{...e})}):Vh(e)}var Uh=t({default:()=>Kh,frontmatter:()=>Wh}),Wh={title:`API · Convenciones de las respuestas`,kind:`concept`,status:`stable`,api_version:`v1`,last_verified:`2026-09-02`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Respuestas de TecnologÃa, 02-09-2026 (hoja de preguntas v2, validada)`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/procesos-operativos/errors`,`reintentos-seguros`],description:`Cómo vienen tipados los montos, dónde hay JSON dentro de una cadena y por qué la misma entidad camb
15986ia de forma entre consultar uno y listar.`};function Gh(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,table:`table`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,...m(),...e.components},{Callout:n}=t;return n||qh(`Callout`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.p,{children:`Las respuestas del API de adquirencia tienen tres detalles que no se deducen leyendo cada 15987operación por separado y que rompen integraciones tipadas. Están acá porque aplican a 15988varias operaciones a la vez.`}),` 15989`,(0,h.jsxs)(t.p,{children:[`Para el manejo de errores, ver `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`cómo leer una respuesta de error`}),`.`]}),` 15990`,(0,h.jsx)(t.h2,{id:`montos-cadena`,children:`Los montos vienen como cadena, no como número`}),` 15991`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsxs)(t.p,{children:[`Los montos, descuentos e importes se serializan como cadena: `,(0,h.jsx)(t.code,{children:`"discount": "40.00"`}),`, 15992`,(0,h.jsx)(t.code,{children:`"amount": "0.00"`}),`, `,(0,h.jsx)(t.code,{children:`"first_amount": "0.00"`}),`, `,(0,h.jsx)(t.code,{children:`"amount_max_daily": "1000.00"`}),`.`]})}),` 15993`,(0,h.jsx)(t.p,{children:`Cualquier deserialización tipada que declare esos campos como número falla. Declaralos 15994como cadena y convertilos vos, con el tipo decimal de tu lenguaje, no con punto flotante.`}),` 15995`,(0,h.jsxs)(t.p,{children:[`Aparece, entre otras, en `,(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/cupones/get-coupon`,children:`obtener un cupón`}),`, 15996`,(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/cupones/get-coupons`,children:`listar cupones`}),`, 15997`,(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/planes/get-plans`,children:`listar planes`}),` y 15998`,(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/suscriptores/suscriptor-payments`,children:`pagos de suscriptor`}),`.`]}),` 15999`,(0,h.jsx)(t.h2,{id:`doble-encoding`,children:`Hay un JSON dentro de una cadena`}),` 16000`,(0,h.jsxs)(t.p,{children:[`En `,(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/suscriptores/suscriptor-payments`,children:`pagos de suscriptor`}),`, el 16001campo `,(0,h.jsx)(t.code,{children:`data`}),` de cada pago `,(0,h.jsx)(t.strong,{children:`no es un objeto: es una cadena que contiene JSON`}),`.`]}),` 16002`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"data"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"{`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`\\"`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`first`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`\\"`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`:1,`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`\\"`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`expire`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`\\"`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`:`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`\\"`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`2024-12-28T19:05:29.572648Z`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`\\"`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`,`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`\\"`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`amount`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`\\"`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`:0,`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`\\"`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`activeAmount`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`\\"`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`:0,`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`\\"`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`originalAmount`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`\\"`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`:0,`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`\\"`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`key`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`\\"`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`:`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`\\"`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`XXXX-XXXX-XXXX-XXXX-XXXX`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`\\"`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`}"`})]})})})}),` 16003`,(0,h.jsxs)(t.p,{children:[`Hay que deserializar dos veces: primero la respuesta, después el contenido de `,(0,h.jsx)(t.code,{children:`data`}),`. 16004Tratá esa segunda deserialización como puede fallar cualquier entrada externa: envolvela y 16005registrá la cadena cruda si no parsea.`]}),` 16006`,(0,h.jsx)(t.h2,{id:`uno-vs-lista`,children:`La misma entidad camb
16006ia de forma entre "obtener uno" y "listar"`}),` 16007`,(0,h.jsx)(t.p,{children:`No es un descuido de la documentación: las dos operaciones devuelven formas distintas del 16008mismo cupón, y hay que mapearlas por separado.`}),` 16009`,(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{}),(0,h.jsxs)(t.th,{children:[(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/cupones/get-coupon`,children:(0,h.jsx)(t.code,{children:`getCoupon`})}),` (uno)`]}),(0,h.jsxs)(t.th,{children:[(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/cupones/get-coupons`,children:(0,h.jsx)(t.code,{children:`getRepeatCoupons`})}),` (lista)`]})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Fecha de creación`}),(0,h.jsxs)(t.td,{children:[(0,h.jsx)(t.code,{children:`created_at`}),`, formato ISO`]}),(0,h.jsxs)(t.td,{children:[(0,h.jsx)(t.code,{children:`create`}),`, formato `,(0,h.jsx)(t.code,{children:`Y-m-d H:i:s`})]})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Otros campos`}),(0,h.jsxs)(t.td,{children:[`incluye `,(0,h.jsx)(t.code,{children:`recurrent_id`}),`, `,(0,h.jsx)(t.code,{children:`updated_at`}),` y `,(0,h.jsx)(t.code,{children:`deleted_at`})]}),(0,h.jsx)(t.td,{children:`no los incluye`})]})]})]}),` 16010`,(0,h.jsxs)(t.p,{children:[`Lo mismo pasa en 16011`,(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/suscriptores/suscriptor-payments`,children:`pagos de suscriptor`}),`, que 16012también usa `,(0,h.jsx)(t.code,{children:`create`}),` con formato `,(0,h.jsx)(t.code,{children:`Y-m-d H:i:s`}),`.`]}),` 16013`,(0,h.jsx)(t.h2,{id:`no-configurado`,children:`Dos formas de decir "no configurado"`}),` 16014`,(0,h.jsxs)(t.p,{children:[`En `,(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/planes/get-plans`,children:`listar planes`}),`, los campos de webhook de 16015un plan vienen como cadena vacÃa cuando no están configurados, mientras que `,(0,h.jsx)(t.code,{children:`return_url`}),` 16016viene como `,(0,h.jsx)(t.code,{children:`null`}),`. Son dos representaciones del mismo estado en el mismo objeto: al 16017verificar si un webhook está configurado, tratá la cadena vacÃa y `,(0,h.jsx)(t.code,{children:`null`}),` como el mismo 16018caso.`]})]})}function Kh(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Gh,{...e})}):Gh(e)}function qh(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Jh=t({default:()=>Zh,frontmatter:()=>Yh}),Yh={title:`Hosted payment page`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/hosted-payment-page`,`api/procesos-operativos/errors`],description:`Parámetros, ejemplo de request y respuesta de processPayment, la operación que abre el formulario de pago.`,gaps:[`These error examples were saved without an HTTP status code. It is not possible to tell from the collection whether the API returns HTTP 4xx or HTTP 200 with an error body.`]};function Xh(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,...m(),...e.components},{Param:n}=t;return n||Qh(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/processPayment`})]})})})}),` 16019`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`Qué hace`}),` 16020`,(0,h.jsx)(t.p,{children:`Devuelve la URL del formulario de pago para una compra.`}),` 16021`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Autenticación`}),` 16022`,(0,h.jsxs)(t.p,{children:[`Requiere el token bearer del API en el header `,(0,h.jsx)(t.code,{children:`Authorization`}),` â ver `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`autenticación`}),`.`]}),` 16023`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parámetros`}),` 16024`,(0,h.jsx)(n,{id:`process-payment-parametro-redirect`,name:`redirect`,type:`string`,required:!0,children:(0,h.jsxs)(t.p,{children:[`Sitio donde esperás la respuesta de la transacción, por ejemplo `,(0,h.jsx)(t.code,{children:`mywebsite.com`}),`. Debe soportar el método `,(0,h.jsx)(t.strong,{children:`GET`}),`. Ejemplo de respuesta al redirect: `,(0,h.jsx)(t.code,{children:`mywebsite.com?code=1&description=Transaction%20is%20approved.&auth=123456&order=TPYS-881WROIBQA1405468&tpt=4300&crd=&tilopay-transaction=4300&OrderHash=b02927cb...&returnData=Tilopay-dataReturn123456789&form_update=ok`}),`. Si `,(0,h.jsx)(t.code,{children:`code = 1`}),` la transacción está aprobada; en cualquier otro caso, rechazada. `,(0,h.jsx)(t.code,{children:`OrderHash`}),` es un string único por transacción: para usarlo del lado del comercio hay que escribir a `,(0,h.jsx)(t.code,{children:`[email protected]`}),` y pedir las instrucciones.`]})}),` 16025`,(0,h.jsx)(n,{id:`process-payment-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Llave relacionada con el cliente. Se obtiene en Admin · Tilopay Checkout.`})}),` 16026`,(0,h.jsx)(n,{id:`process-payment-parametro-amount`,name:`amount`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Monto de la compra.`})}),` 16027`,(0,h.jsx)(n,{id:`process-payment-parametro-currency`,name:`currency`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Moneda de la compra en formato ISO, por ejemplo USD, CRC, GTQ.`})}),` 16028`,(0,h.jsx)(n,{id:`process-payment-parametro-ordernumber`,name:`orderNumber`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Número de orden, puede ser alfanumérico.`})}),` 16029`,(0,h.jsx)(n,{id:`process-payment-parametro-capture`,name:`capture`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Captura y autoriza: 1 sÃ, 0 no.`})}),` 16030`,(0,h.jsx)(n,{id:`process-payment-parametro-billtofirstname`,name:`billToFirstName`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Nombre.`})}),` 16031`,(0,h.jsx)(n,{id:`process-payment-parametro-billtolastname`,name:`billToLastName`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Apellidos.`})}),` 16032`,(0,h.jsx)(n,{id:`process-payment-parametro-billtoaddress`,name:`billToAddress`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Dirección.`})}),` 16033`,(0,h.jsx)(n,{id:`process-payment-parametro-billtoaddress2`,name:`billToAddress2`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Dirección 2.`})}),` 16034`,(0,h.jsx)(n,{id:`process-payment-parametro-billtocity`,name:`billToCity`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Ciudad.`})}),` 16035`,(0,h.jsx)(n,{id:`process-payment-parametro-billtostate`,name:`billToState`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Estado en formato ISO, por ejemplo CR-SJ (San José, Costa Rica) o US-CA (California, EE. UU.).`})}),` 16036`,(0,h.jsx)(n,{id:`process-payment-parametro-billtozippostcode`,name:`billToZipPost
16036Code`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Código postal.`})}),` 16037`,(0,h.jsx)(n,{id:`process-payment-parametro-billtocountry`,name:`billToCountry`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`PaÃs en código ISO Alpha-2, por ejemplo CR (Costa Rica), US (EE. UU.) o GT (Guatemala).`})}),` 16038`,(0,h.jsx)(n,{id:`process-payment-parametro-billtotelephone`,name:`billToTelephone`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Teléfono.`})}),` 16039`,(0,h.jsx)(n,{id:`process-payment-parametro-billtoemail`,name:`billToEmail`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Correo del comprador.`})}),` 16040`,(0,h.jsx)(n,{id:`process-payment-parametro-shiptofirstname`,name:`shipToFirstName`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Nombre.`})}),` 16041`,(0,h.jsx)(n,{id:`process-payment-parametro-shiptolastname`,name:`shipToLastName`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Apellidos.`})}),` 16042`,(0,h.jsx)(n,{id:`process-payment-parametro-shiptoaddress`,name:`shipToAddress`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Dirección.`})}),` 16043`,(0,h.jsx)(n,{id:`process-payment-parametro-shiptoaddress2`,name:`shipToAddress2`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Dirección 2.`})}),` 16044`,(0,h.jsx)(n,{id:`process-payment-parametro-shiptocity`,name:`shipToCity`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Ciudad.`})}),` 16045`,(0,h.jsx)(n,{id:`process-payment-parametro-shiptostate`,name:`shipToState`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Estado en formato ISO, por ejemplo CR-SJ (San José, Costa Rica) o US-CA (California, EE. UU.).`})}),` 16046`,(0,h.jsx)(n,{id:`process-payment-parametro-shiptozippostcode`,name:`shipToZipPostCode`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Código postal.`})}),` 16047`,(0,h.jsx)(n,{id:`process-payment-parametro-shiptocountry`,name:`shipToCountry`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`PaÃs en código ISO Alpha-2, por ejemplo CR (Costa Rica), US (EE. UU.) o GT (Guatemala).`})}),` 16048`,(0,h.jsx)(n,{id:`process-payment-parametro-shiptotelephone`,name:`shipToTelephone`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Teléfono.`})}),` 16049`,(0,h.jsx)(n,{id:`process-payment-parametro-subscription`,name:`subscription`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`1 para forzar que el cliente guarde la tarjeta en Tilopay, 0 para no.`})}),` 16050`,(0,h.jsx)(n,{id:`process-payment-parametro-platform`,name:`platform`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Nombre de la plataforma donde se genera la transacción.`})}),` 16051`,(0,h.jsx)(n,{id:`process-payment-parametro-returndata`,name:`returnData`,type:`string`,children:(0,h.jsx)(t.p,{children:`Valor que Tilopay devuelve en la respuesta final. Se recomienda enviar un string en base 64.`})}),` 16052`,(0,h.jsx)(n,{id:`process-payment-parametro-hashversion`,name:`hashVersion`,type:`string`,children:(0,h.jsx)(t.p,{children:`Solo se usa al implementar la verificación de hash. Valores posibles [V1, V2]; por defecto V1.`})}),` 16053`,(0,h.jsx)(n,{id:`process-payment-parametro-token-version`,name:`token_version`,type:`string`,children:(0,h.jsx)(t.p,{children:`Enviar como valor "v2".`})}),` 16054`,(0,h.jsx)(t.h2,{id:`request`,children:`Ejemplo de request`}),` 16055`,(0,h.jsxs)(t.p,{children:[`Los valores `,(0,h.jsx)(t.code,{children:`<...>`}),` son marcadores: reemplazalos por tus credenciales y datos.`]}),` 16056`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 16057`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "redirect"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://www.urlToRedirect.com"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16058`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16059`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16060`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16061`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "orderNumber"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1212122"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16062`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "capture"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16063`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "billToFirstName"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"DEMO"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16064`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "billToLastName"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"DEMO"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16065`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "billToAddress"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"San Jose"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16066`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "billToAddress2"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Catedral"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16067`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "billToCity"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"JS"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16068`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "billToState"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"SJ"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16069`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`}
16069,children:` "billToZipPostCode"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"10061"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16070`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "billToCountry"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"CR"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16071`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "billToTelephone"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"88888888"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16072`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "billToEmail"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"[email protected]"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16073`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "shipToFirstName"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"DEMO"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16074`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "shipToLastName"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"DEMO"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16075`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "shipToAddress"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"San Jose"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16076`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "shipToAddress2"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Catedral"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16077`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "shipToCity"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"JS"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16078`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "shipToState"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"SJ"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16079`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "shipToZipPostCode"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"10061"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16080`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "shipToCountry"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"CR"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16081`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "shipToTelephone"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"88888888"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16082`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "subscription"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"0"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16083`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "platform"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"api"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16084`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "returnData"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"dXNlcl9pZD0xMg=="`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16085`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "hashVersion"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"V2"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16086`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "token_version"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"v2"`})]}),` 16087`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 16088`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Respuesta`}),` 16089`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 16090`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"100"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16091`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "html"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Use url redirect"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16092`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`}
16092,children:`"https://secure.tilopay.com/htmls/1212122_574572148file.html"`})]}),` 16093`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 16094`,(0,h.jsxs)(t.p,{children:[`Para interpretar una respuesta que no es de éxito, ver `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`cómo leer una respuesta de error`}),`.`]})]})}function Zh(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Xh,{...e})}):Xh(e)}function Qh(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var $h=t({default:()=>ng,frontmatter:()=>eg}),eg={title:`API · Crear link de pago`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/links-de-pago`,`api/procesos-operativos/errors`],description:`Creación de links de pago por API, c
16094on callback y webhook de respuesta.`};function tg(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,...m(),...e.components},{Param:n}=t;return n||rg(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/createLinkPayment`})]})})})}),` 16095`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`Qué hace`}),` 16096`,(0,h.jsx)(t.p,{children:`Crea un link de pago con monto, moneda y comportamiento de uso.`}),` 16097`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Autenticación`}),` 16098`,(0,h.jsxs)(t.p,{children:[`Requiere el token bearer del API en el header `,(0,h.jsx)(t.code,{children:`Authorization`}),` â ver `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`autenticación`}),`.`]}),` 16099`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parámetros`}),` 16100`,(0,h.jsx)(n,{id:`create-link-payment-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Key de la integración Tilopay.`})}),` 16101`,(0,h.jsx)(n,{id:`create-link-payment-parametro-amount`,name:`amount`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Monto para el link de pago.`})}),` 16102`,(0,h.jsx)(n,{id:`create-link-payment-parametro-currency`,name:`currency`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Código de moneda en formato ISO 4217.`})}),` 16103`,(0,h.jsx)(n,{id:`create-link-payment-parametro-reference`,name:`reference`,type:`string`,children:(0,h.jsx)(t.p,{children:`Referencia del link de pago.`})}),` 16104`,(0,h.jsx)(n,{id:`create-link-payment-parametro-type`,name:`type`,type:`integer`,children:(0,h.jsx)(t.p,{children:`Tipo de link: 0 ilimitado, 1 de un solo uso.`})}),` 16105`,(0,h.jsx)(n,{id:`create-link-payment-parametro-description`,name:`description`,type:`string`,children:(0,h.jsx)(t.p,{children:`Descripción del pago.`})}),` 16106`,(0,h.jsx)(n,{id:`create-link-payment-parametro-client`,name:`client`,type:`string`,children:(0,h.jsx)(t.p,{children:`Nombre del cliente, aplica solo cuando type es 1.`})}),` 16107`,(0,h.jsx)(n,{id:`create-link-payment-parametro-callback-url`,name:`callback_url`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Campo opcional. URL, por método `,(0,h.jsx)(t.strong,{children:`GET`}),`, a la que se redirige con la respuesta al completar el pago. Ejemplo de los datos enviados: `,(0,h.jsx)(t.code,{children:`code=Val&description=Val&auth=Val&tilopayLinkId=Val&orderNumber=Val&tilopayOrderId=Val&creditCardToken=Val&creditCardBrand=Val&last4CreditCardNumber=Val&orderHash=Val`})]})}),` 16108`,(0,h.jsxs)(n,{id:`create-link-payment-parametro-webhook-url`,name:`webhook_url`,type:`string`,children:[(0,h.jsxs)(t.p,{children:[`Campo opcional. URL para enviar el webhook de respuesta al completar el pago. 16109Debe ser de método `,(0,h.jsx)(t.strong,{children:`POST`}),` para que reciba los datos. Ejemplo de los datos enviados:`]}),(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 16110`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "code"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16111`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "codeDescription"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Aprobada"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16112`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "auth"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"123456"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16113`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "tilopayLinkId"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`54421`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16114`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "orderNumber"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"TPT123"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16115`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "tilopayOrderId"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`12233`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16116`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "creditCardToken"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"41111******11111"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16117`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "creditCardBrand"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Visa"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16118`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "last4CreditCardNumber"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1111"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16119`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "linkDescription"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Descripcion del link de pago"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16120`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "orderHash"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`})]}),` 16121`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})})]}),` 16122`,(0,h.jsx)(t.h2,{id:`request`,children:`Ejemplo de request`}),` 16123`,(0,h.jsxs)(t.p,{children:[`Los valores `,(0,h.jsx)(t.code,{children:`<...>`}),` son marcadores: reemplazalos por tus credenciales y datos.`]}),` 16124`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 16125`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16126`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"10"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16127`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16128`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "reference"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"123456"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16129`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16130`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16131`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "client"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Client name"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16132`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "callback_url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16133`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "webhook_url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`})]}),` 16134`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 16135`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Respuesta`}),` 16136`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 16137`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"200"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16138`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Success"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16139`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://app.tilopay.com/link/MjMwMjQ="`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16140`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`})]}),` 16141`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 16142`,(0,h.jsxs)(t.p,{children:[`Para interpretar una respuesta que no es de éxito, ver `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`cómo leer una respuesta de error`}),`.`]})]})}function ng(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(tg,{...e})}):tg(e)}function rg(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var ig=t({default:()=>sg,frontmatter:()=>ag}),ag={title:`API · Eliminar un link de pago`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/links-de-pago`,`api/procesos-operativos/errors`],description:`Eliminación de un link de pago por id.`};function og(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{Param:n}=t;return n||cg(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/deleteLinkPayment`})]})})})}),` 16143`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`Qué hace`}),` 16144`,(0,h.jsx)(t.p,{children:`Elimina un link de pago existente.`}),` 16145`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Autenticación`}),` 16146`,(0,h.jsxs)(t.p,{children:[`Requiere el token bearer del API en el header `,(0,h.jsx)(t.code,{children:`Authorization`}),` â ver `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`autenticación`}),`.`]}),` 16147`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parámetros`}),` 16148`,(0,h.jsx)(n,{id:`delete-link-payment-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Key de la integración Tilopay.`})}),` 16149`,(0,h.jsx)(n,{id:`delete-link-payment-parametro-id`,name:`id`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Id del link de pago.`})}),` 16150`,(0,h.jsx)(t.h2,{id:`request`,children:`Ejemplo de request`}),` 16151`,(0,h.jsxs)(t.p,{children:[`Los valores `,(0,h.jsx)(t.code,{children:`<...>`}),` son marcadores: reemplazalos por tus credenciales y datos.`]}),` 16152`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 16153`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16154`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"35"`})]}),` 16155`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 16156`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Respuesta`}),` 16157`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 16158`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"200"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16159`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "status"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16160`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Success"`})]}),` 16161`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 16162`
16162,(0,h.jsxs)(t.p,{children:[`Para interpretar una respuesta que no es de éxito, ver `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`cómo leer una respuesta de error`}),`.`]})]})}function sg(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(og,{...e})}):og(e)}function cg(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var lg=t({default:()=>fg,frontmatter:()=>ug}),ug={title:`API · Detalle de un link de pago`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/links-de-pago`,`api/procesos-operativos/errors`],description:`Detalle de un link de pago y sus pagos, consultado por id.`,gaps:[`Type, format and constraints are not documented in the collection.`]};function dg(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{Param:n}=t;return n||pg(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`GET`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/getDetailLinkPayment/{link_payment_id}/{api_key}`})]})})})}),` 16163`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`Qué hace`}),` 16164`,(0,h.jsx)(t.p,{children:`Devuelve el detalle de un link de pago y sus pagos asociados. No lleva cuerpo: los datos van en la ruta.`}),` 16165`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Autenticación`}),` 16166`,(0,h.jsxs)(t.p,{children:[`Requiere el token bearer del API en el header `,(0,h.jsx)(t.code,{children:`Authorization`}),` â ver `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`autenticación`}),`.`]}),` 16167`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parámetros`}),` 16168`,(0,h.jsx)(t.p,{children:`Parámetros de ruta, en el orden en que aparecen en la URL:`}),` 16169`,(0,h.jsx)(n,{id:`detail-link-payment-parametro-link-payment-id`,name:`link_payment_id`,type:`string · path`,required:!0,children:(0,h.jsx)(t.p,{children:`Id del link de pago a consultar.`})}),` 16170`,(0,h.jsx)(n,{id:`detail-link-payment-parametro-api-key`,name:`api_key`,type:`string · path`,required:!0,children:(0,h.jsx)(t.p,{children:`Api Key del comercio.`})}),` 16171`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Respuesta`}),` 16172`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 16173`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"200"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16174`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Success"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16175`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "detail"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: {`})]}),` 16176`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`6201`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16177`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"45.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16178`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16179`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "reference"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Producto de prueba 1 TP-Shop"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16180`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "client"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"NA"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16181`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Unlimited"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16182`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16183`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "callback_url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16184`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "create"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2022-10-24 08:45:14"`})]}),` 16185`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` },`})}),` 16186`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "payments"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: []`})]}),` 16187`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 16188`,(0,h.jsxs)(t.p,{children:[`Para interpretar una respuesta que no es de éxito, ver `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`cómo leer una respuesta de error`}),`.`]})]})}function fg(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(dg,{...e})}):dg(e)}function pg(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var mg=t({default:()=>_g,frontmatter:()=>hg}),hg={title:`API · Obtener un link de pago por id`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/links-de-pago`,`api/procesos-operativos/errors`],description:`Consulta de un link de pago puntual por su id.`,gaps:[`No description in the source collection.`,`Type, format and constraints are not documented in the collection.`]};function gg(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{Param:n}=t;return n||vg(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`GET`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/getLinkPaymentById/{link_payment_id}/{api_key}`})]})})})}),` 16189`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`Qué hace`}),` 16190`,(0,h.jsx)(t.p,{children:`Devuelve un link de pago puntual. No lleva cuerpo: los datos van en la ruta.`}),` 16191`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Autenticación`}),` 16192`,(0,h.jsxs)(t.p,{children:[`Requiere el token bearer del API en el header `,(0,h.jsx)(t.code,{children:`Authorization`}),` â ver `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`autenticación`}),`.`]}),` 16193`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parámetros`}),` 16194`,(0,h.jsx)(t.p,{children:`Parámetros de ruta, en el orden en que aparecen en la URL:`}),` 16195`,(0,h.jsx)(n,{id:`payment-by-id-parametro-link-payment-id`,name:`link_payment_id`,type:`string · path`,required:!0,children:(0,h.jsx)(t.p,{children:`Id del link de pago a consultar.`})}),` 16196`,(0,h.jsx)(n,{id:`payment-by-id-parametro-api-key`,name:`api_key`,type:`string · path`,required:!0,children:(0,h.jsx)(t.p,{children:`Api Key del comercio.`})}),` 16197`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Respuesta`}),` 16198`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 16199`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"200"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16200`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Success"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16201`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "data"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: {`})]}),` 16202`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16203`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"45.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16204`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16205`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "reference"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Producto de prueba 1 TP-Shop"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16206`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://admin.tilopay.com/link/loNj8E2MA=="`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16207`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "callback_url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16208`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16209`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "times_used"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16210`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "picture"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://storage.googleapis.com/tilo-uploads/items/51087219_.png"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16211`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "create"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2022-10-24 08:45:14"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16212`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "payments"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: []`})]}),` 16213`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` }`})}),` 16214`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 16215`,(0,h.jsxs)(t.p,{children:[`Para interpretar una respuesta que no es de éxito, ver `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`cómo leer una respuesta de error`}),`.`]})]})}function _g(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(gg,{...e})}):gg(e)}function vg(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var yg=t({default:()=>Sg,frontmatter:()=>bg}),bg={title:`API · Listar links de pago`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/links-de-pago`,`api/procesos-operativos/errors`],description:`Listado paginado de los links de pago del comercio.`,gaps:[`No description in the source collection.`,`Type, format and constraints are not documented in the collection.`]};function xg(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{Param:n}=t;return n||Cg(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`GET`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/getLinkPaymentList/{api_key}/{limit}`})]})})})}),` 16216`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`Qué hace`}),` 16217`,(0,h.jsx)(t.p,{children:`Devuelve la lista paginada de links de pago del comercio. No lleva cuerpo: los datos van en la ruta.`}),` 16218`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Autenticación`}),` 16219`,(0,h.jsxs)(t.p,{children:[`Requiere el token bearer del API en el header `,(0,h.jsx)(t.code,{children:`Authorization`}),` â ver `,(0,h.jsx)(t.a,{href:`/developers/api/autenti
16219cacion`,children:`autenticación`}),`.`]}),` 16220`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parámetros`}),` 16221`,(0,h.jsx)(t.p,{children:`Parámetros de ruta, en el orden en que aparecen en la URL:`}),` 16222`,(0,h.jsx)(n,{id:`payment-item-list-parametro-api-key`,name:`api_key`,type:`string · path`,required:!0,children:(0,h.jsx)(t.p,{children:`Api Key del comercio.`})}),` 16223`,(0,h.jsx)(n,{id:`payment-item-list-parametro-limit`,name:`limit`,type:`string · path`,required:!0,children:(0,h.jsx)(t.p,{children:`Cantidad de registros por página.`})}),` 16224`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Respuesta`}),` 16225`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 16226`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"200"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16227`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Success"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16228`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "data"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: {`})]}),` 16229`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "current_page"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16230`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "first_page_url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"http://app.tilopay.com/api/v1/getLinkPaymentList/<api_key>/10?page=1"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16231`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "from"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16232`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "last_page"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`2`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16233`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "last_page_url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"http://app.tilopay.com/api/v1/getLinkPaymentList/<api_key>/10?page=2"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16234`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "next_page_url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"http://app.tilopay.com/api/v1/getLinkPaymentList/<api_key>/10?page=2"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16235`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "path"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"http://app.tilopay.com/api/v1/getLinkPaymentList/<api_key>/10"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16236`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "per_page"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`10`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16237`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "prev_page_url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16238`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "to"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`10`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16239`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "total"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`16`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16240`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "payment_link"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: [`})]}),` 16241`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 16242`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16243`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"45.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16244`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16245`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "reference"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Producto de prueba 1 TP-Shop"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16246`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://admin.tilopay.com/link/3dNjE2MA3sdd=="`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16247`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "callback_url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16248`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16249`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "times_used"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16250`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "picture"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://storage.googleapis.com/tilo-uploads/items/51087219_.png"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16251`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "create"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2022-10-24 08:45:14"`})]}),` 16252`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` },`})}),` 16253`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 16254`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`2`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16255`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"35.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16256`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16257`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "reference"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Producto de prueba 2"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16258`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://admin.tilopay.com/link/dwNjE2see3MA=="`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16259`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "callback_url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16260`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16261`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "times_used"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16262`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "picture"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://storage.googleapis.com/tilo-uploads/items/64156766_.png"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16263`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "create"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2022-10-24 08:45:14"`})]}),` 16264`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` },`})}),` 16265`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 16266`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`3`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16267`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"45.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16268`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16269`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "reference"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Producto de prueba 3"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16270`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://admin.tilopay.com/link/f4NjE2MwsdA=="`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16271`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "callback_url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16272`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16273`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "times_used"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16274`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "picture"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://storage.googleapis.com/tilo-uploads/items/88435879_.png"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16275`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "create"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2022-10-24 08:45:14"`})]}),` 16276`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` },`})}),` 16277`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 16278`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`4`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16279`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"45.00"`}),(0,h.jsx)(t.span,{style:
16279{color:`#E1E4E8`},children:`,`})]}),` 16280`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16281`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "reference"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"test"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16282`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://admin.tilopay.com/link/ceNjE2sxw2MA=="`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16283`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "callback_url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16284`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"ddd"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16285`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "times_used"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16286`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "picture"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://storage.googleapis.com/tilo-uploads/items/37716065_.png"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16287`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "create"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2022-10-24 08:45:14"`})]}),` 16288`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` },`})}),` 16289`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 16290`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`5`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16291`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"45.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16292`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16293`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "reference"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"test"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16294`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://admin.tilopay.com/link/cweNjE2Mfd5A=="`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16295`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "callback_url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16296`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"ddd"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16297`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "times_used"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16298`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "picture"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://storage.googleapis.com/tilo-uploads/items/37716065_.png"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16299`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "create"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2022-10-24 08:45:14"`})]}),` 16300`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` },`})}),` 16301`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 16302`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`6`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16303`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"45.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16304`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16305`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "reference"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"test"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16306`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://admin.tilopay.com/link/ce3NjE2fg5eMA=="`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16307`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "callback_url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16308`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"ddd"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16309`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "times_used"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16310`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "picture"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://storage.googleapis.com/tilo-uploads/items/37716065_.png"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16311`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "create"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2022-10-24 08:45:14"`})]}),` 16312`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` },`})}),` 16313`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 16314`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`7`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16315`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"45.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16316`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16317`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "reference"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"test"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16318`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://admin.tilopay.com/link/dsNjE2MAd32=="`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16319`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "callback_url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16320`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"ddd"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16321`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "times_used"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16322`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "picture"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://storage.googleapis.com/tilo-uploads/items/37716065_.png"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16323`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "create"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2022-10-24 08:45:14"`})]}),` 16324`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` },`})}),` 16325`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 16326`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`8`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16327`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"45.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16328`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16329`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "reference"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"test"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16330`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://admin.tilopay.com/link/NjE2sd32MA=="`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16331`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "callback_url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16332`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"ddd"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16333`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "times_used"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16334`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "picture"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://storage.googleapis.com/tilo-uploads/items/37716065_.png"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16335`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "create"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2022-10-24 08:45:14"`})]}),` 16336`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` },`})}),` 16337`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 16338`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`9`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16339`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`
16339 "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"45.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16340`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16341`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "reference"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"test"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16342`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://admin.tilopay.com/link/sd3NjE2MA=="`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16343`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "callback_url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16344`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"ddd"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16345`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "times_used"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16346`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "picture"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://storage.googleapis.com/tilo-uploads/items/37716065_.png"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16347`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "create"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2022-10-24 08:45:14"`})]}),` 16348`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` },`})}),` 16349`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 16350`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`10`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16351`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"45.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16352`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16353`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "reference"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"test"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16354`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://admin.tilopay.com/link/d3dNjE2MA=="`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16355`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "callback_url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16356`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"ddd"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16357`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "times_used"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16358`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "picture"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://storage.googleapis.com/tilo-uploads/items/37716065_.png"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16359`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "create"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2022-10-24 08:45:14"`})]}),` 16360`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` }`})}),` 16361`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` ]`})}),` 16362`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` }`})}),` 16363`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 16364`,(0,h.jsxs)(t.p,{children:[`Para interpretar una respuesta que no es de éxito, ver `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`cómo leer una respuesta de error`}),`.`]})]})}function Sg(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(xg,{...e})}):xg(e)}function Cg(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var wg=t({default:()=>Dg,frontmatter:()=>Tg}),Tg={title:`Links de pago`,kind:`api-index`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/procesos-operativos/errors`],description:`Operaciones de links de pago del API de Tilopay, con parámetros y ejemplos.`};function Eg(e){let t={a:`a`,code:`code`,h2:`h2`,li:`li`,p:`p`,ul:`ul`,...m(),...e.components};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`operaciones`,children:`Operaciones`}),` 16365`,(0,h.jsxs)(t.ul,{children:[` 16366`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/links-de-pago/create-link-payment`,children:`Crear link de pago`})}),` 16367`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/links-de-pago/detail-link-payment`,children:`Detalle de un link de pago`})}),` 16368`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/links-de-pago/delete-link-payment`,children:`Eliminar un link de pago`})}),` 16369`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/links-de-pago/payment-item-list`,children:`Listar links de pago`})}),` 16370`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/links-de-pago/payment-by-id`,children:`Obtener un link de pago por id`})}),` 16371`]}),` 16372`,(0,h.jsxs)(t.p,{children:[`Todas las operaciones viven en `,(0,h.jsx)(t.code,{children:`https://app.tilopay.com`}),` y, salvo las de login, requieren el token del API â ver `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`autenticación`}),`.`]})]})}function Dg(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Eg,{...e})}):Eg(e)}var Og=t({default:()=>jg,frontmatter:()=>kg}),kg={title:`API · consultTransactions`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/procesos-operativos`,`api/procesos-operativos/errors`],description:`Consulta masiva de transacciones por rango de fechas, moneda, orden o correo.`};function Ag(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,table:`table`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,...m(),...e.components},{Param:n}=t;return n||Mg(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/consultTransactions`})]})})})}),` 16373`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`Qué hace`}),` 16374`,(0,h.jsx)(t.p,{children:`Consulta transacciones por rango de fechas, con filtros opcionales.`}),` 16375`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Autenticación`}),` 16376`,(0,h.jsxs)(t.p,{children:[`Requiere el token bearer del API en el header `,(0,h.jsx)(t.code,{children:`Authorization`}),` â ver `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`autenticación`}),`.`]}),` 16377`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parámetros`}),` 16378`,(0,h.jsx)(n,{id:`consult-transactions-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Key de la integración Tilopay.`})}),` 16379`,(0,h.jsx)(n,{id:`consult-transactions-parametro-startdate`,name:`startDate`,type:`string`,required:!0,children:(0,h.jsxs)(t.p,{children:[`Fecha de inicio, formato `,(0,h.jsx)(t.code,{children:`Y-m-d H:i:s`}),` â por ejemplo "2022-01-15 00:00:00".`]})}),` 16380`,(0,h.jsx)(n,{id:`consult-transactions-parametro-enddate`,name:`endDate`,type:`string`,required:!0,children:(0,h.jsxs)(t.p,{children:[`Fecha de fin, formato `,(0,h.jsx)(t.code,{children:`Y-m-d H:i:s`}),` â por ejemplo "2022-08-01 23:59:59".`]})}),` 16381`,(0,h.jsxs)(n,{id:`consult-transactions-parametro-onlyaproved`,name:`onlyAproved`,type:`integer`,children:[(0,h.jsx)(t.p,{children:`Indica si se obtienen solo transacciones aprobadas.`}),(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Código`}),(0,h.jsx)(t.th,{children:`Valor`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`0`}),(0,h.jsx)(t.td,{children:`Cualquiera`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`1`}),(0,h.jsx)(t.td,{children:`Solo aprobadas`})]})]})]})]}),` 16382`,(0,h.jsxs)(n,{id:`consult-transactions-parametro-environment`,name:`environment`,type:`integer`,children:[(0,h.jsx)(t.p,{children:`Ambiente de las transacciones a obtener.`}),(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Código`}),(0,h.jsx)(t.th,{children:`Valor`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`0`}),(0,h.jsx)(t.td,{children:`Producción`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`1`}),(0,h.jsx)(t.td,{children:`Pruebas`})]})]})]})]}),` 16383`,(0,h.jsx)(n,{id:`consult-transactions-parametro-currency`,name:`currency`,type:`array`,children:(0,h.jsx)(t.p,{children:`Array de monedas que se desean obtener, por ejemplo ["USD", "CRC"].`})}),` 16384`,(0,h.jsx)(n,{id:`consult-transactions-parametro-merchantid`,name:`merchantId`,type:`string`,children:(0,h.jsx)(t.p,{children:`Id de comercio.`})}),` 16385`,(0,h.jsx)(n,{id:`consult-transactions-parametro-ordernumber`,name:`orderNumber`,type:`string`,children:(0,h.jsx)(t.p,{children:`Número de orden.`})}),` 16386`,(0,h.jsx)(n,{id:`consult-transactions-parametro-email`,name:`email`,type:`string`,children:(0,h.jsx)(t.p,{children:`Correo del cliente.`})}),` 16387`,(0,h.jsx)(n,{id:`consult-transactions-parametro-auth`,name:`auth`,type:`string`,children:(0,h.jsx)(t.p,{children:`Número de autorización.`})}),` 16388`,(0,h.jsx)(t.h2,{id:`request`,children:`Ejemplo de request`}),` 16389`,(0,h.jsxs)(t.p,{children:[`Los valores `,(0,h.jsx)(t.code,{children:`<...>`}),` son marcadores: reemplazalos por tus credenciales y datos.`]}),` 16390`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 16391`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16392`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "startDate"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2023-06-01 00:00:00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16393`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "endDate"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2023-06-30 23:59:59"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16394`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "onlyAproved"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16395`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "environment"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16396`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: [`})]}),` 16397`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:` "USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16398`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:` "CRC"`})}),` 16399`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` ],`})}),` 16400`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "merchantId"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<merchantId>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16401`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "orderNumber"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"12135"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16402`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "email"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:
16402`#9ECBFF`},children:`"[email protected]"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16403`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "auth"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"123456"`})]}),` 16404`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 16405`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Respuesta`}),` 16406`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 16407`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"200"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16408`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16409`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "response"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: [`})]}),` 16410`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 16411`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`734329`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16412`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "orderNumber"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"12135"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16413`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"5.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16414`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "taxes"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"0.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16415`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "discount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"0.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16416`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "discount_name"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16417`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16418`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "merchantId"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<merchantId>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16419`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "code"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16420`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "response"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Transacción aprobada"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16421`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "auth"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"123456"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16422`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "card"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"4021"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16423`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "last"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"5221"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16424`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "email"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"[email protected]"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16425`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "commission"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0.18`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16426`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "iva_commission"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0.02`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16427`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "retention_iva"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0.27`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16428`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "retention_rent"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0.09`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16429`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "cost"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0.35`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16430`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "cost_iva"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0.05`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16431`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "net_to_liquidate"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`4.04`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16432`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "capture"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Capture"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16433`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Payment"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16434`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "environment"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Production"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16435`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "date"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2024-07-31 16:59:20"`})]}),` 16436`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` },`})}),` 16437`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 16438`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`734330`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16439`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "orderNumber"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"12136"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16440`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"5.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16441`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "taxes"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"0.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16442`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "discount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"0.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16443`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "discount_name"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16444`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16445`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "merchantId"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<merchantId>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16446`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "code"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16447`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "response"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Transacción aprobada"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16448`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "auth"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"123456"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16449`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "card"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"4021"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16450`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "last"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"5221"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16451`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "email"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"[email protected]"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16452`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "commission"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0.18`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16453`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "iva_commission"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0.02`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16454`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "retention_iva"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0.27`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16455`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "retention_rent"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0.09`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16456`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "cost"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0.35`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16457`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "cost_iva"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0.05`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16458`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "net_to_liquidate"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`4.04`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16459`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "capture"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Capture"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16460`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Payment"`}),(0,h.jsx)(t.span,{style:{colo
16460r:`#E1E4E8`},children:`,`})]}),` 16461`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "environment"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Production"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16462`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "date"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2024-07-31 17:25:35"`})]}),` 16463`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` }`})}),` 16464`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` ]`})}),` 16465`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 16466`,(0,h.jsxs)(t.p,{children:[`Para interpretar una respuesta que no es de éxito, ver `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`cómo leer una respuesta de error`}),`.`]})]})}function jg(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Ag,{...e})}):Ag(e)}function Mg(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Ng=t({default:()=>Ig,frontmatter:()=>Pg}),Pg={title:`API · consult`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/procesos-operativos`,`api/procesos-operativos/errors`],description:`Consulta del estado y el monto procesado de una transacción puntual.`,gaps:[`Present in the collection example but absent from the endpoint description.`]};function Fg(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{Param:n}=t;return n||Lg(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/consult`})]})})})}),` 16467`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`Qué hace`}),` 16468`,(0,h.jsx)(t.p,{children:`Consulta una transacción especÃfica: devuelve el monto procesado y el estado de la transacción.`}),` 16469`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Autenticación`}),` 16470`,(0,h.jsxs)(t.p,{children:[`Requiere el token bearer del API en el header `,(0,h.jsx)(t.code,{children:`Authorization`}),` â ver `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`autenticación`}),`.`]}),` 16471`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parámetros`}),` 16472`,(0,h.jsx)(n,{id:`consult-parametro-key`,name:`key`,type:`string`,children:(0,h.jsx)(t.p,{children:`Key de la integración Tilopay.`})}),` 16473`,(0,h.jsx)(n,{id:`consult-parametro-ordernumber`,name:`orderNumber`,type:`string`,children:(0,h.jsx)(t.p,{children:`Número de orden consultado.`})}),` 16474`,(0,h.jsx)(n,{id:`consult-parametro-merchantid`,name:`merchantId`,type:`string`,children:(0,h.jsx)(t.p,{children:`Id de comercio.`})}),` 16475`,(0,h.jsx)(t.h2,{id:`request`,children:`Ejemplo de request`}),` 16476`,(0,h.jsxs)(t.p,{children:[`Los valores `,(0,h.jsx)(t.code,{children:`<...>`}),` son marcadores: reemplazalos por tus credenciales y datos.`]}),` 16477`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 16478`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16479`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "orderNumber"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1212122"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16480`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "merchantId"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`})]}),` 16481`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 16482`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Respuesta`}),` 16483`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 16484`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"200"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16485`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16486`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "response"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: [`})]}),` 16487`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 16488`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id_tilopay"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`734312`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16489`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "orderNumber"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1212122"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16490`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"5.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16491`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16492`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "merchantId"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"88803956"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16493`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "code"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16494`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "response"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Transacción aprobada"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16495`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "auth"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"123456"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16496`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "commission"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0.18`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16497`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "iva_commission"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0.02`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16498`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "retention_iva"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0.27`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16499`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "retention_rent"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0.09`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16500`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "cost"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0.35`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16501`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "cost_iva"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0.05`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16502`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "net_to_liquidate"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"4.04"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16503`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "capture"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Capture"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16504`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "card"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"4021"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16505`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "last"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"5221"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16506`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "environment"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Test"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16507`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Payment"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16508`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "date"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2024-07-31 16:59:20"`})]}),` 16509`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` }`})}),` 16510`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` ]`})}),` 16511`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 16512`,(0,h.jsxs)(t.p,{children:[`Para interpretar una respuesta que no es de éxito, ver `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`cómo leer una respuesta de error`}),`.`]})]})}function Ig(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Fg,{...e})}):Fg(e)}function Lg(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Rg=t({default:()=>Vg,frontmatter:()=>zg}),zg={title:`Cómo leer una respuesta de error`,kind:`concept`,status:`stable`,api_version:`v1`,last_verified:`2026-08-28`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Respuestas de TecnologÃa, 28-08-2026`],locales:[`es`,`en`],related:[`reintentos-seguros`,`api/webhooks`],gaps:[`Catálogo de códigos de rechazo del emisor: no existe una lista verificada.`],description:`Un HTTP 200 no significa éxito. Dónde viene el rechazo del emisor y cómo escribir el manejo de errores.`};function Bg(e){let t={a:`a`,code:`code`,h2:`h2`,li:`li`,p:`p`,strong:`strong`,ul:`ul`,...m(),...e.components},{Callout:n,Param:r}=t;return n||Hg(`Callout`,!0),r||Hg(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`rechazo`,children:`El rechazo del emisor`}),` 16513`,(0,h.jsx)(t.p,{children:`Cuando el emisor rechaza una transacción, la respuesta trae dos campos:`}),` 16514`,(0,h.jsx)(r,{id:`error-code`,name:`code`,type:`string`,children:(0,h.jsx)(t.p,{children:`El código de rechazo del emisor.`})}),` 16515`,(0,h.jsx)(r,{id:`error-description`,name:`description`,type:`string`,children:(0,h.jsx)(t.p,{children:`El texto del rechazo.`})}),` 16516`,(0,h.jsx)(t.h2,{id:`estado-http`,children:`Un HTTP 200 no significa éxito`}),` 16517`,(0,h.jsxs)(n,{type:`warn`,children:[(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`No hay un estándar definido de cuándo el API responde HTTP 4xx y cuándo responde HTTP 200 con 16518el error en el cuerpo.`}),` Conviven las dos formas, y hay `,(0,h.jsx)(t.strong,{children:`cuatro envolturas distintas de error 16519según el endpoint`}),`.`]}),(0,h.jsx)(t.p,{children:`Consecuencia práctica: tu manejo de errores tiene que mirar el cuerpo siempre, no solo el 16520código de estado, y tolerar más de una forma de cuerpo.`})]}),` 16521`,(0,h.jsx)(t.h2,{id:`como-manejar`,children:`Cómo escribir el manejo de errores`}),` 16522`,(0,h.jsxs)(t.ul,{children:[` 16523`,(0,h.jsxs)(t.li,{children:[`Tratá `,(0,h.jsx)(t.code,{children:`code`}),` y `,(0,h.jsx)(t.code,{children:`description`}),` como datos para registrar y mostrar, no como una enumeración 16524sobre la que ramificar.`]}),` 16525`,(0,h.jsxs)(t.li,{children:[`No hagas `,(0,h.jsx)(t.code,{children:`if (status === 200) éxito`}),`. Verificá el cuerpo.`]}),` 16526`,(0,h.jsx)(t.li,{children:`Guardá la respuesta cruda de cada rechazo: es lo que te permite reconstruir el patrón de 16527rechazos de tu comercio.`}),` 16528`,(0,h.jsxs)(t.li,{children:[`Para decidir el estado real de una transacción después de un fallo, usá 16529`,(0,h.jsx)(t.a,{href:`/developers/reintentos-seguros`,children:`reintentos seguros`}),`.`]}),` 16530`]})]})}function Vg(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Bg,{...e})}):Bg(e)}function Hg(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Ug=t({default:()=>Kg,frontmatter:()=>Wg}),Wg={title:`API · processModification`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo
16530-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`,`Respuestas de TecnologÃa, 28-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/procesos-operativos`,`api/procesos-operativos/errors`],description:`Captura, reembolso y reverso de una transacción con processModification.`,gaps:[`Present in the collection example but absent from the endpoint description.`,`No response example available.`,`Falta la lista completa de valores del campo type: se sabe que existen 1, 2 y 3, pero no la equivalencia con captura, reembolso y reversión.`]};function Gg(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{Param:n}=t;return n||qg(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/processModification`})]})})})}),` 16531`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`Qué hace`}),` 16532`,(0,h.jsx)(t.p,{children:`Permite modificar una transacción ya procesada: captura, reembolso o reverso.`}),` 16533`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Autenticación`}),` 16534`,(0,h.jsxs)(t.p,{children:[`Requiere el token bearer del API en el header `,(0,h.jsx)(t.code,{children:`Authorization`}),` â ver `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`autenticación`}),`.`]}),` 16535`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parámetros`}),` 16536`,(0,h.jsx)(n,{id:`process-modification-parametro-ordernumber`,name:`orderNumber`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Ejemplo: `,(0,h.jsx)(t.code,{children:`1214352`})]})}),` 16537`,(0,h.jsx)(n,{id:`process-modification-parametro-type`,name:`type`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Ejemplo: `,(0,h.jsx)(t.code,{children:`2`})]})}),` 16538`,(0,h.jsx)(n,{id:`process-modification-parametro-amount`,name:`amount`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Ejemplo: `,(0,h.jsx)(t.code,{children:`1.00`})]})}),` 16539`,(0,h.jsx)(n,{id:`process-modification-parametro-key`,name:`key`,type:`string`,children:(0,h.jsx)(t.p,{children:`Llave relacionada con el cliente. Se obtiene en Admin · Tilopay Checkout.`})}),` 16540`,(0,h.jsx)(t.h2,{id:`request`,children:`Ejemplo de request`}),` 16541`,(0,h.jsxs)(t.p,{children:[`Los valores `,(0,h.jsx)(t.code,{children:`<...>`}),` son marcadores: reemplazalos por tus credenciales y datos.`]}),` 16542`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 16543`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "orderNumber"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1214352"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16544`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16545`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16546`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`})]}),` 16547`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 16548`,(0,h.jsx)(t.h2,{id:`respuesta-modificacion`,children:`Respuesta`}),` 16549`,(0,h.jsx)(n,{id:`modification-type`,name:`type`,type:`string`,children:(0,h.jsx)(t.p,{children:`Tipo de modificación aplicada.`})}),` 16550`,(0,h.jsx)(n,{id:`modification-transactionid`,name:`transactionId`,type:`string`,children:(0,h.jsx)(t.p,{children:`Identificador de la transacción.`})}),` 16551`,(0,h.jsx)(n,{id:`modification-reasoncode`,name:`ReasonCode`,type:`string`,children:(0,h.jsx)(t.p,{children:`Código de resultado de la modificación.`})}),` 16552`,(0,h.jsx)(n,{id:`modification-reasoncodedescription`,name:`ReasonCodeDe
16552scription`,type:`string`,children:(0,h.jsx)(t.p,{children:`Texto del resultado.`})}),` 16553`,(0,h.jsx)(n,{id:`modification-orderhash`,name:`OrderHash`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Hash de la orden. Ver la nota sobre `,(0,h.jsx)(t.code,{children:`orderHash`}),` en `,(0,h.jsx)(t.a,{href:`/developers/api/webhooks#verificacion`,children:`webhooks`}),`.`]})}),` 16554`,(0,h.jsxs)(t.p,{children:[`Para interpretar una respuesta que no es de éxito, ver `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`cómo leer una respuesta de error`}),`.`]})]})}function Kg(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Gg,{...e})}):Gg(e)}function qg(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Jg=t({default:()=>Zg,frontmatter:()=>Yg}),Yg={title:`API · Dividir liquidación (split)`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/procesos-operativos`,`api/procesos-operativos/errors`],description:`División de la liquidación de una orden entre varios comercios facilitados.`,gaps:[`Present in the collection example but absent from the endpoint description.`]};function Xg(e){let t={a:`a`,code:`code`,h2:`h2`,li:`li`,p:`p`,pre:`pre`,span:`span`,ul:`ul`,...m(),...e.components},{Param:n}=t;return n||Qg(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/orders/liquidation/split`})]})})})}),` 16555`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`Qué hace`}),` 16556`,(0,h.jsxs)(t.p,{children:[`Divide la liquidación de una orden entre varios comercios. Solo aplica a comercios que usan Tilopay como facilitador de pago, y las órdenes resultantes se identifican con el prefijo `,(0,h.jsx)(t.code,{children:`SL|`}),`.`]}),` 16557`,(0,h.jsx)(t.p,{children:`Reglas:`}),` 16558`,(0,h.jsxs)(t.ul,{children:[` 16559`,(0,h.jsx)(t.li,{children:`Los comercios deben estar aprobados y ser del mismo paÃs.`}),` 16560`,(0,h.jsx)(t.li,{children:`Si la partición es menor al monto total de la orden, el restante se le asigna al comercio que realizó la transacción original.`}),` 16561`,(0,h.jsx)(t.li,{children:`Solo aplica sobre órdenes aprobadas completamente.`}),` 16562`]}),` 16563`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Autenticación`}),` 16564`,(0,h.jsxs)(t.p,{children:[`Requiere el token bearer del API en el header `,(0,h.jsx)(t.code,{children:`Authorization`}),` â ver `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`autenticación`}),`.`]}),` 16565`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parámetros`}),` 16566`,(0,h.jsx)(n,{id:`split-parametro-order-id`,name:`order_id`,type:`string`,children:(0,h.jsx)(t.p,{children:`Id de la orden aprobada en Tilopay.`})}),` 16567`,(0,h.jsx)(n,{id:`split-parametro-commerces`,name:`commerces`,type:`array`,children:(0,h.jsxs)(t.p,{children:[`Array asociativo con las llaves `,(0,h.jsx)(t.code,{children:`email`}),` y `,(0,h.jsx)(t.code,{children:`amount`}),` de cada comercio con el que se divide la liquidación. Incluir al comercio propietario es opcional: si no se especifica su monto, se le asigna el excedente de la partición, y si se incluye y hay excedente, se le suma.`]})}),` 16568`,(0,h.jsx)(n,{id:`split-parametro-lang`,name:`lang`,type:`string`,children:(0,h.jsx)(t.p,{children:`Idioma de la solicitud.`})}),` 16569`,(0,h.jsx)(t.h2,{id:`request`,children:`Ejemplo de request`}),` 16570`,(0,h.jsxs)(t.p,{children:[`Los valores `,(0,h.jsx)(t.code,{children:`<...>`}),` son marcadores: reemplazalos por tus credenciales y datos.`]}),` 16571`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 16572`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "order_id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16573`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "commerces"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: [`})]}),` 16574`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 16575`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "email"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"[email protected]"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16576`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"7.5"`})]}),` 16577`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` },`})}),` 16578`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 16579`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "email"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"[email protected]"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16580`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"5.5"`})]}),` 16581`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` }`})}),` 16582`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` ],`})}),` 16583`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "lang"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"en"`})]}),` 16584`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 16585`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Respuesta`}),` 16586`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 16587`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"200"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16588`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Great"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16589`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Order splitted successfully"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16590`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "response"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: {`})]}),` 16591`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "total_order_splitted"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`3`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16592`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "order_id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16593`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "order_number"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"PFC000069-TYP785237_313"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16594`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "order_key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16595`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "order_currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16596`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "order_amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"33.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16597`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "splitted_orders"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: [`})]}),` 16598`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 16599`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16600`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`20`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16601`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "commerce_name"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Commerce owner name"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16602`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "commerce_email"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"[email protected]"`})]}),` 16603`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` },`})}),` 16604`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 16605`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`2`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16606`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`7.5`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16607`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "commerce_name"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Commerce name"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16608`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "commerce_email"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"[email protected]"`})]}),` 16609`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` },`})}),` 16610`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 16611`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`3`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16612`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`5.5`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16613`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "commerce_name"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Commerce name"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16614`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "commerce_email"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"[email protected]"`})]}),` 16615`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` }`})}),` 16616`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` ]`})}),` 16617`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` }`})}),` 16618`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 16619`,(0,h.jsxs)(t.p,{children:[`Para interpretar una respuesta que no es de éxito, ver `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`cómo leer una respuesta de error`}),`.`]})]})}function Zg(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Xg,{...e})}):Xg(e)}function Qg(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var $g=t({default:()=>n_,frontmatter:()=>e_}),e_={title:`Procesos operativos`,kind:`api-index`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/procesos-operativos/errors`],description:`Operaciones de procesos operativos del API de Tilopay, con parámetros y ejemplos.`};function t_(e){let t={a:`a`,code:`code`,h2:`h2`,li:`li`,p:`p`,ul:`ul`,...m(),...e.components};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`operaciones`,children:`Operaciones`}),` 16620`,(0,h.jsxs)(t.ul,{children:[` 16621`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/process-modification`,children:`processModification`})}),` 16622`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/consult`,children:`consult`})}),` 16623`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/procesos-
16623operativos/consult-transactions`,children:`consultTransactions`})}),` 16624`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/split`,children:`Dividir liquidación (split)`})}),` 16625`]}),` 16626`,(0,h.jsxs)(t.p,{children:[`Estas operaciones son transversales: sirven para cualquiera de los cuatro `,(0,h.jsx)(t.a,{href:`/developers`,children:`caminos de integración`}),`, sin importar cómo se originó el cobro.`]}),` 16627`,(0,h.jsxs)(t.p,{children:[`Para interpretar una respuesta que no es de éxito, ver `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`cómo leer una respuesta de error`}),`.`]}),` 16628`,(0,h.jsxs)(t.p,{children:[`Todas las operaciones viven en `,(0,h.jsx)(t.code,{children:`https://app.tilopay.com`}),` y, salvo las de login, requieren el token del API â ver `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`autenticación`}),`.`]})]})}function n_(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(t_,{...e})}):t_(e)}var r_=t({default:()=>o_,frontmatter:()=>i_}),i_={title:`API · Crear cupón`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/recurrentes/cupones`,`api/procesos-operativos/errors`],description:`Creación de cupones de descuento para planes recurrentes.`,gaps:[`No response example available.`]};function a_(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,table:`table`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,...m(),...e.components},{Param:n}=t;return n||s_(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/createCoupon`})]})})})}),` 16629`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`Qué hace`}),` 16630`,(0,h.jsx)(t.p,{children:`Crea un cupón de descuento para un plan recurrente: tipo de descuento, expiración, permisos de usuario y de correo, y lÃmites de uso.`}),` 16631`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Autenticación`}),` 16632`,(0,h.jsxs)(t.p,{children:[`Requiere el token bearer del API en el header `,(0,h.jsx)(t.code,{children:`Authorization`}),` â ver `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`autenticación`}),`.`]}),` 16633`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parámetros`}),` 16634`,(0,h.jsx)(n,{id:`create-coupon-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Key de la integración Tilopay.`})}),` 16635`,(0,h.jsx)(n,{id:`create-coupon-parametro-planid`,name:`planId`,type:`integer`,required:!0,children:(0,h.jsx)(t.p,{children:`Id del plan recurrente.`})}),` 16636`,(0,h.jsxs)(n,{id:`create-coupon-parametro-active-users`,name:`active_users`,type:`integer`,required:!0,children:[(0,h.jsx)(t.p,{children:`Permiso de usuarios.`}),(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Código`}),(0,h.jsx)(t.th,{children:`Valor`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`0`}),(0,h.jsx)(t.td,{children:`Permitir solo usuarios nuevos`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`1`}),(0,h.jsx)(t.td,{children:`Permitir usuarios ya registrados`})]})]})]})]}),` 16637`,(0,h.jsxs)(n,{id:`create-coupon-parametro-type-discount`,name:`type_discount`,type:`integer`,required:!0,children:[(0,h.jsx)(t.p,{children:`Tipo de descuento.`}),(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Código`}),(0,h.jsx)(t.th,{children:`Valor`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`1`}),(0,h.jsx)(t.td,{children:`Porcentaje`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`2`}),(0,h.jsx)(t.td,{children:`Monto fijo`})]})]})]})]}),` 16638`,(0,h.jsx)(n,{id:`create-coupon-parametro-discount`,name:`discount`,type:`integer`,required:!0,children:(0,h.jsx)(t.p,{children:`Valor numérico del descuento.`})}),` 16639`,(0,h.jsx)(n,{id:`create-coupon-parametro-expire`,name:`expire`,type:`string`,required:!0,children:(0,h.jsxs)(t.p,{children:[`Fecha de expiración del cupón, formato `,(0,h.jsx)(t.code,{children:`Y-m-d`}),` (por ejemplo 2025-10-20).`]})}),` 16640`,(0,h.jsxs)(n,{id:`create-coupon-parametro-email-group`,name:`email_group`,type:`integer`,required:!0,children:[(0,h.jsx)(t.p,{children:`Permiso de correos.`}),(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Código`}),(0,h.jsx)(t.th,{children:`Valor`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`1`}),(0,h.jsx)(t.td,{children:`Correos especÃficos`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`2`}),(0,h.jsx)(t.td,{children:`Cualquier correo`})]})]})]})]}),` 16641`,(0,h.jsx)(n,{id:`create-coupon-parametro-email`,name:`email`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Lista de correos separados por coma. Requerido si `,(0,h.jsx)(t.code,{children:`email_group`}),` se envÃa en 1.`]})}),` 16642`,(0,h.jsx)(n,{id:`create-coupon-parametro-usage`,name:`usage`,type:`integer`,children:(0,h.jsx)(t.p,{children:`Cantidad total de usos.`})}),` 16643`,(0,h.jsx)(n,{id:`create-coupon-parametro-renews`,name:`renews`,type:`integer`,children:(0,h.jsx)(t.p,{children:`Cantidad total de renovaciones válidas.`})}),` 16644`,(0,h.jsx)(n,{id:`create-coupon-parametro-renews-by-user`,name:`renews_by_user`,type:`integer`,children:(0,h.jsx)(t.p,{children:`Total de usos por un mismo usuario.`})}),` 16645`,(0,h.jsx)(t.h2,{id:`request`,children:`Ejemplo de request`}),` 16646`,(0,h.jsxs)(t.p,{children:[`Los valores `,(0,h.jsx)(t.code,{children:`<...>`}),` son marcadores: reemplazalos por tus credenciales y datos.`]}),` 16647`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 16648`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16649`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "planId"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`10`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16650`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "active_users"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16651`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type_discount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16652`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "discount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`40`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16653`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "expire"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2025-10-20"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16654`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "email_group"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16655`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "email"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"[email protected], [email protected]"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16656`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "usage"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16657`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "renews"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`2`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16658`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "renews_by_user"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`2`})]}),` 16659`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 16660`,(0,h.jsxs)(t.p,{children:[`Para interpretar una respuesta que no es de éxito, ver `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`cómo leer una respuesta de error`}),`.`]})]})}function o_(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(a_,{...e})}):a_(e)}function s_(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var c_=t({default:()=>d_,frontmatter:()=>l_}),l_={title:`API · Eliminar cupón`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/recurrentes/cupones`,`api/procesos-operativos/errors`],description:`Eliminación de un cupón recurrente por id.`,gaps:[`No response example available.`]};function u_(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{Param:n}=t;return n||f_(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/deleteCoupon`})]})})})}),` 16661`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`Qué hace`}),` 16662`,(0,h.jsx)(t.p,{children:`Elimina un cupón.`}),` 16663`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Autenticación`}),` 16664`,(0,h.jsxs)(t.p,{children:[`Requiere el token bearer del API en el header `,(0,h.jsx)(t.code,{children:`Authorization`}),` â ver `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`autenticación`}),`.`]}),` 16665`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parámetros`}),` 16666`,(0,h.jsx)(n,{id:`delete-coupon-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Key de la integración Tilopay.`})}),` 16667`,(0,h.jsx)(n,{id:`delete-coupon-parametro-id`,name:`id`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Id del cupón.`})}),` 16668`,(0,h.jsx)(t.h2,{id:`request`,children:`Ejemplo de request`}),` 16669`,(0,h.jsxs)(t.p,{children:[`Los valores `,(0,h.jsx)(t.code,{children:`<...>`}),` son marcadores: reemplazalos por tus credenciales y datos.`]}),` 16670`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 16671`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16672`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1"`})]}),` 16673`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 16674`,(0,h.jsxs)(t.p,{children:[`Para interpretar una respuesta que no es de éxito, ver `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`cómo leer una respuesta de error`}),`.`]})]})}function d_(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(u_,{...e})}):u_(e)}function f_(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var p_=t({default:()=>g_,frontmatter:()=>m_}),m_={title:`API · Obtener un cupón`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/recurrentes/cupones`,`api/procesos-operativos/errors`],description:`Consulta de un cupón recurrente por id.`,gaps:[`No response example available.`]};function h_(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{Param:n}=t;return n||__(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/getCoupon`})]})})})}),` 16675`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`Qué hace`}),` 16676`,(0,h.jsx)(t.p,{children:`Devuelve un cupón puntual.`}),` 16677`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Autenticación`}),` 16678`,(0,h.jsxs)(t.p,{children:[`Requiere el token bearer del API en el header `,(0,h.jsx)(t.code,{children:`Authorization`}),` â ver `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`autenticación`}),`.`]}),` 16679`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parámetros`}),` 16680`,(0,h.jsx)(n,{id:`get-coupon-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Key de la integración Tilopay.`})}),` 16681`,(0,h.jsx)(n,{id:`get-coupon-parametro-id`,name:`id`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Id del cupón.`})}),` 16682`,(0,h.jsx)(t.h2,{id:`request`,children:`Ejemplo de request`}),` 16683`,(0,h.jsxs)(t.p,{children:[`Los valores `,(0,h.jsx)(t.code,{children:`<...>`}),` son marcadores: reemplazalos por tus credenciales y datos.`]}),` 16684`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 16685`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16686`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8
16686FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1"`})]}),` 16687`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 16688`,(0,h.jsxs)(t.p,{children:[`Para interpretar una respuesta que no es de éxito, ver `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`cómo leer una respuesta de error`}),`.`]})]})}function g_(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(h_,{...e})}):h_(e)}function __(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var v_=t({default:()=>x_,frontmatter:()=>y_}),y_={title:`API · Listar cupones de un plan`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/recurrentes/cupones`,`api/procesos-operativos/errors`],description:`Listado de los cupones de un plan recurrente.`,gaps:[`No response example available.`]};function b_(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{Param:n}=t;return n||S_(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/getRepeatCoupons`})]})})})}),` 16689`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`Qué hace`}),` 16690`,(0,h.jsx)(t.p,{children:`Devuelve los cupones asociados a un plan recurrente.`}),` 16691`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Autenticación`}),` 16692`,(0,h.jsxs)(t.p,{children:[`Requiere el token bearer del API en el header `,(0,h.jsx)(t.code,{children:`Authorization`}),` â ver `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`autenticación`}),`.`]}),` 16693`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parámetros`}),` 16694`,(0,h.jsx)(n,{id:`get-coupons-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Key de la integración Tilopay.`})}),` 16695`,(0,h.jsx)(n,{id:`get-coupons-parametro-id`,name:`id`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Id del plan recurrente.`})}),` 16696`,(0,h.jsx)(t.h2,{id:`request`,children:`Ejemplo de request`}),` 16697`,(0,h.jsxs)(t.p,{children:[`Los valores `,(0,h.jsx)(t.code,{children:`<...>`}),` son marcadores: reemplazalos por tus credenciales y datos.`]}),` 16698`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 16699`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16700`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1"`})]}),` 16701`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 16702`,(0,h.jsxs)(t.p,{children:[`Para interpretar una respuesta que no es de éxito, ver `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`cómo leer una respuesta de error`}),`.`]})]})}function x_(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(b_,{...e})}):b_(e)}function S_(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var C_=t({default:()=>E_,frontmatter:()=>w_}),w_={title:`API · Recurrentes · Cupones`,kind:`api-index`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/procesos-operativos/errors`],description:`Operaciones de recurrentes · cupones del API de Tilopay, con parámetros y ejemplos.`};function T_(e){let t={a:`a`,code:`code`,h2:`h2`,li:`li`,p:`p`,ul:`ul`,...m(),...e.components};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`operaciones`,children:`Operaciones`}),` 16703`,(0,h.jsxs)(t.ul,{children:[` 16704`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/cupones/create-coupon`,children:`Crear cupón`})}),` 16705`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/cupones/get
16705-coupons`,children:`Listar cupones de un plan`})}),` 16706`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/cupones/get-coupon`,children:`Obtener un cupón`})}),` 16707`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/cupones/delete-coupon`,children:`Eliminar cupón`})}),` 16708`]}),` 16709`,(0,h.jsxs)(t.p,{children:[`Todas las operaciones viven en `,(0,h.jsx)(t.code,{children:`https://app.tilopay.com`}),` y, salvo las de login, requieren el token del API â ver `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`autenticación`}),`.`]})]})}function E_(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(T_,{...e})}):T_(e)}var D_=t({default:()=>A_,frontmatter:()=>O_}),O_={title:`API · Crear plan recurrente`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/recurrentes/planes`,`api/procesos-operativos/errors`],description:`Creación de planes recurrentes: frecuencias, prueba gratis, modalidades y webhooks.`};function k_(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,table:`table`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,...m(),...e.components},{Param:n}=t;return n||j_(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/createPlanRepeat`})]})})})}),` 16710`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`Qué hace`}),` 16711`,(0,h.jsx)(t.p,{children:`Crea un plan de suscripción: frecuencia de cobro, moneda, periodo de prueba, modalidades y webhooks.`}),` 16712`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Autenticación`}),` 16713`,(0,h.jsxs)(t.p,{children:[`Requiere el token bearer del API en el header `,(0,h.jsx)(t.code,{children:`Authorization`}),` â ver `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`autenticación`}),`.`]}),` 16714`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parámetros`}),` 16715`,(0,h.jsx)(n,{id:`create-plan-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Key de la integración Tilopay.`})}),` 16716`,(0,h.jsx)(n,{id:`create-plan-parametro-title`,name:`title`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`TÃtulo del plan recurrente.`})}),` 16717`,(0,h.jsx)(n,{id:`create-plan-parametro-description`,name:`description`,type:`string`,children:(0,h.jsx)(t.p,{children:`Descripción del plan.`})}),` 16718`,(0,h.jsxs)(n,{id:`create-plan-parametro-frecuency`,name:`frecuency`,type:`integer`,children:[(0,h.jsx)(t.p,{children:`Frecuencia de cobro.`}),(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Código`}),(0,h.jsx)(t.th,{children:`Valor`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`1`}),(0,h.jsx)(t.td,{children:`Diario`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`2`}),(0,h.jsx)(t.td,{children:`Semanal`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`3`}),(0,h.jsx)(t.td,{children:`Mensual`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`4`}),(0,h.jsx)(t.td,{children:`Anual`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`5`}),(0,h.jsx)(t.td,{children:`Quincenal`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`6`}),(0,h.jsx)(t.td,{children:`Bimestral`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`7`}),(0,h.jsx)(t.td,{children:`Trimestral`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`8`}),(0,h.jsx)(t.td,{children:`Cuatrimestral`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`9`}),(0,h.jsx)(t.td,{children:`Semestral`})]})]})]})]}),` 16719`,(0,h.jsx)(n,{id:`create-plan-parametro-currency`,name:`currency`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Código de moneda en formato ISO 4217.`})}),` 16720`,(0,h.jsx)(n,{id:`create-plan-parametro-first-amount`,name:`first_amount`,type:`integer`,required:!0,children:(0,h.jsx)(t.p,{children:`Monto por pago inicial.`})}),` 16721`,(0,h.jsx)(n,{id:`create-plan-parametro-trial`,name:`trial`,type:`integer`,required:!0,children:(0,h.jsx)(t.p,{children:`Activa el periodo de prueba gratis: 0 n
16721o, 1 sÃ.`})}),` 16722`,(0,h.jsx)(n,{id:`create-plan-parametro-trial-days`,name:`trial_days`,type:`integer`,required:!0,children:(0,h.jsx)(t.p,{children:`DÃas del periodo de prueba gratis.`})}),` 16723`,(0,h.jsx)(n,{id:`create-plan-parametro-attempts`,name:`attempts`,type:`integer`,required:!0,children:(0,h.jsx)(t.p,{children:`Cantidad de reintentos para cobros fallidos.`})}),` 16724`,(0,h.jsx)(n,{id:`create-plan-parametro-modality`,name:`modality`,type:`array`,required:!0,children:(0,h.jsx)(t.p,{children:`Array de modalidades del plan.`})}),` 16725`,(0,h.jsx)(n,{id:`create-plan-parametro-thanks-url`,name:`thanks_url`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Campo opcional. URL de agradecimiento propia del comercio; debe soportar el método `,(0,h.jsx)(t.strong,{children:`GET`}),`.`]})}),` 16726`,(0,h.jsx)(n,{id:`create-plan-parametro-webhook-subscribe`,name:`webhook_subscribe`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Campo opcional. URL del webhook, por método `,(0,h.jsx)(t.strong,{children:`POST`}),`, que recibe el callback en el cuerpo de la solicitud cuando un cliente adquiere una suscripción de forma exitosa. Ejemplo de los datos enviados: `,(0,h.jsx)(t.code,{children:`{'id_plan' : 1, 'email' : '[email protected]', 'modality' : 'ModalityName', 'amount' : 25, 'frequency' : '', 'coupon' : '5HT5W8YT', 'free_trial' : 1, 'next_payment_date' : '2023-02-25'}`})]})}),` 16727`,(0,h.jsx)(n,{id:`create-plan-parametro-webhook-payment`,name:`webhook_payment`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Campo opcional. URL del webhook, por método `,(0,h.jsx)(t.strong,{children:`POST`}),`, que recibe el callback en el cuerpo de la solicitud cuando el cargo al cliente se realiza con éxito. Ejemplo de los datos enviados: `,(0,h.jsx)(t.code,{children:`{'id_plan' : 1, 'email' : '[email protected]', 'amount' : 25, 'auth' : '123456', 'orderNumber' : 'PRE123456'}`})]})}),` 16728`,(0,h.jsx)(n,{id:`create-plan-parametro-webhook-rejected`,name:`webhook_rejected`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Campo opcional. URL del webhook, por método `,(0,h.jsx)(t.strong,{children:`POST`}),`, que recibe el callback en el cuerpo de la solicitud cuando un pago falla. Ejemplo de los datos enviados: `,(0,h.jsx)(t.code,{children:`{'id_plan' : 1, 'email' : '[email protected]', 'amount' : 25}`})]})}),` 16729`,(0,h.jsx)(n,{id:`create-plan-parametro-webhook-unsubscribe`,name:`webhook_unsubscribe`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Campo opcional. URL del webhook, por método `,(0,h.jsx)(t.strong,{children:`POST`}),`, que recibe el callback en el cuerpo de la solicitud cuando un cliente cancela la suscripción a uno de sus planes. Ejemplo de los datos enviados: `,(0,h.jsx)(t.code,{children:`{'id_plan' : 1, 'email' : '[email protected]', 'expire' : '2023-02-25'}`})]})}),` 16730`,(0,h.jsx)(n,{id:`create-plan-parametro-webhook-reactive`,name:`webhook_reactive`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Campo opcional. URL del webhook, por método `,(0,h.jsx)(t.strong,{children:`POST`}),`, que recibe el callback en el cuerpo de la solicitud cuando un cliente reactiva la suscripción a uno de sus planes. Ejemplo de los datos enviados: `,(0,h.jsx)(t.code,{children:`{'id_plan' : 1, 'email' : '[email protected]', 'next_payment_date' : '2023-02-25'}`})]})}),` 16731`,(0,h.jsx)(n,{id:`create-plan-parametro-end-at`,name:`end_at`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Fecha de finalización del plan recurrente, formato `,(0,h.jsx)(t.code,{children:`d-m-Y`}),` (por ejemplo 25-09-2022). Si el plan no tiene fecha de fin, se envÃa vacÃo.`]})}),` 16732`,(0,h.jsx)(n,{id:`create-plan-parametro-notify`,name:`notify`,type:`integer`,children:(0,h.jsxs)(t.p,{children:[`En 1 agrega al correo de notificación el texto de `,(0,h.jsx)(t.code,{children:`notify_detail`}),` y `,(0,h.jsx)(t.code,{children:`notify_note`}),`. En 0 no agrega ninguno de los dos.`]})}),` 16733`,(0,h.jsx)(n,{id:`create-plan-parametro-notify-detail-es`,name:`notify_detail_es`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Texto del detalle en español. Opcional si `,(0,h.jsx)(t.code,{children:`notify`}),` es 0.`]})}),` 16734`,(0,h.jsx)(n,{id:`create-plan-parametro-notify-detail-en`,name:`notify_detail_en`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Texto del detalle en inglés. Opcional si `,(0,h.jsx)(t.code,{children:`notify`}),` es 0.`]})}),` 16735`,(0,h.jsx)(n,{id:`create-plan-parametro-notify-note-es`,name:`notify_n
16735ote_es`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Texto de las notas en español. Opcional si `,(0,h.jsx)(t.code,{children:`notify`}),` es 0.`]})}),` 16736`,(0,h.jsx)(n,{id:`create-plan-parametro-notify-note-en`,name:`notify_note_en`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Texto de las notas en inglés. Opcional si `,(0,h.jsx)(t.code,{children:`notify`}),` es 0.`]})}),` 16737`,(0,h.jsx)(t.h2,{id:`request`,children:`Ejemplo de request`}),` 16738`,(0,h.jsxs)(t.p,{children:[`Los valores `,(0,h.jsx)(t.code,{children:`<...>`}),` son marcadores: reemplazalos por tus credenciales y datos.`]}),` 16739`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 16740`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16741`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "title"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Plan title"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16742`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Plan description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16743`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "frecuency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16744`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16745`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "first_amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16746`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "trial"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16747`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "trial_days"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16748`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "attempts"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16749`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "modality"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: [`})]}),` 16750`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 16751`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "title"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Basic"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16752`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`10`})]}),` 16753`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` },`})}),` 16754`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 16755`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "title"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Premium"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16756`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`30`})]}),` 16757`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` }`})}),` 16758`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` ],`})}),` 16759`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "thanks_url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16760`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "webhook_subscribe"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16761`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "webhook_payment"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16762`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "webhook_rejected"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16763`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "webhook_unsubscribe"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16764`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "webhook_reactive"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16765`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "end_at"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"25-10-2023"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16766`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "notify"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16767`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "notify_detail_es"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16768`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "notify_detail_en"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16769`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`}
16769,children:` "notify_note_es"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16770`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "notify_note_en"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`})]}),` 16771`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 16772`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Respuesta`}),` 16773`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 16774`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"200"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16775`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "status"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16776`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Success"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16777`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`624`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16778`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://app.tilopay.com/link/TmpJMHwx"`})]}),` 16779`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 16780`,(0,h.jsxs)(t.p,{children:[`Para interpretar una respuesta que no es de éxito, ver `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`cómo leer una respuesta de error`}),`.`]})]})}function A_(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(k_,{...e})}):k_(e)}function j_(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var M_=t({default:()=>F_,frontmatter:()=>N_}),N_={title:`API · Eliminar plan recurrente`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/recurrentes/planes`,`api/procesos-operativos/errors`],description:`Eliminación de un plan recurrente por id.`};function P_(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{Param:n}=t;return n||I_(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/deletePlanRepeat`})]})})})}),` 16781`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`Qué hace`}),` 16782`,(0,h.jsx)(t.p,{children:`Elimina un plan recurrente.`}),` 16783`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Autenticación`}),` 16784`,(0,h.jsxs)(t.p,{children:[`Requiere el token bearer del API en el header `,(0,h.jsx)(t.code,{children:`Authorization`}),` â ver `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`autenticación`}),`.`]}),` 16785`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parámetros`}),` 16786`,(0,h.jsx)(n,{id:`delete-plan-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Key de la integración Tilopay.`})}),` 16787`,(0,h.jsx)(n,{id:`delete-plan-parametro-id`,name:`id`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Id del plan recurrente.`})}),` 16788`,(0,h.jsx)(t.h2,{id:`request`,children:`Ejemplo de request`}),` 16789`,(0,h.jsxs)(t.p,{children:[`Los valores `,(0,h.jsx)(t.code,{children:`<...>`}),` son marcadores: reemplazalos por tus credenciales y datos.`]}),` 16790`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 16791`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16792`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"625"`})]}),` 16793`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 16794`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Respuesta`}),` 16795`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 16796`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"200"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16797`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "status"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16798`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Success"`})]}),` 16799`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 16800`,(0,h.jsxs)(t.p,{children:[`Para interpretar una respuesta que no es de éxito, ver `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`cómo leer una respuesta de error`}),`.`]})]})}function F_(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(P_,{...e})}):P_(e)}function I_(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var L_=t({default:()=>B_,frontmatter:()=>R_}),R_={title:`API · Editar plan recurrente`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/recurrentes/planes`,`api/procesos-operativos/errors`],description:`Edición de un plan recurrente y de su estado.`};function z_(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,table:`table`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,...m(),...e.components},{Param:n}=t;return n||V_(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/editPlanRepeat`})]})})})}),` 16801`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`Qué hace`}),` 16802`,(0,h.jsx)(t.p,{children:`Edita un plan existente, incluido su estado.`}),` 16803`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Autenticación`}),` 16804`,(0,h.jsxs)(t.p,{children:[`Requiere el token bearer del API en el header `,(0,h.jsx)(t.code,{children:`Authorization`}),` â ver `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`autenticación`}),`.`]}),` 16805`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parámetros`}),` 16806`,(0,h.jsx)(n,{id:`edit-plan-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Key de la integración Tilopay.`})}),` 16807`,(0,h.jsx)(n,{id:`edit-plan-parametro-id`,name:`id`,type:`integer`,required:!0,children:(0,h.jsx)(t.p,{children:`Id del plan recurrente.`})}),` 16808`,(0,h.jsx)(n,{id:`edit-plan-parametro-title`,name:`title`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`TÃtulo del plan recurrente.`})}),` 16809`,(0,h.jsx)(n,{id:`edit-plan-parametro-description`,name:`description`,type:`string`,children:(0,h.jsx)(t.p,{children:`Descripción del plan.`})}),` 16810`,(0,h.jsxs)(n,{id:`edit-plan-parametro-frecuency`,name:`frecuency`,type:`integer`,children:[(0,h.jsx)(t.p,{children:`Frecuencia de cobro.`}),(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Código`}),(0,h.jsx)(t.th,{children:`Valor`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`1`}),(0,h.jsx)(t.td,{children:`Diario`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`2`}),(0,h.jsx)(t.td,{children:`Semanal`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`3`}),(0,h.jsx)(t.td,{children:`Mensual`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`4`}),(0,h.jsx)(t.td,{children:`Anual`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`5`}),(0,h.jsx)(t.td,{children:`Quincenal`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`6`}),(0,h.jsx)(t.td,{children:`Bimestral`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`7`}),(0,h.jsx)(t.td,{children:`Trimestral`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`8`}),(0,h.jsx)(t.td,{children:`Cuatrimestral`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`9`}),(0,h.jsx)(t.td,{children:`Semestral`})]})]})]})]}),` 16811`,(0,h.jsx)(n,{id:`edit-plan-parametro-currency`,name:`currency`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Código de moneda en formato ISO 4217.`})}),` 16812`,(0,h.jsx)(n,{id:`edit-plan-parametro-first-amount`,name:`first_amount`,type:`integer`,required:!0,children:(0,h.jsx)(t.p,{children:`Monto por pago inicial.`})}),` 16813`,(0,h.jsx)(n,{id:`edit-plan-parametro-trial`,name:`trial`,type:`integer`,required:!0,children:(0,h.jsx)(t.p,{children:`Activa el periodo de prueba gratis: 0 n
16813o, 1 sÃ.`})}),` 16814`,(0,h.jsx)(n,{id:`edit-plan-parametro-trial-days`,name:`trial_days`,type:`integer`,required:!0,children:(0,h.jsx)(t.p,{children:`DÃas del periodo de prueba gratis.`})}),` 16815`,(0,h.jsx)(n,{id:`edit-plan-parametro-attempts`,name:`attempts`,type:`integer`,required:!0,children:(0,h.jsx)(t.p,{children:`Cantidad de reintentos para cobros fallidos.`})}),` 16816`,(0,h.jsxs)(n,{id:`edit-plan-parametro-status`,name:`status`,type:`integer`,required:!0,children:[(0,h.jsx)(t.p,{children:`Estado del plan recurrente.`}),(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Código`}),(0,h.jsx)(t.th,{children:`Valor`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`0`}),(0,h.jsx)(t.td,{children:`Inactivo`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`1`}),(0,h.jsx)(t.td,{children:`Activo`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`2`}),(0,h.jsx)(t.td,{children:`Activo pero sin registros nuevos`})]})]})]})]}),` 16817`,(0,h.jsx)(n,{id:`edit-plan-parametro-thanks-url`,name:`thanks_url`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Campo opcional. URL de agradecimiento propia del comercio; debe soportar el método `,(0,h.jsx)(t.strong,{children:`GET`}),`.`]})}),` 16818`,(0,h.jsx)(n,{id:`edit-plan-parametro-webhook-subscribe`,name:`webhook_subscribe`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Campo opcional. URL del webhook, por método `,(0,h.jsx)(t.strong,{children:`POST`}),`, que recibe el callback en el cuerpo de la solicitud cuando un cliente adquiere una suscripción de forma exitosa. Ejemplo de los datos enviados: `,(0,h.jsx)(t.code,{children:`{'id_plan' : 1, 'email' : '[email protected]', 'modality' : 'ModalityName', 'amount' : 25, 'frequency' : '', 'coupon' : '5HT5W8YT', 'free_trial' : 1, 'next_payment_date' : '2023-02-25'}`})]})}),` 16819`,(0,h.jsx)(n,{id:`edit-plan-parametro-webhook-payment`,name:`webhook_payment`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Campo opcional. URL del webhook, por método `,(0,h.jsx)(t.strong,{children:`POST`}),`, que recibe el callback en el cuerpo de la solicitud cuando el cargo al cliente se realiza con éxito. Ejemplo de los datos enviados: `,(0,h.jsx)(t.code,{children:`{'id_plan' : 1, 'email' : '[email protected]', 'amount' : 25, 'auth' : '123456', 'orderNumber' : 'PRE123456'}`})]})}),` 16820`,(0,h.jsx)(n,{id:`edit-plan-parametro-webhook-rejected`,name:`webhook_rejected`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Campo opcional. URL del webhook, por método `,(0,h.jsx)(t.strong,{children:`POST`}),`, que recibe el callback en el cuerpo de la solicitud cuando un pago falla. Ejemplo de los datos enviados: `,(0,h.jsx)(t.code,{children:`{'id_plan' : 1, 'email' : '[email protected]', 'amount' : 25}`})]})}),` 16821`,(0,h.jsx)(n,{id:`edit-plan-parametro-webhook-unsubscribe`,name:`webhook_unsubscribe`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Campo opcional. URL del webhook, por método `,(0,h.jsx)(t.strong,{children:`POST`}),`, que recibe el callback en el cuerpo de la solicitud cuando un cliente cancela la suscripción a uno de sus planes. Ejemplo de los datos enviados: `,(0,h.jsx)(t.code,{children:`{'id_plan' : 1, 'email' : '[email protected]', 'expire' : '2023-02-25'}`})]})}),` 16822`,(0,h.jsx)(n,{id:`edit-plan-parametro-webhook-reactive`,name:`webhook_reactive`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Campo opcional. URL del webhook, por método `,(0,h.jsx)(t.strong,{children:`POST`}),`, que recibe el callback en el cuerpo de la solicitud cuando un cliente reactiva la suscripción a uno de sus planes. Ejemplo de los datos enviados: `,(0,h.jsx)(t.code,{children:`{'id_plan' : 1, 'email' : '[email protected]', 'next_payment_date' : '2023-02-25'}`})]})}),` 16823`,(0,h.jsx)(n,{id:`edit-plan-parametro-end-at`,name:`end_at`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Fecha de finalización del plan recurrente, formato `,(0,h.jsx)(t.code,{children:`d-m-Y`}),` (por ejemplo 25-09-2022). Si el plan no tiene fecha de fin, se envÃa vacÃo.`]})}),` 16824`,(0,h.jsx)(t.h2,{id:`request`,children:`Ejemplo de request`}),` 16825`,(0,h.jsxs)(t.p,{children:[`Los valores `,(0,h.jsx)(t.code,{children:`<...>`}),` son marcadores: reemplazalos por tus credenciales y datos.`]}),` 16826`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 16827`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16828`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`3`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16829`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "title"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Plan title"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16830`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Plan description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16831`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "frecuency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`2`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16832`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16833`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "first_amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16834`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "trial"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16835`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "trial_days"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16836`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "attempts"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`5`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16837`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "status"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16838`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "thanks_url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16839`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "webhook_subscribe"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16840`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "webhook_payment"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16841`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "webhook_rejected"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16842`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "webhook_unsubscribe"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16843`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "webhook_reactive"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16844`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "end_at"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"25-10-2023"`})]}),` 16845`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 16846`,(0,h.jsxs)(t.p,{children:[`Para interpretar una respuesta que no es de éxito, ver `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`cómo leer una respuesta de error`}),`.`]})]})}function B_(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(z_,{...e})}):z_(e)}function V_(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var H_=t({default:()=>G_,frontmatter:()=>U_}),U_={title:`API · Obtener un plan recurrente`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/recurrentes/planes`,`api/procesos-operativos/errors`],description:`Consulta de un plan recurrente por id.`};function W_(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{Param:n}=t;return n||K_(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/getPlanRepeat`})]})})})}),` 16847`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`Qué hace`}),` 16848`,(0,h.jsx)(t.p,{children:`Devuelve un plan recurrente puntual.`}),` 16849`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Autenticación`}),` 16850`,(0,h.jsxs)(t.p,{children:[`Requiere el token bearer del API en el header `,(0,h.jsx)(t.code,{children:`Authorization`}),` â ver `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`autenticación`}),`.`]}),` 16851`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parámetros`}),` 16852`,(0,h.jsx)(n,{id:`get-plan-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Key de la integración Tilopay.`})}),` 16853`,(0,h.jsx)(n,{id:`get-plan-parametro-id`,name:`id`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Id del plan recurrente.`})}),` 16854`,(0,h.jsx)(t.h2,{id:`request`,children:`Ejemplo de request`}),` 16855`,(0,h.jsxs)(t.p,{children:[`Los valores `,(0,h.jsx)(t.code,{children:`<...>`}),` son marcadores: reemplazalos por tus credenciales y datos.`]}),` 16856`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 16857`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16858`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"3"`})]}),` 16859`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 16860`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Respuesta`}),` 16861`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 16862`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"200"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16863`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Success"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16864`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "plan"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: {`})]}),` 16865`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`232`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16866`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "title"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Prueba repeat"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16867`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Plan repeat de prueba mensual"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16868`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "frequency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`3`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16869`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"USD"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16870`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "first_amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"5.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16871`,(0,h.jsxs)(t.span,{className:`line`,children:
16871[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "trial"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16872`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "trial_days"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16873`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "attempts"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`5`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16874`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "thanks_url"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16875`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "webhook_subscribe"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16876`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "webhook_payment"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16877`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "webhook_rejected"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16878`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "webhook_unsubscribe"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16879`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "webhook_reactive"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16880`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "modality"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: [`})]}),` 16881`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 16882`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`292`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16883`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "title"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Pago mensual prueba repeat modalidad"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16884`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"10.00"`})]}),` 16885`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` }`})}),` 16886`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` ],`})}),` 16887`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "end_at"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`null`})]}),` 16888`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` }`})}),` 16889`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 16890`,(0,h.jsxs)(t.p,{children:[`Para interpretar una respuesta que no es de éxito, ver `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`cómo leer una respuesta de error`}),`.`]})]})}function G_(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(W_,{...e})}):W_(e)}function K_(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var q_=t({default:()=>X_,frontmatter:()=>J_}),J_={title:`API · Listar planes recurrentes`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/recurrentes/planes`,`api/procesos-operativos/errors`],description:`Listado de los planes recurrentes de la integración.`,gaps:[`No response example available.`]};function Y_(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{Param:n}=t;return n||Z_(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/getPlansRepeat`})]})})})}),` 16891`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`Qué hace`}),` 16892`,(0,h.jsx)(t.p,{children:`Devuelve los planes recurrentes del comercio.`}),` 16893`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Autenticación`}),` 16894`,(0,h.jsxs)(t.p,{children:[`Requiere el token bearer del API en el header `,(0,h.jsx)(t.code,{children:`Authorization`}),` â ver `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`autenticación`}),`.`]}),` 16895`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parámetros`}),` 16896`,(0,h.jsx)(n,{id:`get-plans-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Key de la integración Tilopay.`})}),` 16897`,(0,h.jsx)(t.h2,{id:`request`,children:`Ejemplo de request`}),` 16898`,(0,h.jsxs)(t.p,{children:[`Los valores `,(0,h.jsx)(t.code,{children:`<...>`}),` son marcadores: reemplazalos por tus credenciales y datos.`]}),` 16899`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 16900`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`})]}),` 16901`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 16902`,(0,h.jsxs)(t.p,{children:[`Para interpretar una respuesta que no es de éxito, ver `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`cómo leer una respuesta de error`}),`.`]})]})}function X_(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Y_,{...e})}):Y_(e)}function Z_(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Q_=t({default:()=>tv,frontmatter:()=>$_}),$_={title:`API · Recurrentes · Planes`,kind:`api-index`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/procesos-operativos/errors`],description:`Operaciones de recurrentes · planes del API de Tilopay, con parámetros y ejemplos.`};function ev(e){let t={a:`a`,code:`code`,h2:`h2`,li:`li`,p:`p`,ul:`ul`,...m(),...e.components};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`operaciones`,children:`Operaciones`}),` 16903`,(0,h.jsxs)(t.ul,{children:[` 16904`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/planes/create-plan`,children:`Crear plan recurrente`})}),` 16905`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/planes/edit-plan`,children:`Editar plan recurrente`})}),` 16906`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/planes/get-plan`,children:`Obtener un plan recurrente`})}),` 16907`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/planes/get-plans`,children:`Listar planes recurrentes`})}),` 16908`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/planes/delete-plan`,children:`Eliminar plan recurrente`})}),` 16909`]}),` 16910`,(0,h.jsxs)(t.p,{children:[`Todas las operaciones viven en `,(0,h.jsx)(t.code,{children:`https://app.tilopay.com`}),` y, salvo las de login, requieren el token del API â ver `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`autenticación`}),`.`]})]})}function tv(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(ev,{...e})}):ev(e)}var nv=t({default:()=>av,frontmatter:()=>rv}),rv={title:`API · URL de registro y renovación`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/recurrentes/suscriptores`,`api/procesos-operativos/errors`],description:`URL de registro o renovación de un plan recurrente para un correo dado.`};function iv(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{Param:n}=t;return n||ov(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/recurrentUrl`})]})})})}),` 16911`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`Qué hace`}),` 16912`,(0,h.jsx)(t.p,{children:`Devuelve la URL de registro de un plan recurrente para un usuario nuevo, o la URL de renovación si el correo ya está registrado.`}),` 16913`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Autenticación`}),` 16914`,(0,h.jsxs)(t.p,{children:[`Requiere el token bearer del API en el header `,(0,h.jsx)(t.code,{children:`Authorization`}),` â ver `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`autenticación`}),`.`]}),` 16915`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parámetros`}),` 16916`,(0,h.jsx)(n,{id:`consult-url-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Key de la integración Tilopay.`})}),` 16917`,(0,h.jsx)(n,{id:`consult-url-parametro-id`,name:`id`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Id del plan recurrente.`})}),` 16918`,(0,h.jsx)(n,{id:`consult-url-parametro-email`,name:`email`,type:`string`,children:(0,h.jsx)(t.p,{children:`Correo del usuario para el que se quiere crear el link de registro.`})}),` 16919`,(0,h.jsx)(t.h2,{id:`request`,children:`Ejemplo de request`}),` 16920`,(0,h.jsxs)(t.p,{children:[`Los valores `,(0,h.jsx)(t.code,{children:`<...>`}),` son marcadores: reemplazalos por tus credenciales y datos.`]}),` 16921`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 16922`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16923`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16924`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "email"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"[email protected]"`})]}),` 16925`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 16926`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Respuesta`}),` 16927`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 16928`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"200"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16929`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16930`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "url_register"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://app.tilopay.com/admin/recurrent/register/[email protected]"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16931`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "url_renew"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`})]}),` 16932`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 16933`,(0,h.jsxs)(t.p,{children:[`Para interpretar una respuesta que no es de éxito, ver `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`cómo leer una respuesta de error`}),`.`]})]})}function av(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(iv,{...e})}):iv(e)}function ov(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var sv=t({default:()=>uv,frontmatter:()=>cv}),cv={title:`API · Eliminar suscriptor`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/recurrentes/suscriptores`,`api/procesos-operativos/errors`],description:`Eliminación de un suscriptor de un plan recurrente.`};function lv(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{Param:n}=t;return n||dv(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.
16933span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/deleteSuscriptorRepeat`})]})})})}),` 16934`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`Qué hace`}),` 16935`,(0,h.jsx)(t.p,{children:`Elimina un suscriptor de un plan recurrente.`}),` 16936`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Autenticación`}),` 16937`,(0,h.jsxs)(t.p,{children:[`Requiere el token bearer del API en el header `,(0,h.jsx)(t.code,{children:`Authorization`}),` â ver `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`autenticación`}),`.`]}),` 16938`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parámetros`}),` 16939`,(0,h.jsx)(n,{id:`delete-suscriptor-plan-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Key de la integración Tilopay.`})}),` 16940`,(0,h.jsx)(n,{id:`delete-suscriptor-plan-parametro-id-suscriptor`,name:`id_suscriptor`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Id del suscriptor.`})}),` 16941`,(0,h.jsx)(t.h2,{id:`request`,children:`Ejemplo de request`}),` 16942`,(0,h.jsxs)(t.p,{children:[`Los valores `,(0,h.jsx)(t.code,{children:`<...>`}),` son marcadores: reemplazalos por tus credenciales y datos.`]}),` 16943`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 16944`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16945`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id_suscriptor"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1"`})]}),` 16946`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 16947`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Respuesta`}),` 16948`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 16949`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"200"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16950`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "status"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16951`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Success"`})]}),` 16952`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 16953`,(0,h.jsxs)(t.p,{children:[`Para interpretar una respuesta que no es de éxito, ver `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`cómo leer una respuesta de error`}),`.`]})]})}function uv(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(lv,{...e})}):lv(e)}function dv(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var fv=t({default:()=>hv,frontmatter:()=>pv}),pv={title:`API · Editar suscriptor`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/recurrentes/suscriptores`,`api/procesos-operativos/errors`],description:`Edición del estado y la expiración de un suscriptor.`};function mv(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,table:`table`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,...m(),...e.components},{Param:n}=t;return n||gv(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/editSuscriptorRepeat`})]})})})}),` 16954`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`Qué hace`}),` 16955`,(0,h.jsx)(t.p,{children:`Cambia el estado o la fecha de expiración de un suscriptor.`}),` 16956`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Autenticación`}),` 16957`,(0,h.jsxs)(t.p,{children:[`Requiere el token bearer del API en el header `,(0,h.jsx)(t.code,{children:`Authorization`}),` â ver `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`autenticación`}),`.`]}),` 16958`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parámetros`}),` 16959`,(0,h.jsx)(n,{id:`edit-suscriptor-plan-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Key de la integración Tilopay.`})}),` 16960`,(0,h.jsx)(n,{id:`edit-suscriptor-plan-parametro-id`,name:`id`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Id del suscriptor.`})}),` 16961`,(0,h.jsxs)(n,{id:`edit-suscriptor-plan-parametro-status`,name:`status`,type:`string`,children:[(0,h.jsx)(t.p,{children:`Estado del suscriptor.`}),(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Código`}),(0,h.jsx)(t.th,{children:`Valor`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`1`}),(0,h.jsx)(t.td,{children:`Activo`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`3`}),(0,h.jsx)(t.td,{children:`Pausado`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`4`}),(0,h.jsx)(t.td,{children:`Eliminado`})]})]})]})]}),` 16962`,(0,h.jsx)(n,{id:`edit-suscriptor-plan-parametro-expire`,name:`expire`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Fecha de expiración del plan, formato `,(0,h.jsx)(t.code,{children:`yy-m-d`}),`.`]})}),` 16963`,(0,h.jsx)(t.h2,{id:`request`,children:`Ejemplo de request`}),` 16964`,(0,h.jsxs)(t.p,{children:[`Los valores `,(0,h.jsx)(t.code,{children:`<...>`}),` son marcadores: reemplazalos por tus credenciales y datos.`]}),` 16965`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 16966`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16967`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16968`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "status"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16969`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "expire"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2023-10-25"`})]}),` 16970`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 16971`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Respuesta`}),` 16972`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 16973`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"200"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16974`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "status"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16975`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Success"`})]}),` 16976`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 16977`,(0,h.jsxs)(t.p,{children:[`Para interpretar una respuesta que no es de éxito, ver `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`cómo leer una respuesta de error`}),`.`]})]})}function hv(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(mv,{...e})}):mv(e)}
16977function gv(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var _v=t({default:()=>bv,frontmatter:()=>vv}),vv={title:`API · Suscriptores de un plan`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/recurrentes/suscriptores`,`api/procesos-operativos/errors`],description:`Consulta de los suscriptores de un plan recurrente.`};function yv(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{Param:n}=t;return n||xv(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/getSuscriptorRepeat`})]})})})}),` 16978`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`Qué hace`}),` 16979`,(0,h.jsx)(t.p,{children:`Devuelve los suscriptores asociados a un plan recurrente.`}),` 16980`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Autenticación`}),` 16981`,(0,h.jsxs)(t.p,{children:[`Requiere el token bearer del API en el header `,(0,h.jsx)(t.code,{children:`Authorization`}),` â ver `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`autenticación`}),`.`]}),` 16982`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parámetros`}),` 16983`,(0,h.jsx)(n,{id:`get-suscriptor-plan-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Key de la integración Tilopay.`})}),` 16984`,(0,h.jsx)(n,{id:`get-suscriptor-plan-parametro-id`,name:`id`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Id del plan recurrente.`})}),` 16985`,(0,h.jsx)(t.h2,{id:`request`,children:`Ejemplo de request`}),` 16986`,(0,h.jsxs)(t.p,{children:[`Los valores `,(0,h.jsx)(t.code,{children:`<...>`}),` son marcadores: reemplazalos por tus credenciales y datos.`]}),` 16987`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 16988`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16989`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2"`})]}),` 16990`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 16991`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Respuesta`}),` 16992`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 16993`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"200"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16994`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Success"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16995`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "suscriptor"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: [`})]}),` 16996`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 16997`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`360`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16998`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "name"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Jhon 1"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 16999`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "lastname"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"D"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17000`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "email"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"[email protected]"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17001`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "modality"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Pago mensual prueba repeat modalidad"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17002`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"10.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17003`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "expire"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2023-03-26"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17004`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "coupon"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17005`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "status"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Delete"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17006`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "create"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2022-10-19 12:48:59"`})]}),` 17007`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` },`})}),` 17008`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` {`})}),` 17009`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`33364`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17010`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "name"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Jhon 2"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17011`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "lastname"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"D"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17012`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "email"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"[email protected]"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17013`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "modality"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Pago mensual prueba repeat modalidad"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17014`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"10.00"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17015`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "expire"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2023-08-05"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17016`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "coupon"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17017`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "status"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Active"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17018`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "create"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"2023-06-05 14:24:18"`})]}),` 17019`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` }`})}),` 17020`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` ]`})}),` 17021`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 17022`,(0,h.jsxs)(t.p,{children:[`Para interpretar una respuesta que no es de éxito, ver `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`cómo leer una respuesta de error`}),`.`]})]})}function bv(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(yv,{...e})}):yv(e)}function xv(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Sv=t({default:()=>Tv,frontmatter:()=>Cv}),Cv={title:`API · Pausar suscriptor`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/recurrentes/suscriptores`,`api/procesos-operativos/errors`],description:`Pausa de la suscripción de un suscriptor.`};function wv(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{Param:n}=t;return n||Ev(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/pauseSuscriptorRepeat`})]})})})}),` 17023`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`Qué hace`}),` 17024`,(0,h.jsx)(t.p,{children:`Pausa la suscripción de un suscriptor.`}),` 17025`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Autenticación`}),` 17026`,(0,h.jsxs)(t.p,{children:[`Requiere el token bearer del API en el header `,(0,h.jsx)(t.code,{children:`Authorization`}),` â ver `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`autenticación`}),`.`]}),` 17027`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parámetros`}),` 17028`,(0,h.jsx)(n,{id:`pause-suscriptor-plan-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Key de la integración Tilopay.`})}),` 17029`,(0,h.jsx)(n,{id:`pause-suscriptor-plan-parametro-id-suscriptor`,name:`id_suscriptor`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Id del suscriptor.`})}),` 17030`,(0,h.jsx)(t.h2,{id:`request`,children:`Ejemplo de request`}),` 17031`,(0,h.jsxs)(t.p,{children:[`Los valores `,(0,h.jsx)(t.code,{children:`<...>`}),` son marcadores: reemplazalos por tus credenciales y datos.`]}),` 17032`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 17033`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17034`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id_suscriptor"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1"`})]}),` 17035`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 17036`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Respuesta`}),` 17037`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 17038`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"200"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17039`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "status"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17040`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Success"`})]}),` 17041`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 17042`,(0,h.jsxs)(t.p,{children:[`Para interpretar una respuesta que no es de éxito, ver `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`cómo leer una respuesta de error`}),`.`]})]})}function Tv(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(wv,{...e})}):wv(e)}function Ev(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Dv=t({default:()=>Av,frontmatter:()=>Ov}),Ov={title:`API · Reactivar suscriptor`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owne
17042r:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/recurrentes/suscriptores`,`api/procesos-operativos/errors`],description:`Reactivación de la suscripción de un suscriptor.`};function kv(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{Param:n}=t;return n||jv(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/reactiveSuscriptorRepeat`})]})})})}),` 17043`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`Qué hace`}),` 17044`,(0,h.jsx)(t.p,{children:`Reactiva la suscripción de un suscriptor pausado.`}),` 17045`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Autenticación`}),` 17046`,(0,h.jsxs)(t.p,{children:[`Requiere el token bearer del API en el header `,(0,h.jsx)(t.code,{children:`Authorization`}),` â ver `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`autenticación`}),`.`]}),` 17047`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parámetros`}),` 17048`,(0,h.jsx)(n,{id:`reactive-suscriptor-plan-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Key de la integración Tilopay.`})}),` 17049`,(0,h.jsx)(n,{id:`reactive-suscriptor-plan-parametro-id-suscriptor`,name:`id_suscriptor`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Id del suscriptor.`})}),` 17050`,(0,h.jsx)(t.h2,{id:`request`,children:`Ejemplo de request`}),` 17051`,(0,h.jsxs)(t.p,{children:[`Los valores `,(0,h.jsx)(t.code,{children:`<...>`}),` son marcadores: reemplazalos por tus credenciales y datos.`]}),` 17052`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 17053`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17054`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id_suscriptor"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1"`})]}),` 17055`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 17056`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Respuesta`}),` 17057`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 17058`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "type"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"200"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17059`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "status"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17060`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Success"`})]}),` 17061`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 17062`,(0,h.jsxs)(t.p,{children:[`Para interpretar una respuesta que no es de éxito, ver `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`cómo leer una respuesta de error`}),`.`]})]})}function Av(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(kv,{...e})}):kv(e)}function jv(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Mv=t({default:()=>Fv,frontmatter:()=>Nv}),Nv={title:`API · Pagos de suscriptor`,kind:`api-operation`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/recurrentes/suscriptores`,`api/procesos-operativos/errors`],description:`Historial de pagos de los suscriptores de un plan recurrente.`,gaps:[`No response example available.`]};function Pv(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{Param:n}=t;return n||Iv(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/v1/getSuscriptorPayments`})]})})})}),` 17063`,(0,h.jsx)(t.h2,{id:`que-hace`,children:`Qué hace`}),` 17064`,(0,h.jsx)(t.p,{children:`Devuelve los pagos de los suscriptores de un plan recurrente.`}),` 17065`,(0,h.jsx)(t.h2,{id:`autenticacion`,children:`Autenticación`}),` 17066`,(0,h.jsxs)(t.p,{children:[`Requiere el token bearer del API en el header `,(0,h.jsx)(t.code,{children:`Authorization`}),` â ver `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`autenticación`}),`.`]}),` 17067`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parámetros`}),` 17068`,(0,h.jsx)(n,{id:`suscriptor-payments-parametro-key`,name:`key`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Key de la integración Tilopay.`})}),` 17069`,(0,h.jsx)(n,{id:`suscriptor-payments-parametro-id`,name:`id`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Id del plan recurrente.`})}),` 17070`,(0,h.jsx)(t.h2,{id:`request`,children:`Ejemplo de request`}),` 17071`,(0,h.jsxs)(t.p,{children:[`Los valores `,(0,h.jsx)(t.code,{children:`<...>`}),` son marcadores: reemplazalos por tus credenciales y datos.`]}),` 17072`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 17073`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"<api_key>"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17074`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1"`})]}),` 17075`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 17076`,(0,h.jsxs)(t.p,{children:[`Para interpretar una respuesta que no es de éxito, ver `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`cómo leer una respuesta de error`}),`.`]})]})}function Fv(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Pv,{...e})}):Pv(e)}function Iv(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Lv=t({default:()=>Bv,frontmatter:()=>Rv}),Rv={title:`API · Recurrentes · Suscriptores`,kind:`api-index`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/procesos-operativos/errors`],description:`Operaciones de recurrentes · suscriptores del API de Tilopay, con parámetros y ejemplos.`};function zv(e){let t={a:`a`,code:`code`,h2:`h2`,li:`li`,p:`p`,ul:`ul`,...m(),...e.components};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`operaciones`,children:`Operaciones`}),` 17077`,(0,h.jsxs)(t.ul,{children:[` 17078`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/suscriptores/get-suscriptor-plan`,children:`Suscriptores de un plan`})}),` 17079`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/suscriptores/edit-suscriptor-plan`,children:`Editar suscriptor`})}),` 17080`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/suscriptores/pause-suscriptor-plan`,children:`Pausar suscriptor`})}),` 17081`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/suscriptores/reactive-suscriptor-plan`,children:`Reactivar suscriptor`})}),` 17082`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/suscriptores/delete-suscriptor-plan`,children:`Eliminar suscriptor`})}),` 17083`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/suscriptores/consult-url`,children:`URL de registro y renovación`})}),` 17084`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/suscriptores/suscriptor-payments`,children:`Pagos de suscriptor`})}),` 17085`]}),` 17086`,(0,h.jsxs)(t.p,{children:[`Todas las operaciones viven en `,(0,h.jsx)(t.code,{children:`https://app.tilopay.com`}),` y, salvo las de login, requieren el token del API â ver `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`autenticación`}),`.`]})]})}function Bv(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(zv,{...e})}):zv(e)}var Vv=t({default:()=>Wv,frontmatter:()=>Hv}),Hv={title:`Cobros Recurrentes`,kind:`api-index`,status:`stable`,api_version:`v1`,last_verified:`2026-08-29`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Colección Postman TILOPAY API (spec OpenAPI borrador), 29-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`api/procesos-operativos/errors`],description:`Operaciones de cobros recurrentes del API de Tilopay, con parámetros y ejemplos.`};function Uv(e){let t={a:`a`,code:`code`,h2:`h2`,li:`li`,p:`p`,ul:`ul`,...m(),...e.components};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`operaciones`,children:`Operaciones`}),` 17087`,(0,h.jsx)(t.p,{children:`16 operaciones en tres subgrupos:`}),` 17088`,(0,h.jsxs)(t.ul,{children:[` 17089`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/planes`,children:`Planes`}),` â 5`]}),` 17090`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/suscriptores`,children:`Suscriptores`}),` â 7`]}),` 17091`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.a,{href:`/developers/api/recurrentes/cupones`,children:`Cupones`}),` â 4`]}),` 17092`]}),` 17093`,(0,h.jsxs)(t.p,{children:[`Todas las operaciones viven en `,(0,h.jsx)(t.code,{children:`https://app.tilopay.com`}),` y, salvo las de login, requieren el token del API â ver `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`autenticación`}),`.`]})]})}function Wv(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Uv,{...e})}):Uv(e)}var Gv=t({default:()=>Jv,frontmatter:()=>Kv}),Kv={title:`API · Tarjetas almacenadas`,kind:`api-index`,status:`draft`,api_version:`v1`,last_verified:`2026-08-28`,verified_by:`henry`,owner:`equipo-integraciones`,sources:[],related:[],draft:!0,description:`Grupo de cobros con tarjetas almacenadas. Estructura publicada.`};function qv(e){let t={code:`code`,h2:`h2`,li:`li`,p:`p`,ul:`ul`,...m(),...e.components},{Callout:n}=t;return n||Yv(`Callout`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`contenido`,children:`Qué contiene`}),` 17094`,(0,h.jsx)(t.p,{children:`Este grupo va a documentar 10 operaciones:`}),` 17095`,(0,h.jsxs)(t.ul,{children:[` 17096`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.code,{children:`collect/get/groups`})}),` 17097`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.code,{children:`collect/get/affiliates`})}),` 17098`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.code,{children:`collect/get/massive`})}),` 17099`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.code,{children:`collect/get/massive/detail`})}),` 17100`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.code,{children:`collect/set/group`})}),` 17101`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.code,{children:`collect/set/urlaffiliate`})}),` 17102`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.code,{children:`collect/set/urlgroup`})}),` 17103`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.code,{children:`collect/edit/affiliate`})}),` 17104`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.code,{children:`collect/edit/group`})}),` 17105`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.code,{children:`collect/set/payments`})}),` 17106`]}),` 17107`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsx)(t.p,{children:`Página pendiente. TodavÃa no hay parámetros, cuerpos ni respuestas verificados acá: 17108la referencia de cada operación se genera desde el spec en una fase posterior.`})})]})}function Jv(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(qv,{...e})}):qv(e)}function Yv(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Xv=t({default:()=>$v,frontmatter:()=>Zv}),Zv={title:`Webhooks`,kind:`concept`,status:`stable`,api_version:`v1`,last_verified:`2026-08-28`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Respuestas de TecnologÃa, 28-08-2026`],locales:[`es`,`en`],related:[`api/procesos-operativos/errors`,`reintentos-seguros`],gaps:[`Algoritmo del orderHash: no es público, se entrega por [email protected].`,`Contrato del webhook de processPayment: se entrega bajo solicitud, no publicable.`],description:`Qué eventos existen, cuántos reintentos hay, en qué formato llegan y cómo confirmar el estado de un cobro.`};function Qv(e){let t={code:`code`,h2:`h2`,p:`p`,strong:`strong`,table:`table`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,...m(),...e.components},{Callout:n}=t;return n||ey(`Callout`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`recurrencia`,children:`Recurrencia`}),` 17109`,(0,h.jsxs)(t.p,{children:[`Son 6 campos que se configuran al `,(0,h.jsx)(t.strong,{children:`crear o editar un plan`}),`. Todos opcionales.`]}),` 17110`,(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Campo`}),(0,h.jsx)(t.th,{children:`Qué es`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`webhook_subscribe`})}),(0,h.jsx)(t.td,{children:`Webhook de suscripción`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`webhook_payment`})}),(0,h.jsx)(t.td,{children:`Webhook de cobro`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`webhook_rejected`})}),(0,h.jsx)(t.td,{children:`Webhook de cobro rechazado`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`webhook_unsubscribe`})}),(0,h.jsx)(t.td,{children:`Webhook de baja`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`webhook_reactive`})}),(0,h.jsx)(t.td,{children:`Webhook de reactivación`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`thanks_url`})}),(0,h.jsxs)(t.td,{children:[(0,h.jsx)(t.strong,{children:`No es un webhook:`}),` es un callback GET`]})]})]})]}),` 17111`,(0,h.jsx)(t.h2,{id:`links-de-pago`,children:`Links de pago`}),` 17112`,(0,h.jsxs)(t.p,{children:[`Se configura `,(0,h.jsx)(t.code,{children:`webhook_url`}),` al crear el link.`]}),` 17113`,(0,h.jsx)(t.h2,{id:`reintentos`,children:`Reintentos`}),` 17114`,(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr
17114,{children:[(0,h.jsx)(t.th,{children:`Origen`}),(0,h.jsx)(t.th,{children:`Intentos`}),(0,h.jsx)(t.th,{children:`Cuándo reintenta`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Recurrencia`}),(0,h.jsx)(t.td,{children:`5`}),(0,h.jsx)(t.td,{children:`Cuando tu respuesta es 400, 404, 502, 504 o 403`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Compras`}),(0,h.jsx)(t.td,{children:`1`}),(0,h.jsx)(t.td,{children:`â`})]})]})]}),` 17115`,(0,h.jsxs)(t.p,{children:[`Se da por entregado con un `,(0,h.jsx)(t.strong,{children:`HTTP 200`}),`. Respondé 200 en cuanto recibás el evento y procesalo 17116aparte: cualquier otra cosa cuenta como fallo, y en compras no hay segundo intento.`]}),` 17117`,(0,h.jsx)(t.h2,{id:`formato`,children:`Formato`}),` 17118`,(0,h.jsx)(t.p,{children:`JSON.`}),` 17119`,(0,h.jsx)(t.h2,{id:`token`,children:`El token de tarjeta`}),` 17120`,(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Origen`}),(0,h.jsx)(t.th,{children:`Token`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Recurrencia`}),(0,h.jsx)(t.td,{children:(0,h.jsx)(t.strong,{children:`No se envÃa`})})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Compras`}),(0,h.jsxs)(t.td,{children:[`Se envÃa y `,(0,h.jsx)(t.strong,{children:`es utilizable`})]})]})]})]}),` 17121`,(0,h.jsx)(t.h2,{id:`verificacion`,children:`Verificación de origen`}),` 17122`,(0,h.jsxs)(n,{type:`warn`,children:[(0,h.jsxs)(t.p,{children:[`La única verificación de origen disponible es el `,(0,h.jsx)(t.code,{children:`orderHash`}),`, y `,(0,h.jsx)(t.strong,{children:`su algoritmo no es público`}),`: 17123se entrega al comercio que lo solicita escribiendo a `,(0,h.jsx)(t.code,{children:`[email protected]`}),`.`]}),(0,h.jsx)(t.p,{children:`Mientras no tengás el algoritmo, no tomés decisiones de negocio irreversibles solo con el 17124contenido del webhook: confirmá el estado contra el API antes de despachar o liberar un 17125servicio.`})]}),` 17126`,(0,h.jsx)(t.h2,{id:`processpayment`,children:`Webhook del flujo principal`}),` 17127`,(0,h.jsx)(n,{type:`info`,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.code,{children:`processPayment`}),` también tiene webhook. Su contrato `,(0,h.jsx)(t.strong,{children:`se entrega al comercio que lo solicita`}),`: 17128escribà a `,(0,h.jsx)(t.code,{children:`[email protected]`}),` para recibirlo.`]})})]})}function $v(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Qv,{...e})}):Qv(e)}function ey(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var ty=t({default:()=>iy,frontmatter:()=>ny}),ny={title:`Autenticación del API Bancario`,kind:`concept`,status:`stable`,api_version:`1.0.0`,last_verified:`2026-09-02`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Tilopay_API_BaaS.yaml â spec OpenAPI 3.0.3 del API Bancario, versión 1.0.0`],locales:[`es`,`en`],description:`Login, intercambio de token y uso del Bearer JWT en el API Bancario de Tilopay.`};function ry(e){let t={code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,table:`table`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,...m(),...e.components};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.p,{children:`El API Bancario usa un flujo de dos pasos: primero autenticás al cliente con correo y 17129contraseña, después intercambiás el token resultante por un access token JWT que firma 17130todas las demás llamadas.`}),` 17131`,(0,h.jsxs)(t.p,{children:[`Los tres endpoints del grupo `,(0,h.jsx)(t.code,{children:`Auth`}),` son los únicos que `,(0,h.jsx)(t.strong,{children:`no`}),` llevan `,(0,h.jsx)(t.code,{children:`Authorization`}),`. 17132Todo el resto del API exige `,(0,h.jsx)(t.code,{children:`Authorization: Bearer <access_token>`}),`.`]}),` 17133`,(0,h.jsx)(t.h2,{id:`login`,children:`Paso 1 â Login`}),` 17134`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/public/v1/auth/login`})]})})})}),` 17135`,(0,h.jsxs)(t.p,{children:[`Cuerpo requerido: `,(0,h.jsx)(t.code,{children:`email`}),` (formato email) y `,(0,h.jsx)(t.code,{children:`password`}),`.`]}),` 17136`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 17137`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "email"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"[email protected]"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17138`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "password"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"â¢â¢â¢â¢â¢â¢â¢â¢"`})]}),` 17139`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 17140`,(0,h.jsxs)(t.p,{children:[`La respuesta `,(0,h.jsx)(t.code,{children:`200`}),` devuelve en `,(0,h.jsx)(t.code,{children:`data`}),`:`]}),` 17141`,(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Campo`}),(0,h.jsx)(t.th,{children:`Tipo`}),(0,h.jsx)(t.th,{children:`Descripción`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`gidp_id_token`})}),(0,h.jsx)(t.td,{children:`string`}),(0,h.jsx)(t.td,{children:`Token de identidad para el paso 2.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`assignments`})}),(0,h.jsx)(t.td,{children:`array`}),(0,h.jsx)(t.td,{children:`Contextos disponibles del cliente.`})]})]})]}),` 17142`,(0,h.jsxs)(t.p,{children:[`Cada elemento de `,(0,h.jsx)(t.code,{children:`assignments`}),` trae `,(0,h.jsx)(t.code,{children:`assignment_id`}),`, `,(0,h.jsx)(t.code,{children:`owner_type`}),`, `,(0,h.jsx)(t.code,{children:`owner_id`}),`, 17143`,(0,h.jsx)(t.code,{children:`tenant_id`}),`, `,(0,h.jsx)(t.code,{children:`tenant_code`}),`, `,(0,h.jsx)(t.code,{children:`country_code`}),`, `,(0,h.jsx)(t.code,{children:`role`}),`, `,(0,h.jsx)(t.code,{children:`roles`}),` y `,(0,h.jsx)(t.code,{children:`status`}),`. Elegà el 17144`,(0,h.jsx)(t.code,{children:`assignment_id`}),` del contexto con el que vas a operar.`]}),` 17145`,(0,h.jsx)(t.h2,{id:`exchange`,children:`Paso 2 â Intercambio de token`}),` 17146`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/public/v1/auth/token/exchange`})]})})})}),` 17147`,(0,h.jsxs)(t.p,{children:[`Cuerpo requerido: `,(0,h.jsx)(t.code,{children:`gidp_id_token`}),` (el del paso 1) y `,(0,h.jsx)(t.code,{children:`assignment_id`}),` (el contexto 17148elegido).`]}),` 17149`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 17150`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "gidp_id_token"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"eyJhbGciOi..."`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17151`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "assignment_id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"3fa85f64-5717-4562-b3fc-2c963f66afa6"`})]}),` 17152`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 17153`,(0,h.jsxs)(t.p,{children:[`La respuesta `,(0,h.jsx)(t.code,{children:`200`}),` devuelve en `,(0,h.jsx)(t.code,{children:`data`}),`:`]}),` 17154`,(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Campo`}),(0,h.jsx)(t.th,{children:`Tipo`}),(0,h.jsx)(t.th,{children:`Descripción`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`token`})}),(0,h.jsx)(t.td,{children:`string`}),(0,h.jsx)(t.td,{children:`Access token JWT.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`expires_in`})}),(0,h.jsx)(t.td,{children:`integer`}),(0,h.jsx)(t.td,{children:`Vigencia del token en segundos.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`claims`})}),(0,h.jsx)(t.td,{children:`object`}),(0,h.jsx)(t.td,{children:`Contexto resuelto del token.`})]})]})]}),` 17155`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.code,{children:`claims`}),` incluye `,(0,h.jsx)(t.code,{children:`sub`}),`, `,(0,h.jsx)(t.code,{children:`subject_kind`}),`, `,(0,h.jsx)(t.code,{children:`user_type`}),`, `,(0,h.jsx)(t.code,{children:`tenant_id`}),`, `,(0,h.jsx)(t.code,{children:`owner_type`}),`, 17156`,(0,h.jsx)(t.code,{children:`owner_id`}),`, `,(0,h.jsx)(t.code,{children:`roles`}),`, `,(0,h.jsx)(t.code,{children:`scopes`}),`, `,(0,h.jsx)(t.code,{children:`country_code`}),`, `,(0,h.jsx)(t.code,{children:`locale`}),`, `,(0,h.jsx)(t.code,{children:`channel`}),`, `,(0,h.jsx)(t.code,{children:`idp`}),`, `,(0,h.jsx)(t.code,{children:`idp_sub`}),` e 17157`,(0,h.jsx)(t.code,{children:`idempotency_key`}),`.`]}),` 17158`,(0,h.jsx)(t.h2,{id:`bearer`,children:`Paso 3 â Usar el Bearer`}),` 17159`,(0,h.jsxs)(t.p,{children:[`El esquema de seguridad declarado es `,(0,h.jsx)(t.code,{children:`BearerAuth`}),`: HTTP bearer con formato JWT.`]}),` 17160`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#85E89D`},children:`Authorization`}),(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`:`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:` Bearer <access_token>`})]})})})}),` 17161`,(0,h.jsxs)(t.p,{children:[`El contexto viaja `,(0,h.jsx)(t.strong,{children:`dentro`}),` del token: no se envÃan `,(0,h.jsx)(t.code,{children:`tenant_id`}),`, `,(0,h.jsx)(t.code,{children:`owner_id`}),` ni 17162`,(0,h.jsx)(t.code,{children:`owner_type`}),` como parámetros en las operaciones de negocio. El token acota por sà solo a 17163qué cuentas y pagos podés acceder.`]}),` 17164`,(0,h.jsxs)(t.p,{children:[`Cuando el token está ausente, vencido o es inválido, la respuesta es `,(0,h.jsx)(t.code,{children:`401`}),` con 17165`,(0,h.jsx)(t.code,{children:`response_code: UNAUTHORIZED`}),`. Si el token es válido pero el contexto no autoriza el 17166recurso, es `,(0,h.jsx)(t.code,{children:`403`}),` con `,(0,h.jsx)(t.code,{children:`FORBIDDEN`}),`. Repetà el paso 2 para renovar el access token antes de 17167que se cumpla `,(0,h.jsx)(t.code,{children:`expires_in`}),`.`]}),` 17168`,(0,h.jsx)(t.h2,{id:`password`,children:`Contraseñas`}),` 17169`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/public/v1/auth/request-set-password`})]})})})}),` 17170`,(0,h.jsx)(t.p,{children:`Inicia el proceso de establecer o restablecer la contraseña del correo indicado. No 17171requiere autenticación previa y responde siempre igual, exista o no la cuenta, para no 17172revelar si un correo está registrado.`}),` 17173`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 17174`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "email"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"[email protected]"`})]}),` 17175`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})})]})}function iy(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(ry,{...e})}):ry(e)}var ay=t({default:()=>cy,frontmatter:()=>oy}),oy={title:`Catálogos del API Bancario`,kind:`api-operation`,status:`stable`,api_version:`1.0.0`,last_verified:`2026-09-02`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Tilopay_API_BaaS.yaml â spec OpenAPI 3.0.3 del API Bancario, versión 1.0.0`],locales:[`es`,`en`],description:`Catálogo de tipos de identificación de cliente por paÃs en el API Bancario.`};function sy(e){let t={code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,...m(),...e.components},{BaasOperations:n}=t;return n||ly(`BaasOperations`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(t.p,{children:[`El grupo `,(0,h.jsx)(t.code,{children:`Catalogs`}),` publica los valores que tu integración debe usar en los campos de 17176identificación de cliente, en vez de codificarlos a mano.`]}),` 17177`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`GET`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/public/v1/catalogs/customer-identification-types`})]})})})}),` 17178`,(0,h.jsxs)(t.p,{children:[`Filtrá por `,(0,h.jsx)(t.code,{children:`country_code`}),` de dos letras para obtener los tipos vigentes en ese paÃs. 17179Consultá el catálogo al iniciar la integración y cacheá el resultado; leelo de nuevo antes 17180de agregar un paÃs nuevo.`]}),` 17181`,(0,h.jsx)(t.h2,{id:`operaciones`,children:`Operaciones`}),` 17182`,(0,h.jsx)(n,{slug:`api-bancario/catalogos`})]})}function cy(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(sy,{...e})}):sy(e)}function ly(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var uy=t({default:()=>py,frontmatter:()=>dy}),dy={title:`Convenciones del API Bancario`,kind:`concept`,status:`stable`,api_version:`1.0.0`,last_verified:`2026-09-02`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Tilopay_API_BaaS.yaml â spec OpenAPI 3.0.3 del API Bancario, versión 1.0.0`],locales:[`es`,`en`],description:`Envelope de respuesta, correlación, reintentos seguros, paginación y formato de fechas del API Bancario.`};function fy(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,table:`table`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,...m(),...e.components};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.p,{children:`Todas las operaciones del API Bancario comparten el mismo formato de respuesta, las 17183mismas reglas de paginación y el mismo formato de fechas. Esta página describe lo que el 17184spec declara de forma transversal.`}),` 17185`,(0,h.jsx)(t.h2,{id:`envelope`,children:`Envelope de respuesta`}),` 17186`,(0,h.jsx)(t.p,{children:`Cada respuesta, exitosa o no, viaja en el mismo
17186sobre:`}),` 17187`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 17188`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "success"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`true`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17189`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "http_status_code"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`200`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17190`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "response_code"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"OK"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17191`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"The request was processed successfully."`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17192`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "correlation_id"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"3fa85f64-5717-4562-b3fc-2c963f66afa6"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17193`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "data"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: {}`})]}),` 17194`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 17195`,(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Campo`}),(0,h.jsx)(t.th,{children:`Tipo`}),(0,h.jsx)(t.th,{children:`Descripción`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`success`})}),(0,h.jsx)(t.td,{children:`boolean`}),(0,h.jsxs)(t.td,{children:[(0,h.jsx)(t.code,{children:`true`}),` en las respuestas exitosas; `,(0,h.jsx)(t.code,{children:`false`}),` en las de error.`]})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`http_status_code`})}),(0,h.jsx)(t.td,{children:`integer`}),(0,h.jsx)(t.td,{children:`Repite el status HTTP en el cuerpo.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`response_code`})}),(0,h.jsx)(t.td,{children:`string`}),(0,h.jsxs)(t.td,{children:[`Código del `,(0,h.jsxs)(t.a,{href:`/developers/api-bancario/errores`,children:[`catálogo de `,(0,h.jsx)(t.code,{children:`response_code`})]}),`.`]})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`message`})}),(0,h.jsx)(t.td,{children:`string`}),(0,h.jsx)(t.td,{children:`Mensaje legible de la respuesta.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`correlation_id`})}),(0,h.jsx)(t.td,{children:`string`}),(0,h.jsx)(t.td,{children:`Identificador de la llamada.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`data`})}),(0,h.jsx)(t.td,{children:`object`}),(0,h.jsx)(t.td,{children:`Carga útil de la operación.`})]})]})]}),` 17196`,(0,h.jsxs)(t.p,{children:[`En las respuestas de error el sobre trae además `,(0,h.jsx)(t.code,{children:`errors`}),`, un objeto de detalle que puede 17197incluir campos arbitrarios como `,(0,h.jsx)(t.code,{children:`code`}),`, `,(0,h.jsx)(t.code,{children:`message`}),` o `,(0,h.jsx)(t.code,{children:`detail`}),`.`]}),` 17198`,(0,h.jsxs)(t.p,{children:[`Ramificá tu lógica por `,(0,h.jsx)(t.code,{children:`response_code`}),`, no por el texto de `,(0,h.jsx)(t.code,{children:`message`}),`.`]}),` 17199`,(0,h.jsx)(t.h2,{id:`correlacion`,children:`Correlación`}),` 17200`,(0,h.jsxs)(t.p,{children:[`Enviá `,(0,h.jsx)(t.code,{children:`X-Correlation-Id`}),` en el request para propagar tu propio identificador; el valor 17201vuelve como `,(0,h.jsx)(t.code,{children:`correlation_id`}),` en el sobre. Guardalo en tus logs: es el dato con el que 17202soporte rastrea una llamada puntual.`]}),` 17203`,(0,h.jsx)(t.h2,{id:`reintentos`,children:`Reintentos seguros`}),` 17204`,(0,h.jsxs)(t.p,{children:[`Dos operaciones aceptan la cabecera `,(0,h.jsx)(t.code,{children:`Idempotency-Key`}),`:`]}),` 17205`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/public/v1/transactions/payments`})]}),` 17206`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/public/v1/accounts/statements`})]})]})})}),` 17207`,(0,h.jsxs)(t.p,{children:[`Reenviar la misma llave con el mismo cuerpo devuelve el resultado original en vez de 17208crear un segundo registro, asà un timeout de red se puede reintentar sin duplicar. Si 17209reusás una llave con un cuerpo distinto, la respuesta es `,(0,h.jsx)(t.code,{children:`409`}),` con 17210`,(0,h.jsx)(t.code,{children:`response_code: IDEMPOTENCY_CONFLICT`}),`.`]}),` 17211`,(0,h.jsx)(t.p,{children:`Generá una llave por intención de negocio (por ejemplo un UUID por orden), no una por 17212reintento. El resto de las operaciones son consultas y se pueden repetir sin efectos 17213adicionales.`}),` 17214`,(0,h.jsx)(t.h2,{id:`paginacion`,children:`Paginación`}),` 17215`,(0,h.jsx)(t.p,{children:`El API usa dos esquemas según el recurso.`}),`
17216`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`Cursor, en el listado de pagos.`}),` `,(0,h.jsx)(t.code,{children:`GET /api/public/v1/transactions/payments`}),` acepta 17217`,(0,h.jsx)(t.code,{children:`limit`}),` (por defecto 20, máximo 100) y `,(0,h.jsx)(t.code,{children:`cursor`}),`. La respuesta trae 17218`,(0,h.jsx)(t.code,{children:`pagination.next_cursor`}),`: pasalo como `,(0,h.jsx)(t.code,{children:`cursor`}),` en el siguiente request. Cuando viene 17219vacÃo u omitido, no hay más páginas.`]}),` 17220`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`Offset, en cuentas.`}),` `,(0,h.jsx)(t.code,{children:`GET /api/public/v1/accounts`}),` y 17221`,(0,h.jsx)(t.code,{children:`GET /api/public/v1/accounts/balances`}),` aceptan `,(0,h.jsx)(t.code,{children:`limit`}),` (1 a 100) y `,(0,h.jsx)(t.code,{children:`offset`}),` (desde 0), y 17222devuelven `,(0,h.jsx)(t.code,{children:`pagination`}),` con `,(0,h.jsx)(t.code,{children:`limit`}),`, `,(0,h.jsx)(t.code,{children:`offset`}),` y `,(0,h.jsx)(t.code,{children:`total`}),`.`]}),` 17223`,(0,h.jsx)(t.h2,{id:`formatos`,children:`Fechas y montos`}),` 17224`,(0,h.jsxs)(t.p,{children:[`Los parámetros y campos de fecha usan RFC 3339, por ejemplo 17225`,(0,h.jsx)(t.code,{children:`2026-09-02T15:04:05Z`}),`. Los filtros `,(0,h.jsx)(t.code,{children:`date_from`}),` y `,(0,h.jsx)(t.code,{children:`date_to`}),` del listado de pagos siguen 17226ese mismo formato.`]}),` 17227`,(0,h.jsx)(t.h2,{id:`host`,children:`Salud y documentación del host`}),` 17228`,(0,h.jsx)(t.p,{children:`El propio host expone tres rutas de servicio:`}),` 17229`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`GET`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/public/v1/healthz`})]}),` 17230`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`GET`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /openapi.yaml`})]}),` 17231`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`GET`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /docs`})]})]})})}),` 17232`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.code,{children:`healthz`}),` sirve para chequeo de disponibilidad, `,(0,h.jsx)(t.code,{children:`openapi.yaml`}),` devuelve el spec crudo y 17233`,(0,h.jsx)(t.code,{children:`/docs`}),` la interfaz de documentación del servicio. En este portal el mismo spec está en 17234`,(0,h.jsx)(t.a,{href:`/developers/api-bancario/openapi.json`,children:`openapi.json`}),` y 17235`,(0,h.jsx)(t.a,{href:`/developers/api-bancario/openapi.yaml`,children:`openapi.yaml`}),`.`]})]})}function py(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(fy,{...e})}):fy(e)}var my=t({default:()=>_y,frontmatter:()=>hy}),hy={title:`Cuentas del API Bancario`,kind:`api-operation`,status:`stable`,api_version:`1.0.0`,last_verified:`2026-09-02`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Tilopay_API_BaaS.yaml â spec OpenAPI 3.0.3 del API Bancario, versión 1.0.0`],locales:[`es`,`en`],description:`Operaciones de cuentas del API Bancario: validación, listado, saldos y estados de cuenta.`};function gy(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,...m(),...e.components},{BaasOperations:n}=t;return n||vy(`BaasOperations`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(t.p,{children:[`El grupo `,(0,h.jsx)(t.code,{children:`Accounts`}),` cubre la cuenta como recurso: validar una cuenta destino antes de 17236transferir, listar las cuentas accesibles, consultar saldos y pedir estados de cuenta.`]}),` 17237`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/public/v1/accounts/validate`})]}),` 17238`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`GET`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/public/v1/accounts`})]}),` 17239`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`GET`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/public/v1/accounts/balances`})]}),` 17240`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`GET`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/public/v1/accounts/balance`})]}),` 17241`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/public/v1/accounts/statements`})]}),` 17242`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`GET`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/public/v1/accounts/statements/{request_id}`})]})]})})}),` 17243`,(0,h.jsx)(t.h2,{id:`reglas`,children:`Reglas del recurso`}),` 17244`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`Alcance.`}),` El listado devuelve sólo las cuentas que autoriza el token; no se envÃa 17245`,(0,h.jsx)(t.code,{children:`tenant_id`}),` ni `,(0,h.jsx)(t.code,{children:`owner_id`}),` como parámetro.`]}),` 17246`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`Validación previa.`}),` Validá la cuenta destino antes de crear un pago: la operación 17247confirma que la cuenta existe y es apta, y devuelve los datos del titular que el servicio 17248expone.`]}),` 17249`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`Estados de cuenta asincrónicos.`}),` La generación se solicita con un `,(0,h.jsx)(t.code,{children:`POST`}),` que acepta 17250`,(0,h.jsx)(t.code,{children:`Idempotency-Key`}),` y devuelve un `,(0,h.jsx)(t.code,{children:`request_id`}),`; después consultás ese `,(0,h.jsx)(t.code,{children:`request_id`}),` hasta que 17251el resultado esté disponible. Ver 17252`,(0,h.jsx)(t.a,{href:`/developers/api-bancario/convenciones#reintentos`,children:`reintentos seguros`}),`.`]}),` 17253`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`Paginación.`}),` `,(0,h.jsx)(t.code,{children:`GET /api/public/v1/accounts`}),` y `,(0,h.jsx)(t.code,{children:`GET /api/public/v1/accounts/balances`}),` 17254usan `,(0,h.jsx)(t.code,{children:`limit`}),` y `,(0,h.jsx)(t.code,{children:`offset`}),`, y devuelven `,(0,h.jsx)(t.code,{children:`pagination`}),` con `,(0,h.jsx)(t.code,{children:`limit`}),`, `,(0,h.jsx)(t.code,{children:`offset`}),` y `,(0,h.jsx)(t.code,{children:`total`}),`.`]}),` 17255`,(0,h.jsx)(t.h2,{id:`operaciones`,children:`Operaciones`}),` 17256`,(0,h.jsx)(n,{slug:`api-bancario/cuentas`})]})}function _y(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(gy,{...e})}):gy(e)}function vy(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var yy=t({default:()=>Sy,frontmatter:()=>by}),by={title:`Códigos de respuesta del API Bancario`,kind:`concept`,status:`stable`,api_version:`1.0.0`,last_verified:`2026-09-02`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Tilopay_API_BaaS.yaml â spec OpenAPI 3.0.3 del API Bancario, versión 1.0.0`],locales:[`es`,`en`],description:`Catálogo completo de response_code del API Bancario de Tilopay y cómo reaccionar a cada familia.`};function xy(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,strong:`strong`,...m(),...e.components},{BaasResponseCodes:n}=t;return n||Cy(`BaasResponseCodes`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(t.p,{children:[`Todo error del API Bancario llega en el 17257`,(0,h.jsx)(t.a,{href:`/developers/api-bancario/convenciones#envelope`,children:`envelope estándar`}),`, con `,(0,h.jsx)(t.code,{children:`success: false`}),`, 17258el status HTTP en `,(0,h.jsx)(t.code,{children:`http_status_code`}),` y un `,(0,h.jsx)(t.code,{children:`response_code`}),` del catálogo. Ramificá por 17259`,(0,h.jsx)(t.code,{children:`response_code`}),`.`]}),` 17260`,(0,h.jsx)(t.h2,{id:`familias`,children:`Cómo reaccionar por familia`}),` 17261`,(0,h.jsxs)(t.p,{children:[(0,h.jsxs)(t.strong,{children:[(0,h.jsx)(t.code,{children:`4xx`}),` de request.`]}),` El cuerpo o los parámetros no son válidos, o el recurso no existe. 17262Corregà la llamada antes de reenviarla: reintentar igual devuelve el mismo error. Acá caen 17263`,(0,h.jsx)(t.code,{children:`INVALID_REQUEST`}),`, `,(0,h.jsx)(t.code,{children:`VALIDATION_ERROR`}),`, `,(0,h.jsx)(t.code,{children:`NOT_FOUND`}),` y los códigos de negocio como 17264`,(0,h.jsx)(t.code,{children:`INSUFFICIENT_FUNDS`}),` o `,(0,h.jsx)(t.code,{children:`LIMIT_EXCEEDED`}),`.`]}),` 17265`,(0,h.jsxs)(t.p,{children:[(0,h.jsxs)(t.strong,{children:[(0,h.jsx)(t.code,{children:`401`}),` y `,(0,h.jsx)(t.code,{children:`403`}),`.`]}),` El token no viaja, venció o su contexto no autoriza el recurso. Renová el 17266access token con el 17267`,(0,h.jsx)(t.a,{href:`/developers/api-bancario/autenticacion#exchange`,children:`intercambio de token`}),`; si persiste con 17268un token nuevo, el contexto no tiene permiso sobre ese recurso.`]}),` 17269`,(0,h.jsxs)(t.p,{children:[(0,h.jsxs)(t.strong,{children:[(0,h.jsx)(t.code,{children:`409 IDEMPOTENCY_CONFLICT`}),`.`]}),` Reusaste una `,(0,h.jsx)(t.code,{children:`Idempotency-Key`}),` con un cuerpo distinto. Usá 17270una llave nueva para la nueva intención; ver 17271`,(0,h.jsx)(t.a,{href:`/developers/api-bancario/convenciones#reintentos`,children:`reintentos seguros`}),`.`]}),` 17272`,(0,h.jsxs)(t.p,{children:[(0,h.jsxs)(t.strong,{children:[(0,h.jsx)(t.code,{children:`429`}),`.`]}),` Superaste el lÃmite de llamadas. Espaciá los envÃos y reintentá con backoff.`]}),` 17273`,(0,h.jsxs)(t.p,{children:[(0,h.jsxs)(t.strong,{children:[(0,h.jsx)(t.code,{children:`5xx`}),`.`]}),` Falla del lado del servicio. Reintentá con backoff, y en los `,(0,h.jsx)(t.code,{children:`POST`}),` reenviá la 17274`,(0,h.jsx)(t.strong,{children:`misma`}),` `,(0,h.jsx)(t.code,{children:`Idempotency-Key`}),` para no duplicar el registro. Guardá el `,(0,h.jsx)(t.code,{children:`correlation_id`}),` 17275antes de escalar a soporte.`]}),` 17276`,(0,h.jsx)(t.h2,{id:`catalogo`,children:`Catálogo completo`}),` 17277`,(0,h.jsxs)(t.p,{children:[`Estos son los 28 valores que el spec declara en el enum `,(0,h.jsx)(t.code,{children:`ResponseCode`}),`, con los status 17278HTTP en los que aparecen. `,(0,h.jsx)(t.code,{children:`OK`}),` es el código de las respuestas exitosas.`]}),` 17279`,(0,h.jsx)(n,{}),` 17280`,(0,h.jsxs)(t.p,{children:[`Un `,(0,h.jsx)(t.code,{children:`response_code`}
17280),` que no esté en esta lista no forma parte del contrato de la versión 172811.0.0 del API: tratalo como error genérico según su status HTTP y reportalo con el 17282`,(0,h.jsx)(t.code,{children:`correlation_id`}),`.`]})]})}function Sy(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(xy,{...e})}):xy(e)}function Cy(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var wy=t({default:()=>Dy,frontmatter:()=>Ty}),Ty={title:`Pagos del API Bancario`,kind:`api-operation`,status:`stable`,api_version:`1.0.0`,last_verified:`2026-09-02`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Tilopay_API_BaaS.yaml â spec OpenAPI 3.0.3 del API Bancario, versión 1.0.0`],locales:[`es`,`en`],description:`Operaciones de pagos del API Bancario: crear, consultar, listar y buscar pagos PIN y SINPE Móvil.`};function Ey(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,...m(),...e.components},{BaasOperations:n}=t;return n||Oy(`BaasOperations`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(t.p,{children:[`El grupo `,(0,h.jsx)(t.code,{children:`Payments`}),` cubre el ciclo completo de un pago: crearlo, consultarlo por 17283identificador, listarlo con filtros y buscarlo por cualquiera de sus referencias.`]}),` 17284`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/public/v1/transactions/payments`})]}),` 17285`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`GET`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/public/v1/transactions/payments`})]}),` 17286`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`GET`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/public/v1/transactions/payments/{payment_id}`})]}),` 17287`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/public/v1/transactions/payments/search`})]})]})})}),` 17288`,(0,h.jsx)(t.h2,{id:`reglas`,children:`Reglas del recurso`}),` 17289`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`Métodos.`}),` `,(0,h.jsx)(t.code,{children:`payment_method_code`}),` admite `,(0,h.jsx)(t.code,{children:`PIN`}),` y `,(0,h.jsx)(t.code,{children:`SINPE_MOVIL`}),`. `,(0,h.jsx)(t.strong,{children:`Dirección.`}),` 17290`,(0,h.jsx)(t.code,{children:`direction`}),` admite `,(0,h.jsx)(t.code,{children:`OUT`}),` (salida) e `,(0,h.jsx)(t.code,{children:`IN`}),` (entrada). `,(0,h.jsx)(t.strong,{children:`Cuenta destino.`}),` se identifica por 17291`,(0,h.jsx)(t.code,{children:`IBAN`}),` o por `,(0,h.jsx)(t.code,{children:`PHONE`}),`, según el método.`]}),` 17292`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`Referencia propia.`}),` `,(0,h.jsx)(t.code,{children:`client_reference`}),` es tu identificador del pago y es único por 17293tenant: dos pagos del mismo cliente no pueden compartirlo. Sirve para buscar el pago sin 17294guardar el `,(0,h.jsx)(t.code,{children:`payment_id`}),`.`]}),` 17295`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`Reintentos seguros.`}),` La creación acepta `,(0,h.jsx)(t.code,{children:`Idempotency-Key`}),`; reenviar la misma llave con 17296el mismo cuerpo devuelve el pago original en vez de crear otro. Ver 17297`,(0,h.jsx)(t.a,{href:`/developers/api-bancario/convenciones#reintentos`,children:`reintentos seguros`}),`.`]}),` 17298`,(0,h.jsx)(t.h2,{id:`estados`,children:`Estados`}),` 17299`,(0,h.jsxs)(t.p,{children:[`Un pago recorre cinco estados: `,(0,h.jsx)(t.code,{children:`pending`}),`, `,(0,h.jsx)(t.code,{children:`processing`}),`, `,(0,h.jsx)(t.code,{children:`confirmed`}),`, `,(0,h.jsx)(t.code,{children:`posted`}),` y `,(0,h.jsx)(t.code,{children:`failed`}),`.`]}),` 17300`,(0,h.jsxs)(t.p,{children:[`La reversión `,(0,h.jsx)(t.strong,{children:`no es un estado`}),`: un pago revertido sigue en `,(0,h.jsx)(t.code,{children:`posted`}),` y se reconoce por 17301`,(0,h.jsx)(t.code,{children:`result: reversed`}),` y `,(0,h.jsx)(t.code,{children:`has_reversal: true`}),`, además del evento 17302`,(0,h.jsx)(t.a,{href:`/developers/api-bancario/webhooks`,children:(0,h.jsx)(t.code,{children:`payment.reversed`})}),`. Consultá siempre esos dos campos 17303antes de dar un pago por definitivo.`]}),` 17304`,(0,h.jsx)(t.h2,{id:`operaciones`,children:`Operaciones`}),` 17305`,(0,h.jsx)(n,{slug:`api-bancario/pagos`})]})}function Dy(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Ey,{...e})}):Ey(e)}function Oy(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var ky=t({default:()=>My,frontmatter:()=>Ay}),Ay={title:`Webhooks del API Bancario`,kind:`api-operation`,status:`stable`,api_version:`1.0.0`,last_verified:`2026-09-02`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Tilopay_API_BaaS.yaml â spec OpenAPI 3.0.3 del API Bancario, versión 1.0.0`],locales:[`es`,`en`],description:`Registro de destino, features suscribibles y contratos de payload de los webhooks del API Bancario.`};function jy(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,table:`table`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,...m(),...e.components},{BaasOperations:n,BaasWebhookContracts:r}=t;return n||Ny(`BaasOperations`,!0),r||Ny(`BaasWebhookContracts`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(t.p,{children:[`El grupo `,(0,h.jsx)(t.code,{children:`Webhooks`}),` permite registrar el destino HTTPS donde recibÃs los eventos, ver qué 17306features podés suscribir por método de pago y consultar el contrato de payload de cada 17307evento antes de escribir el receptor.`]}),` 17308`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/public/v1/webhook/destination`})]}),` 17309`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`GET`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/public/v1/webhook/features`})]}),` 17310`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`GET`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` /api/public/v1/webhook/event-contracts/{event_type}`})]})]})})}),` 17311`,(0,h.jsx)(t.h2,{id:`eventos`,children:`Eventos`}),` 17312`,(0,h.jsx)(t.p,{children:`El spec declara cuatro tipos de evento:`}),` 17313`,(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Evento`}),(0,h.jsx)(t.th,{children:`Cuándo llega`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`payin.posted`})}),(0,h.jsx)(t.td,{children:`Se acreditó un movimiento de entrada.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`payment.succeeded`})}),(0,h.jsx)(t.td,{children:`El pago terminó de forma exitosa.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`payment.failed`})}),(0,h.jsx)(t.td,{children:`El pago terminó con falla.`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`payment.reversed`})}),(0,h.jsx)(t.td,{children:`El pago fue revertido.`})]})]})]}),` 17314`,(0,h.jsxs)(t.p,{children:[`Un pago revertido conserva el estado `,(0,h.jsx)(t.code,{children:`posted`}),` y se distingue por `,(0,h.jsx)(t.code,{children:`result: reversed`}),` y 17315`,(0,h.jsx)(t.code,{children:`has_reversal: true`}),`; ver `,(0,h.jsx)(t.a,{href:`/developers/api-bancario/pagos#estados`,children:`estados del pago`}),`.`]}),` 17316`,(0,h.jsx)(t.h2,{id:`receptor`,children:`Buenas prácticas del receptor`}),` 17317`,(0,h.jsxs)(t.p,{children:[`Respondé `,(0,h.jsx)(t.code,{children:`2xx`}
17317),` en cuanto recibÃs el evento y procesá aparte: un receptor lento provoca 17318reenvÃos. Tratá los eventos como potencialmente repetidos y deduplicá por el identificador 17319del pago. Y no confÃes el estado final sólo al webhook: confirmalo con 17320`,(0,h.jsx)(t.a,{href:`/developers/api-bancario/pagos#operaciones`,children:`la consulta del pago`}),`.`]}),` 17321`,(0,h.jsx)(t.h2,{id:`operaciones`,children:`Operaciones`}),` 17322`,(0,h.jsx)(n,{slug:`api-bancario/webhooks`}),` 17323`,(0,h.jsx)(t.h2,{id:`contratos`,children:`Contratos de payload`}),` 17324`,(0,h.jsx)(t.p,{children:`Cada evento declara su propio contrato de campos. Estos son los que el spec publica:`}),` 17325`,(0,h.jsx)(r,{})]})}function My(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(jy,{...e})}):jy(e)}function Ny(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Py=t({default:()=>Ly,frontmatter:()=>Fy}),Fy={title:`API Bancario de Tilopay`,kind:`api-index`,status:`stable`,api_version:`1.0.0`,last_verified:`2026-09-02`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Tilopay_API_BaaS.yaml â spec OpenAPI 3.0.3 del API Bancario, versión 1.0.0`],locales:[`es`,`en`],related:[`server-to-server`],description:`Referencia del API Bancario (BaaS) de Tilopay generada desde su spec OpenAPI 3.0.3, versión 1.0.0.`};function Iy(e){let t={a:`a`,code:`code`,h2:`h2`,h3:`h3`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,...m(),...e.components};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.p,{children:`El API Bancario de Tilopay permite a un cliente integrado iniciar pagos (PIN y SINPE 17326Móvil), consultar su estado, administrar cuentas y suscribirse a webhooks de eventos de 17327pago, siempre limitado a las cuentas que autoriza el token de acceso.`}),` 17328`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`Es un producto separado de la pasarela de pagos.`}),` Corre en su propia infraestructura, 17329con host, credenciales y autenticación propias. Un comercio que ya integra el API de 17330adquirencia no obtiene acceso a este automáticamente.`]}),` 17331`,(0,h.jsxs)(t.p,{children:[`Esta referencia se genera desde el spec OpenAPI 3.0.3 del API Bancario, versión `,(0,h.jsx)(t.strong,{children:`1.0.0`}),`.`]}),` 17332`,(0,h.jsx)(t.h2,{id:`que-permite`,children:`Qué permite hacer`}),` 17333`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`Pagos.`}),` Crear un pago, consultarlo por identificador, listarlo por cuenta y buscarlo 17334por `,(0,h.jsx)(t.code,{children:`payment_id`}),`, `,(0,h.jsx)(t.code,{children:`public_id`}),` o `,(0,h.jsx)(t.code,{children:`client_reference`}),`; los métodos declarados son `,(0,h.jsx)(t.code,{children:`PIN`}),` y 17335`,(0,h.jsx)(t.code,{children:`SINPE_MOVIL`}),`, en dirección `,(0,h.jsx)(t.code,{children:`OUT`}),` o `,(0,h.jsx)(t.code,{children:`IN`}),`. 17336`,(0,h.jsx)(t.a,{href:`/developers/api-bancario/pagos`,children:`Ver operaciones de pagos`}),`.`]}),` 17337`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`Cuentas.`}),` Validar una cuenta destino antes de transferir, listar las cuentas 17338accesibles con o sin saldos, consultar el saldo de una cuenta y solicitar estados de 17339cuenta de forma asincrónica. 17340`,(0,h.jsx)(t.a,{href:`/developers/api-bancario/cuentas`,children:`Ver operaciones de cuentas`}),`.`]}),` 17341`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`Webhooks.`}),` Registrar un destino HTTPS cifrado, listar los features suscribibles por 17342método de pago y consultar el contrato de payload de cada evento. 17343`,(0,h.jsx)(t.a,{href:`/developers/api-bancario/webhooks`,children:`Ver operaciones de webhooks`}),`.`]}),` 17344`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`Catálogos.`}),` Tipos de persona de identificación de cliente por paÃs. 17345`,(0,h.jsx)(t.a,{href:`/developers/api-bancario/catalogos`,children:`Ver catálogos`}),`.`]}),` 17346`,(0,h.jsxs)(t.p,{children:[`Además, el API expone `,(0,h.jsx)(t.code,{children:`GET /api/public/v1/healthz`}),` para chequeo de salud, y `,(0,h.jsx)(t.code,{children:`GET /openapi.yaml`}),` y `,(0,h.jsx)(t.code,{children:`GET /docs`}),` para el spec crudo y la interfaz de documentación del propio 17347host.`]}),` 17348`,(0,h.jsx)(t.h3,{id:`fuera-de-alcance`,children:`Capacidades de la plataforma fuera del API público v1`}),` 17349`,(0,h.jsxs)(t.p,{children:[`La plataforma bancaria de Tilopay ofrece capacidades comerciales que `,(0,h.jsx)(t.strong,{children:`el API público 17350v1 no declara`}),`: transferencias DTR, emisión de tarjetas VISA o Mastercard y gestión de 17351recaudos. No hay operaciones para ellas en esta versión del API; para evaluarlas, 17352escribà a `,(0,h.jsx)(t.strong,{children:(0,h.jsx)(t.a,{href:`mailto:[email protected]`,children:`[email protected]`})}),`.`]}),` 17353`,(0,h.jsx)(t.h2,{id:`entornos`,children:`Entornos`}),` 17354`,(0,h.jsx)(t.p,{children:`El spec declara un único servidor, el de pruebas:`}),` 17355`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{children:`https://api-baas-sandbox.tilopay.com`})})})})}),` 17356`,(0,h.jsx)(t.p,{children:`El host de producción y las credenciales de cada entorno se entregan al habilitar el 17357acceso. Las rutas y los contratos son los mismos en ambos entornos.`}),` 17358`,(0,h.jsx)(t.h2,{id:`artefactos`,children:`Artefactos legibles por máquina`}),` 17359`,(0,h.jsx)(t.p,{children:`El spec se sirve completo, con CORS abierto, en dos formatos:`}),` 17360`,(0,h.jsxs)(t.ul,{children:[` 17361`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api-bancario/openapi.json`,children:`openapi.json`})}),` 17362`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/api-bancario/openapi.yaml`,children:`openapi.yaml`})}),` 17363`]}),` 17364`,(0,h.jsxs)(t.p,{children:[`Es un artefacto distinto del spec del API de adquirencia 17365(`,(0,h.jsx)(t.a,{href:`/developers/openapi.json`,children:`/developers/openapi.json`}),`): son dos APIs separadas.`]}),` 17366`,(0,h.jsx)(t.h2,{id:`acceso`,children:`Cómo obtener acceso`}),` 17367`,(0,h.jsxs)(t.p,{children:[`El acceso es restringido y se otorga por solicitud, para operaciones en Costa Rica. 17368Para conocer el producto y solicitarlo: `,(0,h.jsx)(t.a,{href:`https://baas.tilopay.com`,children:`baas.tilopay.com`}),`, 17369indicando volumen mensual estimado, caso de uso y sistemas a integrar.`]}),` 17370`,(0,h.jsx)(t.h2,{id:`siguiente`,children:`Por dónde seguir`}),` 17371`,(0,h.jsxs)(t.ol,{children:[` 17372`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.a,{href:`/developers/api-bancario/autenticacion`,children:`Autenticación`}),` â login, intercambio de token y Bearer.`]}),` 17373`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.a,{href:`/developers/api-bancario/convenciones`,children:`Convenciones`}),` â envelope, correlación, reintentos seguros, paginación y fechas.`]}),` 17374`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.a,{href:`/developers/api-bancario/errores`,children:`Códigos de respuesta`}),` â catálogo completo de `,(0,h.jsx)(t.code,{children:`response_code`}),`.`]}),` 17375`]})]})}function Ly(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Iy,{...e})}):Iy(e)}var Ry=t({default:()=>Vy,frontmatter:()=>zy}),zy={title:`Changelog de API y SDK`,kind:`concept`,status:`draft`,api_version:`v1`,last_verified:`2026-08-28`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[],related:[],draft:!0,description:`Página en construcción. El contenido normativo llega en la siguiente fase.`};function By(e){let t={a:`a`,li:`li`,p:`p`,ul:`ul`,...m(),...e.components};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.p,{children:`Esta página todavÃa no tiene contenido normativo. No la tomés como contrato: nada de 17376lo que falta acá está definido en otro lugar del portal.`}),` 17377`,(0,h.jsx)(t.p,{children:`Mientras tanto:`}),` 17378`,(0,h.jsxs)(t.ul,{children:[` 17379`,(0,h.jsxs)(t.li,{children:[`Para integrar ya, seguà el `,(0,h.jsx)(t.a,{href:`/developers/sdk`,children:`SDK JavaScript`}),`.`]}),` 17380`,(0,h.jsxs)(t.li,{children:[`Para obtener credenciales de sandbox, registrate en `,(0,h.jsx)(t.a,{href:`/developers/registro`,children:`/developers/registro`}),`.`]}),` 17381`,(0,h.jsxs)(t.li,{children:[`Si necesitás este contenido con urgencia, escribinos desde `,(0,h.jsx)(t.a,{href:`/developers/support`,children:`soporte`}),`.`]}),` 17382`]})]})}function Vy(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(By,{...e})}):By(e)}var Hy=t({default:()=>Gy,frontmatter:()=>Uy}),Uy={title:`Flujo de pago: autorización, captura y 3DS`,kind:`concept`,status:`draft`,api_version:`v1`,last_verified:`2026-08-28`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[],related:[],draft:!0,description:`Página en construcción. El contenido normativo llega en la siguiente fase.`};function Wy(e){let t={a:`a`,li:`li`,p:`p`,ul:`ul`,...m(),...e.components};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.p,{children:`Esta página todavÃa no tiene contenido normativo. No la tomés como contrato: nada de 17383lo que falta acá está definido en otro lugar del portal.`}),` 17384`,(0,h.jsx)(t.p,{children:`Mientras tanto:`}),` 17385`,(0,h.jsxs)(t.ul,{children:[` 17386`,(0,h.jsxs)(t.li,{children:[`Para integrar ya, seguà el `,(0,h.jsx)(t.a,{href:`/developers/sdk`,children:`SDK JavaScript`}),`.`]}),` 17387`,(0,h.jsxs)(t.li,{children:[`Para obtener credenciales de sandbox, registrate en `,(0,h.jsx)(t.a,{href:`/developers/registro`,children:`/developers/registro`}),`.`]}),` 17388`,(0,h.jsxs)(t.li,{children:[`Si necesitás este contenido con urgencia, escribinos desde `,(0,h.jsx)(t.a,{href:`/developers/support`,children:`soporte`}),`.`]}),` 17389`]})]})}function Gy(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Wy,{...e})}):Wy(e)}var Ky=t({default:()=>Yy,frontmatter:()=>qy}),qy={title:`LÃmites de tasa`,kind:`concept`,status:`draft`,api_version:`v1`,last_verified:`2026-08-28`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[],related:[],draft:!0,description:`Página en construcción. El contenido normativo llega en la siguiente fase.`};function Jy(e){let t={a:`a`,li:`li`,p:`p`,ul:`ul`,...m(),...e.components};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.p,{children:`Esta página todavÃa no tiene contenido normativo. No la tomés como contrato: nada de 17390lo que falta acá está definido en otro lugar del portal.`}),` 17391`,(0,h.jsx)(t.p,{children:`Mientras tanto:`}),` 17392`,(0,h.jsxs)(t.ul,{children:[` 17393`,(0,h.jsxs)(t.li,{children:[`Para integrar ya, seguà el `,(0,h.jsx)(t.a,{href:`/developers/sdk`,children:`SDK JavaScript`}),`.`]}),` 17394`,(0,h.jsxs)(t.li,{children:[`Para obtener credenciales de sandbox, registrate en `,(0,h.jsx)(t.a,{href:`/developers/registro`,children:`/developers/registro`}),`.`]}),` 17395`,(0,h.jsxs)(t.li,{children:[`Si necesitás este contenido con urgencia, escribinos desde `,(0,h.jsx)(t.a,{href:`/developers/support`,children:`soporte`}),`.`]}),` 17396`]})]})}function Yy(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Jy,{...e})}):Jy(e)}var Xy=t({default:()=>$y,frontmatter:()=>Zy}),Zy={title:`Monedas y montos`,kind:`concept`,status:`draft`,api_version:`v1`,last_verified:`2026-08-28`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[],related:[],draft:!0,description:`Página en construcción. El contenido normativo llega en la siguiente fase.`};function Qy(e){let t={a:`a`,li:`li`,p:`p`,ul:`ul`,...m(),...e.components};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.p,{children:`Esta página todavÃa no tiene contenido normativo. No la tomés como contrato: nada de 17397lo que falta acá está definido en otro lugar del portal.`}),` 17398`,(0,h.jsx)(t.p,{children:`Mientras tanto:`}),` 17399`,(0,h.jsxs)(t.ul,{children:[` 17400`,(0,h.jsxs)(t.li,{children:[`Para integrar ya, seguà el `,(0,h.jsx)(t.a,{href:`/developers/sdk`,children:`SDK JavaScript`}),`.`]}),` 17401`,(0,h.jsxs)(t.li,{children:[`Para obtener credenciales de sandbox, registrate en `,(0,h.jsx)(t.a,{href:`/developers/registro`,children:`/developers/registro`}),`.`]}),` 17402`,(0,h.jsxs)(t.li,{children:[`Si necesitás este contenido con urgencia, escribinos desde `,(0,h.jsx)(t.a,{href:`/developers/support`,children:`soporte`}),`.`]}),` 17403`]})]})}function $y(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Qy,{...e})}):Qy(e)}var eb=t({default:()=>rb,frontmatter:()=>tb}),tb={title:`Tokenización y tarjetas guardadas`,kind:`concept`,status:`draft`,last_verified:`2026-08-28`,verified_by:`henry`,owner:`equipo-integraciones`,sources:[],locales:[`es`,`en`],related:[],draft:!0,description:`Página pendiente de contenido verificado.`};function nb(e){let t={p:`p`,...m(),...e.components},{Callout:n}=t;return n||ib(`Callout`,!0),(0,h.jsx)(n,{type:`warn`,children:(0,h.jsx)(t.p,{children:`Página pendiente. El contenido anterior no venÃa de una fuente verificada y se retiró. 17404No hay nada normativo acá: ni nombres de métodos, ni campos, ni comportamiento.`})})}function rb(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(nb,{...e})}):nb(e)}function ib(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var ab=t({default:()=>cb,frontmatter:()=>ob}),ob={title:`Entornos: pruebas y producción`,kind:`concept`,status:`stable`,api_version:`v1`,last_verified:`2026-08-28`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Respuestas de TecnologÃa, 28-08-2026`],locales:[`es`,`en`],related:[`api/autenticacion`,`sdk/reference/init`,`tarjetas-de-prueba`],description:`Pruebas y producción comparten host. El modo se cambia desde la cuenta y se verifica con el campo test de Init().`};
17404function sb(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,strong:`strong`,table:`table`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,...m(),...e.components},{Callout:n}=t;return n||lb(`Callout`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(n,{type:`warn`,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`No existe un host de sandbox.`}),` Pruebas y producción usan el mismo host: 17405`,(0,h.jsx)(t.code,{children:`app.tilopay.com`}),`. La URL no te dice en qué modo estás.`]})}),` 17406`,(0,h.jsx)(t.h2,{id:`como-se-cambia`,children:`Cómo se cambia de modo`}),` 17407`,(0,h.jsxs)(t.p,{children:[`El modo se alterna `,(0,h.jsx)(t.strong,{children:`desde la cuenta en el portal de Tilopay`}),`, no desde la integración. 17408No hay un parámetro, un encabezado ni una URL alterna que lo cambie desde el código.`]}),` 17409`,(0,h.jsx)(t.h2,{id:`como-se-verifica`,children:`Cómo se verifica`}),` 17410`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.code,{children:`Tilopay.Init()`}),` devuelve un campo `,(0,h.jsx)(t.strong,{children:(0,h.jsx)(t.code,{children:`test`})}),`:`]}),` 17411`,(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Valor`}),(0,h.jsx)(t.th,{children:`Significado`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`0`})}),(0,h.jsx)(t.td,{children:`Producción`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`1`})}),(0,h.jsx)(t.td,{children:`Pruebas`})]})]})]}),` 17412`,(0,h.jsx)(t.p,{children:`Esa es la única señal disponible en tiempo de ejecución. Leela y mostrala en tu propio 17413checkout mientras desarrollás.`}),` 17414`,(0,h.jsx)(t.h2,{id:`riesgo`,children:`El riesgo real`}),` 17415`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsxs)(t.p,{children:[`Como el host es el mismo, un integrador puede creer que está probando y estar en 17416producción, cobrando de verdad. `,(0,h.jsxs)(t.strong,{children:[`Verificá `,(0,h.jsx)(t.code,{children:`test`}),` antes de asumir el modo.`]}),` Si tu 17417integración va a mover dinero, hacé que un `,(0,h.jsx)(t.code,{children:`test: 0`}),` inesperado falle ruidosamente en tus 17418ambientes de desarrollo.`]})}),` 17419`,(0,h.jsx)(t.h2,{id:`tarjetas`,children:`Tarjetas de prueba`}),` 17420`,(0,h.jsxs)(t.p,{children:[`En modo de pruebas se cobra con las `,(0,h.jsx)(t.a,{href:`/developers/tarjetas-de-prueba`,children:`tarjetas de prueba`}),`: 17421ahà está el número, la marca, el resultado esperado y si abre la pantalla de challenge 3DS.`]})]})}function cb(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(sb,{...e})}):sb(e)}function lb(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var ub=t({default:()=>pb,frontmatter:()=>db}),db={title:`Cobrar con tarjeta en el navegador`,kind:`guide`,status:`draft`,api_version:`v1`,last_verified:`2026-08-28`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[],related:[],draft:!0,description:`Página en construcción. El contenido normativo llega en la siguiente fase.`};function fb(e){let t={a:`a`,li:`li`,p:`p`,ul:`ul`,...m(),...e.components};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.p,{children:`Esta página todavÃa no tiene contenido normativo. No la tomés como contrato: nada de 17422lo que falta acá está definido en otro lugar del portal.`}),` 17423`,(0,h.jsx)(t.p,{children:`Mientras tanto:`}),` 17424`,(0,h.jsxs)(t.ul,{children:[` 17425`,(0,h.jsxs)(t.li,{children:[`Para integrar ya, seguà el `,(0,h.jsx)(t.a,{href:`/developers/sdk`,children:`SDK JavaScript`}),`.`]}),` 17426`,(0,h.jsxs)(t.li,{children:[`Para obtener credenciales de sandbox, registrate en `,(0,h.jsx)(t.a,{href:`/developers/registro`,children:`/developers/registro`}),`.`]}),` 17427`,(0,h.jsxs)(t.li,{children:[`Si necesitás este contenido con urgencia, escribinos desde `,(0,h.jsx)(t.a,{href:`/developers/support`,children:`soporte`}),`.`]}),` 17428`]})]})}function pb(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(fb,{...e})}):fb(e)}var mb=t({default:()=>_b,frontmatter:()=>hb}
17428),hb={title:`Hosted payment page`,kind:`guide`,status:`stable`,api_version:`v1`,last_verified:`2026-08-28`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Respuestas de TecnologÃa, 28-08-2026`],locales:[`es`,`en`],related:[`sdk`,`api/hosted-payment-page`,`api/autenticacion`,`api/webhooks`],gaps:[`Endpoint, parámetros y formato del callback de la hosted payment page: sin verificar.`],description:`Camino de integración en el que el cliente paga en una página alojada por Tilopay y tu servidor recibe el resultado.`};function gb(e){let t={a:`a`,h2:`h2`,li:`li`,ol:`ol`,p:`p`,strong:`strong`,ul:`ul`,...m(),...e.components};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`que-es`,children:`Qué es`}),` 17429`,(0,h.jsx)(t.p,{children:`Tu servidor le pide una URL de pago al API, redirige al cliente a esa página de Tilopay y 17430recibe el resultado en tu callback URL.`}),` 17431`,(0,h.jsxs)(t.p,{children:[`Los datos de tarjeta se digitan en una página de Tilopay: `,(0,h.jsx)(t.strong,{children:`el comercio nunca ve un número de 17432tarjeta`}),` y el servidor del comercio queda fuera de ese flujo.`]}),` 17433`,(0,h.jsxs)(t.p,{children:[`La operación de este camino está en `,(0,h.jsx)(t.a,{href:`/developers/api/hosted-payment-page/process-payment`,children:`API · processPayment`}),`.`]}),` 17434`,(0,h.jsx)(t.h2,{id:`diferencia-link`,children:`Diferencia con un link de pago`}),` 17435`,(0,h.jsxs)(t.ul,{children:[` 17436`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`Hosted payment page`}),`: tu servidor pide una URL de pago por API y redirige al cliente a ella. Es ideal para flujos de checkout integrados en tu sitio o app.`]}),` 17437`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`Link de pago`}),`: es una URL reusable que creás por API o desde el panel y compartÃs por mensaje, correo, redes o QR. El cliente paga cuando quiera; no necesitás redirigirlo desde tu flujo.`]}),` 17438`,(0,h.jsx)(t.li,{children:`En resumen: HPP para checkout integrado y transacciones puntuales; link de pago para cobros compartidos y sin desarrollo de front.`}),` 17439`]}),` 17440`,(0,h.jsx)(t.h2,{id:`para-quien`,children:`Para quién es`}),` 17441`,(0,h.jsx)(t.p,{children:`Para equipos que cobran con código propio pero prefieren no construir ni mantener el 17442formulario de tarjeta. Lo que necesitás es backend: pedir la URL y atender el callback.`}),` 17443`,(0,h.jsx)(t.h2,{id:`requisitos`,children:`Requisitos antes de empezar`}),` 17444`,(0,h.jsxs)(t.ol,{children:[` 17445`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`Credenciales propias.`}),` No hay credenciales de sandbox compartidas: cada desarrollador 17446obtiene las suyas en `,(0,h.jsx)(t.a,{href:`/developers/registro`,children:`registro de developer`}),`.`]}),` 17447`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`Autenticación del API.`}),` Ver `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`autenticación`}),`.`]}),` 17448`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`Una URL de callback tuya`}),` que pueda recibir el resultado de la transacción.`]}),` 17449`]}),` 17450`,(0,h.jsx)(t.h2,{id:`confirmacion`,children:`Cómo confirmar el estado de un cobro`}),` 17451`,(0,h.jsx)(t.p,{children:`El resultado que llega a tu callback no es la única señal disponible, y no todas las 17452respuestas de error viajan con un HTTP 4xx:`}),` 17453`,(0,h.jsxs)(t.ul,{children:[` 17454`,(0,h.jsxs)(t.li,{children:[`Leé `,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`cómo leer una respuesta de error`}),` antes de decidir un éxito.`]}),` 17455`,(0,h.jsxs)(t.li,{children:[`Configurá `,(0,h.jsx)(t.a,{href:`/developers/api/webhooks`,children:`webhooks`}),` para los eventos que te interesen.`]}),` 17456`,(0,h.jsxs)(t.li,{children:[`Si una llamada falla sin respuesta clara, resolvé el estado con 17457`,(0,h.jsx)(t.a,{href:`/developers/reintentos-seguros`,children:`reintentos seguros`}),`.`]}),` 17458`]}),` 17459`,(0,h.jsx)(t.h2,{id:`entornos`,children:`Entornos`}),` 17460`,(0,h.jsxs)(t.p,{children:[`Pruebas y producción comparten el mismo host. Ver 17461`,(0,h.jsx)(t.a,{href:`/developers/entornos`,children:`entornos`}),` antes de cobrar de verdad.`]}),` 17462`,(0,h.jsx)(t.h2,{id:`cumplimiento`,children:`Cumplimiento`}),` 17463`,(0,h.jsx)(t.p,{children:`Es el camino que menos expone a tu infraestructura junto con el de sin código. Confirmá con 17464tu equipo de cumplimiento el alcance que aplica a tu comercio.`}),` 17465`,(0,h.jsx)(t.h2,{id:`alternativa`,children:`Si preferÃs el formulario en tu sitio`}),` 17466`,(0,h.jsxs)(t.p,{children:[`Usá el `,(0,h.jsx)(t.a,{href:`/developers/sdk`,children:`SDK JavaScript`}),`: el diseño es tuyo y los datos siguen sin pasar por 17467tu servidor.`]}
17467)]})}function _b(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(gb,{...e})}):gb(e)}var vb=t({default:()=>xb,frontmatter:()=>yb}),yb={title:`SINPE Móvil`,kind:`concept`,status:`draft`,api_version:`v1`,last_verified:`2026-08-28`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[],related:[],draft:!0,description:`Página en construcción. El contenido normativo llega en la siguiente fase.`};function bb(e){let t={a:`a`,li:`li`,p:`p`,ul:`ul`,...m(),...e.components};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.p,{children:`Esta página todavÃa no tiene contenido normativo. No la tomés como contrato: nada de 17468lo que falta acá está definido en otro lugar del portal.`}),` 17469`,(0,h.jsx)(t.p,{children:`Mientras tanto:`}),` 17470`,(0,h.jsxs)(t.ul,{children:[` 17471`,(0,h.jsxs)(t.li,{children:[`Para integrar ya, seguà el `,(0,h.jsx)(t.a,{href:`/developers/sdk`,children:`SDK JavaScript`}),`.`]}),` 17472`,(0,h.jsxs)(t.li,{children:[`Para obtener credenciales de sandbox, registrate en `,(0,h.jsx)(t.a,{href:`/developers/registro`,children:`/developers/registro`}),`.`]}),` 17473`,(0,h.jsxs)(t.li,{children:[`Si necesitás este contenido con urgencia, escribinos desde `,(0,h.jsx)(t.a,{href:`/developers/support`,children:`soporte`}),`.`]}),` 17474`]})]})}function xb(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(bb,{...e})}):bb(e)}var Sb=t({default:()=>Tb,frontmatter:()=>Cb}),Cb={title:`Tarjeta`,kind:`concept`,status:`draft`,api_version:`v1`,last_verified:`2026-08-28`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[],related:[],draft:!0,description:`Página en construcción. El contenido normativo llega en la siguiente fase.`};function wb(e){let t={a:`a`,li:`li`,p:`p`,ul:`ul`,...m(),...e.components};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.p,{children:`Esta página todavÃa no tiene contenido normativo. No la tomés como contrato: nada de 17475lo que falta acá está definido en otro lugar del portal.`}),` 17476`,(0,h.jsx)(t.p,{children:`Mientras tanto:`}),` 17477`,(0,h.jsxs)(t.ul,{children:[` 17478`,(0,h.jsxs)(t.li,{children:[`Para integrar ya, seguà el `,(0,h.jsx)(t.a,{href:`/developers/sdk`,children:`SDK JavaScript`}),`.`]}),` 17479`,(0,h.jsxs)(t.li,{children:[`Para obtener credenciales de sandbox, registrate en `,(0,h.jsx)(t.a,{href:`/developers/registro`,children:`/developers/registro`}),`.`]}),` 17480`,(0,h.jsxs)(t.li,{children:[`Si necesitás este contenido con urgencia, escribinos desde `,(0,h.jsx)(t.a,{href:`/developers/support`,children:`soporte`}),`.`]}),` 17481`]})]})}function Tb(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(wb,{...e})}):wb(e)}var Eb=t({default:()=>kb,frontmatter:()=>Db}),Db={title:`Yappy`,kind:`concept`,status:`draft`,api_version:`v1`,last_verified:`2026-08-28`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[],related:[],draft:!0,description:`Página en construcción. El contenido normativo llega en la siguiente fase.`};function Ob(e){let t={a:`a`,li:`li`,p:`p`,ul:`ul`,...m(),...e.components};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.p,{children:`Esta página todavÃa no tiene contenido normativo. No la tomés como contrato: nada de 17482lo que falta acá está definido en otro lugar del portal.`}),` 17483`,(0,h.jsx)(t.p,{children:`Mientras tanto:`}),` 17484`,(0,h.jsxs)(t.ul,{children:[` 17485`,(0,h.jsxs)(t.li,{children:[`Para integrar ya, seguà el `,(0,h.jsx)(t.a,{href:`/developers/sdk`,children:`SDK JavaScript`}),`.`]}),` 17486`,(0,h.jsxs)(t.li,{children:[`Para obtener credenciales de sandbox, registrate en `,(0,h.jsx)(t.a,{href:`/developers/registro`,children:`/developers/registro`}),`.`]}),` 17487`,(0,h.jsxs)(t.li,{children:[`Si necesitás este contenido con urgencia, escribinos desde `,(0,h.jsx)(t.a,{href:`/developers/support`,children:`soporte`}),`.`]}),` 17488`]})]})}function kb(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Ob,{...e})}):Ob(e)}var Ab=t({default:()=>Nb,frontmatter:()=>jb}),jb={title:`Cobro con tarjeta guardada`,kind:`guide`,status:`draft`,last_verified:`2026-08-28`,verified_by:`henry`,owner:`equipo-integraciones`,sources:[],related:[],draft:!0,description:`Estructura pendiente de contenido verificado.`};function Mb(e){let t={h2:`h2`,p:`p`,...m(),...e.components},{Callout:n}=t;return n||Pb(`Callout`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`que-cubre`,children:`Qué cubre`}),` 17489`,(0,h.jsx)(t.p,{children:`Cobrar contra una tarjeta ya tokenizada.`}),` 17490`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsx)(t.p,{children:`Página pendiente. TodavÃa no hay contenido normativo verificado acá: ni endpoints, ni 17491campos, ni nombres de métodos. La referencia se publica cuando la valide el área 17492de producto.`})})]})}function Nb(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Mb,{...e})}):Mb(e)}function Pb(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Fb=t({default:()=>Rb,frontmatter:()=>Ib}),Ib={title:`Cobros masivos`,kind:`guide`,status:`draft`,last_verified:`2026-08-28`,verified_by:`henry`,owner:`equipo-integraciones`,sources:[],related:[],draft:!0,description:`Estructura pendiente de contenido verificado.`};
17492function Lb(e){let t={h2:`h2`,p:`p`,...m(),...e.components},{Callout:n}=t;return n||zb(`Callout`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`que-cubre`,children:`Qué cubre`}),` 17493`,(0,h.jsx)(t.p,{children:`Grupos, afiliados y colecciones masivas.`}),` 17494`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsx)(t.p,{children:`Página pendiente. TodavÃa no hay contenido normativo verificado acá: ni endpoints, ni 17495campos, ni nombres de métodos. La referencia se publica cuando la valide el área 17496de producto.`})})]})}function Rb(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Lb,{...e})}):Lb(e)}function zb(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Bb=t({default:()=>Ub,frontmatter:()=>Vb}),Vb={title:`Cupones y descuentos`,kind:`guide`,status:`draft`,last_verified:`2026-08-28`,verified_by:`henry`,owner:`equipo-integraciones`,sources:[],related:[],draft:!0,description:`Estructura pendiente de contenido verificado.`};function Hb(e){let t={h2:`h2`,p:`p`,...m(),...e.components},{Callout:n}=t;return n||Wb(`Callout`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`que-cubre`,children:`Qué cubre`}),` 17497`,(0,h.jsx)(t.p,{children:`Crear, consultar y eliminar cupones y descuentos aplicables a suscripciones.`}),` 17498`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsx)(t.p,{children:`Página pendiente. TodavÃa no hay contenido normativo verificado acá: ni endpoints, ni 17499campos, ni nombres de métodos. La referencia se publica cuando la valide el área 17500de producto.`})})]})}function Ub(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Hb,{...e})}):Hb(e)}function Wb(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Gb=t({default:()=>Jb,frontmatter:()=>Kb}),Kb={title:`Pagos de suscriptor`,kind:`guide`,status:`draft`,last_verified:`2026-08-28`,verified_by:`henry`,owner:`equipo-integraciones`,sources:[],related:[],draft:!0,description:`Estructura pendiente de contenido verificado.`};function qb(e){let t={h2:`h2`,p:`p`,...m(),...e.components},{Callout:n}=t;return n||Yb(`Callout`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`que-cubre`,children:`Qué cubre`}),` 17501`,(0,h.jsx)(t.p,{children:`Historial de cobros por suscriptor.`}),` 17502`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsx)(t.p,{children:`Página pendiente. TodavÃa no hay contenido normativo verificado acá: ni endpoints, ni 17503campos, ni nombres de métodos. La referencia se publica cuando la valide el área 17504de producto.`})})]})}function Jb(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(qb,{...e})}):qb(e)}function Yb(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Xb=t({default:()=>$b,frontmatter:()=>Zb}),Zb={title:`Planes`,kind:`guide`,status:`draft`,last_verified:`2026-08-28`,verified_by:`henry`,owner:`equipo-integraciones`,sources:[],related:[],draft:!0,description:`Estructura pendiente de contenido verificado.`};function Qb(e){let t={h2:`h2`,p:`p`,...m(),...e.components},{Callout:n}=t;return n||ex(`Callout`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`que-cubre`,children:`Qué cubre`}),` 17505`,(0,h.jsx)(t.p,{children:`Crear, editar, consultar y eliminar planes de suscripción.`}),` 17506`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsx)(t.p,{children:`Página pendiente. TodavÃa no hay contenido normativo verificado acá: ni endpoints, ni 17507campos, ni nombres de métodos. La referencia se publica cuando la valide el área 17508de producto.`})})]})}function $b(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Qb,{...e})}):Qb(e)}function ex(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var tx=t({default:()=>ix,frontmatter:()=>nx}),nx={title:`Suscriptores`,kind:`guide`,status:`draft`,last_verified:`2026-08-28`,verified_by:`henry`,owner:`equipo-integraciones`,sources:[],related:[],draft:!0,description:`Estructura pendiente de contenido verificado.`};function rx(e){let t={h2:`h2`,p:`p`,...m(),...e.components},{Callout:n}=t;return n||ax(`Callout`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`que-cubre`,children:`Qué cubre`}),` 17509`,(0,h.jsx)(t.p,{children:`Consultar, editar, pausar, reactivar y eliminar suscriptores.`}),` 17510`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsx)(t.p,{children:`Página pendiente. TodavÃa no hay contenido normativo verificado acá: ni endpoints, ni 17511campos, ni nombres de métodos. La referencia se publica cuando la valide el área 17512de producto.`})})]})}function ix(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(rx,{...e})}):rx(e)}function ax(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var ox=t({default:()=>lx,frontmatter:()=>sx}),sx={title:`Tokenización`,kind:`guide`,status:`draft`,last_verified:`2026-08-28`,verified_by:`henry`,owner:`equipo-integraciones`,sources:[],related:[],draft:!0,description:`Estructura pendiente de contenido verificado.`};function cx(e){let t={h2:`h2`,p:`p`,...m(),...e.components},{Callout:n}=t;return n||ux(`Callout`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`que-cubre`,children:`Qué cubre`}),` 17513`,(0,h.jsx)(t.p,{children:`Guardar una tarjeta para cobrar después.`}),` 17514`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsx)(t.p,{children:`Página pendiente. TodavÃa no hay contenido normativo verificado acá: ni endpoints, ni 17515campos, ni nombres de métodos. La referencia se publica cuando la valide el área 17516de producto.`})})]})}function lx(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(cx,{...e})}):cx(e)}function ux(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var dx=t({default:()=>mx,frontmatter:()=>fx}),fx={title:`Webhooks de recurrencia`,kind:`guide`,status:`draft`,last_verified:`2026-08-28`,verified_by:`henry`,owner:`equipo-integraciones`,sources:[],related:[],draft:!0,description:`Estructura pendiente de contenido verificado.`};function px(e){let t={h2:`h2`,p:`p`,...m(),...e.components},{Callout:n}=t;return n||hx(`Callout`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`que-cubre`,children:`Qué cubre`}),` 17517`,(0,h.jsx)(t.p,{children:`Los eventos de suscripción que Tilopay notifica a tu servidor.`}),` 17518`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsx)(t.p,{children:`Página pendiente. TodavÃa no hay contenido normativo verificado acá: ni endpoints, ni 17519campos, ni nombres de métodos. La referencia se publica cuando la valide el área 17520de producto.`})})]})}function mx(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(px,{...e})}):px(e)}function hx(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var gx=t({default:()=>yx,frontmatter:()=>_x}),_x={title:`Cobros recurrentes y tokenización`,kind:`guide`,status:`draft`,last_verified:`2026-08-28`,verified_by:`henry`,owner:`equipo-integraciones`,sources:[],related:[`hosted-payment-page`,`sdk`,`server-to-server`],draft:!0,description:`Ãndice de la sección de cobros recurrentes, tokenización y cobros masivos.`};function vx(e){let t={a:`a`,h2:`h2`,li:`li`,p:`p`,ul:`ul`,...m(),...e.components},{Callout:n}=t;return n||bx(`Callout`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.p,{children:`Esta sección agrupa todo lo que tiene que ver con cobrar más de una vez: planes, 17521suscriptores, cupones, tarjetas guardadas y los eventos de suscripción.`}),`
17522`,(0,h.jsx)(t.h2,{id:`relacion`,children:`Cómo se relaciona con el resto del portal`}),` 17523`,(0,h.jsxs)(t.p,{children:[`Se puede cobrar recurrente desde cualquiera de los tres caminos con código: 17524`,(0,h.jsx)(t.a,{href:`/developers/hosted-payment-page`,children:`hosted payment page`}),`, 17525`,(0,h.jsx)(t.a,{href:`/developers/sdk`,children:`SDK JavaScript`}),` y 17526`,(0,h.jsx)(t.a,{href:`/developers/server-to-server`,children:`API servidor a servidor`}),`. El camino que elegÃs 17527define dónde se captura la tarjeta la primera vez; la recurrencia posterior es 17528la misma sección de API.`]}),` 17529`,(0,h.jsx)(t.h2,{id:`contenido`,children:`Qué contiene`}),` 17530`,(0,h.jsxs)(t.ul,{children:[` 17531`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/recurrentes/planes`,children:`Planes`})}),` 17532`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/recurrentes/suscriptores`,children:`Suscriptores`})}),` 17533`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/recurrentes/cupones`,children:`Cupones y descuentos`})}),` 17534`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/recurrentes/pagos-de-suscriptor`,children:`Pagos de suscriptor`})}),` 17535`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/recurrentes/tokenizacion`,children:`Tokenización`})}),` 17536`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/recurrentes/cobro-con-tarjeta-guardada`,children:`Cobro con tarjeta guardada`})}),` 17537`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/recurrentes/cobros-masivos`,children:`Cobros masivos`})}),` 17538`,(0,h.jsx)(t.li,{children:(0,h.jsx)(t.a,{href:`/developers/recurrentes/webhooks-de-recurrencia`,children:`Webhooks de recurrencia`})}),` 17539`]}),` 17540`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsx)(t.p,{children:`Estructura publicada, contenido pendiente. Ninguna página de esta sección tiene 17541todavÃa referencia verificada de endpoints, campos ni comportamiento.`})})]})}function yx(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(vx,{...e})}):vx(e)}function bx(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var xx=t({default:()=>wx,frontmatter:()=>Sx}),Sx={title:`Reintentos seguros y orderNumber`,kind:`concept`,status:`stable`,api_version:`v1`,last_verified:`2026-08-28`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Respuestas de TecnologÃa, 28-08-2026`],locales:[`es`,`en`],related:[`api/hosted-payment-page`,`sdk/reference/init`,`concepts/flujo-de-pago`],description:`El API no es idempotente. Qué hacer exactamente cuando una llamada de pago se cae por timeout.`};function Cx(e){let t={code:`code`,h2:`h2`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,table:`table`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,...m(),...e.components},{Callout:n}=t;return n||Tx(`Callout`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(n,{type:`warn`,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`El API de Tilopay no es idempotente.`}),` No existe una llave de idempotencia ni un reintento 17542que devuelva la transacción original. Si venÃs de otros procesadores, este es el supuesto que 17543tenés que desarmar antes de escribir código.`]})}),` 17544`,(0,h.jsxs)(t.h2,{id:`ordernumber`,children:[(0,h.jsx)(t.code,{children:`orderNumber`}),` es único para siempre`]}),` 17545`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.code,{children:`orderNumber`}),` es único por comercio `,(0,h.jsx)(t.strong,{children:`a lo largo de toda su operación`}),`, para siempre. No se 17546reinicia por dÃa, por mes ni por temporada.`]}),` 17547`,(0,h.jsxs)(t.p,{children:[`Si se repite, `,(0,h.jsx)(t.strong,{children:`la nueva transacción se rechaza`}),` con la respuesta `,(0,h.jsx)(t.strong,{children:`"Transacción 17548duplicada"`}),`. No devuelve la transacción original: devuelve un rechazo.`]}),` 17549`,(0,h.jsx)(t.h2,{id:`timeout`,children:`El problema del timeout`}),` 17550`,(0,h.jsx)(t.p,{children:`Cuando una llamada de pago se cae por red o por timeout, no sabés si la transacción se creó o 17551no. Y ninguna de las dos salidas intuitivas sirve:`}),` 17552`,(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Qué harÃas`}),(0,h.jsx)(t.th,{children:`Qué pasa`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsxs)(t.td,{children:[`Reintentar con el mismo `,(0,h.jsx)(t.code,{children:`orderNumber`})]}),(0,h.jsx)(t.td,{children:`Rechazo por duplicado, incluso si la primera sà pasó`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsxs)(t.td,{children:[`Reintentar con un `,(0,h.jsx)(t.code,{children:`orderNumber`}),` nuevo`]}),(0,h.jsx)(t.td,{children:`Riesgo de doble cobro`})]})]})]}),` 17553`,(0,h.jsx)(t.p,{children:(0,h.jsx)(t.strong,{children:`Ante un timeout de red no hay reintento seguro.`})}),` 17554`,(0,h.jsx)(t.h2,{id:`que-hacer`,children:`Qué hacer entonces`}),` 17555`,(0,h.jsx)(t.p,{children:`Consultá el estado antes de decidir:`}),` 17556`,(0,h.jsxs)(t.ol,{children:[` 17557`,(0,h.jsxs)(t.li,{children:[`Llamá a `,(0,h.jsx)(t.code,{children:`POST /api/v1/consult`}),` con el `,(0,h.jsx)(t.code,{children:`orderNumber`}),` original.`]}),` 17558`,(0,h.jsx)(t.li,{children:`Si la transacción existe, usá su resultado. No reintentés.`}),` 17559`,(0,h.jsxs)(t.li,{children:[`Si no existe, ahà sà podés reintentar â y podés reusar el mismo `,(0,h.jsx)(t.code,{children:`orderNumber`}),`, porque no se 17560consumió.`]}),` 17561`]}),` 17562`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{children:`pago â timeout`})}),` 17563`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{children:` â`})}),` 17564`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{children:` âââ consult(orderNumber original)`})}),` 17565`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{children:` ââ existe â usar ese resultado`})}),` 17566`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{children:` ââ no existe â reintentar`})})]})})}),` 17567`,(0,h.jsx)(t.h2,{id:`diseno`,children:`Consecuencias de diseño`}),` 17568`,(0,h.jsxs)(t.ul,{children:[` 17569`,(0,h.jsxs)(t.li,{children:[`Generá el `,(0,h.jsx)(t.code,{children:`orderNumber`}),` en tu sistema `,(0,h.jsx)(t.strong,{children:`antes`}),` de llamar al pago y persistilo. Si lo 17570generás al vuelo, después de un timeout no tenés con qué consultar.`]}),` 17571`,(0,h.jsxs)(t.li,{children:[`Nunca derives el `,(0,h.jsx)(t.code,{children:`orderNumber`}),` de algo que se pueda repetir (número de carrito reciclado, 17572timestamp truncado, contador reiniciable).`]}),` 17573`,(0,h.jsxs)(t.li,{children:[`Un "Transacción duplicada" no significa que el cobro falló: significa que ese 17574`,(0,h.jsx)(t.code,{children:`orderNumber`}),` ya se usó. Consultá antes de mostrarle un error al cliente.`]}
17574),` 17575`]})]})}function wx(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Cx,{...e})}):Cx(e)}function Tx(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Ex=t({default:()=>kx,frontmatter:()=>Dx}),Dx={title:`Campos del formulario`,kind:`concept`,status:`stable`,last_verified:`2026-08-28`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Respuestas de TecnologÃa, 28-08-2026`],locales:[`es`,`en`],related:[`sdk`,`sdk/instalacion`,`sdk/reference/init`],gaps:[`Si el SDK además lee un input tlpy_phone_number del DOM: sin confirmar.`],description:`Los ids tlpy_* que el SDK V2 busca en tu formulario y el contenedor responseTilopay que necesita para 3DS.`};function Ox(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,...m(),...e.components},{Callout:n,Param:r}=t;return n||Ax(`Callout`,!0),r||Ax(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(t.p,{children:[`El SDK V2 no renderiza el formulario: toma control de los inputs que ya existen en tu 17576página, buscándolos por `,(0,h.jsx)(t.code,{children:`id`}),`. Esos ids son un contrato â si cambiás uno, el SDK deja de 17577encontrar el campo.`]}),` 17578`,(0,h.jsx)(n,{type:`info`,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`El contrato son los inputs, no los contenedores.`}),` Los `,(0,h.jsx)(t.code,{children:`div`}),` que envuelven a los campos 17579podés nombrarlos como quieras: el SDK no los busca. La única excepción es 17580`,(0,h.jsx)(t.code,{children:`responseTilopay`}),`, que sà es requerido.`]})}),` 17581`,(0,h.jsx)(t.h2,{id:`campos`,children:`Campos`}),` 17582`,(0,h.jsx)(r,{id:`campo-tlpy-payment-method`,name:`tlpy_payment_method`,type:`text | select`,required:!0,children:(0,h.jsx)(t.p,{children:`Contiene el id del método de pago obtenido de Tilopay. Puede estar visible u oculto, a 17583discreción del comercio.`})}),` 17584`,(0,h.jsx)(r,{id:`campo-tlpy-saved-cards`,name:`tlpy_saved_cards`,type:`select`,required:!0,children:(0,h.jsx)(t.p,{children:`Contiene el id de la tarjeta guardada obtenida de Tilopay. Si el cliente no tiene tarjetas 17585guardadas, ocultalo.`})}),` 17586`,(0,h.jsx)(r,{id:`campo-tlpy-cc-number`,name:`tlpy_cc_number`,type:`text`,required:!0,children:(0,h.jsx)(t.p,{children:`Número de tarjeta.`})}),` 17587`,(0,h.jsx)(r,{id:`campo-tlpy-cc-expiration-date`,name:`tlpy_cc_expiration_date`,type:`text`,required:!0,children:(0,h.jsxs)(t.p,{children:[`Fecha de expiración en formato mes/año, por ejemplo `,(0,h.jsx)(t.code,{children:`01/25`}),`.`]})}),` 17588`,(0,h.jsx)(r,{id:`campo-tlpy-cvv`,name:`tlpy_cvv`,type:`text`,required:!0,children:(0,h.jsx)(t.p,{children:`Código de seguridad. Cuando el cliente usa una tarjeta guardada, hay que habilitar este 17589campo para que digite el CVV.`})}),` 17590`,(0,h.jsx)(r,{id:`campo-response-tilopay`,name:`responseTilopay`,type:`div`,required:!0,children:(0,h.jsxs)(t.p,{children:[`Contenedor requerido, `,(0,h.jsx)(t.strong,{children:`fuera del formulario`}),`. Es donde el SDK monta el flujo 3DS.`]})}),` 17591`,(0,h.jsx)(t.h2,{id:`yappy`,children:`El teléfono de Yappy no viaja por el DOM`}),` 17592`,(0,h.jsxs)(t.p,{children:[`El teléfono de Yappy `,(0,h.jsx)(t.strong,{children:`no`}),` se toma de un campo del formulario: se envÃa en el parámetro 17593`,(0,h.jsx)(t.code,{children:`phoneYappy`}),` de `,(0,h.jsx)(t.a,{href:`/developers/sdk/reference/init`,children:(0,h.jsx)(t.code,{children:`Init()`})}),` o de 17594`,(0,h.jsx)(t.a,{href:`/developers/sdk/reference/update-options`,children:(0,h.jsx)(t.code,{children:`updateOptions()`})}),`.`]}),` 17595`,(0,h.jsx)(t.h2,{id:`estructura`,children:`Estructura de ejemplo`}),` 17596`,(0,h.jsxs)(t.p,{children:[`Los `,(0,h.jsx)(t.code,{children:`div`}),` de este ejemplo son libres; los `,(0,h.jsx)(t.code,{children:`id`}),` de los inputs y `,(0,h.jsx)(t.code,{children:`responseTilopay`}),` no.`]}),` 17597`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`<`}),(0,h.jsx)(t.span,{style:{color:`#85E89D`},children:`div`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:` class`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`=`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"payFormTilopay"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`>`})]}),` 17598`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` <`}),(0,h.jsx)(t.span,{style:{color:`#85E89D`},children:`select`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:` id`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`=`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"tlpy_payment_method"`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:` name`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`=`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"tlpy_payment_method"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`></`}),(0,h.jsx)(t.span,{style:{color:`#85E89D`},children:`select`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`>`})]}),` 17599`,(0,h.jsx)(t.span,{className:`line`}),` 17600`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` <`}),(0,h.jsx)(t.span,{style:{color:`#85E89D`},children:`div`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`>`})]}),` 17601`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` <`}),(0,h.jsx)(t.span,{style:{color:`#85E89D`},children:`select`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:` id`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`=`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"tlpy_saved_cards"`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:` name`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`=`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"tlpy_saved_cards"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`></`}),(0,h.jsx)(t.span,{style:{color:`#85E89D`},children:`select`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`>`})]}),` 17602`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` <`}),(0,h.jsx)(t.span,{style:{color:`#85E89D`},children:`input`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:` type`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`=`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"text"`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:` id`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`=`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"tlpy_cc_number"`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:` name`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`=`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"tlpy_cc_number"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` />`})]}),` 17603`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` <`}),(0,h.jsx)(t.span,{style:{color:`#85E89D`},children:`input`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:` type`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`=`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"text"`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:` id`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`=`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"tlpy_cc_expiration_date"`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:` name`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`=`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"tlpy_cc_expiration_date"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` />`})]}),` 17604`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` <`}),(0,h.jsx)(t.span,{style:{color:`#85E89D`},children:`input`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:` type`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`=`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"text"`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:` id`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`=`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"tlpy_cvv"`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:` name`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`=`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"tlpy_cvv"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` />`})]}),` 17605`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` </`}),(0,h.jsx)(t.span,{style:{color:`#85E89D`},children:`div`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`>`})]}),` 17606`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`</`}),(0,h.jsx)(t.span,{style:{color:`#85E89D`},children:`div`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`>`})]}),` 17607`,(0,h.jsx)(t.span,{className:`line`}),` 17608`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`<`}),(0,h.jsx)(t.span,{style:{color:`#85E89D`},children:`div`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:` id`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`=`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"responseTilopay"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`></`}),(0,h.jsx)(t.span,{style:{color:`#85E89D`},children:`div`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`>`})]})]})})})]})}function kx(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Ox,{...e})}):Ox(e)}function Ax(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var jx=t({default:()=>Px,frontmatter:()=>Mx}),Mx={title:`Instalación del SDK`,kind:`guide`,status:`stable`,last_verified:`2026-08-28`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Respuestas de TecnologÃa, 28-08-2026`],locales:[`es`,`en`],related:[`sdk`,`sdk/campos-del-formulario`,`sdk/reference/init`],description:`La etiqueta script del SDK V2, qué versiones existen y qué garantÃas de versionado no hay.`};function Nx(e){let t={a:`a`,code:`code`,h2:`h2`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,table:`table`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,...m(),...e.components},{Callout:n}=t;return n||Fx(`Callout`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`script`,children:`El script`}),` 17609`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`<`}),(0,h.jsx)(t.span,{style:{color:`#85E89D`},children:`script`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:` src`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`=`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://app.tilopay.com/sdk/v2/sdk_tpay.min.js"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`></`}),(0,h.jsx)(t.span,{style:{color:`#85E89D`},children:`script`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`>`})]})})})}),` 17610`,(0,h.jsxs)(t.p,{children:[`Cargalo antes de tu propio código de checkout. El SDK expone el objeto global `,(0,h.jsx)(t.code,{children:`Tilopay`}),`.`]}),` 17611`,(0,h.jsx)(t.h2,{id:`jquery`,children:`jQuery no es requerido`}),` 17612`,(0,h.jsx)(n,{type:`info`,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`jQuery NO es requerido.`}),` Era un residuo del SDK V1. El artÃculo publicado hasta ahora 17613decÃa lo contrario y está mal: podés instalar el SDK V2 sin jQuery en la página.`]})}),`
17614`,(0,h.jsx)(t.h2,{id:`versiones`,children:`Versiones`}),` 17615`,(0,h.jsx)(t.p,{children:`Existen solo dos versiones:`}),` 17616`,(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Versión`}),(0,h.jsx)(t.th,{children:`Estado`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`v1`})}),(0,h.jsx)(t.td,{children:`Sin soporte`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`v2`})}),(0,h.jsx)(t.td,{children:`Actual`})]})]})]}),` 17617`,(0,h.jsx)(t.h2,{id:`garantias`,children:`Lo que no hay`}),` 17618`,(0,h.jsxs)(n,{type:`warn`,children:[(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`No hay versionado inmutable, no hay hash SRI y no hay changelog.`}),` La URL 17619`,(0,h.jsx)(t.code,{children:`/sdk/v2/sdk_tpay.min.js`}),` no está anclada a una versión concreta: su contenido puede 17620cambiar sin aviso previo y sin una nota de cambios pública.`]}),(0,h.jsx)(t.p,{children:`Consecuencias prácticas:`}),(0,h.jsxs)(t.ul,{children:[` 17621`,(0,h.jsxs)(t.li,{children:[`No podés fijar `,(0,h.jsx)(t.code,{children:`integrity="sha384-..."`}),` en la etiqueta `,(0,h.jsx)(t.code,{children:`script`}),`, porque el archivo cambia.`]}),` 17622`,(0,h.jsx)(t.li,{children:`No podés depender de un número de build para reproducir un bug.`}),` 17623`,(0,h.jsx)(t.li,{children:`Conviene tener pruebas de humo de tu checkout que corran periódicamente, no solo al 17624desplegar.`}),` 17625`]})]}),` 17626`,(0,h.jsx)(t.h2,{id:`que-sigue`,children:`Qué sigue`}),` 17627`,(0,h.jsxs)(t.ul,{children:[` 17628`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.a,{href:`/developers/sdk/campos-del-formulario`,children:`Campos del formulario`}),` â los ids que el SDK busca.`]}),` 17629`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.a,{href:`/developers/sdk/reference/init`,children:(0,h.jsx)(t.code,{children:`Tilopay.Init()`})}),` â iniciar la compra.`]}),` 17630`]})]})}function Px(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Nx,{...e})}):Nx(e)}function Fx(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Ix=t({default:()=>zx,frontmatter:()=>Lx}),Lx={title:`Migración del SDK v1 a v2`,kind:`guide`,status:`draft`,api_version:`v1`,last_verified:`2026-08-28`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[],related:[],draft:!0,description:`Página en construcción. El contenido normativo llega en la siguiente fase.`};function Rx(e){let t={a:`a`,li:`li`,p:`p`,ul:`ul`,...m(),...e.components};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.p,{children:`Esta página todavÃa no tiene contenido normativo. No la tomés como contrato: nada de 17631lo que falta acá está definido en otro lugar del portal.`}),` 17632`,(0,h.jsx)(t.p,{children:`Mientras tanto:`}),` 17633`,(0,h.jsxs)(t.ul,{children:[` 17634`,(0,h.jsxs)(t.li,{children:[`Para integrar ya, seguà el `,(0,h.jsx)(t.a,{href:`/developers/sdk`,children:`SDK JavaScript`}),`.`]}),` 17635`,(0,h.jsxs)(t.li,{children:[`Para obtener credenciales de sandbox, registrate en `,(0,h.jsx)(t.a,{href:`/developers/registro`,children:`/developers/registro`}),`.`]}),` 17636`,(0,h.jsxs)(t.li,{children:[`Si necesitás este contenido con urgencia, escribinos desde `,(0,h.jsx)(t.a,{href:`/developers/support`,children:`soporte`}),`.`]}),` 17637`]})]})}function zx(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Rx,{...e})}):Rx(e)}var Bx=t({default:()=>Ux,frontmatter:()=>Vx}),Vx={title:`Tilopay.getCardType()`,kind:`sdk-method`,status:`stable`,last_verified:`2026-08-28`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Respuestas de TecnologÃa, 28-08-2026`],locales:[`es`,`en`],related:[`sdk/reference/update-options`,`sdk/campos-del-formulario`],gaps:[`Qué devuelve ante una marca no soportada o un número incompleto: sin verificar.`],description:`Devuelve la marca de la tarjeta que el cliente está digitando, para mostrarle un Ãcono mientras escribe.`};function Hx(e){let t={code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,...m(),...e.components},{Param:n}=t;return n||Wx(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(t.p,{children:[`Devuelve la marca de la tarjeta a partir del número que el cliente ya digitó en 17638`,(0,h.jsx)(t.code,{children:`tlpy_cc_number`}),`. El uso tÃpico es mostrar el Ãcono de la marca mientras el cliente escribe.`]}
17638),` 17639`,(0,h.jsx)(t.h2,{id:`firma`,children:`Firma`}),` 17640`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`await`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` Tilopay.`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:`getCardType`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`()`})]})})})}),` 17641`,(0,h.jsx)(t.p,{children:`No recibe parámetros.`}),` 17642`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`Precondición:`}),` el cliente ya tiene que haber digitado el número de tarjeta.`]}),` 17643`,(0,h.jsx)(t.h2,{id:`llamada`,children:`Llamada`}),` 17644`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`const`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` type`}),(0,h.jsx)(t.span,{style:{color:`#F97583`},children:` =`}),(0,h.jsx)(t.span,{style:{color:`#F97583`},children:` await`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` Tilopay.`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:`getCardType`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`();`})]})})})}),` 17645`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Respuesta`}),` 17646`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 17647`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"visa"`})]}),` 17648`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 17649`,(0,h.jsx)(n,{id:`get-card-type-message`,name:`message`,type:`string`,children:(0,h.jsx)(t.p,{children:`La marca de la tarjeta.`})}),` 17650`,(0,h.jsx)(t.h2,{id:`marcas-soportadas`,children:`Marcas soportadas`}),` 17651`,(0,h.jsx)(t.p,{children:`VISA · MASTERCARD · AMEX`}),` 17652`,(0,h.jsx)(t.p,{children:`Usá el resultado solo para presentación: la validación de la marca la hace Tilopay al procesar 17653el cobro, no este método.`})]})}function Ux(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Hx,{...e})}):Hx(e)}function Wx(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Gx=t({default:()=>Jx,frontmatter:()=>Kx}),Kx={title:`Tilopay.getSinpeMovil()`,kind:`sdk-method`,status:`stable`,last_verified:`2026-08-28`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Respuestas de TecnologÃa, 28-08-2026`],locales:[`es`,`en`],related:[`sdk/reference/update-options`,`payment-methods/sinpe-movil`],description:`Devuelve los datos que hay que mostrarle al cliente para pagar por SINPE Móvil y activa el listener del cobro.`};function qx(e){let t={a:`a`,code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,...m(),...e.components},{Callout:n,Param:r}=t;return n||Yx(`Callout`,!0),r||Yx(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.p,{children:`SINPE Móvil no se cobra desde el formulario: el cliente hace la transferencia desde su propio 17654banco. Este método devuelve los datos que hay que mostrarle â teléfono destino, monto exacto y 17655código de descripción.`}),` 17656`,(0,h.jsx)(t.h2,{id:`cuando`,children:`Cuándo se usa`}),` 17657`,(0,h.jsxs)(t.p,{children:[`Cuando el comercio tiene un método SINPE Móvil disponible y el cliente lo selecciona de la 17658lista que devolvió `,(0,h.jsx)(t.a,{href:`/developers/sdk/reference/init`,children:(0,h.jsx)(t.code,{children:`Init()`})}),`.`]}),` 17659`,(0,h.jsx)(n,{type:`info`,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`No es solo un getter.`}),` Además de devolver los datos, este método `,(0,h.jsx)(t.strong,{children:`dispara el listener de 17660SINPE con el backend de Tilopay`}),`. Llamarlo es parte del flujo de cobro, no un detalle de 17661presentación.`]})}),` 17662`,(0,h.jsx)(t.h2,{id:`firma`,children:`Firma`}),` 17663`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`await`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` Tilopay.`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:`getSinpeMovil`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`()`})]})})})}),` 17664`,(0,h.jsx)(t.p,{children:`No recibe parámetros.`}),` 17665`,(0,h.jsx)(t.p,{children:(0,h.jsx)(t.strong,{children:`Precondiciones:`})}),` 17666`,(0,h.jsxs)(t.ul,{children:[` 17667`,(0,h.jsx)(t.li,{children:`El cliente tiene que haber seleccionado SINPE Móvil como método de pago.`}),` 17668`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.code,{children:`typeDni`}),` y `,(0,h.jsx)(t.code,{children:`dni`}),` tienen que haberse enviado antes, por `,(0,h.jsx)(t.code,{children:`Init()`}),` o por 17669`,(0,h.jsx)(t.a,{href:`/developers/sdk/reference/update-options`,children:(0,h.jsx)(t.code,{children:`updateOptions()`})}),`.`]}),` 17670`]}),` 17671`,(0,h.jsx)(t.h2,{id:`llamada`,children:`Llamada`}),` 17672`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`const`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` params`}),(0,h.jsx)(t.span,{style:{color:`#F97583`},children:` =`}),(0,h.jsx)(t.span,{style:{color:`#F97583`},children:` await`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` Tilopay.`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:`getSinpeMovil`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`();`})]})})})}),` 17673`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Respuesta`}),` 17674`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 17675`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Success"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17676`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "code"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"863"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17677`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`10`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17678`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "number"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"70599200"`})]}),` 17679`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 17680`,(0,h.jsx)(r,{id:`get-sinpe-movil-message`,name:`message`,type:`string`,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.code,{children:`Success`}),` cuando la operación salió bien.`]})}),` 17681`,(0,h.jsx)(r,{id:`get-sinpe-movil-code`,name:`code`,type:`string`,children:(0,h.jsx)(t.p,{children:`El código que el cliente debe escribir en la descripción de la transferencia. Es lo que permite 17682identificar el pago.`})}),` 17683`,(0,h.jsx)(r,{id:`get-sinpe-movil-amount`,name:`amount`,type:`number`,children:(0,h.jsx)(t.p,{children:`El monto exacto que debe transferir.`})}),` 17684`,(0,h.jsx)(r,{id:`get-sinpe-movil-number`,name:`number`,type:`string`,children:(0,h.jsx)(t.p,{children:`El número de teléfono destino de la transferencia.`})}),` 17685`,(0,h.jsx)(t.h3,{id:`respuesta-de-error`,children:`En caso de error`}),` 17686`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`En caso de error no devuelve nada.`}),` No esperés un objeto con campos vacÃos: tratá la 17687ausencia de respuesta como el caso de error.`]}),` 17688`,(0,h.jsx)(t.h2,{id:`que-hacer`,children:`Qué hacer con estos datos`}),` 17689`,(0,h.jsx)(t.p,{children:`Al seleccionar SINPE Móvil hay que ocultar los campos de tarjeta y mostrarle al cliente estos 17690datos: teléfono destino, monto exacto y código para la descripción.`}),` 17691`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`No se necesita botón de pagar:`}),` el cobro se procesa cuando llega la transferencia.`]})]})}function Jx(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(qx,{...e})}):qx(e)}function Yx(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var Xx=t({default:()=>$x,frontmatter:()=>Zx}),Zx={title:`Tilopay.Init()`,kind:`sdk-method`,status:`stable`,last_verified:`2026-08-28`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Respuestas de TecnologÃa, 28-08-2026`],locales:[`es`,`en`],related:[`sdk/campos-del-formulario`,`sdk/reference/update-options`,`sdk/reference/startpayment`,`entornos`],gaps:[`Lista completa de parámetros y respuesta de InitTokenize(): sin verificar.`,`Ejemplo completo de respuesta de Init(): el publicado está desactualizado.`],description:`Inicia una compra: autentica el checkout y devuelve los métodos de pago disponibles y las tarjetas guardadas del cliente.`};function Qx(e){let t={a:`a`,code:`code`,h2:`h2`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,...m(),...e.components},{Param:n}=t;return n||eS(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.p,{children:`Inicia una compra. Autentica el checkout con el token del SDK y devuelve los métodos de 17692pago disponibles para el comercio.`}),` 17693`,(0,h.jsxs)(t.p,{children:[`Para guardar una tarjeta sin cobrarla, el SDK tiene un segundo flujo de inicio: 17694`,(0,h.jsx)(t.strong,{children:(0,h.jsx)(t.code,{children:`Tilopay.InitTokenize()`})}),`, con los mismos parámetros de `,(0,h.jsx)(t.code,{children:`Init()`}),` excepto `,(0,h.jsx)(t.code,{children:`amount`}),`, 17695`,(0,h.jsx)(t.code,{children:`orderNumber`}),`, `,(0,h.jsx)(t.code,{children:`capture`}),` y `,(0,h.jsx)(t.code,{children:`subscription`}),`, que no aplican porque no se está cobrando nada.`]}),` 17696`,(0,h.jsx)(t.h2,{id:`firma`,children:`Firma`}),` 17697`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`await`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` Tilopay.`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:`Init`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`({ `}),(0,h.jsx)(t.span,{style:{color:`#6A737D`},children:`/* parámetros */`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` })`})]})})})}),` 17698`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parámetros`}),` 17699`,(0,h.jsx)(n,{id:`init-token`,name:`token`,type:`string`,required:!0,children:(0,h.jsxs)(t.p,{children:[`Token del SDK, obtenido con `,(0,h.jsx)(t.code,{children:`POST /api/v1/loginSdk`}),`. Ver 17700`,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`autenticación`}),`.`]})}),` 17701`,(0,h.jsx)(n,{id:`init-currency`,name:`currency`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Moneda de la compra, ISO 4217.`})}),` 17702`,(0,h.jsx)(n,{id:`init-language`,name:`language`,type:`string`,required:!0,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`Idioma`}),` del checkout, ISO 639-1. Solo se soportan `,(0,h.jsx)(t.code,{children:`es`}),` y `,(0,h.jsx)(t.code,{children:`en`}),`; por defecto carga `,(0,h.jsx)(t.code,{children:`es`}),`.`]})}),` 17703`,(0,h.jsx)(n,{id:`init-amount`,name:`amount`,type:`decimal`,required:!0,children:(0,h.jsx)(t.p,{children:`Monto de la compra.`})}),` 17704`,(0,h.jsx)(n,{id:`init-billtoemail`,name:`billToEmail`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Correo del cliente. Es obligatorio para que la respuesta traiga las tarjetas guardadas.`})}),` 17705`,(0,h.jsx)(n,{id:`init-ordernumber`,name:`orderNumber`,type:`string`,required:!0,children:(0,h.jsxs)(t.p,{children:[`Número de orden, único por comercio. Ver 17706`,(0,h.jsx)(t.a,{href:`/developers/reintentos-seguros`,children:`reintentos seguros`}),`.`]})}),` 17707`,(0,h.jsx)(n,{id:`init-typedni`,name:`typeDni`,type:`integer`,children:(0,h.jsxs)(t.p,{children:[`Tipo de identificación del cliente. Condicionado. Ver la 17708`,(0,h.jsx)(t.a,{href:`/developers/sdk/reference/update-options#tipos-de-identificacion`,children:`tabla de tipos`}),`.`]})}),` 17709`,(0,h.jsx)(n,{id:`init-dni`,name:`dni`,type:`string`,children:(0,h.jsx)(t.p,{children:`Número de identificación del cliente. Condicionado.`})}),` 17710`,(0,h.jsx)(n,{id:`init-billtofirstname`,name:`billToFirstName`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Nombre del cliente.`})}),` 17711`,(0,h.jsx)(n,{id:`init-billtolastname`,name:`billToLastName`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Apellidos del cliente.`})}),` 17712`,(0,h.jsx)(n,{id:`init-billtoaddress`,name:`billToAddress`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Dirección 1 del cliente.`})}),` 17713`,(0,h.jsx)(n,{id:`init-billtoaddress2`,name:`billToAddress2`,type:`string`,children:(0,h.jsx)(t.p,{children:`Dirección 2 del cliente. Opcional.`})}),` 17714`,(0,h.jsx)(n,{id:`init-billtocity`,name:`billToCity`,type:`string`,children:(0,h.jsx)(t.p,{children:`Ciudad. Recomendado.`})}),` 17715`,(0,h.jsx)(n,{id:`init-billtostate`,name:`billToState`,type:`string`,children:(0,h.jsx)(t.p,{children:`Provincia o estado. Recomendado.`})}),`
17716`,(0,h.jsx)(n,{id:`init-billtozippostcode`,name:`billToZipPostCode`,type:`string`,children:(0,h.jsx)(t.p,{children:`Código postal. Recomendado.`})}),` 17717`,(0,h.jsx)(n,{id:`init-billtocountry`,name:`billToCountry`,type:`string`,children:(0,h.jsx)(t.p,{children:`PaÃs, ISO 3166-1 alpha-2. Recomendado.`})}),` 17718`,(0,h.jsx)(n,{id:`init-billtotelephone`,name:`billToTelephone`,type:`string`,children:(0,h.jsx)(t.p,{children:`Teléfono del cliente. Recomendado.`})}),` 17719`,(0,h.jsx)(n,{id:`init-capture`,name:`capture`,type:`integer`,required:!0,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.code,{children:`0`}),` autoriza; `,(0,h.jsx)(t.code,{children:`1`}),` autoriza y captura.`]})}),` 17720`,(0,h.jsx)(n,{id:`init-redirect`,name:`redirect`,type:`string (URL)`,required:!0,children:(0,h.jsx)(t.p,{children:`URL donde el SDK renderiza la respuesta final de la compra.`})}),` 17721`,(0,h.jsx)(n,{id:`init-subscription`,name:`subscription`,type:`integer`,required:!0,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.code,{children:`1`}),` guarda la tarjeta del cliente en Tilopay; `,(0,h.jsx)(t.code,{children:`0`}),` no la guarda.`]})}),` 17722`,(0,h.jsx)(n,{id:`init-phoneyappy`,name:`phoneYappy`,type:`string`,children:(0,h.jsx)(t.p,{children:`Teléfono Yappy. Obligatorio cuando se paga con Yappy. No se toma del DOM.`})}),` 17723`,(0,h.jsx)(n,{id:`init-hashversion`,name:`hashVersion`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Opcional. Valores `,(0,h.jsx)(t.code,{children:`"V1"`}),` o `,(0,h.jsx)(t.code,{children:`"V2"`}),`. Si no se envÃa, el hash de la respuesta final se fabrica 17724con V1.`]})}),` 17725`,(0,h.jsx)(n,{id:`init-returndata`,name:`returnData`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Opcional. Se devuelve tal cual en la respuesta final del pago y se recupera en la URL de 17726respuesta de la transacción. Soporta hasta `,(0,h.jsx)(t.strong,{children:`65.535 caracteres`}),`, aunque un valor muy 17727extenso puede afectar la URL de respuesta. Podés enviar un array serializado en base64 para 17728que cumpla el formato de string.`]})}),` 17729`,(0,h.jsx)(t.h2,{id:`llamada`,children:`Llamada`}),` 17730`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`const`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` init`}),(0,h.jsx)(t.span,{style:{color:`#F97583`},children:` =`}),(0,h.jsx)(t.span,{style:{color:`#F97583`},children:` await`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` Tilopay.`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:`Init`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`({`})]}),` 17731`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` token: sdkToken,`})}),` 17732`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` currency: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"CRC"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17733`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` language: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"es"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17734`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` amount: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`100.0`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17735`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` billToEmail: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"[email protected]"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17736`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` orderNumber: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"ORD-2026-000123"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17737`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` billToFirstName: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Ana"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17738`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` billToLastName: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Rojas"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17739`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` billToAddress: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Avenida 1, Local 2"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17740`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` billToCountry: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"CR"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17741`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` capture: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17742`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` redirect: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"https://ejemplo.com/checkout/respuesta"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17743`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` subscription: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`0`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17744`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`});`})})]})})}),` 17745`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Respuesta`}),` 17746`,(0,h.jsx)(n,{id:`init-res-message`,name:`message`,type:`string`,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.code,{children:`Success`}),`, o la descripción del error.`]})}),` 17747`,(0,h.jsx)(n,{id:`init-res-test`,name:`test`,type:`integer`,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.code,{children:`0`}),` producción, `,(0,h.jsx)(t.code,{children:`1`}),` pruebas. Ver `,(0,h.jsx)(t.a,{href:`/developers/entornos`,children:`entornos`}),`.`]})}),` 17748`,(0,h.jsx)(n,{id:`init-res-sinpemovil`,name:`sinpemovil`,type:`object`,children:(0,h.jsxs)(t.p,{children:[`Ob
17748jeto con `,(0,h.jsx)(t.code,{children:`code`}),` y `,(0,h.jsx)(t.code,{children:`amount`}),`, presente cuando el comercio tiene SINPE Móvil. Los datos 17749completos, incluido el teléfono destino, se obtienen con 17750`,(0,h.jsx)(t.a,{href:`/developers/sdk/reference/get-sinpe-movil`,children:(0,h.jsx)(t.code,{children:`getSinpeMovil()`})}),`.`]})}),` 17751`,(0,h.jsx)(n,{id:`init-res-methods`,name:`methods`,type:`array`,children:(0,h.jsxs)(t.p,{children:[`Arreglo de `,(0,h.jsx)(t.code,{children:`{id, name, type}`}),` con los métodos de pago disponibles.`]})}),` 17752`,(0,h.jsx)(n,{id:`init-res-cards`,name:`cards`,type:`array`,children:(0,h.jsxs)(t.p,{children:[`Arreglo de `,(0,h.jsx)(t.code,{children:`{id, name, brand}`}),` con las tarjetas guardadas del cliente.`]})}),` 17753`,(0,h.jsx)(t.h2,{id:`formato-id-metodo`,children:`Formato del id de método de pago`}),` 17754`,(0,h.jsxs)(t.p,{children:[`El `,(0,h.jsx)(t.code,{children:`id`}),` de cada método tiene la forma `,(0,h.jsx)(t.code,{children:`A:B:C`}),`. `,(0,h.jsxs)(t.strong,{children:[`El segundo segmento define el método de 17755pago, y `,(0,h.jsx)(t.code,{children:`18`}),` corresponde a Yappy.`]})]}),` 17756`,(0,h.jsx)(t.h2,{id:`tarjetas-guardadas`,children:`Tarjetas guardadas`}),` 17757`,(0,h.jsxs)(t.ul,{children:[` 17758`,(0,h.jsxs)(t.li,{children:[`Para que la respuesta traiga `,(0,h.jsx)(t.code,{children:`cards`}),` es `,(0,h.jsxs)(t.strong,{children:[`obligatorio enviar `,(0,h.jsx)(t.code,{children:`billToEmail`})]}),`.`]}),` 17759`,(0,h.jsxs)(t.li,{children:[`Una vez obtenidas las tarjetas, `,(0,h.jsx)(t.strong,{children:`el correo ya no se puede cambiar`}),` con 17760`,(0,h.jsx)(t.a,{href:`/developers/sdk/reference/update-options`,children:(0,h.jsx)(t.code,{children:`updateOptions()`})}),`.`]}),` 17761`]})]})}function $x(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(Qx,{...e})}):Qx(e)}function eS(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var tS=t({default:()=>iS,frontmatter:()=>nS}),nS={title:`Tilopay.startPayment()`,kind:`sdk-method`,status:`stable`,last_verified:`2026-08-28`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Respuestas de TecnologÃa, 28-08-2026`],locales:[`es`,`en`],related:[`sdk/reference/init`,`sdk/campos-del-formulario`,`reintentos-seguros`],gaps:[`Forma de la respuesta de éxito de startPayment(): sin verificar.`],description:`Cierra la compra. El SDK maneja el flujo 3DS completo y renderiza la respuesta en la URL de redirect.`};function rS(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,...m(),...e.components};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(t.p,{children:[`Cierra la compra iniciada con `,(0,h.jsx)(t.a,{href:`/developers/sdk/reference/init`,children:(0,h.jsx)(t.code,{children:`Tilopay.Init()`})}),`.`]}),` 17762`,(0,h.jsx)(t.h2,{id:`firma`,children:`Firma`}),` 17763`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`await`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` Tilopay.`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:`startPayment`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`()`})]})})})}),` 17764`,(0,h.jsx)(t.p,{children:`No recibe parámetros.`}),` 17765`,(0,h.jsx)(t.h2,{id:`tres-ds`,children:`3DS: lo maneja el SDK`}),` 17766`,(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`El SDK maneja todo el flujo de 3D Secure.`}),` Lo único que tenés que hacer es asegurarte de 17767tener el contenedor `,(0,h.jsx)(t.code,{children:`responseTilopay`}),` en la página: ahà el SDK inserta lo necesario para 3DS 17768y conduce el proceso.`]}),` 17769`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`<`}),(0,h.jsx)(t.span,{style:{color:`#85E89D`},children:`div`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:` id`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`=`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"responseTilopay"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`></`}),(0,h.jsx)(t.span,{style:{color:`#85E89D`},children:`div`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`>`})]})})})}),` 17770`,(0,h.jsxs)(t.p,{children:[`Ver `,(0,h.jsx)(t.a,{href:`/developers/sdk/campos-del-formulario#campos`,children:`campos del formulario`}),`.`]}),` 17771`,(0,h.jsx)(t.h2,{id:`resultado`,children:`Dónde llega el resultado`}),` 17772`,(0,h.jsxs)(t.p,{children:[`Al finalizar, el SDK renderiza la respuesta en la URL indicada en el parámetro `,(0,h.jsx)(t.code,{children:`redirect`}),` de 17773`,(0,h.jsx)(t.code,{children:`Init()`}),`. `,(0,h.jsx)(t.strong,{children:`Esa es la respuesta final de la compra`}),`: tratá la URL de `,(0,h.jsx)(t.code,{children:`redirect`}),` como el punto 17774donde tu aplicación decide el resultado.`]}),` 17775`,(0,h.jsx)(t.p,{children:`En caso de error, el método devuelve la descripción:`}),` 17776`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 17777`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`}
17777,children:`"descripción del error"`})]}),` 17778`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})})]})}function iS(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(rS,{...e})}):rS(e)}var aS=t({default:()=>cS,frontmatter:()=>oS}),oS={title:`Tilopay.updateOptions()`,kind:`sdk-method`,status:`stable`,last_verified:`2026-08-28`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Respuestas de TecnologÃa, 28-08-2026`],locales:[`es`,`en`],related:[`sdk/reference/get-sinpe-movil`,`sdk/campos-del-formulario`,`sdk/reference/init`],description:`Actualiza parcialmente los parámetros enviados a Init() cuando cambian antes de cerrar el pago.`};function sS(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,table:`table`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,...m(),...e.components},{Callout:n,Param:r}=t;return n||lS(`Callout`,!0),r||lS(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(t.p,{children:[`Actualiza valores que ya se habÃan enviado en `,(0,h.jsx)(t.a,{href:`/developers/sdk/reference/init`,children:(0,h.jsx)(t.code,{children:`Tilopay.Init()`})}),` 17779y que cambiaron durante el checkout â tÃpicamente cuando el cliente edita sus datos, o cuando 17780selecciona SINPE Móvil o Yappy y hay que agregar información que antes no aplicaba.`]}),` 17781`,(0,h.jsx)(n,{type:`info`,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`Es un patch.`}),` Se envÃan solo los campos que se quieren actualizar; no hay que reenviar todo.`]})}),` 17782`,(0,h.jsx)(t.h2,{id:`obligatorio`,children:`Qué significa "obligatorio" acá`}),` 17783`,(0,h.jsxs)(t.p,{children:[`En la lista de abajo, "obligatorio" significa que el campo `,(0,h.jsxs)(t.strong,{children:[`debe haberse enviado en `,(0,h.jsx)(t.code,{children:`Init()`}),` o 17784en `,(0,h.jsx)(t.code,{children:`updateOptions()`})]}),`. Si no se envió en ninguno de los dos, el pago no puede avanzar. No 17785significa que haya que reenviarlo en cada llamada.`]}),` 17786`,(0,h.jsx)(t.h2,{id:`firma`,children:`Firma`}),` 17787`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsx)(t.code,{children:(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`await`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` Tilopay.`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:`updateOptions`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`({ `}),(0,h.jsx)(t.span,{style:{color:`#6A737D`},children:`/* solo los campos que cambian */`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` })`})]})})})}),` 17788`,(0,h.jsx)(t.h2,{id:`llamada`,children:`Llamada`}),` 17789`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`const`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` update`}),(0,h.jsx)(t.span,{style:{color:`#F97583`},children:` =`}),(0,h.jsx)(t.span,{style:{color:`#F97583`},children:` await`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` Tilopay.`}),(0,h.jsx)(t.span,{style:{color:`#B392F0`},children:`updateOptions`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`({`})]}),` 17790`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` typeDni: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17791`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` dni: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"0707770777"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17792`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` billToFirstName: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Ana"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17793`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` billToLastName: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Rojas"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17794`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`});`})})]})})}),` 17795`,(0,h.jsx)(t.h2,{id:`parametros`,children:`Parámetros`}),` 17796`,(0,h.jsx)(r,{id:`update-options-typedni`,name:`typeDni`,type:`integer`,children:(0,h.jsxs)(t.p,{children:[`Tipo de identificación del cliente. Obligatorio para SINPE Móvil. Ver 17797`,(0,h.jsx)(t.a,{href:`#tipos-de-identificacion`,children:`tipos de identificación`}),`.`]})}),` 17798`,(0,h.jsx)(r,{id:`update-options-dni`,name:`dni`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Número de identificación del cliente. Obligatorio para SINPE Móvil. `,(0,h.jsx)(t.strong,{children:`Acepta con guiones y sin 17799guiones.`})]})}),` 17800`,(0,h.jsx)(r,{id:`update-options-billtofirstname`,name:`billToFirstName`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Nombre del cliente.`})}),` 17801`,(0,h.jsx)(r,{id:`update-options-billtolastname`,name:`billToLastName`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Apellidos del cliente.`})}),` 17802`,(0,h.jsx)(r,{id:`update-options-billtoaddress`,name:`billToAddress`,type:`string`,required:!0,children:(0,h.jsx)(t.p,{children:`Dirección 1 del cliente.`})}),` 17803`,(0,h.jsx)(r,{id:`update-options-billtoaddress2`,name:`billToAddress2`,type:`string`,children:(0,h.jsx)(t.p,{children:`Dirección 2 del cliente. Opcional.`})}),` 17804`,(0,h.jsx)(r,{id:`update-options-billtocity`,name:`billToCity`,type:`string`,children:(0,h.jsx)(t.p,{children:`Ciudad del cliente. Recomendado.`})}),` 17805`,(0,h.jsx)(r,{id:`update-options-billtostate`,name:`billToState`,type:`string`,children:(0,h.jsx)(t.p,{children:`Provincia o estado. Recomendado.`})}),` 17806`,(0,h.jsx)(r,{id:`update-options-billtozippostcode`,name:`billToZipPost
17806Code`,type:`string`,children:(0,h.jsx)(t.p,{children:`Código postal. Recomendado.`})}),` 17807`,(0,h.jsx)(r,{id:`update-options-billtocountry`,name:`billToCountry`,type:`string`,children:(0,h.jsx)(t.p,{children:`PaÃs, ISO 3166-1 alpha-2. Recomendado.`})}),` 17808`,(0,h.jsx)(r,{id:`update-options-billtotelephone`,name:`billToTelephone`,type:`string`,children:(0,h.jsx)(t.p,{children:`Teléfono del cliente. Recomendado.`})}),` 17809`,(0,h.jsx)(r,{id:`update-options-capture`,name:`capture`,type:`integer`,required:!0,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.code,{children:`0`}),` autoriza; `,(0,h.jsx)(t.code,{children:`1`}),` autoriza y captura.`]})}),` 17810`,(0,h.jsx)(r,{id:`update-options-redirect`,name:`redirect`,type:`string (URL)`,required:!0,children:(0,h.jsx)(t.p,{children:`URL donde se espera la respuesta final de la compra.`})}),` 17811`,(0,h.jsx)(r,{id:`update-options-subscription`,name:`subscription`,type:`integer`,required:!0,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.code,{children:`1`}),` si el cliente quiere guardar su tarjeta en Tilopay; `,(0,h.jsx)(t.code,{children:`0`}),` si no.`]})}),` 17812`,(0,h.jsx)(r,{id:`update-options-phoneyappy`,name:`phoneYappy`,type:`string`,children:(0,h.jsx)(t.p,{children:`Teléfono Yappy. Obligatorio cuando el cliente paga con Yappy.`})}),` 17813`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsxs)(t.p,{children:[(0,h.jsxs)(t.strong,{children:[(0,h.jsx)(t.code,{children:`billToEmail`}),` no se puede actualizar después de obtener las tarjetas guardadas.`]}),` Una vez que 17814`,(0,h.jsx)(t.code,{children:`Init()`}),` devolvió las tarjetas del cliente, el correo no se puede cambiar por este método.`]})}),` 17815`,(0,h.jsx)(t.h2,{id:`tipos-de-identificacion`,children:`Tipos de identificación`}),` 17816`,(0,h.jsxs)(t.p,{children:[`Aplica al parámetro `,(0,h.jsx)(t.code,{children:`typeDni`}),`, tanto acá como en `,(0,h.jsx)(t.code,{children:`Tilopay.Init()`}),`. En las máscaras, `,(0,h.jsx)(t.code,{children:`#`}),` es un 17817carácter `,(0,h.jsx)(t.strong,{children:`numérico`}),` y `,(0,h.jsx)(t.code,{children:`&`}),` es `,(0,h.jsx)(t.strong,{children:`alfanumérico`}),`. Las longitudes no cuentan los guiones.`]}),` 17818`,(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Código`}),(0,h.jsx)(t.th,{children:`Tipo`}),(0,h.jsx)(t.th,{children:`Formato`}),(0,h.jsx)(t.th,{children:`Longitud`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`1`}),(0,h.jsx)(t.td,{children:`Cédula de identidad`}),(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`0#-####-####`})}),(0,h.jsx)(t.td,{children:`10`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`2`}),(0,h.jsx)(t.td,{children:`Cédula jurÃdica`}),(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`3-###-######`})}),(0,h.jsx)(t.td,{children:`10`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`3`}),(0,h.jsx)(t.td,{children:`Gobierno central`}),(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`2-###-######`})}),(0,h.jsx)(t.td,{children:`10`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`4`}),(0,h.jsx)(t.td,{children:`Institución autónoma`}),(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`4-###-######`})}),(0,h.jsx)(t.td,{children:`10`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`5`}),(0,h.jsx)(t.td,{children:`Extranjero no residente`}),(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`9&&&&&&&&&&&&&&&&&&&`})}),(0,h.jsx)(t.td,{children:`20`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`6`}),(0,h.jsx)(t.td,{children:`DIMEX`}),(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`1###########`})}),(0,h.jsx)(t.td,{children:`12`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`7`}),(0,h.jsx)(t.td,{children:`DIDI`}),(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`5###########`})}),(0,h.jsx)(t.td,{children:`12`})]})]})]}),` 17819`,(0,h.jsx)(t.h2,{id:`respuesta`,children:`Respuesta`}),` 17820`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 17821`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "message"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Success"`})]}),` 17822`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 17823`,(0,h.jsx)(r,{id:`update-options-message`,name:`message`,type:`string`,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.code,{children:`Success`}),` cuando la actualización salió bien; la descripción del error en caso contrario.`]})})]})}function cS(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(sS,{...e})}):sS(e)}function lS(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var uS=t({default:()=>pS,frontmatter:()=>dS}),dS={title:`SDK JavaScript`,kind:`guide`,status:`stable`,last_verified:`2026-08-28`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Respuestas de TecnologÃa, 28-08-2026`],locales:[`es`,`en`],related:[`sdk/instalacion`,`sdk/campos-del-formulario`,`sdk/reference/init`],description:`Camino de integración en el que el formulario de tarjeta vive en tu página y el SDK manda los datos directo a Tilopay.`};function fS(e){let t={a:`a`,code:`code`,h2:`h2`,li:`li`,ol:`ol`,p:`p`,strong:`strong`,...m(),...e.components};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.h2,{id:`que-es`,children:`Qué es`}),` 17824`,(0,h.jsxs)(t.p,{children:[`Los campos de tarjeta viven en tu página. El SDK V2 toma control de esos inputs y manda los 17825datos `,(0,h.jsx)(t.strong,{children:`del navegador directo a Tilopay`}),`: no pasan por tu servidor.`]}
17825),` 17826`,(0,h.jsx)(t.h2,{id:`para-quien`,children:`Para quién es`}),` 17827`,(0,h.jsx)(t.p,{children:`Para equipos que quieren controlar el diseño del checkout sin que los datos de tarjeta toquen 17828su backend. Necesitás frontend con JavaScript y un backend mÃnimo para obtener el token del 17829SDK.`}),` 17830`,(0,h.jsx)(t.h2,{id:`orden`,children:`Cómo se arma, en orden`}),` 17831`,(0,h.jsxs)(t.ol,{children:[` 17832`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`Credenciales.`}),` No hay credenciales de sandbox compartidas: obtené las tuyas en 17833`,(0,h.jsx)(t.a,{href:`/developers/registro`,children:`registro de developer`}),`.`]}),` 17834`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`Token del SDK.`}),` Tu backend lo pide con `,(0,h.jsx)(t.code,{children:`POST /api/v1/loginSdk`}),`. Ver 17835`,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`autenticación`}),`.`]}),` 17836`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`Cargá el script.`}),` Ver `,(0,h.jsx)(t.a,{href:`/developers/sdk/instalacion`,children:`instalación`}),`.`]}),` 17837`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`Poné los inputs con los ids del contrato`}),` y el contenedor `,(0,h.jsx)(t.code,{children:`responseTilopay`}),`. Ver 17838`,(0,h.jsx)(t.a,{href:`/developers/sdk/campos-del-formulario`,children:`campos del formulario`}),`.`]}),` 17839`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`Iniciá la compra`}),` con `,(0,h.jsx)(t.a,{href:`/developers/sdk/reference/init`,children:(0,h.jsx)(t.code,{children:`Tilopay.Init()`})}),` y mostrale al 17840cliente los métodos de pago que devuelve.`]}),` 17841`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.strong,{children:`Cerrá la compra`}),` con 17842`,(0,h.jsx)(t.a,{href:`/developers/sdk/reference/startpayment`,children:(0,h.jsx)(t.code,{children:`Tilopay.startPayment()`})}),`. El SDK maneja 3DS y 17843renderiza el resultado en tu URL de `,(0,h.jsx)(t.code,{children:`redirect`}),`.`]}),` 17844`]}),` 17845`,(0,h.jsx)(t.h2,{id:`entornos`,children:`Antes de asumir que estás en pruebas`}),` 17846`,(0,h.jsxs)(t.p,{children:[`Pruebas y producción comparten host: el modo se verifica con el campo `,(0,h.jsx)(t.code,{children:`test`}),` de `,(0,h.jsx)(t.code,{children:`Init()`}),`. Ver 17847`,(0,h.jsx)(t.a,{href:`/developers/entornos`,children:`entornos`}),`.`]}),` 17848`,(0,h.jsx)(t.h2,{id:`cumplimiento`,children:`Cumplimiento`}),` 17849`,(0,h.jsx)(t.p,{children:`Los datos de tarjeta no pasan por tu servidor, pero tu página los captura: consultá con tu 17850equipo de cumplimiento el alcance que te corresponde.`})]})}function pS(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(fS,{...e})}):fS(e)}var mS=t({default:()=>_S,frontmatter:()=>hS}),hS={title:`Servidor a servidor`,kind:`guide`,status:`stable`,last_verified:`2026-08-28`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Respuestas de TecnologÃa, 28-08-2026`,`Documentación Server to server (colección Postman TILOPAY API), 13-09-2026`],locales:[`es`,`en`],related:[`hosted-payment-page`,`sdk`,`sin-codigo`],description:`Servicio exclusivo para comercios con certificación PCI. La URL se provisiona por comercio: no es autoservicio.`};function gS(e){let t={a:`a`,code:`code`,h2:`h2`,h3:`h3`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,...m(),...e.components},{Callout:n,Param:r}=t;return n||vS(`Callout`,!0),r||vS(`Param`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(n,{type:`warn`,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.strong,{children:`Acceso restringido. No es un camino de autoservicio.`}),` No podés empezar esta integración hoy 17851por tu cuenta: requiere certificación PCI del comercio y una URL provisionada individualmente 17852por Tilopay.`]})}),` 17853`,(0,h.jsx)(t.h2,{id:`que-es`,children:`Qué es`}),` 17854`,(0,h.jsx)(t.p,{children:`El camino en el que los datos de tarjeta pasan por el servidor del comercio y este los envÃa al 17855API de Tilopay.`}),` 17856`,(0,h.jsx)(t.h2,{id:`para-quien`,children:`Para quién es`}),` 17857`,(0,h.jsxs)(t.ul,{children:[` 17858`,(0,h.jsxs)(t.li,{children:[`Es un `,(0,h.jsx)(t.strong,{children:`servicio exclusivo para comercios que cuentan con certificación PCI`}),`.`]}),` 17859`,(0,h.jsxs)(t.li,{children:[`La `,(0,h.jsx)(t.strong,{children:`URL es personalizada por comercio`}),`, con una llave propia. `,(0,h.jsx)(t.strong,{children:`No es una URL pública.`})]}),` 17860`]}),` 17861`,(0,h.jsxs)(t.p,{children:[`Por eso los ejemplos de esta página no traen una URL real: el `,(0,h.jsx)(t.code,{children:`Host`}),` y la llave del proxy se 17862entregan a cada comercio aprobado.`]}),` 17863`,(0,h.jsx)(t.h2,{id:`requisitos`,children:`Requisitos`}),` 17864`,(0,h.jsxs)(t.ol,{children:[` 17865`,(0,h.jsx)(t.li,{children:`Certificación PCI vigente del comercio.`}),` 17866`,(0,h.jsx)(t.li,{children:`Cuenta Tilopay activa.`}),` 17867`,(0,h.jsx)(t.li,{children:`Solicitud aprobada, con la URL y la llave provisionadas por Tilopay para tu comercio.`}),` 17868`]}),`
17869`,(0,h.jsx)(t.h2,{id:`solicitud`,children:`Cómo se solicita`}),` 17870`,(0,h.jsxs)(t.p,{children:[`Escribà a `,(0,h.jsx)(t.code,{children:`[email protected]`}),` con el nombre del comercio y el estado de tu certificación PCI. La 17871URL y la llave se entregan directamente al comercio aprobado.`]}),` 17872`,(0,h.jsx)(t.h2,{id:`referencia`,children:`Referencia de la petición`}),` 17873`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsxs)(t.p,{children:[`El `,(0,h.jsx)(t.code,{children:`Host`}),` y el header `,(0,h.jsx)(t.code,{children:`tx-proxy-key`}),` los entrega Tilopay a cada comercio aprobado. No hay una URL 17874pública: los ejemplos usan marcadores.`]})}),` 17875`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`POST`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:` / `}),(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`HTTP`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`/`}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1.1`})]}),` 17876`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#85E89D`},children:`Host`}),(0,h.jsx)(t.span,{style:{color:`#F97583`},children:`:`}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:` url provided by tilopay`})]})]})})}),` 17877`,(0,h.jsx)(t.h3,{id:`encabezados`,children:`Encabezados`}),` 17878`,(0,h.jsx)(r,{id:`s2s-header-authorization`,name:`Authorization`,type:`string`,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.code,{children:`bearer {token del API}`}),` â ver `,(0,h.jsx)(t.a,{href:`/developers/api/autenticacion`,children:`autenticación`}),`.`]})}),` 17879`,(0,h.jsx)(r,{id:`s2s-header-tx-proxy-key`,name:`tx-proxy-key`,type:`string`,children:(0,h.jsx)(t.p,{children:`Llave del proxy de transacciones, provista por Tilopay.`})}),` 17880`,(0,h.jsx)(t.h3,{id:`parametros`,children:`Parámetros`}),` 17881`,(0,h.jsx)(r,{id:`s2s-parametro-key`,name:`key`,type:`string`,children:(0,h.jsx)(t.p,{children:`Llave relacionada con el comercio (obligatorio).`})}),` 17882`,(0,h.jsx)(r,{id:`s2s-parametro-card`,name:`card`,type:`string`,children:(0,h.jsx)(t.p,{children:`Número de tarjeta (obligatorio).`})}),` 17883`,(0,h.jsx)(r,{id:`s2s-parametro-cvv`,name:`cvv`,type:`string`,children:(0,h.jsx)(t.p,{children:`Código de seguridad (obligatorio).`})}),` 17884`,(0,h.jsx)(r,{id:`s2s-parametro-expire`,name:`expire`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Fecha de expiración en formato mesAño, por ejemplo `,(0,h.jsx)(t.code,{children:`1023`}),` (obligatorio).`]})}),` 17885`,(0,h.jsx)(r,{id:`s2s-parametro-name`,name:`name`,type:`string`,children:(0,h.jsx)(t.p,{children:`Nombre del tarjetahabiente (requerido).`})}),` 17886`,(0,h.jsx)(r,{id:`s2s-parametro-lastname`,name:`lastname`,type:`string`,children:(0,h.jsx)(t.p,{children:`Apellidos del tarjetahabiente (requerido).`})}),` 17887`,(0,h.jsx)(r,{id:`s2s-parametro-phone`,name:`phone`,type:`string`,children:(0,h.jsx)(t.p,{children:`Teléfono del cliente (requerido).`})}),` 17888`,(0,h.jsx)(r,{id:`s2s-parametro-email`,name:`email`,type:`string`,children:(0,h.jsx)(t.p,{children:`Correo del cliente (obligatorio).`})}),` 17889`,(0,h.jsx)(r,{id:`s2s-parametro-address`,name:`address`,type:`string`,children:(0,h.jsx)(t.p,{children:`Dirección del cliente (requerido).`})}),` 17890`,(0,h.jsx)(r,{id:`s2s-parametro-city`,name:`city`,type:`string`,children:(0,h.jsx)(t.p,{children:`Ciudad del cliente (requerido).`})}),` 17891`,(0,h.jsx)(r,{id:`s2s-parametro-state`,name:`state`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Estado en formato ISO, por ejemplo `,(0,h.jsx)(t.code,{children:`CR-SJ`}),` (San José, Costa Rica) o `,(0,h.jsx)(t.code,{children:`US-CA`}),` (California, EEUU) (requerido).`]})}),` 17892`,(0,h.jsx)(r,{id:`s2s-parametro-zipcode`,name:`zipcode`,type:`string`,children:(0,h.jsx)(t.p,{children:`Código postal (requerido).`})}),` 17893`,(0,h.jsx)(r,{id:`s2s-parametro-country`,name:`country`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`PaÃs en código ISO Alpha-2, por ejemplo `,(0,h.jsx)(t.code,{children:`CR`}),`, `,(0,h.jsx)(t.code,{children:`US`}),`, `,(0,h.jsx)(t.code,{children:`GT`}),` (requerido).`]})}),` 17894`,(0,h.jsx)(r,{id:`s2s-parametro-amount`,name:`amount`,type:`string`,children:(0,h.jsx)(t.p,{children:`Monto de la compra (obligatorio).`})}),` 17895`,(0,h.jsx)(r,{id:`s2s-parametro-currency`,name:`currency`,type:`string`,children:(0,h.jsxs)(t.p,{children:[`Moneda en formato ISO, por ejemplo `,(0,h.jsx)(t.code,{children:`USD`}),`, `,(0,h.jsx)(t.code,{children:`CRC`}),`, `,(0,h.jsx)(t.code,{children:`GTQ`}),` (obligatorio).`]})}),` 17896`,(0,h.jsx)(r,{id:`s2s-parametro-ordernumber`,name:`orderNumber`,type:`string`,children:(0,h.jsx)(t.p,{children:`Número de orden (obligatorio).`})}),` 17897`,(0,h.jsx)(r,{id:`s2s-parametro-capture`,name:`capture`,type:`number`,children:(0,h.jsxs)(t.p,{children:[(0,h.jsx)(t.code,{children:`1`}),` captura y autoriza, `,(0,h.jsx)(t.code,{children:`0`}),` solo autoriza (obligatorio).`]})}),` 17898`,(0,h.jsx)(r,{id:`s2s-parametro-redirect`,name:`redirect`,type:`string`,children:(0,h.jsx)(t.p,{children:`URL de respuesta (obligatorio).`})}),` 17899`,(0,h.jsxs)(t.p,{children:[`Los campos `,(0,h.jsx)(t.code,{children:`shipTo*`}),` (`,(0,h.jsx)(t.code,{children:`shipToFirstName`}),`, `,(0,h.jsx)(t.code,{children:`shipToLastName`}),`, `,(0,h.jsx)(t.code,{children:`shipToAddress`}),`, `,(0,h.jsx)(t.code,{children:`shipToAddress2`}),`, 17900`,(0,h.jsx)(t.code,{children:`shipToCity`}),`, `,(0,h.jsx)(t.code,{children:`shipToState`}
17900),`, `,(0,h.jsx)(t.code,{children:`shipToZipPostCode`}),`, `,(0,h.jsx)(t.code,{children:`shipToCountry`}),`, `,(0,h.jsx)(t.code,{children:`shipToTelephone`}),`) aparecen en los 17901ejemplos de la colección como datos de envÃo.`]}),` 17902`,(0,h.jsx)(t.h3,{id:`peticion`,children:`Petición`}),` 17903`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 17904`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"key"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17905`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "card"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"card PAN"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17906`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "cvv"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"CVV Number"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17907`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "expire"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1023"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17908`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "name"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"firstname"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17909`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "lastname"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"lastname"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17910`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "phone"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"88888888"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17911`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "email"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"[email protected]"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17912`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "address"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"user address"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17913`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "city"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"city"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17914`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "state"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"state"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17915`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "zipcode"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"zipcode"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17916`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "country"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"country"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17917`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "shipToFirstName"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Nombre"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17918`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "shipToLastName"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Apellido"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17919`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "shipToAddress"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"San Jose"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17920`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "shipToAddress2"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Escazu"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17921`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "shipToCity"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"San Jose"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17922`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "shipToState"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"SJ"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17923`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`}
17923,children:` "shipToZipPostCode"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"10101"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17924`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "shipToCountry"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"CR"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17925`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "shipToTelephone"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"88778877"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17926`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"amount"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17927`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "currency"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"currency code"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17928`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "orderNumber"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Order Number"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17929`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "capture"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:`1`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17930`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "redirect"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"url to redirect"`})]}),` 17931`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 17932`,(0,h.jsxs)(t.p,{children:[`La colección incluye dos ejemplos, `,(0,h.jsx)(t.strong,{children:`con 3DS`}),` y `,(0,h.jsx)(t.strong,{children:`sin 3DS`}),`, con el mismo cuerpo de petición.`]}),` 17933`,(0,h.jsx)(t.h3,{id:`respuesta`,children:`Respuesta`}),` 17934`,(0,h.jsx)(h.Fragment,{children:(0,h.jsx)(t.pre,{className:`shiki github-dark`,style:{backgroundColor:`#24292e`,color:`#e1e4e8`},tabIndex:`0`,children:(0,h.jsxs)(t.code,{children:[(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`{`})}),` 17935`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "code"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"1"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17936`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "description"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"Transaccion aprobada"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17937`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "auth"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"123456"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17938`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "orderNumber"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`"12345"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17939`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "urlRedirect"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`,`})]}),` 17940`,(0,h.jsxs)(t.span,{className:`line`,children:[(0,h.jsx)(t.span,{style:{color:`#79B8FF`},children:` "error"`}),(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`: `}),(0,h.jsx)(t.span,{style:{color:`#9ECBFF`},children:`""`})]}),` 17941`,(0,h.jsx)(t.span,{className:`line`,children:(0,h.jsx)(t.span,{style:{color:`#E1E4E8`},children:`}`})})]})})}),` 17942`,(0,h.jsxs)(t.p,{children:[`Cuando la transacción requiere autenticación 3DS, la respuesta trae la URL en `,(0,h.jsx)(t.code,{children:`urlRedirect`}),`; ahà es 17943donde se envÃa al tarjetahabiente. Para interpretar `,(0,h.jsx)(t.code,{children:`code`}),`, `,(0,h.jsx)(t.code,{children:`description`}),` y `,(0,h.jsx)(t.code,{children:`error`}),`, ver 17944`,(0,h.jsx)(t.a,{href:`/developers/api/convenciones`,children:`convenciones de las respuestas`}),` y 17945`,(0,h.jsx)(t.a,{href:`/developers/api/procesos-operativos/errors`,children:`cómo leer una respuesta de error`}),`.`]}),` 17946`,(0,h.jsx)(t.h2,{id:`alternativas`,children:`Alternativas sin certificación PCI`}),` 17947`,(0,h.jsx)(t.p,{children:`Si no tenés certificación PCI, estos caminos evitan por completo ese alcance:`}),` 17948`,(0,h.jsxs)(t.ul,{children:[` 17949`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.a,{href:`/developers/hosted-payment-page`,children:`Hosted payment page`}),` â Tilopay hospeda el formulario.`]}),` 17950`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.a,{href:`/developers/sdk`,children:`SDK JavaScript`}),` â el formulario vive en tu página, pero los datos viajan del 17951navegador directo a Tilopay.`]}),` 17952`,(0,h.jsxs)(t.li,{children:[(0,h.jsx)(t.a,{href:`/developers/sin-codigo`,children:`Sin código`}),` â plugin o plataforma ya integrada.`]}),` 17953`]})]})}function _S(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(gS,{...e})}):gS(e)}function vS(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var yS=t({default:()=>SS,frontmatter:()=>bS}),bS={title:`Soporte y escalamiento`,kind:`concept`,status:`draft`,api_version:`v1`,last_verified:`2026-08-28`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[],related:[],draft:!0,description:`Página en construcción. El contenido normativo llega en la siguiente fase.`};function xS(e){let t={a:`a`,li:`li`,p:`p`,ul:`ul`,...m(),...e.components};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.p,{children:`Esta página todavÃa no tiene contenido normativo. No la tomés como contrato: nada de 17954lo que falta acá está definido en otro lugar del portal.`}),` 17955`,(0,h.jsx)(t.p,{children:`Mientras tanto:`}),` 17956`,(0,h.jsxs)(t.ul,{children:[` 17957`,(0,h.jsxs)(t.li,{children:[`Para integrar ya, seguà el `,(0,h.jsx)(t.a,{href:`/developers/sdk`,children:`SDK JavaScript`}),`.`]}),` 17958`,(0,h.jsxs)(t.li,{children:[`Para obtener credenciales de sandbox, registrate en `,(0,h.jsx)(t.a,{href:`/developers/registro`,children:`/developers/registro`}),`.`]}),` 17959`,(0,h.jsxs)(t.li,{children:[`Si necesitás este contenido con urgencia, escribinos desde `,(0,h.jsx)(t.a,{href:`/developers/support`,children:`soporte`}),`.`]}),` 17960`]})]})}function SS(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(xS,{...e})}):xS(e)}var CS=t({default:()=>ES,frontmatter:()=>wS}),wS={title:`Tarjetas de prueba`,kind:`guide`,status:`stable`,api_version:`v1`,last_verified:`2026-09-03`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[`Respuestas de TecnologÃa, 03-09-2026 (tarjetas de prueba del ambiente de pruebas)`],locales:[`es`,`en`],related:[`entornos`,`sdk/reference/startpayment`,`api/procesos-operativos/errors`],description:`Las 27 tarjetas del ambiente de pruebas de Tilopay, con el resultado esperado y la fricción 3DS de cada una.`};function TS(e){let t={a:`a`,code:`code`,h2:`h2`,p:`p`,strong:`strong`,table:`table`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,...m(),...e.components},{Callout:n}=t;return n||DS(`Callout`,!0),(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(t.p,{children:[`Estas tarjetas sólo funcionan cuando la cuenta está en `,(0,h.jsx)(t.strong,{children:`modo de pruebas`}),`. El modo se cambia 17961desde la cuenta y se verifica con el campo `,(0,h.jsx)(t.code,{children:`test`}),` que devuelve `,(0,h.jsx)(t.code,{children:`Init()`}),`: ver 17962`,(0,h.jsx)(t.a,{href:`/developers/entornos`,children:`entornos y pruebas`}),`.`]}),`
17963`,(0,h.jsx)(t.h2,{id:`uso`,children:`Cómo se usan`}),` 17964`,(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Dato`}),(0,h.jsx)(t.th,{children:`Qué se ingresa`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Fecha de vencimiento`}),(0,h.jsx)(t.td,{children:`Cualquiera en el futuro`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`CVV`}),(0,h.jsx)(t.td,{children:`Cualquiera`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:`Código de la pantalla de challenge 3DS`}),(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`3ds2`})})]})]})]}),` 17965`,(0,h.jsx)(n,{type:`warn`,children:(0,h.jsxs)(t.p,{children:[`En la pantalla de challenge 3DS el código a ingresar es `,(0,h.jsx)(t.strong,{children:(0,h.jsx)(t.code,{children:`3ds2`})}),`. No hay otro código ni se envÃa 17966por SMS en pruebas.`]})}),` 17967`,(0,h.jsx)(t.h2,{id:`tarjetas`,children:`Tarjetas`}),` 17968`,(0,h.jsxs)(t.p,{children:[`La marca se deriva del prefijo: `,(0,h.jsx)(t.code,{children:`4`}),` Visa, `,(0,h.jsx)(t.code,{children:`51`}),`â`,(0,h.jsx)(t.code,{children:`55`}),` Mastercard, `,(0,h.jsx)(t.code,{children:`34`}),` American Express.`]}),` 17969`,(0,h.jsxs)(t.table,{children:[(0,h.jsx)(t.thead,{children:(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.th,{children:`Número`}),(0,h.jsx)(t.th,{children:`Marca`}),(0,h.jsx)(t.th,{children:`Resultado esperado`}),(0,h.jsx)(t.th,{children:`Fricción`})]})}),(0,h.jsxs)(t.tbody,{children:[(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`4111111111111111`})}),(0,h.jsx)(t.td,{children:`Visa`}),(0,h.jsx)(t.td,{children:`Aprobada`}),(0,h.jsx)(t.td,{children:`Sin fricción`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`4012000000020089`})}),(0,h.jsx)(t.td,{children:`Visa`}),(0,h.jsx)(t.td,{children:`Aprobada`}),(0,h.jsx)(t.td,{children:`Sin fricción`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`4012000000020006`})}),(0,h.jsx)(t.td,{children:`Visa`}),(0,h.jsx)(t.td,{children:`Aprobada`}),(0,h.jsx)(t.td,{children:`Sin fricción`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`4012010000020088`})}),(0,h.jsx)(t.td,{children:`Visa`}),(0,h.jsx)(t.td,{children:`Aprobada`}),(0,h.jsx)(t.td,{children:`Sin fricción`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`5100270000000072`})}),(0,h.jsx)(t.td,{children:`Mastercard`}),(0,h.jsx)(t.td,{children:`Aprobada`}),(0,h.jsx)(t.td,{children:`Sin fricción`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`5100270000000031`})}),(0,h.jsx)(t.td,{children:`Mastercard`}),(0,h.jsx)(t.td,{children:`Aprobada`}),(0,h.jsx)(t.td,{children:`Sin fricción`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`341111000000009`})}),(0,h.jsx)(t.td,{children:`American Express`}),(0,h.jsx)(t.td,{children:`Aprobada`}),(0,h.jsx)(t.td,{children:`Sin fricción`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`341111000000011`})}),(0,h.jsx)(t.td,{children:`American Express`}),(0,h.jsx)(t.td,{children:`Aprobada`}),(0,h.jsx)(t.td,{children:`Sin fricción`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`341112000000001`})}),(0,h.jsx)(t.td,{children:`American Express`}),(0,h.jsx)(t.td,{children:`Aprobada`}),(0,h.jsx)(t.td,{children:`Sin fricción`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`341111000000037`})}),(0,h.jsx)(t.td,{children:`American Express`}),(0,h.jsx)(t.td,{children:`Aprobada`}),(0,h.jsx)(t.td,{children:`Sin fricción`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`341112000008012`})}),(0,h.jsx)(t.td,{children:`American Express`}),(0,h.jsx)(t.td,{children:`Aprobada`}),(0,h.jsx)(t.td,{children:`Sin fricción`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`4012000000020071`})}),(0,h.jsx)(t.td,{children:`Visa`}),(0,h.jsx)(t.td,{children:`Aprobada`}),(0,h.jsx)(t.td,{children:`Challenge 3DS`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`4012010000020070`})}),(0,h.jsx)(t.td,{children:`Visa`}),(0,h.jsx)(t.td,{children:`Aprobada`}),(0,h.jsx)(t.td,{children:`Challenge 3DS`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`4012010000020005`})}),(0,h.jsx)(t.td,{children:`Visa`}),(0,h.jsx)(t.td,{children:`Aprobada`}),(0,h.jsx)(t.td,{children:`Challenge 3DS`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`5100270000000023`})}),(0,h.jsx)(t.td,{children:`Mastercard`}),(0,h.jsx)(t.td,{children:`Aprobada`}),(0,h.jsx)(t.td,{children:`Challenge 3DS`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`5100271000000120`})}),(0,h.jsx)(t.td,{children:`Mastercard`}),(0,h.jsx)(t.td,{children:`Aprobada`}),(0,h.jsx)(t.td,{children:`Challenge 3DS`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`4112613451591116`})}),(0,h.jsx)(t.td,{children:`Visa`}),(0,h.jsx)(t.td,{children:`Fondos insuficientes`}),(0,h.jsx)(t.td,{children:`Challenge 3DS`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`4523080346468525`})}),(0,h.jsx)(t.td,{children:`Visa`}),(0,h.jsx)(t.td,{children:`CVV incorrecto`}),(0,h.jsx)(t.td,{children:`Sin fricción`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`4549179990476733`})}),(0,h.jsx)(t.td,{children:`Visa`}),(0,h.jsx)(t.td,{children:`Tarjeta restringida`}),(0,h.jsx)(t.td,{children:`Sin fricción`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`4012000000020121`})}),(0,h.jsx)(t.td,{children:`Visa`}),(0,h.jsx)(t.td,{children:`Rechazada`}),(0,h.jsx)(t.td,{children:`Sin fricción`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`4111111111119999`})}),(0,h.jsx)(t.td,{children:`Visa`}),(0,h.jsx)(t.td,{children:`Rechazada`}),(0,h.jsx)(t.td,{children:`Sin fricción`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`4111111111110000`})}),(0,h.jsx)(t.td,{children:`Visa`}),(0,h.jsx)(t.td,{children:`Rechazada`}),(0,h.jsx)(t.td,{children:`Sin fricción`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`5100270000000056`})}),(0,h.jsx)(t.td,{children:`Mastercard`}),(0,h.jsx)(t.td,{children:`Rechazada`}),(0,h.jsx)(t.td,{children:`Sin fricción`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`5111111111113333`})}),(0,h.jsx)(t.td,{children:`Mastercard`}),(0,h.jsx)(t.td,{children:`Rechazada`}),(0,h.jsx)(t.td,{children:`Sin fricción`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`4666666666662222`})}),(0,h.jsx)(t.td,{children:`Visa`}),(0,h.jsx)(t.td,{children:`Rechazada`}),(0,h.jsx)(t.td,{children:`Sin fricción`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`5555666666662222`})}),(0,h.jsx)(t.td,{children:`Mastercard`}),(0,h.jsx)(t.td,{children:`Rechazada`}),(0,h.jsx)(t.td,{children:`Sin fricción`})]}),(0,h.jsxs)(t.tr,{children:[(0,h.jsx)(t.td,{children:(0,h.jsx)(t.code,{children:`5100270000000098`})}),(0,h.jsx)(t.td,{children:`Mastercard`}),(0,h.jsx)(t.td,{children:`Rechazada`}),(0,h.jsx)(t.td,{children:`Challenge 3DS`})]})]})]}),` 17970`,(0,h.jsxs)(t.p,{children:[`Las tarjetas con fricción `,(0,h.jsx)(t.strong,{children:`Challenge 3DS`}),` abren la pantalla de autenticación; las de `,(0,h.jsx)(t.strong,{children:`Sin 17971fricción`}),` resuelven sin pasar por ella. El resultado esperado es el mismo cada vez: la tarjeta 17972determina la respuesta, no el monto.`]})]})}function ES(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(TS,{...e})}):TS(e)}function DS(e,t){throw Error(`Expected `+(t?`component`:`object`)+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var OS=t({default:()=>jS,frontmatter:()=>kS}),kS={title:`Escenarios de prueba`,kind:`guide`,status:`draft`,api_version:`v1`,last_verified:`2026-08-28`,verified_by:`equipo-integraciones`,owner:`equipo-integraciones`,sources:[],related:[],draft:!0,description:`Página en construcción. El contenido normativo llega en la siguiente fase.`};function AS(e){let t={a:`a`,li:`li`,p:`p`,ul:`ul`,...m(),...e.components};return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(t.p,{children:`Esta página todavÃa no tiene contenido normativo. No la tomés como contrato: nada de 17973lo que falta acá está definido en otro lugar del portal.`}),` 17974`,(0,h.jsx)(t.p,{children:`Mientras tanto:`}),` 17975`,(0,h.jsxs)(t.ul,{children:[` 17976`,(0,h.jsxs)(t.li,{children:[`Para integrar ya, seguà el `,(0,h.jsx)(t.a,{href:`/developers/sdk`,children:`SDK JavaScript`}),`.`]}),` 17977`,(0,h.jsxs)(t.li,{children:[`Para obtener credenciales de sandbox, registrate en `,(0,h.jsx)(t.a,{href:`/developers/registro`,children:`/developers/registro`}),`.`]}),` 17978`,(0,h.jsxs)(t.li,{children:[`Si necesitás este contenido con urgencia, escribinos desde `,(0,h.jsx)(t.a,{href:`/developers/support`,children:`soporte`}),`.`]}),` 17979`]})]})}function jS(e={}){let{wrapper:t}={...m(),...e.components};return t?(0,h.jsx)(t,{...e,children:(0,h.jsx)(AS,{...e})}):AS(e)}var MS;function g(e,t,n){function r(n,r){if(n._zod||Object.defineProperty(n,"_zod",{value:{def:r,constr:o,traits:new Set},enumerable:!1}),n._zod.traits.has(e))return;n._zod.traits.add(e),t(n,r);let i=o.prototype,a=Object.keys(i);for(let e=0;e<a.length;e++){let t=a[e];t in n||(n[t]=i[t].bind(n))}}
17979let i=n?.Parent??Object;class a extends i{}Object.defineProperty(a,"name",{value:e});function o(e){var t;let i=n?.Parent?new a:this;r(i,e),(t=i._zod).deferred??(t.deferred=[]);for(let e of i._zod.deferred)e();return i}return Object.defineProperty(o,"init",{value:r}),Object.defineProperty(o,Symbol.hasInstance,{value:t=>n?.Parent&&t instanceof n.Parent?!0:t?._zod?.traits?.has(e)}),Object.defineProperty(o,"name",{value:e}),o}var _=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}},NS=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name=`ZodEncodeError`}};(MS=globalThis).__zod_globalConfig??(MS.__zod_globalConfig={});var v=globalThis.__zod_globalConfig;function y(e){return e&&Object.assign(v,e),v}function PS(e){let t=Object.values(e).filter(e=>typeof e==`number`);return Object.entries(e).filter(([e,n])=>t.indexOf(+e)===-1).map(([e,t])=>t)}function FS(e,t){return typeof t==`bigint`?t.toString():t}function IS(e){return{get value(){{let t=e();return Object.defineProperty(this,"value",{value:t}),t}}}}function LS(e){return e==null}function RS(e){let t=+!!e.startsWith(`^`),n=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,n)}var zS=Symbol(`evaluating`);function b(e,t,n){let r;Object.defineProperty(e,t,{get(){if(r!==zS)return r===void 0&&(r=zS,r=n()),r},set(n){Object.defineProperty(e,t,{value:n})},configurable:!0})}function x(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function S(...e){let t={};for(let n of e){let e=Object.getOwnPropertyDescriptors(n);Object.assign(t,e)}return Object.defineProperties({},t)}function BS(e){return JSON.stringify(e)}function VS(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,``).replace(/[\s_-]+/g,`-`).replace(/^-+|-+$/g,``)}var HS=`captureStackTrace`in Error?Error.captureStackTrace:(...e)=>{};function C(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var US=IS(()=>{if(v.jitless||typeof navigator<`u`&&navigator?.userAgent?.includes(`Cloudflare`))return!1;try{return Function(``),!0}catch{return!1}});function w(e){if(C(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!=`function`)return!0;let n=t.prototype;return C(n)!==!1&&Object.prototype.hasOwnProperty.call(n,`isPrototypeOf`)!==!1}function WS(e){return w(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}var GS=new Set([`string`,`number`,`symbol`]);function T(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function E(e,t,n){let r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function D(e){let t=e;if(!t)return{};if(typeof t==`string`)return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error==`string`?{...t,error:()=>t.error}:t}function KS(e){return Object.keys(e).filter(t=>e[t]._zod.optin===`optional`&&e[t]._zod.optout===`optional`)}-Number.MAX_VALUE,Number.MAX_VALUE;function qS(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.pick() cannot be used on object schemas containing refinements`);return E(e,S(e._zod.def,{get shape(){let e={};for(let r in t){if(!(r in n.shape))throw Error(`Unrecognized key: "${r}"`);t[r]&&(e[r]=n.shape[r])}return x(this,`shape`,e),e},checks:[]}))}function JS(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.omit() cannot be used on object schemas containing refinements`);return E(e,S(e._zod.def,{get shape(){let r={...e._zod.def.shape};for(let e in t){if(!(e in n.shape))throw Error(`Unrecognized key: "${e}"`);t[e]&&delete r[e]}return x(this,`shape`,r),r},checks:[]}))}function YS(e,t){if(!w(t))throw Error(`Invalid input to extend: expected a plain object`);let n=e._zod.def.checks;if(n&&n.length>0){let n=e._zod.def.shape;for(let e in t)if(Object.getOwnPropertyDescriptor(n,e)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return E(e,S(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return x(this,`shape`,n),n}}))}function XS(e,t){if(!w(t))throw Error(`Invalid input to safeExtend: expected a plain object`);return E(e,S(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return x(this,`shape`,n),n}}))}function ZS(e,t){if(e._zod.def.checks?.length)throw Error(`.merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.`);return E(e,S(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t._zod.def.shape};return x(this,`shape`,n),n},get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]}))}function QS(e,t,n){let r=t._zod.def.checks;if(r&&r.length>0)throw Error(`.partial() cannot be used on object schemas containing refinements`);return E(t,S(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t in n){if(!(t in r))throw Error(`Unrecognized key: "${t}"`);n[t]&&(i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t])}else for(let t in r)i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t];return x(this,`shape`,i),i},checks:[]}))}function $S(e,t,n){return E(t,S(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t in n){if(!(t in i))throw Error(`Unrecognized key: "${t}"`);n[t]&&(i[t]=new e({type:`nonoptional`,innerType:r[t]}))}else for(let t in r)i[t]=new e({type:`nonoptional`,innerType:r[t]});return x(this,`shape`,i),i}}))}function O(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue!==!0)return!0;return!1}function eC(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue===!1)return!0;return!1}function tC(e,t){return t.map(t=>{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function k(e){return typeof e==`string`?e:e?.message}function A(e,t,n){let r=e.message?e.message:k(e.inst?._zod.def?.error?.(e))??k(t?.error?.(e))??k(n.customError?.(e))??k(n.localeError?.(e))??`Invalid input`,{inst:i,continue:a,input
17979:o,...s}=e;return s.path??=[],s.message=r,t?.reportInput&&(s.input=o),s}function nC(e){return Array.isArray(e)?`array`:typeof e==`string`?`string`:`unknown`}function j(...e){let[t,n,r]=e;return typeof t==`string`?{message:t,code:`custom`,input:n,inst:r}:{...t}}var rC=(e,t)=>{e.name=`$ZodError`,Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),e.message=JSON.stringify(t,FS,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},iC=g(`$ZodError`,rC),aC=g(`$ZodError`,rC,{Parent:Error});function oC(e,t=e=>e.message){let n={},r=[];for(let i of e.issues)i.path.length>0?(n[i.path[0]]=n[i.path[0]]||[],n[i.path[0]].push(t(i))):r.push(t(i));return{formErrors:r,fieldErrors:n}}function sC(e,t=e=>e.message){let n={_errors:[]},r=(e,i=[])=>{for(let a of e.issues)if(a.code===`invalid_union`&&a.errors.length)a.errors.map(e=>r({issues:e},[...i,...a.path]));else if(a.code===`invalid_key`)r({issues:a.issues},[...i,...a.path]);else if(a.code===`invalid_element`)r({issues:a.issues},[...i,...a.path]);else{let e=[...i,...a.path];if(e.length===0)n._errors.push(t(a));else{let r=n,i=0;for(;i<e.length;){let n=e[i];i===e.length-1?(r[n]=r[n]||{_errors:[]},r[n]._errors.push(t(a))):r[n]=r[n]||{_errors:[]},r=r[n],i++}}}};return r(e),n}var cC=e=>(t,n,r,i)=>{let a=r?{...r,async:!1}:{async:!1},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise)throw new _;if(o.issues.length){let t=new((i?.Err)??e)(o.issues.map(e=>A(e,a,y())));throw HS(t,i?.callee),t}return o.value},lC=e=>async(t,n,r,i)=>{let a=r?{...r,async:!0}:{async:!0},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise&&(o=await o),o.issues.length){let t=new((i?.Err)??e)(o.issues.map(e=>A(e,a,y())));throw HS(t,i?.callee),t}return o.value},M=e=>(t,n,r)=>{let i=r?{...r,async:!1}:{async:!1},a=t._zod.run({value:n,issues:[]},i);if(a instanceof Promise)throw new _;return a.issues.length?{success:!1,error:new(e??iC)(a.issues.map(e=>A(e,i,y())))}:{success:!0,data:a.value}},uC=M(aC),dC=e=>async(t,n,r)=>{let i=r?{...r,async:!0}:{async:!0},a=t._zod.run({value:n,issues:[]},i);return a instanceof Promise&&(a=await a),a.issues.length?{success:!1,error:new e(a.issues.map(e=>A(e,i,y())))}:{success:!0,data:a.value}},fC=dC(aC),pC=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return cC(e)(t,n,i)},mC=e=>(t,n,r)=>cC(e)(t,n,r),hC=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return lC(e)(t,n,i)},gC=e=>async(t,n,r)=>lC(e)(t,n,r),_C=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return M(e)(t,n,i)},vC=e=>(t,n,r)=>M(e)(t,n,r),yC=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return dC(e)(t,n,i)},bC=e=>async(t,n,r)=>dC(e)(t,n,r),xC=/^[cC][0-9a-z]{6,}$/,SC=/^[0-9a-z]+$/,CC=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,wC=/^[0-9a-vA-V]{20}$/,TC=/^[A-Za-z0-9]{27}$/,EC=/^[a-zA-Z0-9_-]{21}$/,DC=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,OC=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,kC=e=>e?RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,AC=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,jC=`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`;function MC(){return new RegExp(jC,`u`)}var NC=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,PC=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,FC=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,IC=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,LC=/^$|^(?:[0-9a-zA-Z+/]{4}
17979)*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,RC=/^[A-Za-z0-9_-]*$/,zC=/^https?$/,BC=/^\+[1-9]\d{6,14}$/,VC=`(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))`,HC=RegExp(`^${VC}$`);function UC(e){let t=`(?:[01]\\d|2[0-3]):[0-5]\\d`;return typeof e.precision==`number`?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function WC(e){return RegExp(`^${UC(e)}$`)}function GC(e){let t=UC({precision:e.precision}),n=[`Z`];e.local&&n.push(``),e.offset&&n.push(`([+-](?:[01]\\d|2[0-3]):[0-5]\\d)`);let r=`${t}(?:${n.join(`|`)})`;return RegExp(`^${VC}T(?:${r})$`)}var KC=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??``}}`:`[\\s\\S]*`;return RegExp(`^${t}$`)},qC=/^(?:true|false)$/i,JC=/^[^A-Z]*$/,YC=/^[^a-z]*$/,N=g(`$ZodCheck`,(e,t)=>{var n;e._zod??={},e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),XC=g(`$ZodCheckMaxLength`,(e,t)=>{var n;N.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!LS(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag.maximum??1/0;t.maximum<n&&(e._zod.bag.maximum=t.maximum)}),e._zod.check=n=>{let r=n.value;if(r.length<=t.maximum)return;let i=nC(r);n.issues.push({origin:i,code:`too_big`,maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),ZC=g(`$ZodCheckMinLength`,(e,t)=>{var n;N.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!LS(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag.minimum??-1/0;t.minimum>n&&(e._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{let r=n.value;if(r.length>=t.minimum)return;let i=nC(r);n.issues.push({origin:i,code:`too_small`,minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),QC=g(`$ZodCheckLengthEquals`,(e,t)=>{var n;N.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!LS(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag;n.minimum=t.length,n.maximum=t.length,n.length=t.length}),e._zod.check=n=>{let r=n.value,i=r.length;if(i===t.length)return;let a=nC(r),o=i>t.length;n.issues.push({origin:a,...o?{code:`too_big`,maximum:t.length}:{code:`too_small`,minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),$C=g(`$ZodCheckStringFormat`,(e,t)=>{var n,r;N.init(e,t),e._zod.onattach.push(e=>{let n=e._zod.bag;n.format=t.format,t.pattern&&(n.patterns??=new Set,n.patterns.add(t.pattern))}),t.pattern?(n=e._zod).check??(n.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:t.format,input:n.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(r=e._zod).check??(r.check=()=>{})}),ew=g(`$ZodCheckRegex`,(e,t)=>{$C.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:`regex`,input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),tw=g(`$ZodCheckLowerCase`,(e,t)=>{t.pattern??=JC,$C.init(e,t)}),nw=g(`$ZodCheckUpperCase`,(e,t)=>{t.pattern??=YC,$C.init(e,t)}),rw=g(`$ZodCheckIncludes`,(e,t)=>{N.init(e,t);let n=T(t.includes),r=new RegExp(typeof t.position==`number`?`^.{${t.position}}${n}`:n);t.pattern=r,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(r)}),e._zod.check=n=>{n.value.includes(t.includes,t.position)||n.issues.push({origin:`string`,code:`invalid_format`,format:`includes`,includes:t.includes,input:n.value,inst:e,continue:!t.abort})}}),iw=g(`$ZodCheckStartsWith`,(e,t)=>{N.init(e,t);let n=RegExp(`^${T(t.prefix)}.*`);t.pattern??=n,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(n)}),e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`starts_with`,prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),aw=g(`$ZodCheckEndsWith`,(e,t)=>{N.init(e,t);let n=RegExp(`.*${T(t.suffix)}$`);t.pattern??=n,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(n)}),e._zod.check=n=>
17979{n.value.endsWith(t.suffix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`ends_with`,suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}}),ow=g(`$ZodCheckOverwrite`,(e,t)=>{N.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}}),sw=class{constructor(e=[]){this.content=[],this.indent=0,this&&(this.args=e)}indented(e){this.indent+=1,e(this),--this.indent}write(e){if(typeof e==`function`){e(this,{execution:`sync`}),e(this,{execution:`async`});return}let t=e.split(` 17980`).filter(e=>e),n=Math.min(...t.map(e=>e.length-e.trimStart().length)),r=t.map(e=>e.slice(n)).map(e=>` `.repeat(this.indent*2)+e);for(let e of r)this.content.push(e)}compile(){let e=Function,t=this?.args,n=[...(this?.content??[``]).map(e=>` ${e}`)];return new e(...t,n.join(` 17981`))}},cw={major:4,minor:4,patch:3},P=g(`$ZodType`,(e,t)=>{var n;e??={},e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=cw;let r=[...e._zod.def.checks??[]];e._zod.traits.has(`$ZodCheck`)&&r.unshift(e);for(let t of r)for(let n of t._zod.onattach)n(e);if(r.length===0)(n=e._zod).deferred??(n.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let t=(e,t,n)=>{let r=O(e),i;for(let a of t){if(a._zod.def.when){if(eC(e)||!a._zod.def.when(e))continue}else if(r)continue;let t=e.issues.length,o=a._zod.check(e);if(o instanceof Promise&&n?.async===!1)throw new _;if(i||o instanceof Promise)i=(i??Promise.resolve()).then(async()=>{await o,e.issues.length!==t&&(r||=O(e,t))});else{if(e.issues.length===t)continue;r||=O(e,t)}}return i?i.then(()=>e):e},n=(n,i,a)=>{if(O(n))return n.aborted=!0,n;let o=t(i,r,a);if(o instanceof Promise){if(a.async===!1)throw new _;return o.then(t=>e._zod.parse(t,a))}return e._zod.parse(o,a)};e._zod.run=(i,a)=>
17981{if(a.skipChecks)return e._zod.parse(i,a);if(a.direction===`backward`){let t=e._zod.parse({value:i.value,issues:[]},{...a,skipChecks:!0});return t instanceof Promise?t.then(e=>n(e,i,a)):n(t,i,a)}let o=e._zod.parse(i,a);if(o instanceof Promise){if(a.async===!1)throw new _;return o.then(e=>t(e,r,a))}return t(o,r,a)}}b(e,`~standard`,()=>({validate:t=>{try{let n=uC(e,t);return n.success?{value:n.data}:{issues:n.error?.issues}}catch{return fC(e,t).then(e=>e.success?{value:e.data}:{issues:e.error?.issues})}},vendor:`zod`,version:1}))}),lw=g(`$ZodString`,(e,t)=>{P.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??KC(e._zod.bag),e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=String(n.value)}catch{}return typeof n.value==`string`||n.issues.push({expected:`string`,code:`invalid_type`,input:n.value,inst:e}),n}}),F=g(`$ZodStringFormat`,(e,t)=>{$C.init(e,t),lw.init(e,t)}),uw=g(`$ZodGUID`,(e,t)=>{t.pattern??=OC,F.init(e,t)}),dw=g(`$ZodUUID`,(e,t)=>{if(t.version){let e={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(e===void 0)throw Error(`Invalid UUID version: "${t.version}"`);t.pattern??=kC(e)}else t.pattern??=kC();F.init(e,t)}),fw=g(`$ZodEmail`,(e,t)=>{t.pattern??=AC,F.init(e,t)}),pw=g(`$ZodURL`,(e,t)=>{F.init(e,t),e._zod.check=n=>{try{let r=n.value.trim();if(!t.normalize&&t.protocol?.source===zC.source&&!/^https?:\/\//i.test(r)){n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid URL format`,input:n.value,inst:e,continue:!t.abort});return}let i=new URL(r);t.hostname&&(t.hostname.lastIndex=0,t.hostname.test(i.hostname)||n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid hostname`,pattern:t.hostname.source,input:n.value,inst:e,continue:!t.abort})),t.protocol&&(t.protocol.lastIndex=0,t.protocol.test(i.protocol.endsWith(`:`)?i.protocol.slice(0,-1):i.protocol)||n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid protocol`,pattern:t.protocol.source,input:n.value,inst:e,continue:!t.abort})),t.normalize?n.value=i.href:n.value=r;return}catch{n.issues.push({code:`invalid_format`,format:`url`,input:n.value,inst:e,continue:!t.abort})}}}),mw=g(`$ZodEmoji`,(e,t)=>{t.pattern??=MC(),F.init(e,t)}),hw=g(`$ZodNanoID`,(e,t)=>{t.pattern??=EC,F.init(e,t)}),gw=g(`$ZodCUID`,(e,t)=>{t.pattern??=xC,F.init(e,t)}),_w=g(`$ZodCUID2`,(e,t)=>{t.pattern??=SC,F.init(e,t)}),vw=g(`$ZodULID`,(e,t)=>{t.pattern??=CC,F.init(e,t)}),yw=g(`$ZodXID`,(e,t)=>{t.pattern??=wC,F.init(e,t)}),bw=g(`$ZodKSUID`,(e,t)=>{t.pattern??=TC,F.init(e,t)}),xw=g(`$ZodISODateTime`,(e,t)=>{t.pattern??=GC(t),F.init(e,t)}),Sw=g(`$ZodISODate`,(e,t)=>{t.pattern??=HC,F.init(e,t)}),Cw=g(`$ZodISOTime`,(e,t)=>{t.pattern??=WC(t),F.init(e,t)}),ww=g(`$ZodISODuration`,(e,t)=>{t.pattern??=DC,F.init(e,t)}),Tw=g(`$ZodIPv4`,(e,t)=>{t.pattern??=NC,F.init(e,t),e._zod.bag.format=`ipv4`}),Ew=g(`$ZodIPv6`,(e,t)=>{t.pattern??=PC,F.init(e,t),e._zod.bag.format=`ipv6`,e._zod.check=n=>{try{new URL(`http://[${n.value}]`)}catch{n.issues.push({code:`invalid_format`,format:`ipv6`,input:n.value,inst:e,continue:!t.abort})}}}),Dw=g(`$ZodCIDRv4`,(e,t)=>{t.pattern??=FC,F.init(e,t)}),Ow=g(`$ZodCIDRv6`,(e,t)=>{t.pattern??=IC,F.init(e,t),e._zod.check=n=>{let r=n.value.split(`/`);try{if(r.length!==2)throw Error();let[e,t]=r;if(!t)throw Error();let n=Number(t);if(`${n}`!==t||n<0||n>128)throw Error();new URL(`http://[${e}]`)}catch{n.issues.push({code:`invalid_format`,format:`cidrv6`,input:n.value,inst:e,continue:!t.abort})}}});function kw(e){if(e===``)return!0;if(/\s/.test(e)||e.length%4!=0)return!1;try{return atob(e),!0}catch{return!1}}var Aw=g(`$ZodBase64`,(e,t)=>{t.pattern??=LC,F.init(e,t),e._zod.bag.contentEncoding=`base64`,e._zod.check=n=>{kw(n.value)||n.issues.push({code:`invalid_format`,format:`base64`,input:n.value,inst:e,continue:!t.abort})}});function jw(e){if(!RC.test(e))return!1;let t=e.replace(/[-_]/g,e=>e===`-`?`+`:`/`);return kw(t.padEnd(Math.ceil(t.length/4)*4,`=`))}var Mw=g(`$ZodBase64URL`,(e,t)=>{t.pattern??=RC,F.init(e,t),e._zod.bag.contentEncoding=`base64url`,e._zod.check=n=>{jw(n.value)||n.issues.push({code:`invalid_format`,format:`base64url`,input:n.value,inst:e,continue:!t.abort})}}),Nw=g(`$ZodE164`,(e,t)=>{t.pattern??=BC,F.init(e,t)});function Pw(e,t=null){try{let n=e.split(`.`);if(n.length!==3)return!1;let[r]=n;if(!r)return!1;let i=JSON.parse(atob(r));return!(`typ`in i&&i?.typ!==`JWT`||!i.alg||t&&(!(`alg`in i)||i.alg!==t))}catch{return!1}}var Fw=g(`$ZodJWT`,(e,t)=>{F.init(e,t),e._zod.check=n=>{Pw(n.value,t.alg)||n.issues.push({code:`invalid_format`,format:`jwt`,input:n.value,inst:e,continue:!t.abort})}}
17981),Iw=g(`$ZodBoolean`,(e,t)=>{P.init(e,t),e._zod.pattern=qC,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=!!n.value}catch{}let i=n.value;return typeof i==`boolean`||n.issues.push({expected:`boolean`,code:`invalid_type`,input:i,inst:e}),n}}),Lw=g(`$ZodUnknown`,(e,t)=>{P.init(e,t),e._zod.parse=e=>e}),Rw=g(`$ZodNever`,(e,t)=>{P.init(e,t),e._zod.parse=(t,n)=>(t.issues.push({expected:`never`,code:`invalid_type`,input:t.value,inst:e}),t)});function zw(e,t,n){e.issues.length&&t.issues.push(...tC(n,e.issues)),t.value[n]=e.value}var Bw=g(`$ZodArray`,(e,t)=>{P.init(e,t),e._zod.parse=(n,r)=>{let i=n.value;if(!Array.isArray(i))return n.issues.push({expected:`array`,code:`invalid_type`,input:i,inst:e}),n;n.value=Array(i.length);let a=[];for(let e=0;e<i.length;e++){let o=i[e],s=t.element._zod.run({value:o,issues:[]},r);s instanceof Promise?a.push(s.then(t=>zw(t,n,e))):zw(s,n,e)}return a.length?Promise.all(a).then(()=>n):n}});function I(e,t,n,r,i,a){let o=n in r;if(e.issues.length){if(i&&a&&!o)return;t.issues.push(...tC(n,e.issues))}if(!o&&!i){e.issues.length||t.issues.push({code:`invalid_type`,expected:`nonoptional`,input:void 0,path:[n]});return}e.value===void 0?o&&(t.value[n]=void 0):t.value[n]=e.value}function Vw(e){let t=Object.keys(e.shape);for(let n of t)if(!e.shape?.[n]?._zod?.traits?.has(`$ZodType`))throw Error(`Invalid element at key "${n}": expected a Zod schema`);let n=KS(e.shape);return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(n)}}function Hw(e,t,n,r,i,a){let o=[],s=i.keySet,c=i.catchall._zod,l=c.def.type,u=c.optin===`optional`,d=c.optout===`optional`;for(let i in t){if(i===`__proto__`||s.has(i))continue;if(l===`never`){o.push(i);continue}let a=c.run({value:t[i],issues:[]},r);a instanceof Promise?e.push(a.then(e=>I(e,n,i,t,u,d))):I(a,n,i,t,u,d)}return o.length&&n.issues.push({code:`unrecognized_keys`,keys:o,input:t,inst:a}),e.length?Promise.all(e).then(()=>n):n}var Uw=g(`$ZodObject`,(e,t)=>{if(P.init(e,t),!Object.getOwnPropertyDescriptor(t,`shape`)?.get){let e=t.shape;Object.defineProperty(t,"shape",{get:()=>{let n={...e};return Object.defineProperty(t,"shape",{value:n}),n}})}let n=IS(()=>Vw(t));b(e._zod,`propValues`,()=>{let e=t.shape,n={};for(let t in e){let r=e[t]._zod;if(r.values){n[t]??(n[t]=new Set);for(let e of r.values)n[t].add(e)}}return n});let r=C,i=t.catchall,a;e._zod.parse=(t,o)=>{a??=n.value;let s=t.value;if(!r(s))return t.issues.push({expected:`object`,code:`invalid_type`,input:s,inst:e}),t;t.value={};let c=[],l=a.shape;for(let e of a.keys){let n=l[e],r=n._zod.optin===`optional`,i=n._zod.optout===`optional`,a=n._zod.run({value:s[e],issues:[]},o);a instanceof Promise?c.push(a.then(n=>I(n,t,e,s,r,i))):I(a,t,e,s,r,i)}return i?Hw(c,s,t,o,n.value,e):c.length?Promise.all(c).then(()=>t):t}}),Ww=g(`$ZodObjectJIT`,(e,t)=>{Uw.init(e,t);let n=e._zod.parse,r=IS(()=>Vw(t)),i=e=>{let t=new sw([`shape`,`payload`,`ctx`]),n=r.value,i=e=>{let t=BS(e);return`shape[${t}]._zod.run({ value: input[${t}], issues: [] }, ctx)`};t.write(`const input = payload.value;`);let a=Object.create(null),o=0;for(let e of n.keys)a[e]=`key_${o++}`;t.write(`const newResult = {};`);for(let r of n.keys){let n=a[r],o=BS(r),s=e[r],c=s?._zod?.optin===`optional`,l=s?._zod?.optout===`optional`;t.write(`const ${n} = ${i(r)};`),c&&l?t.write(` 17982 if (${n}.issues.length) { 17983 if (${o} in input) { 17984 payload.issues = payload.issues.concat(${n}.issues.map(iss => ({ 17985 ...iss, 17986 path: iss.path ? [${o}, ...iss.path] : [${o}] 17987 }))); 17988 } 17989 } 17990 17991 if (${n}.value === undefined) { 17992 if (${o} in input) { 17993 newResult[${o}] = undefined; 17994 } 17995 } else { 17996 newResult[${o}] = ${n}.value; 17997 } 17998 17999 `):c?t.write(` 18000 if (${n}.issues.length) { 18001 payload.issues = payload.issues.concat(${n}.issues.map(iss => ({ 18002 ...iss, 18003 path: iss.path ? [${o}, ...iss.path] : [${o}] 18004 }))); 18005 } 18006 18007 if (${n}.value === undefined) { 18008 if (${o} in input) { 18009 newResult[${o}] = undefined; 18010 } 18011 } else { 18012 newResult[${o}] = ${n}.value; 18013 } 18014 18015 `):t.write(` 18016 const ${n}_present = ${o} in input; 18017 if (${n}.issues.length) { 18018 payload.issues = payload.issues.concat(${n}.issues.map(iss => ({ 18019 ...iss, 18020 path: iss.path ? [${o}, ...iss.path] : [${o}] 18021 }))); 18022 } 18023 if (!${n}_present && !${n}.issues.length) { 18024 payload.issues.push({
18025 code: "invalid_type", 18026 expected: "nonoptional", 18027 input: undefined, 18028 path: [${o}] 18029 }); 18030 } 18031 18032 if (${n}_present) { 18033 if (${n}.value === undefined) { 18034 newResult[${o}] = undefined; 18035 } else { 18036 newResult[${o}] = ${n}.value; 18037 } 18038 } 18039 18040 `)}t.write(`payload.value = newResult;`),t.write(`return payload;`);let s=t.compile();return(t,n)=>s(e,t,n)},a,o=C,s=!v.jitless,c=s&&US.value,l=t.catchall,u;e._zod.parse=(d,f)=>{u??=r.value;let p=d.value;return o(p)?s&&c&&f?.async===!1&&f.jitless!==!0?(a||=i(t.shape),d=a(d,f),l?Hw([],p,d,f,u,e):d):n(d,f):(d.issues.push({expected:`object`,code:`invalid_type`,input:p,inst:e}),d)}});function Gw(e,t,n,r){for(let n of e)if(n.issues.length===0)return t.value=n.value,t;let i=e.filter(e=>!O(e));return i.length===1?(t.value=i[0].value,i[0]):(t.issues.push({code:`invalid_union`,input:t.value,inst:n,errors:e.map(e=>e.issues.map(e=>A(e,r,y())))}),t)}var Kw=g(`$ZodUnion`,(e,t)=>{P.init(e,t),b(e._zod,`optin`,()=>t.options.some(e=>e._zod.optin===`optional`)?`optional`:void 0),b(e._zod,`optout`,()=>t.options.some(e=>e._zod.optout===`optional`)?`optional`:void 0),b(e._zod,`values`,()=>{if(t.options.every(e=>e._zod.values))return new Set(t.options.flatMap(e=>Array.from(e._zod.values)))}),b(e._zod,`pattern`,()=>{if(t.options.every(e=>e._zod.pattern)){let e=t.options.map(e=>e._zod.pattern);return RegExp(`^(${e.map(e=>RS(e.source)).join(`|`)})$`)}});let n=t.options.length===1?t.options[0]._zod.run:null;e._zod.parse=(r,i)=>{if(n)return n(r,i);let a=!1,o=[];for(let e of t.options){let t=e._zod.run({value:r.value,issues:[]},i);if(t instanceof Promise)o.push(t),a=!0;else{if(t.issues.length===0)return t;o.push(t)}}return a?Promise.all(o).then(t=>Gw(t,r,e,i)):Gw(o,r,e,i)}}),qw=g(`$ZodIntersection`,(e,t)=>{P.init(e,t),e._zod.parse=(e,n)=>{let r=e.value,i=t.left._zod.run({value:r,issues:[]},n),a=t.right._zod.run({value:r,issues:[]},n);return i instanceof Promise||a instanceof Promise?Promise.all([i,a]).then(([t,n])=>Yw(e,t,n)):Yw(e,i,a)}});function Jw(e,t){if(e===t||e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(w(e)&&w(t)){let n=Object.keys(t),r=Object.keys(e).filter(e=>n.indexOf(e)!==-1),i={...e,...t};for(let n of r){let r=Jw(e[n],t[n]);if(!r.valid)return{valid:!1,mergeErrorPath:[n,...r.mergeErrorPath]};i[n]=r.data}return{valid:!0,data:i}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let n=[];for(let r=0;r<e.length;r++){let i=e[r],a=t[r],o=Jw(i,a);if(!o.valid)return{valid:!1,mergeErrorPath:[r,...o.mergeErrorPath]};n.push(o.data)}return{valid:!0,data:n}}return{valid:!1,mergeErrorPath:[]}}function Yw(e,t,n){let r=new Map,i;for(let n of t.issues)if(n.code===`unrecognized_keys`){i??=n;for(let e of n.keys)r.has(e)||r.set(e,{}),r.get(e).l=!0}else e.issues.push(n);for(let t of n.issues)if(t.code===`unrecognized_keys`)for(let e of t.keys)r.has(e)||r.set(e,{}),r.get(e).r=!0;else e.issues.push(t);let a=[...r].filter(([,e])=>e.l&&e.r).map(([e])=>e);if(a.length&&i&&e.issues.push({...i,keys:a}),O(e))return e;let o=Jw(t.value,n.value);if(!o.valid)throw Error(`Unmergable intersection. Error path: ${JSON.stringify(o.mergeErrorPath)}`);return e.value=o.data,e}var Xw=g(`$ZodEnum`,(e,t)=>{P.init(e,t);let n=PS(t.entries),r=new Set(n);e._zod.values=r,e._zod.pattern=RegExp(`^(${n.filter(e=>GS.has(typeof e)).map(e=>typeof e==`string`?T(e):e.toString()).join(`|`)})$`),e._zod.parse=(t,i)=>{let a=t.value;return r.has(a)||t.issues.push({code:`invalid_value`,values:n,input:a,inst:e}),t}}),Zw=g(`$ZodTransform`,(e,t)=>{P.init(e,t),e._zod.optin=`optional`,e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new NS(e.constructor.name);let i=t.transform(n.value,n);if(r.async)return(i instanceof Promise?i:Promise.resolve(i)).then(e=>(n.value=e,n.fallback=!0,n));if(i instanceof Promise)throw new _;return n.value=i,n.fallback=!0,n}});function Qw(e,t){return t===void 0&&(e.issues.length||e.fallback)?{issues:[],value:void 0}:e}var $w=g(`$ZodOptional`,(e,t)=>{P.init(e,t),e._zod.optin=`optional`,e._zod.optout=`optional`,b(e._zod,`values`,()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),b(e._zod,`pattern`,()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${RS(e.source)})?$`):void 0}),e._zod.parse=(e,n)=>{if(t.innerType._zod.optin===`optional`){let r=e.value,i=t.innerType._zod.run(e,n);return i instanceof Promise?i.then(e=>Qw(e,r)):Qw(i,r)}return e.value===void 0?e:t.innerType._zod.run(e,n)}}),eT=g(`$ZodExactOptional`,(e,t)=>{$w.init(e,t),b(e._zod,`values`,()=>t.innerType._zod.values),b(e._zod,`pattern`,()=>t.innerType._zod.pattern),e._zod.parse=(e,n)=>t.innerType._zod.run(e,n)}),tT=g(`$ZodNullable`,(e,t)=>{P.init(e,t),b(e._zod,`optin`,()=>t.innerType._zod.optin),b(e._zod,`optout`,()=>t.innerType._zod.optout),b(e._zod,`pattern`,()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${RS(e.source)}|null)$`):void 0}),b(e._zod,`values`,()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(e,n)=>e.value===null?e:t.innerType._zod.run(e,n)}),nT=g(`$ZodDefault`,(e,t)=>{P.init(e,t),e._zod.optin=`optional`,b(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);if(e.value===void 0)return e.value=t.defaultValue,e;let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(e=>rT(e,t)):rT(r,t)}});function rT(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}var iT=g(`$ZodPrefault`,(e,t)=>{P.init(e,t),e._zod.optin=`optional`,b(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,n)=>(n.direction===`backward`||e.value===void 0&&(e.value=t.defaultValue),t.innerType._zod.run(e,n))}
vendor: 4,519 bytes, line 18040
18040),aT=g(`$ZodNonOptional`,(e,t)=>{P.init(e,t),b(e._zod,`values`,()=>{let e=t.innerType._zod.values;return e?new Set([...e].filter(e=>e!==void 0)):void 0}),e._zod.parse=(n,r)=>{let i=t.innerType._zod.run(n,r);return i instanceof Promise?i.then(t=>oT(t,e)):oT(i,e)}});function oT(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:`invalid_type`,expected:`nonoptional`,input:e.value,inst:t}),e}var sT=g(`$ZodCatch`,(e,t)=>{P.init(e,t),e._zod.optin=`optional`,b(e._zod,`optout`,()=>t.innerType._zod.optout),b(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(r=>(e.value=r.value,r.issues.length&&(e.value=t.catchValue({...e,error:{issues:r.issues.map(e=>A(e,n,y()))},input:e.value}),e.issues=[],e.fallback=!0),e)):(e.value=r.value,r.issues.length&&(e.value=t.catchValue({...e,error:{issues:r.issues.map(e=>A(e,n,y()))},input:e.value}),e.issues=[],e.fallback=!0),e)}}),cT=g(`$ZodPipe`,(e,t)=>{P.init(e,t),b(e._zod,`values`,()=>t.in._zod.values),b(e._zod,`optin`,()=>t.in._zod.optin),b(e._zod,`optout`,()=>t.out._zod.optout),b(e._zod,`propValues`,()=>t.in._zod.propValues),e._zod.parse=(e,n)=>{if(n.direction===`backward`){let r=t.out._zod.run(e,n);return r instanceof Promise?r.then(e=>L(e,t.in,n)):L(r,t.in,n)}let r=t.in._zod.run(e,n);return r instanceof Promise?r.then(e=>L(e,t.out,n)):L(r,t.out,n)}});function L(e,t,n){return e.issues.length?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues,fallback:e.fallback},n)}var lT=g(`$ZodReadonly`,(e,t)=>{P.init(e,t),b(e._zod,`propValues`,()=>t.innerType._zod.propValues),b(e._zod,`values`,()=>t.innerType._zod.values),b(e._zod,`optin`,()=>t.innerType?._zod?.optin),b(e._zod,`optout`,()=>t.innerType?._zod?.optout),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(uT):uT(r)}});function uT(e){return e.value=Object.freeze(e.value),e}var dT=g(`$ZodCustom`,(e,t)=>{N.init(e,t),P.init(e,t),e._zod.parse=(e,t)=>e,e._zod.check=n=>{let r=n.value,i=t.fn(r);if(i instanceof Promise)return i.then(t=>fT(t,n,r,e));fT(i,n,r,e)}});function fT(e,t,n,r){if(!e){let e={code:`custom`,input:n,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(e.params=r._zod.def.params),t.issues.push(j(e))}}var pT,mT=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){let n=t[0];return this._map.set(e,n),n&&typeof n==`object`&&`id`in n&&this._idmap.set(n.id,e),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){let t=this._map.get(e);return t&&typeof t==`object`&&`id`in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){let t=e._zod.parent;if(t){let n={...this.get(t)??{}};delete n.id;let r={...n,...this._map.get(e)};return Object.keys(r).length?r:void 0}return this._map.get(e)}has(e){return this._map.has(e)}};function hT(){return new mT}(pT=globalThis).__zod_globalRegistry??(pT.__zod_globalRegistry=hT());var R=globalThis.__zod_globalRegistry;function gT(e,t){return new e({type:`string`,...D(t)})}function _T(e,t){return new e({type:`string`,format:`email`,check:`string_format`,abort:!1,...D(t)})}function vT(e,t){return new e({type:`string`,format:`guid`,check:`string_format`,abort:!1,...D(t)})}function yT(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,...D(t)})}function bT(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v4`,...D(t)})}function xT(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v6`,...D(t)})}function ST(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v7`,...D(t)})}function CT(e,t){return new e({type:`string`,format:`url`,check:`string_format`,abort:!1,...D(t)})}function wT(e,t){return new e({type:`string`,format:`emoji`,check:`string_format`,abort:!1,...D(t)})}function TT(e,t){return new e({type:`string`,format:`nanoid`,check:`string_format`,abort:!1,...D(t)})}function ET(e,t){return new e({type:`string`,format:`cuid`,check:`string_format`,abort:!1,...D(t)})}function DT(e,t){return new e({type:`string`,format:`cuid2`,check:`string_format`,abort:!1,...D(t)})}function OT(e,t){return new e({type:`string`,format:`ulid`,check:`string_format`,abort:!1,...D(t)})}function kT(e,t){return new e({type:`string`,format:`xid`,check:`string_format`,abort:!1,...D(t)})}
vendor: 3,024 bytes, line 18040
18040function AT(e,t){return new e({type:`string`,format:`ksuid`,check:`string_format`,abort:!1,...D(t)})}function jT(e,t){return new e({type:`string`,format:`ipv4`,check:`string_format`,abort:!1,...D(t)})}function MT(e,t){return new e({type:`string`,format:`ipv6`,check:`string_format`,abort:!1,...D(t)})}function NT(e,t){return new e({type:`string`,format:`cidrv4`,check:`string_format`,abort:!1,...D(t)})}function PT(e,t){return new e({type:`string`,format:`cidrv6`,check:`string_format`,abort:!1,...D(t)})}function FT(e,t){return new e({type:`string`,format:`base64`,check:`string_format`,abort:!1,...D(t)})}function IT(e,t){return new e({type:`string`,format:`base64url`,check:`string_format`,abort:!1,...D(t)})}function LT(e,t){return new e({type:`string`,format:`e164`,check:`string_format`,abort:!1,...D(t)})}function RT(e,t){return new e({type:`string`,format:`jwt`,check:`string_format`,abort:!1,...D(t)})}function zT(e,t){return new e({type:`string`,format:`datetime`,check:`string_format`,offset:!1,local:!1,precision:null,...D(t)})}function BT(e,t){return new e({type:`string`,format:`date`,check:`string_format`,...D(t)})}function VT(e,t){return new e({type:`string`,format:`time`,check:`string_format`,precision:null,...D(t)})}function HT(e,t){return new e({type:`string`,format:`duration`,check:`string_format`,...D(t)})}function UT(e,t){return new e({type:`boolean`,...D(t)})}function WT(e){return new e({type:`unknown`})}function GT(e,t){return new e({type:`never`,...D(t)})}function KT(e,t){return new XC({check:`max_length`,...D(t),maximum:e})}function z(e,t){return new ZC({check:`min_length`,...D(t),minimum:e})}function qT(e,t){return new QC({check:`length_equals`,...D(t),length:e})}function JT(e,t){return new ew({check:`string_format`,format:`regex`,...D(t),pattern:e})}function YT(e){return new tw({check:`string_format`,format:`lowercase`,...D(e)})}function XT(e){return new nw({check:`string_format`,format:`uppercase`,...D(e)})}function ZT(e,t){return new rw({check:`string_format`,format:`includes`,...D(t),includes:e})}function QT(e,t){return new iw({check:`string_format`,format:`starts_with`,...D(t),prefix:e})}function $T(e,t){return new aw({check:`string_format`,format:`ends_with`,...D(t),suffix:e})}function B(e){return new ow({check:`overwrite`,tx:e})}function eE(e){return B(t=>t.normalize(e))}function tE(){return B(e=>e.trim())}function nE(){return B(e=>e.toLowerCase())}function rE(){return B(e=>e.toUpperCase())}function iE(){return B(e=>VS(e))}function aE(e,t,n){return new e({type:`array`,element:t,...D(n)})}function oE(e,t,n){return new e({type:`custom`,check:`custom`,fn:t,...D(n)})}function sE(e,t){let n=cE(t=>(t.addIssue=e=>{if(typeof e==`string`)t.issues.push(j(e,t.value,n._zod.def));else{let r=e;r.fatal&&(r.continue=!1),r.code??=`custom`,r.input??=t.value,r.inst??=n,r.continue??=!n._zod.def.abort,t.issues.push(j(r))}},e(t.value,t)),t);return n}function cE(e,t){let n=new N({check:`custom`,...D(t)});return n._zod.check=e,n}function lE(e){let t=e?.target??`draft-2020-12`;
18040return t===`draft-4`&&(t=`draft-04`),t===`draft-7`&&(t=`draft-07`),{processors:e.processors??{},metadataRegistry:e?.metadata??R,target:t,unrepresentable:e?.unrepresentable??`throw`,override:e?.override??(()=>{}),io:e?.io??`output`,counter:0,seen:new Map,cycles:e?.cycles??`ref`,reused:e?.reused??`inline`,external:e?.external??void 0}}function V(e,t,n={path:[],schemaPath:[]}){var r;let i=e._zod.def,a=t.seen.get(e);if(a)return a.count++,n.schemaPath.includes(e)&&(a.cycle=n.path),a.schema;let o={schema:{},count:1,cycle:void 0,path:n.path};t.seen.set(e,o);let s=e._zod.toJSONSchema?.();if(s)o.schema=s;else{let r={...n,schemaPath:[...n.schemaPath,e],path:n.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,o.schema,r);else{let n=o.schema,a=t.processors[i.type];if(!a)throw Error(`[toJSONSchema]: Non-representable type encountered: ${i.type}`);a(e,t,n,r)}let a=e._zod.parent;a&&(o.ref||=a,V(a,t,r),t.seen.get(a).isParent=!0)}let c=t.metadataRegistry.get(e);return c&&Object.assign(o.schema,c),t.io===`input`&&H(e)&&(delete o.schema.examples,delete o.schema.default),t.io===`input`&&`_prefault`in o.schema&&((r=o.schema).default??(r.default=o.schema._prefault)),delete o.schema._prefault,t.seen.get(e).schema}function uE(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);let r=new Map;for(let t of e.seen.entries()){let n=e.metadataRegistry.get(t[0])?.id;if(n){let e=r.get(n);if(e&&e!==t[0])throw Error(`Duplicate schema id "${n}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);r.set(n,t[0])}}let i=t=>{let r=e.target===`draft-2020-12`?`$defs`:`definitions`;if(e.external){let n=e.external.registry.get(t[0])?.id,i=e.external.uri??(e=>e);if(n)return{ref:i(n)};let a=t[1].defId??t[1].schema.id??`schema${e.counter++}`;return t[1].defId=a,{defId:a,ref:`${i(`__shared`)}#/${r}/${a}`}}if(t[1]===n)return{ref:`#`};let i=`#/${r}/`,a=t[1].schema.id??`__schema${e.counter++}`;return{defId:a,ref:i+a}},a=e=>{if(e[1].schema.$ref)return;let t=e[1],{ref:n,defId:r}=i(e);t.def={...t.schema},r&&(t.defId=r);let a=t.schema;for(let e in a)delete a[e];a.$ref=n};if(e.cycles===`throw`)for(let t of e.seen.entries()){let e=t[1];if(e.cycle)throw Error(`Cycle detected: #/${e.cycle?.join(`/`)}/<root> 18041 18042Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let n of e.seen.entries()){let r=n[1];if(t===n[0]){a(n);continue}if(e.external){let r=e.external.registry.get(n[0])?.id;if(t!==n[0]&&r){a(n);continue}}if(e.metadataRegistry.get(n[0])?.id){a(n);continue}if(r.cycle){a(n);continue}if(r.count>1&&e.reused===`ref`){a(n);continue}}}function dE(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);let r=t=>{let n=e.seen.get(t);if(n.ref===null)return;let i=n.def??n.schema,a={...i},o=n.ref;if(n.ref=null,o){r(o);let n=e.seen.get(o),s=n.schema;if(s.$ref&&(e.target===`draft-07`||e.target===`draft-04`||e.target===`openapi-3.0`)?(i.allOf=i.allOf??[],i.allOf.push(s)):Object.assign(i,s),Object.assign(i,a),t._zod.parent===o)for(let e in i)e!==`$ref`&&e!==`allOf`&&(e in a||delete i[e]);if(s.$ref&&n.def)for(let e in i)e!==`$ref`&&e!==`allOf`&&e in n.def&&JSON.stringify(i[e])===JSON.stringify(n.def[e])&&delete i[e]}let s=t._zod.parent;if(s&&s!==o){r(s);let t=e.seen.get(s);if(t?.schema.$ref&&(i.$ref=t.schema.$ref,t.def))for(let e in i)e!==`$ref`&&e!==`allOf`&&e in t.def&&JSON.stringify(i[e])===JSON.stringify(t.def[e])&&delete i[e]}e.override({zodSchema:t,jsonSchema:i,path:n.path??[]})};for(let t of[...e.seen.entries()].reverse())r(t[0]);let i={};if(e.target===`draft-2020-12`?i.$schema=`https://json-schema.org/draft/2020-12/schema`:e.target===`draft-07`?i.$schema=`http://json-schema.org/draft-07/schema#`:e.target===`draft-04`?i.$schema=`http://json-schema.org/draft-04/schema#`:e.target,e.external?.uri){let n=e.external.registry.get(t)?.id;if(!n)throw Error("Schema is missing an `id` property");i.$id=e.external.uri(n)}Object.assign(i,n.def??n.schema);let a=e.metadataRegistry.get(t)?.id;a!==void 0&&i.id===a&&delete i.id;let o=e.external?.defs??{};for(let t of e.seen.entries()){let e=t[1];e.def&&e.defId&&(e.def.id===e.defId&&delete e.def.id,o[e.defId]=e.def)}e.external||Object.keys(o).length>
180420&&(e.target===`draft-2020-12`?i.$defs=o:i.definitions=o);try{let n=JSON.parse(JSON.stringify(i));return Object.defineProperty(n,"~standard",{value:{...t[`~standard`],jsonSchema:{input:U(t,`input`,e.processors),output:U(t,`output`,e.processors)}},enumerable:!1,writable:!1}),n}catch{throw Error(`Error converting schema to JSON.`)}}function H(e,t){let n=t??{seen:new Set};if(n.seen.has(e))return!1;n.seen.add(e);let r=e._zod.def;if(r.type===`transform`)return!0;if(r.type===`array`)return H(r.element,n);if(r.type===`set`)return H(r.valueType,n);if(r.type===`lazy`)return H(r.getter(),n);if(r.type===`promise`||r.type===`optional`||r.type===`nonoptional`||r.type===`nullable`||r.type===`readonly`||r.type==="default"||r.type===`prefault`)return H(r.innerType,n);if(r.type===`intersection`)return H(r.left,n)||H(r.right,n);if(r.type===`record`||r.type===`map`)return H(r.keyType,n)||H(r.valueType,n);if(r.type===`pipe`)return e._zod.traits.has(`$ZodCodec`)?!0:H(r.in,n)||H(r.out,n);if(r.type===`object`){for(let e in r.shape)if(H(r.shape[e],n))return!0;return!1}if(r.type===`union`){for(let e of r.options)if(H(e,n))return!0;return!1}if(r.type===`tuple`){for(let e of r.items)if(H(e,n))return!0;return!!(r.rest&&H(r.rest,n))}return!1}var fE=(e,t={})=>n=>{let r=lE({...n,processors:t});return V(e,r),uE(r,e),dE(r,e)},U=(e,t,n={})=>r=>{let{libraryOptions:i,target:a}=r??{},o=lE({...i??{},target:a,io:t,processors:n});return V(e,o),uE(o,e),dE(o,e)},pE={guid:`uuid`,url:`uri`,datetime:`date-time`,json_string:`json-string`,regex:``},mE=(e,t,n,r)=>{let i=n;i.type=`string`;let{minimum:a,maximum:o,format:s,patterns:c,contentEncoding:l}=e._zod.bag;if(typeof a==`number`&&(i.minLength=a),typeof o==`number`&&(i.maxLength=o),s&&(i.format=pE[s]??s,i.format===``&&delete i.format,s===`time`&&delete i.format),l&&(i.contentEncoding=l),c&&c.size>0){let e=[...c];e.length===1?i.pattern=e[0].source:e.length>1&&(i.allOf=[...e.map(e=>({...t.target===`draft-07`||t.target===`draft-04`||t.target===`openapi-3.0`?{type:`string`}:{},pattern:e.source}))])}},hE=(e,t,n,r)=>{n.type=`boolean`},gE=(e,t,n,r)=>{n.not={}},_E=(e,t,n,r)=>{let i=e._zod.def,a=PS(i.entries);a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),n.enum=a},vE=(e,t,n,r)=>{if(t.unrepresentable===`throw`)throw Error(`Custom types cannot be represented in JSON Schema`)},yE=(e,t,n,r)=>{if(t.unrepresentable===`throw`)throw Error(`Transforms cannot be represented in JSON Schema`)},bE=(e,t,n,r)=>{let i=n,a=e._zod.def,{minimum:o,maximum:s}=e._zod.bag;typeof o==`number`&&(i.minItems=o),typeof s==`number`&&(i.maxItems=s),i.type=`array`,i.items=V(a.element,t,{...r,path:[...r.path,`items`]})},xE=(e,t,n,r)=>{let i=n,a=e._zod.def;i.type=`object`,i.properties={};let o=a.shape;for(let e in o)i.properties[e]=V(o[e],t,{...r,path:[...r.path,`properties`,e]});let s=new Set(Object.keys(o)),c=new Set([...s].filter(e=>{let n=a.shape[e]._zod;return t.io===`input`?n.optin===void 0:n.optout===void 0}));c.size>0&&(i.required=Array.from(c)),a.catchall?._zod.def.type===`never`?i.additionalProperties=!1:a.catchall?a.catchall&&(i.additionalProperties=V(a.catchall,t,{...r,path:[...r.path,`additionalProperties`]})):t.io===`output`&&(i.additionalProperties=!1)},SE=(e,t,n,r)=>{let i=e._zod.def,a=i.inclusive===!1,o=i.options.map((e,n)=>V(e,t,{...r,path:[...r.path,a?`oneOf`:`anyOf`,n]}));a?n.oneOf=o:n.anyOf=o},CE=(e,t,n,r)=>{let i=e._zod.def,a=V(i.left,t,{...r,path:[...r.path,`allOf`,0]}),o=V(i.right,t,{...r,path:[...r.path,`allOf`,1]}),s=e=>`allOf`in e&&Object.keys(e).length===1;n.allOf=[...s(a)?a.allOf:[a],...s(o)?o.allOf:[o]]},wE=(e,t,n,r)=>{let i=e._zod.def,a=V(i.innerType,t,r),o=t.seen.get(e);t.target===`openapi-3.0`?(o.ref=i.innerType,n.nullable=!0):n.anyOf=[a,{type:`null`}]},TE=(e,t,n,r)=>{let i=e._zod.def;V(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},EE=(e,t,n,r)=>{let i=e._zod.def;V(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,n.default=JSON.parse(JSON.stringify(i.defaultValue))},DE=(e,t,n,r)=>{let i=e._zod.def;V(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,t.io===`input`&&(n._prefault=JSON.parse(JSON.stringify(i.defaultValue)))},OE=(e,t,n,r)=>{let i=e._zod.def;V(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o;try{o=i.catchValue(void 0)}catch{throw Error(`Dynamic catch values are not supported in JSON Schema`)}n.default=o},kE=(e,t,n,r)=>{let i=e._zod.def,a=i.in._zod.traits.has(`$ZodTransform`),o=t.io===`input`?a?i.out:i.in:i.out;V(o,t,r);let s=t.seen.get(e);s.ref=o},AE=(e,t,n,r)=>{let i=e._zod.def;V(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,n.readOnly=!0},jE=(e,t,n,r)=>{let i=e._zod.def;V(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},ME=g(`ZodISODateTime`,(e,t)=>{xw.init(e,t),J.init(e,t)});function NE(e){return zT(ME,e)}var PE=g(`ZodISODate`,(e,t)=>{Sw.init(e,t),J.init(e,t)});function FE(e){return BT(PE,e)}var IE=g(`ZodISOTime`,(e,t)=>{Cw.init(e,t),J.init(e,t)});function LE(e){return VT(IE,e)}var RE=g(`ZodISODuration`,(e,t)=>{ww.init(e,t),J.init(e,t)});function zE(e){return HT(RE,e)}var W=g(`ZodError`,(e,t)=>{iC.init(e,t),e.name=`ZodError`,Object.defineProperties(e,{format:{value:t=>sC(e,t)},flatten:{value:t=>oC(e,t)},addIssue:{value:t=>{e.issues.push(t),e.message=JSON.stringify(e.issues,FS,2)}},addIssues:{value:t=>{e.issues.push(...t),e.message=JSON.stringify(e.issues,FS,2)}},isEmpty:{get(){return e.issues.length===0}}})},{Parent:Error}),BE=cC(W),VE=lC(W),HE=M(W),UE=dC(W),WE=pC(W),GE=mC(W),KE=hC(W),qE=gC(W),JE=_C(W),YE=vC(W),XE=yC(W),ZE=bC(W),QE=new WeakMap;function G(e,t,n){let r=Object.getPrototypeOf(e),i=QE.get(r);if(i||(i=new Set,QE.set(r,i)),!i.has(t)){i.add(t);for(let e in n){let t=n[e];Object.defineProperty(r,e,{configurable:!0,enumerable:!1,get(){let n=t.bind(this);return Object.defineProperty(this,e,{configurable:!0,writable:!0,enumerable:!0,value:n}),n},set(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,enumerable:!0,value:t})}})}}}var K=g(`ZodType`,(e,t)=>(P.init(e,t),Object.assign(e[`~standard`],{jsonSchema:{input:U(e,`input`),output:U(e,`output`)}}),e.toJSONSchema=fE(e,{}),e.def=t,e.type=t.type,Object.defineProperty(e,"_def",{value:t}),e.parse=(t,n)=>BE(e,t,n,{callee:e.parse}),e.safeParse=(t,n)=>HE(e,t,n),e.parseAsync=async(t,n)=>VE(e,t,n,{callee:e.parseAsync}),e.safeParseAsync=async(t,n)=>UE(e,t,n),e.spa=e.safeParseAsync,e.encode=(t,n)=>
18042WE(e,t,n),e.decode=(t,n)=>GE(e,t,n),e.encodeAsync=async(t,n)=>KE(e,t,n),e.decodeAsync=async(t,n)=>qE(e,t,n),e.safeEncode=(t,n)=>JE(e,t,n),e.safeDecode=(t,n)=>YE(e,t,n),e.safeEncodeAsync=async(t,n)=>XE(e,t,n),e.safeDecodeAsync=async(t,n)=>ZE(e,t,n),G(e,`ZodType`,{check(...e){let t=this.def;return this.clone(S(t,{checks:[...t.checks??[],...e.map(e=>typeof e==`function`?{_zod:{check:e,def:{check:`custom`},onattach:[]}}:e)]}),{parent:!0})},with(...e){return this.check(...e)},clone(e,t){return E(this,e,t)},brand(){return this},register(e,t){return e.add(this,t),this},refine(e,t){return this.check(tO(e,t))},superRefine(e,t){return this.check(nO(e,t))},overwrite(e){return this.check(B(e))},optional(){return LD(this)},exactOptional(){return zD(this)},nullable(){return VD(this)},nullish(){return LD(VD(this))},nonoptional(e){return qD(this,e)},array(){return Y(this)},or(e){return AD([this,e])},and(e){return MD(this,e)},transform(e){return ZD(this,FD(e))},default(e){return UD(this,e)},prefault(e){return GD(this,e)},catch(e){return YD(this,e)},pipe(e){return ZD(this,e)},readonly(){return $D(this)},describe(e){let t=this.clone();return R.add(t,{description:e}),t},meta(...e){if(e.length===0)return R.get(this);let t=this.clone();return R.add(t,e[0]),t},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(e){return e(this)}}),Object.defineProperty(e,"description",{get(){return R.get(e)?.description},configurable:!0}),e)),$E=g(`_ZodString`,(e,t)=>{lw.init(e,t),K.init(e,t),e._zod.processJSONSchema=(t,n,r)=>mE(e,t,n,r);let n=e._zod.bag;e.format=n.format??null,e.minLength=n.minimum??null,e.maxLength=n.maximum??null,G(e,`_ZodString`,{regex(...e){return this.check(JT(...e))},includes(...e){return this.check(ZT(...e))},startsWith(...e){return this.check(QT(...e))},endsWith(...e){return this.check($T(...e))},min(...e){return this.check(z(...e))},max(...e){return this.check(KT(...e))},length(...e){return this.check(qT(...e))},nonempty(...e){return this.check(z(1,...e))},lowercase(e){return this.check(YT(e))},uppercase(e){return this.check(XT(e))},trim(){return this.check(tE())},normalize(...e){return this.check(eE(...e))},toLowerCase(){return this.check(nE())},toUpperCase(){return this.check(rE())},slugify(){return this.check(iE())}})}),eD=g(`ZodString`,(e,t)=>{lw.init(e,t),$E.init(e,t),e.email=t=>e.check(_T(tD,t)),e.url=t=>e.check(CT(iD,t)),e.jwt=t=>e.check(RT(yD,t)),e.emoji=t=>e.check(wT(aD,t)),e.guid=t=>e.check(vT(nD,t)),e.uuid=t=>e.check(yT(rD,t)),e.uuidv4=t=>e.check(bT(rD,t)),e.uuidv6=t=>e.check(xT(rD,t)),e.uuidv7=t=>e.check(ST(rD,t)),e.nanoid=t=>e.check(TT(oD,t)),e.guid=t=>e.check(vT(nD,t)),e.cuid=t=>e.check(ET(sD,t)),e.cuid2=t=>e.check(DT(cD,t)),e.ulid=t=>e.check(OT(lD,t)),e.base64=t=>e.check(FT(gD,t)),e.base64url=t=>e.check(IT(_D,t)),e.xid=t=>e.check(kT(uD,t)),e.ksuid=t=>e.check(AT(dD,t)),e.ipv4=t=>e.check(jT(fD,t)),e.ipv6=t=>e.check(MT(pD,t)),e.cidrv4=t=>e.check(NT(mD,t)),e.cidrv6=t=>e.check(PT(hD,t)),e.e164=t=>e.check(LT(vD,t)),e.datetime=t=>e.check(NE(t)),e.date=t=>e.check(FE(t)),e.time=t=>e.check(LE(t)),e.duration=t=>e.check(zE(t))});function q(e){return gT(eD,e)}var J=g(`ZodStringFormat`,(e,t)=>{F.init(e,t),$E.init(e,t)}),tD=g(`ZodEmail`,(e,t)=>{fw.init(e,t),J.init(e,t)}),nD=g(`ZodGUID`,(e,t)=>{uw.init(e,t),J.init(e,t)}),rD=g(`ZodUUID`,(e,t)=>{dw.init(e,t),J.init(e,t)}),iD=g(`ZodURL`,(e,t)=>{pw.init(e,t),J.init(e,t)}),aD=g(`ZodEmoji`,(e,t)=>{mw.init(e,t),J.init(e,t)}),oD=g(`ZodNanoID`,(e,t)=>{hw.init(e,t),J.init(e,t)}),sD=g(`ZodCUID`,(e,t)=>{gw.init(e,t),J.init(e,t)}),cD=g(`ZodCUID2`,(e,t)=>{_w.init(e,t),J.init(e,t)}),lD=g(`ZodULID`,(e,t)=>{vw.init(e,t),J.init(e,t)}),uD=g(`ZodXID`,(e,t)=>{yw.init(e,t),J.init(e,t)}),dD=g(`ZodKSUID`,(e,t)=>{bw.init(e,t),J.init(e,t)}),fD=g(`ZodIPv4`,(e,t)=>{Tw.init(e,t),J.init(e,t)}),pD=g(`ZodIPv6`,(e,t)=>{Ew.init(e,t),J.init(e,t)}),mD=g(`ZodCIDRv4`,(e,t)=>{Dw.init(e,t),J.init(e,t)}),hD=g(`ZodCIDRv6`,(e,t)=>{Ow.init(e,t),J.init(e,t)}),gD=g(`ZodBase64`,(e,t)=>{Aw.init(e,t),J.init(e,t)}),_D=g(`ZodBase64URL`,(e,t)=>{Mw.init(e,t),J.init(e,t)}),vD=g(`ZodE164`,(e,t)=>{Nw.init(e,t),J.init(e,t)}),yD=g(`ZodJWT`,(e,t)=>{Fw.init(e,t),J.init(e,t)}),bD=g(`ZodBoolean`,(e,t)=>{Iw.init(e,t),K.init(e,t),e._zod.processJSONSchema=(t,n,r)=>hE(e,t,n,r)});function xD(e){return UT(bD,e)}var SD=g(`ZodUnknown`,(e,t)=>{Lw.init(e,t),K.init(e,t),e._zod.processJSONSchema=(e,t,n)=>void 0});function CD(){return WT(SD)}var wD=g(`ZodNever`,(e,t)=>{Rw.init(e,t),K.init(e,t),e._zod.processJSONSchema=(t,n,r)=>gE(e,t,n,r)});function TD(e){return GT(wD,e)}var ED=g(`ZodArray`,(e,t)=>{Bw.init(e,t),K.init(e,t),e._zod.processJSONSchema=(t,n,r)=>bE(e,t,n,r),e.element=t.element,G(e,`ZodArray`,{min(e,t){return this.check(z(e,t))},nonempty(e){return this.check(z(1,e))},max(e,t){return this.check(KT(e,t))},length(e,t){return this.check(qT(e,t))},unwrap(){return this.element}})});function Y(e,t){return aE(ED,e,t)}var DD=g(`ZodObject`,(e,t)=>{Ww.init(e,t),K.init(e,t),e._zod.processJSONSchema=(t,n,r)=>xE(e,t,n,r),b(e,`shape`,()=>
18042t.shape),G(e,`ZodObject`,{keyof(){return X(Object.keys(this._zod.def.shape))},catchall(e){return this.clone({...this._zod.def,catchall:e})},passthrough(){return this.clone({...this._zod.def,catchall:CD()})},loose(){return this.clone({...this._zod.def,catchall:CD()})},strict(){return this.clone({...this._zod.def,catchall:TD()})},strip(){return this.clone({...this._zod.def,catchall:void 0})},extend(e){return YS(this,e)},safeExtend(e){return XS(this,e)},merge(e){return ZS(this,e)},pick(e){return qS(this,e)},omit(e){return JS(this,e)},partial(...e){return QS(ID,this,e[0])},required(...e){return $S(KD,this,e[0])}})});function OD(e,t){return new DD({type:`object`,shape:e??{},...D(t)})}var kD=g(`ZodUnion`,(e,t)=>{Kw.init(e,t),K.init(e,t),e._zod.processJSONSchema=(t,n,r)=>SE(e,t,n,r),e.options=t.options});function AD(e,t){return new kD({type:`union`,options:e,...D(t)})}var jD=g(`ZodIntersection`,(e,t)=>{qw.init(e,t),K.init(e,t),e._zod.processJSONSchema=(t,n,r)=>CE(e,t,n,r)});function MD(e,t){return new jD({type:`intersection`,left:e,right:t})}var ND=g(`ZodEnum`,(e,t)=>{Xw.init(e,t),K.init(e,t),e._zod.processJSONSchema=(t,n,r)=>_E(e,t,n,r),e.enum=t.entries,e.options=Object.values(t.entries);let n=new Set(Object.keys(t.entries));e.extract=(e,r)=>{let i={};for(let r of e)if(n.has(r))i[r]=t.entries[r];else throw Error(`Key ${r} not found in enum`);return new ND({...t,checks:[],...D(r),entries:i})},e.exclude=(e,r)=>{let i={...t.entries};for(let t of e)if(n.has(t))delete i[t];else throw Error(`Key ${t} not found in enum`);return new ND({...t,checks:[],...D(r),entries:i})}});function X(e,t){return new ND({type:`enum`,entries:Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e,...D(t)})}var PD=g(`ZodTransform`,(e,t)=>{Zw.init(e,t),K.init(e,t),e._zod.processJSONSchema=(t,n,r)=>yE(e,t,n,r),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new NS(e.constructor.name);n.addIssue=r=>{if(typeof r==`string`)n.issues.push(j(r,n.value,t));else{let t=r;t.fatal&&(t.continue=!1),t.code??=`custom`,t.input??=n.value,t.inst??=e,n.issues.push(j(t))}};let i=t.transform(n.value,n);return i instanceof Promise?i.then(e=>(n.value=e,n.fallback=!0,n)):(n.value=i,n.fallback=!0,n)}});function FD(e){return new PD({type:`transform`,transform:e})}var ID=g(`ZodOptional`,(e,t)=>{$w.init(e,t),K.init(e,t),e._zod.processJSONSchema=(t,n,r)=>jE(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function LD(e){return new ID({type:`optional`,innerType:e})}var RD=g(`ZodExactOptional`,(e,t)=>{eT.init(e,t),K.init(e,t),e._zod.processJSONSchema=(t,n,r)=>jE(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function zD(e){return new RD({type:`optional`,innerType:e})}var BD=g(`ZodNullable`,(e,t)=>{tT.init(e,t),K.init(e,t),e._zod.processJSONSchema=(t,n,r)=>wE(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function VD(e){return new BD({type:`nullable`,innerType:e})}var HD=g(`ZodDefault`,(e,t)=>{nT.init(e,t),K.init(e,t),e._zod.processJSONSchema=(t,n,r)=>EE(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function UD(e,t){return new HD({type:`default`,innerType:e,get defaultValue(){return typeof t==`function`?t():WS(t)}})}var WD=g(`ZodPrefault`,(e,t)=>{iT.init(e,t),K.init(e,t),e._zod.processJSONSchema=(t,n,r)=>DE(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function GD(e,t){return new WD({type:`prefault`,innerType:e,get defaultValue(){return typeof t==`function`?t():WS(t)}})}var KD=g(`ZodNonOptional`,(e,t)=>{aT.init(e,t),K.init(e,t),e._zod.processJSONSchema=(t,n,r)=>TE(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function qD(e,t){return new KD({type:`nonoptional`,innerType:e,...D(t)})}var JD=g(`ZodCatch`,(e,t)=>{sT.init(e,t),K.init(e,t),e._zod.processJSONSchema=(t,n,r)=>OE(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function YD(e,t){return new JD({type:`catch`,innerType:e,catchValue:typeof t==`function`?t:()=>t})}var XD=g(`ZodPipe`,(e,t)=>{cT.init(e,t),K.init(e,t),e._zod.processJSONSchema=(t,n,r)=>kE(e,t,n,r),e.in=t.in,e.out=t.out});function ZD(e,t){return new XD({type:`pipe`,in:e,out:t})}var QD=g(`ZodReadonly`,(e,t)=>{lT.init(e,t),K.init(e,t),e._zod.processJSONSchema=(t,n,r)=>AE(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function $D(e){return new QD({type:`readonly`,innerType:e})}var eO=g(`ZodCustom`,(e,t)=>{dT.init(e,t),K.init(e,t),e._zod.processJSONSchema=(t,n,r)=>vE(e,t,n,r)});function tO(e,t={}){return oE(eO,e,t)}function nO(e,t){return sE(e,t)}var rO=OD({title:q().min(3),kind:X([`sdk-method`,`api-operation`,`api-index`,`mcp-tool`,`mcp-index`,`concept`,`guide`]),access:X([`read`,`write`,`destructive`]).optional(),status:X([`stable`,`beta`,`deprecated`,`draft`]),sdk_version:q().optional(),api_version:q().optional(),last_verified:q().regex(/^\d{4}-\d{2}-\d{2}$/,`usa formato YYYY-MM-DD`),verified_by:q().min(2),owner:q().min(2),locales:Y(X([`es`,`en`])).min(1).default([`es`,`en`]),related:Y(q()).default([]),sources:Y(q()).default([]),description:q().optional(),gaps:Y(q()).default([]),draft:xD().optional()});function iO(e){let t=/^---\r?\n([\s\S]*?)\r?\n---\r?\n?/.exec(e);if(!t)return{data:{},body:e};let n={},r=(t[1]??``).split(/\r?\n/),i=null;for(let e of r){if(!e.trim()||e.trim().startsWith(`#`))continue;let t=/^\s*-\s+(.*)$/.exec(e);if(t&&i){let e=n[i]??[];e.push(aO(t[1]??``)),n[i]=e;continue}let r=/^([A-Za-z0-9_]+):\s*(.*)$/.exec(e);if(!r)continue;let a=r[1]??``;i=a;let o=(r[2]??``).trim();if(!o){n[a]=[];continue}if(o.startsWith(`[`)){n[a]=o.replace(/^\[|\]$/g,``).split(`,`).map(e=>aO(e)).filter(e=>e!==``);continue}n[a]=aO(o)}return{data:n,body:e.slice(t[0].length)}}function aO(e){let t=e.trim().replace(/^["']|["']$/g,``);
18042return t===`true`||t!==`false`&&t}var oO=/\/sdk\/(v\d+)\//.exec(`https://app.tilopay.com/sdk/v2/sdk_tpay.min.js`)?.[1]??`v2`,sO=Object.assign({"/src/docs/en/agentes/asistente-whatsapp.mdx":a,"/src/docs/en/agentes/documentacion-legible.mdx":o,"/src/docs/en/agentes/mcp/adquirencia.mdx":s,"/src/docs/en/agentes/mcp/api-bancario/analyze-payments.mdx":c,"/src/docs/en/agentes/mcp/api-bancario/get-payment.mdx":l,"/src/docs/en/agentes/mcp/api-bancario/get-transfer-status.mdx":u,"/src/docs/en/agentes/mcp/api-bancario/list-balances.mdx":d,"/src/docs/en/agentes/mcp/api-bancario/list-payments.mdx":f,"/src/docs/en/agentes/mcp/api-bancario/otras-operaciones.mdx":p,"/src/docs/en/agentes/mcp/api-bancario/request-statement.mdx":ee,"/src/docs/en/agentes/mcp/api-bancario/search-payment.mdx":te,"/src/docs/en/agentes/mcp/api-bancario/send-transfer.mdx":ne,"/src/docs/en/agentes/mcp/api-bancario/validate-destination.mdx":re,"/src/docs/en/agentes/mcp/api-bancario.mdx":ie,"/src/docs/en/agentes/mcp/avisos.mdx":ae,"/src/docs/en/agentes/mcp/catalogo.mdx":oe,"/src/docs/en/agentes/mcp/comprobantes.mdx":se,"/src/docs/en/agentes/mcp/conectar.mdx":ce,"/src/docs/en/agentes/mcp/contactos.mdx":le,"/src/docs/en/agentes/mcp/enlaces-de-pago.mdx":ue,"/src/docs/en/agentes/mcp/microtienda.mdx":de,"/src/docs/en/agentes/mcp/perfil.mdx":fe,"/src/docs/en/agentes/mcp/permisos.mdx":pe,"/src/docs/en/agentes/mcp/recetas.mdx":me,"/src/docs/en/agentes/mcp/recordatorios.mdx":he,"/src/docs/en/agentes/mcp/recurrentes.mdx":ge,"/src/docs/en/agentes/mcp/soporte.mdx":_e,"/src/docs/en/agentes/mcp/tarjetas-guardadas.mdx":ve,"/src/docs/en/agentes/mcp/ventas.mdx":ye,"/src/docs/en/agentes/mcp.mdx":be,"/src/docs/en/agentes.mdx":xe,"/src/docs/en/api/autenticacion/token-api.mdx":Se,"/src/docs/en/api/autenticacion/token-sdk.mdx":Ce,"/src/docs/en/api/autenticacion.mdx":we,"/src/docs/en/api/cof/process-tokenize.mdx":Te,"/src/docs/en/api/cof/realizar-cobro.mdx":Ee,"/src/docs/en/api/cof/remove-card.mdx":De,"/src/docs/en/api/cof.mdx":Oe,"/src/docs/en/api/convenciones.mdx":ke,"/src/docs/en/api/hosted-payment-page/process-payment.mdx":Ae,"/src/docs/en/api/links-de-pago/create-link-payment.mdx":je,"/src/docs/en/api/links-de-pago/delete-link-payment.mdx":Me,"/src/docs/en/api/links-de-pago/detail-link-payment.mdx":Ne,"/src/docs/en/api/links-de-pago/payment-by-id.mdx":Pe,"/src/docs/en/api/links-de-pago/payment-item-list.mdx":Fe,"/src/docs/en/api/links-de-pago.mdx":Ie,"/src/docs/en/api/procesos-operativos/consult-transactions.mdx":Le,"/src/docs/en/api/procesos-operativos/consult.mdx":Re,"/src/docs/en/api/procesos-operativos/errors.mdx":ze,"/src/docs/en/api/procesos-operativos/process-modification.mdx":Be,"/src/docs/en/api/procesos-operativos/split.mdx":Ve,"/src/docs/en/api/procesos-operativos.mdx":He,"/src/docs/en/api/recurrentes/cupones/create-coupon.mdx":Ue,"/src/docs/en/api/recurrentes/cupones/delete-coupon.mdx":We,"/src/docs/en/api/recurrentes/cupones/get-coupon.mdx":Ge,"/src/docs/en/api/recurrentes/cupones/get-coupons.mdx":Ke,"/src/docs/en/api/recurrentes/cupones.mdx":qe,"/src/docs/en/api/recurrentes/planes/create-plan.mdx":Je,"/src/docs/en/api/recurrentes/planes/delete-plan.mdx":Ye,"/src/docs/en/api/recurrentes/planes/edit-plan.mdx":Xe,"/src/docs/en/api/recurrentes/planes/get-plan.mdx":Ze,"/src/docs/en/api/recurrentes/planes/get-plans.mdx":Qe,"/src/docs/en/api/recurrentes/planes.mdx":$e,"/src/docs/en/api/recurrentes/suscriptores/consult-url.mdx":et,"/src/docs/en/api/recurrentes/suscriptores/delete-suscriptor-plan.mdx":tt,"/src/docs/en/api/recurrentes/suscriptores/edit-suscriptor-plan.mdx":nt,"/src/docs/en/api/recurrentes/suscriptores/get-suscriptor-plan.mdx":rt,"/src/docs/en/api/recurrentes/suscriptores/pause-suscriptor-plan.mdx":it,"/src/docs/en/api/recurrentes/suscriptores/reactive-suscriptor-plan.mdx":at,"/src/docs/en/api/recurrentes/suscriptores/suscriptor-payments.mdx":ot,"/src/docs/en/api/recurrentes/suscriptores.mdx":st,"/src/docs/en/api/recurrentes.mdx":ct,"/src/docs/en/api/webhooks.mdx":lt,"/src/docs/en/api-bancario/autenticacion.mdx":ut,"/src/docs/en/api-bancario/catalogos.mdx":dt,"/src/docs/en/api-bancario/convenciones.mdx":ft,"/src/docs/en/api-bancario/cuentas.mdx":pt,"/src/docs/en/api-bancario/errores.mdx":mt,"/src/docs/en/api-bancario/pagos.mdx":ht,"/src/docs/en/api-bancario/webhooks.mdx":gt,"/src/docs/en/api-bancario.mdx":_t,"/src/docs/en/concepts/tokenizacion.mdx":vt,"/src/docs/en/entornos.mdx":yt,"/src/docs/en/hosted-payment-page.mdx":bt,"/src/docs/en/reintentos-seguros.mdx":xt,"/src/docs/en/sdk/campos-del-formulario.mdx":St,"/src/docs/en/sdk/instalacion.mdx":Ct,"/src/docs/en/sdk/reference/get-card-type.mdx":wt,"/src/docs/en/sdk/reference/get-sinpe-movil.mdx":Tt,"/src/docs/en/sdk/reference/init.mdx":Et,"/src/docs/en/sdk/reference/startpayment.mdx":Dt,"/src/docs/en/sdk/reference/update-options.mdx":Ot,"/src/docs/en/sdk.mdx":kt,"/src/docs/en/server-to-server.mdx":At,"/src/docs/en/tarjetas-de-prueba.mdx":jt,"/src/docs/es/agentes/asistente-whatsapp.mdx":Mt,"/src/docs/es/agentes/documentacion-legible.mdx":Nt,"/src/docs/es/agentes/mcp/adquirencia.mdx":Pt,"/src/docs/es/agentes/mcp/api-bancario/analyze-payments.mdx":Ft,"/src/docs/es/agentes/mcp/api-bancario/get-payment.mdx":It,"/src/docs/es/agentes/mcp/api-bancario/get-transfer-status.mdx":Lt,"/src/docs/es/agentes/mcp/api-bancario/list-balances.mdx":Rt,"/src/docs/es/agentes/mcp/api-bancario/list-payments.mdx":zt,"/src/docs/es/agentes/mcp/api-bancario/otras-operaciones.mdx":Bt,"/src/docs/es/agentes/mcp/api-bancario/request-statement.mdx":Vt,"/src/docs/es/agentes/mcp/api-bancario/search-payment.mdx":Ht,"/src/docs/es/agentes/mcp/api-bancario/sen
18042d-transfer.mdx":Ut,"/src/docs/es/agentes/mcp/api-bancario/validate-destination.mdx":Wt,"/src/docs/es/agentes/mcp/api-bancario.mdx":Gt,"/src/docs/es/agentes/mcp/avisos.mdx":Kt,"/src/docs/es/agentes/mcp/catalogo.mdx":qt,"/src/docs/es/agentes/mcp/comprobantes.mdx":Jt,"/src/docs/es/agentes/mcp/conectar.mdx":Yt,"/src/docs/es/agentes/mcp/contactos.mdx":Xt,"/src/docs/es/agentes/mcp/enlaces-de-pago.mdx":Zt,"/src/docs/es/agentes/mcp/microtienda.mdx":Qt,"/src/docs/es/agentes/mcp/perfil.mdx":$t,"/src/docs/es/agentes/mcp/permisos.mdx":en,"/src/docs/es/agentes/mcp/recetas.mdx":tn,"/src/docs/es/agentes/mcp/recordatorios.mdx":nn,"/src/docs/es/agentes/mcp/recurrentes.mdx":rn,"/src/docs/es/agentes/mcp/soporte.mdx":an,"/src/docs/es/agentes/mcp/tarjetas-guardadas.mdx":on,"/src/docs/es/agentes/mcp/ventas.mdx":sn,"/src/docs/es/agentes/mcp.mdx":cn,"/src/docs/es/agentes.mdx":ln,"/src/docs/es/api/autenticacion/token-api.mdx":un,"/src/docs/es/api/autenticacion/token-sdk.mdx":dn,"/src/docs/es/api/autenticacion.mdx":fn,"/src/docs/es/api/cof/process-tokenize.mdx":pn,"/src/docs/es/api/cof/realizar-cobro.mdx":mn,"/src/docs/es/api/cof/remove-card.mdx":hn,"/src/docs/es/api/cof.mdx":gn,"/src/docs/es/api/convenciones.mdx":_n,"/src/docs/es/api/hosted-payment-page/process-payment.mdx":vn,"/src/docs/es/api/links-de-pago/create-link-payment.mdx":yn,"/src/docs/es/api/links-de-pago/delete-link-payment.mdx":bn,"/src/docs/es/api/links-de-pago/detail-link-payment.mdx":xn,"/src/docs/es/api/links-de-pago/payment-by-id.mdx":Sn,"/src/docs/es/api/links-de-pago/payment-item-list.mdx":Cn,"/src/docs/es/api/links-de-pago.mdx":wn,"/src/docs/es/api/procesos-operativos/consult-transactions.mdx":Tn,"/src/docs/es/api/procesos-operativos/consult.mdx":En,"/src/docs/es/api/procesos-operativos/errors.mdx":Dn,"/src/docs/es/api/procesos-operativos/process-modification.mdx":On,"/src/docs/es/api/procesos-operativos/split.mdx":kn,"/src/docs/es/api/procesos-operativos.mdx":An,"/src/docs/es/api/recurrentes/cupones/create-coupon.mdx":jn,"/src/docs/es/api/recurrentes/cupones/delete-coupon.mdx":Mn,"/src/docs/es/api/recurrentes/cupones/get-coupon.mdx":Nn,"/src/docs/es/api/recurrentes/cupones/get-coupons.mdx":Pn,"/src/docs/es/api/recurrentes/cupones.mdx":Fn,"/src/docs/es/api/recurrentes/planes/create-plan.mdx":In,"/src/docs/es/api/recurrentes/planes/delete-plan.mdx":Ln,"/src/docs/es/api/recurrentes/planes/edit-plan.mdx":Rn,"/src/docs/es/api/recurrentes/planes/get-plan.mdx":zn,"/src/docs/es/api/recurrentes/planes/get-plans.mdx":Bn,"/src/docs/es/api/recurrentes/planes.mdx":Vn,"/src/docs/es/api/recurrentes/suscriptores/consult-url.mdx":Hn,"/src/docs/es/api/recurrentes/suscriptores/delete-suscriptor-plan.mdx":Un,"/src/docs/es/api/recurrentes/suscriptores/edit-suscriptor-plan.mdx":Wn,"/src/docs/es/api/recurrentes/suscriptores/get-suscriptor-plan.mdx":Gn,"/src/docs/es/api/recurrentes/suscriptores/pause-suscriptor-plan.mdx":Kn,"/src/docs/es/api/recurrentes/suscriptores/reactive-suscriptor-plan.mdx":qn,"/src/docs/es/api/recurrentes/suscriptores/suscriptor-payments.mdx":Jn,"/src/docs/es/api/recurrentes/suscriptores.mdx":Yn,"/src/docs/es/api/recurrentes.mdx":Xn,"/src/docs/es/api/tarjetas-almacenadas.mdx":Zn,"/src/docs/es/api/webhooks.mdx":Qn,"/src/docs/es/api-bancario/autenticacion.mdx":$n,"/src/docs/es/api-bancario/catalogos.mdx":er,"/src/docs/es/api-bancario/convenciones.mdx":tr,"/src/docs/es/api-bancario/cuentas.mdx":nr,"/src/docs/es/api-bancario/errores.mdx":rr,"/src/docs/es/api-bancario/pagos.mdx":ir,"/src/docs/es/api-bancario/webhooks.mdx":ar,"/src/docs/es/api-bancario.mdx":or,"/src/docs/es/changelog.mdx":sr,"/src/docs/es/concepts/flujo-de-pago.mdx":cr,"/src/docs/es/concepts/limites-de-tasa.mdx":lr,"/src/docs/es/concepts/monedas-y-montos.mdx":ur,"/src/docs/es/concepts/tokenizacion.mdx":dr,"/src/docs/es/entornos.mdx":fr,"/src/docs/es/guides/cobro-con-tarjeta-en-el-navegador.mdx":pr,"/src/docs/es/hosted-payment-page.mdx":mr,"/src/docs/es/payment-methods/sinpe-movil.mdx":hr,"/src/docs/es/payment-methods/tarjeta.mdx":gr,"/src/docs/es/payment-methods/yappy.mdx":_r,"/src/docs/es/recurrentes/cobro-con-tarjeta-guardada.mdx":vr,"/src/docs/es/recurrentes/cobros-masivos.mdx":yr,"/src/docs/es/recurrentes/cupones.mdx":br,"/src/docs/es/recurrentes/pagos-de-suscriptor.mdx":xr,"/src/docs/es/recurrentes/planes.mdx":Sr,"/src/docs/es/recurrentes/suscriptores.mdx":Cr,"/src/docs/es/recurrentes/tokenizacion.mdx":wr,"/src/docs/es/recurrentes/webhooks-de-recurrencia.mdx":Tr,"/src/docs/es/recurrentes.mdx":Er,"/src/docs/es/reintentos-seguros.mdx":Dr,"/src/docs/es/sdk/campos-del-formulario.mdx":Or,"/src/docs/es/sdk/instalacion.mdx":kr,"/src/docs/es/sdk/migracion-v1-v2.mdx":Ar,"/src/docs/es/sdk/reference/get-card-type.mdx":jr,"/src/docs/es/sdk/reference/get-sinpe-movil.mdx":Mr,"/src/docs/es/sdk/reference/init.mdx":Nr,"/src/docs/es/sdk/reference/startpayment.mdx":Pr,"/src/docs/es/sdk/reference/update-options.mdx":Fr,"/src/docs/es/sdk.mdx":Ir,"/src/docs/es/server-to-server.mdx":Lr,"/src/docs/es/support.mdx":Rr,"/src/docs/es/tarjetas-de-prueba.mdx":zr,"/src/docs/es/testing/escenarios.mdx":Br}),cO=Object.assign({"/src/docs/en/agentes/asistente-whatsapp.mdx":Wr,"/src/docs/en/agentes/documentacion-legible.mdx":Jr,"/src/docs/en/agentes/mcp/adquirencia.mdx":Qr,"/src/docs/en/agentes/mcp/api-bancario/analyze-payments.mdx":ri,"/src/docs/en/agentes/mcp/api-bancario/get-payment.mdx":ci,"/src/docs/en/agentes/mcp/api-bancario/get-transfer-status.mdx":pi,"/src/docs/en/agentes/mcp/api-bancario/list-balances.mdx":vi,"/src/docs/en/agentes/mcp/api-bancario/list-payments.mdx":Ci,"/src/docs/en/agentes/mcp/api-bancario/otras-operaciones.mdx":Oi,"/src/docs/en/agentes/mcp/api-bancario/request-statement.mdx":Ni,"/src/docs/en/agentes/mcp/api-bancario/search-payment.mdx":Ri,"/src/docs/en/agentes/mcp/api-bancario/sen
18042d-transfer.mdx":Ui,"/src/docs/en/agentes/mcp/api-bancario/validate-destination.mdx":Ji,"/src/docs/en/agentes/mcp/api-bancario.mdx":$i,"/src/docs/en/agentes/mcp/avisos.mdx":ia,"/src/docs/en/agentes/mcp/catalogo.mdx":la,"/src/docs/en/agentes/mcp/comprobantes.mdx":ma,"/src/docs/en/agentes/mcp/conectar.mdx":ya,"/src/docs/en/agentes/mcp/contactos.mdx":wa,"/src/docs/en/agentes/mcp/enlaces-de-pago.mdx":ka,"/src/docs/en/agentes/mcp/microtienda.mdx":Pa,"/src/docs/en/agentes/mcp/perfil.mdx":za,"/src/docs/en/agentes/mcp/permisos.mdx":Wa,"/src/docs/en/agentes/mcp/recetas.mdx":Ya,"/src/docs/en/agentes/mcp/recordatorios.mdx":eo,"/src/docs/en/agentes/mcp/recurrentes.mdx":ao,"/src/docs/en/agentes/mcp/soporte.mdx":uo,"/src/docs/en/agentes/mcp/tarjetas-guardadas.mdx":go,"/src/docs/en/agentes/mcp/ventas.mdx":xo,"/src/docs/en/agentes/mcp.mdx":Eo,"/src/docs/en/agentes.mdx":jo,"/src/docs/en/api/autenticacion/token-api.mdx":Fo,"/src/docs/en/api/autenticacion/token-sdk.mdx":Bo,"/src/docs/en/api/autenticacion.mdx":Go,"/src/docs/en/api/cof/process-tokenize.mdx":Xo,"/src/docs/en/api/cof/realizar-cobro.mdx":ts,"/src/docs/en/api/cof/remove-card.mdx":os,"/src/docs/en/api/cof.mdx":ds,"/src/docs/en/api/convenciones.mdx":hs,"/src/docs/en/api/hosted-payment-page/process-payment.mdx":bs,"/src/docs/en/api/links-de-pago/create-link-payment.mdx":Ts,"/src/docs/en/api/links-de-pago/delete-link-payment.mdx":As,"/src/docs/en/api/links-de-pago/detail-link-payment.mdx":Fs,"/src/docs/en/api/links-de-pago/payment-by-id.mdx":Bs,"/src/docs/en/api/links-de-pago/payment-item-list.mdx":Gs,"/src/docs/en/api/links-de-pago.mdx":Xs,"/src/docs/en/api/procesos-operativos/consult-transactions.mdx":ec,"/src/docs/en/api/procesos-operativos/consult.mdx":ac,"/src/docs/en/api/procesos-operativos/errors.mdx":uc,"/src/docs/en/api/procesos-operativos/process-modification.mdx":hc,"/src/docs/en/api/procesos-operativos/split.mdx":bc,"/src/docs/en/api/procesos-operativos.mdx":Tc,"/src/docs/en/api/recurrentes/cupones/create-coupon.mdx":kc,"/src/docs/en/api/recurrentes/cupones/delete-coupon.mdx":Pc,"/src/docs/en/api/recurrentes/cupones/get-coupon.mdx":zc,"/src/docs/en/api/recurrentes/cupones/get-coupons.mdx":Wc,"/src/docs/en/api/recurrentes/cupones.mdx":Yc,"/src/docs/en/api/recurrentes/planes/create-plan.mdx":$c,"/src/docs/en/api/recurrentes/planes/delete-plan.mdx":il,"/src/docs/en/api/recurrentes/planes/edit-plan.mdx":ll,"/src/docs/en/api/recurrentes/planes/get-plan.mdx":ml,"/src/docs/en/api/recurrentes/planes/get-plans.mdx":yl,"/src/docs/en/api/recurrentes/planes.mdx":wl,"/src/docs/en/api/recurrentes/suscriptores/consult-url.mdx":Ol,"/src/docs/en/api/recurrentes/suscriptores/delete-suscriptor-plan.mdx":Nl,"/src/docs/en/api/recurrentes/suscriptores/edit-suscriptor-plan.mdx":Rl,"/src/docs/en/api/recurrentes/suscriptores/get-suscriptor-plan.mdx":Ul,"/src/docs/en/api/recurrentes/suscriptores/pause-suscriptor-plan.mdx":Jl,"/src/docs/en/api/recurrentes/suscriptores/reactive-suscriptor-plan.mdx":$l,"/src/docs/en/api/recurrentes/suscriptores/suscriptor-payments.mdx":iu,"/src/docs/en/api/recurrentes/suscriptores.mdx":lu,"/src/docs/en/api/recurrentes.mdx":pu,"/src/docs/en/api/webhooks.mdx":_u,"/src/docs/en/api-bancario/autenticacion.mdx":Su,"/src/docs/en/api-bancario/catalogos.mdx":Eu,"/src/docs/en/api-bancario/convenciones.mdx":ju,"/src/docs/en/api-bancario/cuentas.mdx":Fu,"/src/docs/en/api-bancario/errores.mdx":Bu,"/src/docs/en/api-bancario/pagos.mdx":Gu,"/src/docs/en/api-bancario/webhooks.mdx":Xu,"/src/docs/en/api-bancario.mdx":td,"/src/docs/en/concepts/tokenizacion.mdx":ad,"/src/docs/en/entornos.mdx":ud,"/src/docs/en/hosted-payment-page.mdx":hd,"/src/docs/en/reintentos-seguros.mdx":yd,"/src/docs/en/sdk/campos-del-formulario.mdx":wd,"/src/docs/en/sdk/instalacion.mdx":kd,"/src/docs/en/sdk/reference/get-card-type.mdx":Pd,"/src/docs/en/sdk/reference/get-sinpe-movil.mdx":zd,"/src/docs/en/sdk/reference/init.mdx":Wd,"/src/docs/en/sdk/reference/startpayment.mdx":Yd,"/src/docs/en/sdk/reference/update-options.mdx":$d,"/src/docs/en/sdk.mdx":af,"/src/docs/en/server-to-server.mdx":lf,"/src/docs/en/tarjetas-de-prueba.mdx":mf,"/src/docs/es/agentes/asistente-whatsapp.mdx":yf,"/src/docs/es/agentes/documentacion-legible.mdx":Cf,"/src/docs/es/agentes/mcp/adquirencia.mdx":Df,"/src/docs/es/agentes/mcp/api-bancario/analyze-payments.mdx":Mf,"/src/docs/es/agentes/mcp/api-bancario/get-payment.mdx":Lf,"/src/docs/es/agentes/mcp/api-bancario/get-transfer-status.mdx":Hf,"/src/docs/es/agentes/mcp/api-bancario/list-balances.mdx":qf,"/src/docs/es/agentes/mcp/api-bancario/list-payments.mdx":Qf,"/src/docs/es/agentes/mcp/api-bancario/otras-operaciones.mdx":rp,"/src/docs/es/agentes/mcp/api-bancario/request-statement.mdx":cp,"/src/docs/es/agentes/mcp/api-bancario/search-payment.mdx":pp,"/src/docs/es/agentes/mcp/api-bancario/sen
18042d-transfer.mdx":vp,"/src/docs/es/agentes/mcp/api-bancario/validate-destination.mdx":Cp,"/src/docs/es/agentes/mcp/api-bancario.mdx":Op,"/src/docs/es/agentes/mcp/avisos.mdx":Np,"/src/docs/es/agentes/mcp/catalogo.mdx":Rp,"/src/docs/es/agentes/mcp/comprobantes.mdx":Up,"/src/docs/es/agentes/mcp/conectar.mdx":Jp,"/src/docs/es/agentes/mcp/contactos.mdx":$p,"/src/docs/es/agentes/mcp/enlaces-de-pago.mdx":im,"/src/docs/es/agentes/mcp/microtienda.mdx":lm,"/src/docs/es/agentes/mcp/perfil.mdx":mm,"/src/docs/es/agentes/mcp/permisos.mdx":ym,"/src/docs/es/agentes/mcp/recetas.mdx":wm,"/src/docs/es/agentes/mcp/recordatorios.mdx":km,"/src/docs/es/agentes/mcp/recurrentes.mdx":Pm,"/src/docs/es/agentes/mcp/soporte.mdx":zm,"/src/docs/es/agentes/mcp/tarjetas-guardadas.mdx":Wm,"/src/docs/es/agentes/mcp/ventas.mdx":Ym,"/src/docs/es/agentes/mcp.mdx":eh,"/src/docs/es/agentes.mdx":ah,"/src/docs/es/api/autenticacion/token-api.mdx":lh,"/src/docs/es/api/autenticacion/token-sdk.mdx":mh,"/src/docs/es/api/autenticacion.mdx":yh,"/src/docs/es/api/cof/process-tokenize.mdx":wh,"/src/docs/es/api/cof/realizar-cobro.mdx":kh,"/src/docs/es/api/cof/remove-card.mdx":Ph,"/src/docs/es/api/cof.mdx":zh,"/src/docs/es/api/convenciones.mdx":Uh,"/src/docs/es/api/hosted-payment-page/process-payment.mdx":Jh,"/src/docs/es/api/links-de-pago/create-link-payment.mdx":$h,"/src/docs/es/api/links-de-pago/delete-link-payment.mdx":ig,"/src/docs/es/api/links-de-pago/detail-link-payment.mdx":lg,"/src/docs/es/api/links-de-pago/payment-by-id.mdx":mg,"/src/docs/es/api/links-de-pago/payment-item-list.mdx":yg,"/src/docs/es/api/links-de-pago.mdx":wg,"/src/docs/es/api/procesos-operativos/consult-transactions.mdx":Og,"/src/docs/es/api/procesos-operativos/consult.mdx":Ng,"/src/docs/es/api/procesos-operativos/errors.mdx":Rg,"/src/docs/es/api/procesos-operativos/process-modification.mdx":Ug,"/src/docs/es/api/procesos-operativos/split.mdx":Jg,"/src/docs/es/api/procesos-operativos.mdx":$g,"/src/docs/es/api/recurrentes/cupones/create-coupon.mdx":r_,"/src/docs/es/api/recurrentes/cupones/delete-coupon.mdx":c_,"/src/docs/es/api/recurrentes/cupones/get-coupon.mdx":p_,"/src/docs/es/api/recurrentes/cupones/get-coupons.mdx":v_,"/src/docs/es/api/recurrentes/cupones.mdx":C_,"/src/docs/es/api/recurrentes/planes/create-plan.mdx":D_,"/src/docs/es/api/recurrentes/planes/delete-plan.mdx":M_,"/src/docs/es/api/recurrentes/planes/edit-plan.mdx":L_,"/src/docs/es/api/recurrentes/planes/get-plan.mdx":H_,"/src/docs/es/api/recurrentes/planes/get-plans.mdx":q_,"/src/docs/es/api/recurrentes/planes.mdx":Q_,"/src/docs/es/api/recurrentes/suscriptores/consult-url.mdx":nv,"/src/docs/es/api/recurrentes/suscriptores/delete-suscriptor-plan.mdx":sv,"/src/docs/es/api/recurrentes/suscriptores/edit-suscriptor-plan.mdx":fv,"/src/docs/es/api/recurrentes/suscriptores/get-suscriptor-plan.mdx":_v,"/src/docs/es/api/recurrentes/suscriptores/pause-suscriptor-plan.mdx":Sv,"/src/docs/es/api/recurrentes/suscriptores/reactive-suscriptor-plan.mdx":Dv,"/src/docs/es/api/recurrentes/suscriptores/suscriptor-payments.mdx":Mv,"/src/docs/es/api/recurrentes/suscriptores.mdx":Lv,"/src/docs/es/api/recurrentes.mdx":Vv,"/src/docs/es/api/tarjetas-almacenadas.mdx":Gv,"/src/docs/es/api/webhooks.mdx":Xv,"/src/docs/es/api-bancario/autenticacion.mdx":ty,"/src/docs/es/api-bancario/catalogos.mdx":ay,"/src/docs/es/api-bancario/convenciones.mdx":uy,"/src/docs/es/api-bancario/cuentas.mdx":my,"/src/docs/es/api-bancario/errores.mdx":yy,"/src/docs/es/api-bancario/pagos.mdx":wy,"/src/docs/es/api-bancario/webhooks.mdx":ky,"/src/docs/es/api-bancario.mdx":Py,"/src/docs/es/changelog.mdx":Ry,"/src/docs/es/concepts/flujo-de-pago.mdx":Hy,"/src/docs/es/concepts/limites-de-tasa.mdx":Ky,"/src/docs/es/concepts/monedas-y-montos.mdx":Xy,"/src/docs/es/concepts/tokenizacion.mdx":eb,"/src/docs/es/entornos.mdx":ab,"/src/docs/es/guides/cobro-con-tarjeta-en-el-navegador.mdx":ub,"/src/docs/es/hosted-payment-page.mdx":mb,"/src/docs/es/payment-methods/sinpe-movil.mdx":vb,"/src/docs/es/payment-methods/tarjeta.mdx":Sb,"/src/docs/es/payment-methods/yappy.mdx":Eb,"/src/docs/es/recurrentes/cobro-con-tarjeta-guardada.mdx":Ab,"/src/docs/es/recurrentes/cobros-masivos.mdx":Fb,"/src/docs/es/recurrentes/cupones.mdx":Bb,"/src/docs/es/recurrentes/pagos-de-suscriptor.mdx":Gb,"/src/docs/es/recurrentes/planes.mdx":Xb,"/src/docs/es/recurrentes/suscriptores.mdx":tx,"/src/docs/es/recurrentes/tokenizacion.mdx":ox,"/src/docs/es/recurrentes/webhooks-de-recurrencia.mdx":dx,"/src/docs/es/recurrentes.mdx":gx,"/src/docs/es/reintentos-seguros.mdx":xx,"/src/docs/es/sdk/campos-del-formulario.mdx":Ex,"/src/docs/es/sdk/instalacion.mdx":jx,"/src/docs/es/sdk/migracion-v1-v2.mdx":Ix,"/src/docs/es/sdk/reference/get-card-type.mdx":Bx,"/src/docs/es/sdk/reference/get-sinpe-movil.mdx":Gx,"/src/docs/es/sdk/reference/init.mdx":Xx,"/src/docs/es/sdk/reference/startpayment.mdx":tS,"/src/docs/es/sdk/reference/update-options.mdx":aS,"/src/docs/es/sdk.mdx":uS,"/src/docs/es/server-to-server.mdx":mS,"/src/docs/es/support.mdx":yS,"/src/docs/es/tarjetas-de-prueba.mdx":CS,"/src/docs/es/testing/escenarios.mdx":OS});function lO(e){let[t,...n]=e.replace(`/src/docs/`,``).replace(/\.mdx$/,``).split(`/`),r=n.join(`/`);return r.endsWith(`/index`)&&(r=r.slice(0,-6)),r===`index`&&(r=``),{locale:t===`en`?`en`:`es`,slug:r}}function uO(e){let t=[],n=e.split(/\r?\n/),r=!1;for(let e of n){if(/^\s*```/.test(e)&&(r=!r),r)continue;let n=/^(#{2,3})\s+(.+?)\s*\[#([a-z0-9-]+)\]\s*$/.exec(e);
18042n&&t.push({depth:(n[1]??``).length===2?2:3,text:(n[2]??``).trim(),id:n[3]??``})}return t}function dO(e){return[...e.matchAll(/<Param[^>]*\sid="([a-z0-9-]+)"/g)].map(e=>e[1]??``)}function fO(){let e=[];for(let[t,n]of Object.entries(sO)){let{locale:r,slug:i}=lO(t),{data:a,body:o}=iO(n),s=rO.safeParse(a);if(!s.success)continue;let c=uO(o);e.push({slug:i,locale:r,frontmatter:s.data,body:o,headings:c,anchors:[...c.map(e=>e.id),...dO(o)]})}return e}var Z=fO();function pO(e){return e.slug===`sdk`||e.slug.startsWith(`sdk/`)?{...e.frontmatter,sdk_version:oO}:e.slug===`server-to-server`?{...e.frontmatter,api_version:e.frontmatter.api_version??`v1`}:e.frontmatter}function mO(e,t){return Z.find(n=>n.slug===e&&n.locale===t)??Z.find(t=>t.slug===e&&t.locale===`es`)}function hO(e,t){return Z.some(n=>n.slug===e&&n.locale===t)}function gO(e,t){let n=[`/src/docs/${t}/${e}.mdx`,`/src/docs/${t}/${e}/index.mdx`,`/src/docs/es/${e}.mdx`,`/src/docs/es/${e}/index.mdx`];for(let e of n){let t=cO[e];if(t)return t.default}}function _O(e){return!e.frontmatter.draft&&e.frontmatter.status===`stable`}function vO(e){return Z.filter(t=>t.locale===e&&_O(t))}var Q={source:`Lovable project 'Tilopay Insight Engine' (tilopay-insights-buddy), .lovable/mcp/manifest.json + implementación en src/lib/mcp/tools/**`,extracted_at:`2026-09-14`,server:{name:`tilopay-insight-engine`,title:`Tilopay Insight Engine`,version:`0.3.0`,mcp_path:`/mcp`,public_host:`mcp.tilopay.com`,auth:{type:`oauth`,note:`El manifiesto declara autenticación OAuth. El usuario dedicado del comercio se autentica por ese flujo; no son credenciales de API pegadas en el cliente.`}},access_legend:{read:`Solo lee. No modifica nada en la cuenta del comercio.`,write:`Modifica estado en la cuenta del comercio.`,destructive:`Modifica estado de forma sensible: mueve dinero o borra objetos. Exigir confirmación humana.`},counts:{total:86,read:47,write:23,destructive:16},groups:[{slug:`ventas`,title:`Ventas y transacciones`,tools:[{name:`tilopay_sales_summary`,title:`Resumen y tendencias de ventas`,description:`Calcula métricas de ventas a partir de las transacciones de Tilopay: totales por moneda, ticket promedio, tasa de aprobación, ventas por dÃa, dÃa de la semana y hora, mejores clientes, motivos de rechazo y tendencia.`,access:`read`,params:[{name:`startDate`,type:`string`,required:!0,description:`Fecha inicial "YYYY-MM-DD HH:mm:ss"`},{name:`endDate`,type:`string`,required:!0,description:`Fecha final "YYYY-MM-DD HH:mm:ss"`},{name:`includeDeclined`,type:`boolean`,required:!1,description:`Incluir transacciones rechazadas para medir tasa de aprobación (por defecto true)`},{name:`environment`,type:`string`,required:!1,enum:[`production`,`test`]},{name:`currency`,type:`array<string>`,required:!1}],output:{structuredContent:`{ summary, trends, environmentNote }`,description:`summary trae range, timezoneNote, totalRows, payments {total, approved, declined, approvalRate}, refunds {total, approved, failed, successRate}, byCurrency por moneda con pagos, costos desglosados (commission, iva_commission, cost, cost_iva, retention_iva, retention_rent, totalDeducted, taxWithholdings, pspCost), netToLiquidate, reconciles y reconciliationDelta; reembolsos; y netForPeriod. Además daily, sample, byWeekday, byHour, topCustomers, declineReasons, refundFailureReasons y transactionTypes. byWeekday, byHour y topCustomers vienen en null si la muestra es insuficiente (menos de 30 filas o menos de 5 dÃas distintos). trends viene en null en ese mismo caso. Las horas y dÃas están en UTC.`},api_endpoint:`POST /api/v1/consultTransactions (y cálculo local)`},{name:`tilopay_analyze_sales`,title:`Agente analista de ventas`,description:`Agente que analiza las transacciones de Tilopay en un rango de fechas y devuelve un informe en lenguaje natural: desempeño, tendencias, estacionalidad, calidad de aprobación, riesgos y recomendaciones accionables.`,access:`read`,params:[{name:`startDate`,type:`string`,required:!0,description:`Fecha inicial "YYYY-MM-DD HH:mm:ss"`},{name:`endDate`,type:`string`,required:!0,description:`Fecha final "YYYY-MM-DD HH:mm:ss"`},{name:`question`,type:`string`,required:!1,description:`Pregunta o enfoque especÃfico para el análisis (opcional)`},{name:`environment`,type:`string`,required:!1,enum:[`production`,`test`]},{name:`currency`,type:`array<string>`,required:!1}],output:{structuredContent:`{ report, summary, trends, environmentNote }`,description:`report es el informe en lenguaje natural; summary y trends son los mismos de tilopay_sales_summary. Si no hay transacciones en el rango, devuelve solo un texto avisándolo, sin structuredContent.`},api_endpoint:`POST /api/v1/consultTransactions (y análisis con modelo)`},{name:`tilopay_list_transactions`,title:`Listar transacciones de Tilopay`,description:`Lista transacciones de Tilopay en un rango de fechas. Usa status para aprobadas/rechazadas y sort=newest para 'los últimos N' o 'la última'. Una sola llamada basta: no acortes el rango para buscar filas.`,access:`read`,params:[{name:`startDate`,type:`string`,required:!0,description:`Fecha inicial, ej. "2026-08-01 00:00:00"`},{name:`endDate`,type:`string`,required:!0,description:`Fecha final, ej. "2026-08-31 23:59:59"`},{name:`status`,type:`string`,required:!1,enum:[`approved`,`declined`,`all`],description:`approved = solo aprobadas, declined = solo re
18042chazadas, all = todas`},{name:`sort`,type:`string`,required:!1,enum:[`newest`,`oldest`],description:`newest = más recientes primero`},{name:`onlyAproved`,type:`boolean`,required:!1,description:`Compatibilidad: false equivale a status: "all"`},{name:`environment`,type:`string`,required:!1,enum:[`production`,`test`],description:`Ambiente, por defecto production`},{name:`currency`,type:`array<string>`,required:!1,description:`Monedas, ej. ["USD","CRC"]`},{name:`orderNumber`,type:`string`,required:!1,description:`Filtrar por número de orden`},{name:`email`,type:`string`,required:!1,description:`Filtrar por correo del cliente`},{name:`limit`,type:`integer`,required:!1,description:`Máximo de filas a devolver`}],output:{structuredContent:`{ total, transactions[], environmentNote }`,description:`total = filas encontradas antes de aplicar limit; transactions = las filas devueltas; environmentNote avisa si el ambiente consultado no trajo filas.`},api_endpoint:`POST /api/v1/consultTransactions`},{name:`tilopay_get_transaction`,title:`Consultar una transacción`,description:`Obtiene el detalle de una transacción especÃfica de Tilopay a partir de su número de orden.`,access:`read`,params:[{name:`orderNumber`,type:`string`,required:!0,description:`Número de orden de la transacción`},{name:`merchantId`,type:`string`,required:!1,description:`ID de comercio (opcional)`}],output:{structuredContent:`{ result }`,description:"Respuesta cruda del API de Tilopay bajo la llave `result`."},api_endpoint:`POST /api/v1/consult`},{name:`tilopay_modify_transaction`,title:`Capturar, reembolsar o reversar`,description:"Modifica una transacción de Tilopay: captura (capture), reembolso (refund) o reversión (reversal) por el monto indicado. Operación sensible: afecta dinero real y requiere segundo factor. Llámela primero sin `confirmation_code`: se envÃa un código de 6 dÃgitos al correo del comercio y la respuesta trae `requires_confirmation`. Repita la misma llamada, con los mismos parámetros, agregando `confirmation_code`.",access:`destructive`,params:[{name:`orderNumber`,type:`string`,required:!0,description:`Número de orden de la transacción`},{name:`action`,type:`string`,required:!0,enum:[`capture`,`refund`,`reversal`],description:`Tipo de modificación`},{name:`amount`,type:`number`,required:!0,description:`Monto a modificar`},{name:`confirmation_code`,type:`string`,required:!1,description:`Código de 6 dÃgitos recibido por correo para autorizar la operación`}],output:{structuredContent:`{ result }`,description:"Respuesta cruda del API de Tilopay bajo la llave `result`."},api_endpoint:`POST /api/v1/processModification`}]},{slug:`enlaces-de-pago`,title:`Enlaces de pago`,tools:[{name:`tilopay_create_payment_link`,title:`Crear enlace de pago`,description:`Crea un enlace de pago (payment link) en Tilopay para cobrar un monto especÃfico.`,access:`write`,params:[{name:`amount`,type:`number`,required:!0,description:`Monto a cobrar`},{name:`currency`,type:`string`,required:!1,description:`Moneda, ej. USD o CRC. Si se omite se usa la del paÃs del comercio.`},{name:`reference`,type:`string`,required:!0,description:`Referencia interna del cobro`},{name:`description`,type:`string`,required:!0,description:`Descripción del cobro`},{name:`client`,type:`string`,required:!1,description:`Nombre del cliente`},{name:`client_email`,type:`string`,required:!1,description:`Correo del cliente`},{name:`client_phone`,type:`string`,required:!1,description:`Teléfono del cliente`},{name:`type`,type:`integer`,required:!1,description:`Tipo de enlace (0 por defecto)`},{name:`callback_url`,type:`string`,required:!1,description:`URL de retorno tras el pago`},{name:`webhook_url`,type:`string`,required:!1,description:`URL de webhook de notificación`}],output:{structuredContent:`{ result, linkId, url }`,description:`result es la respuesta cruda; linkId y url son el id y la URL del enlace ya extraÃdos. Si no se envÃa webhook_url, el servidor pone uno propio para poder avisar cuando se pague.`},api_endpoint:`POST /api/v1/createLinkPayment`},{name:`tilopay_get_payment_link`,title:`Detalle de un enlace de pago`,description:`Obtiene el detalle de un enlace de pago de Tilopay por su ID.`,access:`read`,params:[{name:`linkPaymentId`,type:`string`,required:!0,description:`ID del enlace de pago`}],output:{structuredContent:`{ result }`,description:"Respuesta cruda del API de Tilopay bajo la llave `result`."},api_endpoint:`GET /api/v1/getDetailLinkPayment/{link_payment_id}/{api_key}`},{name:`tilopay_delete_payment_link`,title:`Eliminar enlace de pago`,description:"Elimina un enlace de pago de Tilopay por su ID. Operación sensible: requiere segundo factor. Llámela primero sin `confirmation_code`: se envÃa un código de 6 dÃgitos al correo del comercio y la respuesta trae `requires_confirmation`. Repita la misma llamada agregando `confirmation_code`.",access:`destructive`,params:[{name:`id`,type:`string`,required:!0,description:`ID del enlace de pago a eliminar`},{name:`confirmation_code`,type:`string`,required:!1,description:`Código de 6 dÃgitos recibido por correo para autorizar la operación`}],output:{structuredContent:`{ result }`,description:"Respuesta cruda del API de Tilopay bajo la llave `result`."},api_endpoint:`POST /api/v1/deleteLinkPayment`},{name:`tilopay_send_payment_link_whatsapp`,title:`Enviar enlace de pago por WhatsApp`,description:`Prepara el envÃo del enlace de pago por WhatsApp a un contacto: devuelve un enlace wa.me con el mensaje listo. Acepta el nombre de un contacto guardado o un teléfono.`,access:`write`,params:[{name:`link_url`,type:`string`,required:!0,description:`URL del enlace de pago`},{name:`contact_name`,type:`string`,required:!1,description:`Nombre del c
18042ontacto guardado o del cliente`},{name:`phone`,type:`string`,required:!1,description:`Teléfono de WhatsApp, ej. +50688887777`},{name:`amount`,type:`number`,required:!1},{name:`currency`,type:`string`,required:!1},{name:`description`,type:`string`,required:!1},{name:`message`,type:`string`,required:!1,description:`Texto propio del mensaje`},{name:`save_contact`,type:`boolean`,required:!1,description:`Guardar el contacto en la agenda`},{name:`send_now`,type:`boolean`,required:!1,description:`Obsoleto: se ignora. Siempre se devuelve el enlace wa.me para enviar con un toque.`}],output:{structuredContent:`{ to, message, whatsapp_url }`,description:`No envÃa el mensaje: devuelve el teléfono resuelto, el texto ya redactado y un enlace wa.me para enviarlo con un toque. Si no hay teléfono ni contacto guardado con ese nombre, devuelve error pidiéndolo. Guarda el contacto salvo que save_contact sea false.`}},{name:`tilopay_send_payment_link_email`,title:`Enviar enlace de pago por correo`,description:`EnvÃa el enlace de pago por correo electrónico al cliente. Acepta el nombre de un contacto guardado o un correo.`,access:`write`,params:[{name:`link_url`,type:`string`,required:!0,description:`URL del enlace de pago`},{name:`email`,type:`string`,required:!1,description:`Correo del destinatario`},{name:`contact_name`,type:`string`,required:!1,description:`Nombre del contacto guardado o del cliente`},{name:`amount`,type:`number`,required:!1},{name:`currency`,type:`string`,required:!1},{name:`description`,type:`string`,required:!1},{name:`message`,type:`string`,required:!1,description:`Nota adicional para el cliente`},{name:`save_contact`,type:`boolean`,required:!1,description:`Guardar el contacto en la agenda`}],output:{structuredContent:`{ sent, to }`,description:`sent es true y to el correo al que se envió. Si no hay correo ni contacto guardado con ese nombre, devuelve error pidiéndolo.`}}]},{slug:`catalogo`,title:`Catálogo de productos`,tools:[{name:`tilopay_catalog_list_items`,title:`Listar catálogo de productos o servicios`,description:`Lista los productos o servicios del catálogo de enlaces de pago de Tilopay.`,access:`read`,params:[{name:`limit`,type:`integer`,required:!1,description:`Máximo de Ãtems (por defecto 50)`}],output:{structuredContent:`{ result }`,description:"Respuesta cruda del API de Tilopay bajo la llave `result`."},api_endpoint:`GET /api/v1/getLinkPaymentList/{api_key}/{limit}`},{name:`tilopay_catalog_get_item`,title:`Detalle de un Ãtem del catálogo`,description:`Obtiene el detalle de un producto o servicio del catálogo de Tilopay por su ID.`,access:`read`,params:[{name:`itemId`,type:`string`,required:!0,description:`ID del Ãtem del catálogo`}],output:{structuredContent:`{ result }`,description:"Respuesta cruda del API de Tilopay bajo la llave `result`."},api_endpoint:`GET /api/v1/getLinkPaymentById/{link_payment_id}/{api_key}`},{name:`tilopay_catalog_create_item`,title:`Crear un producto o servicio del catálogo`,description:`Crea un producto o servicio en el catálogo de Tilopay (queda como un enlace de pago reutilizable con su precio y descripción).`,access:`write`,params:[{name:`name`,type:`string`,required:!0,description:`Nombre del producto o servicio`},{name:`amount`,type:`number`,required:!0,description:`Precio`},{name:`currency`,type:`string`,required:!1,description:`Moneda, ej. CRC o USD. Si se omite se usa la del paÃs del comercio.`},{name:`description`,type:`string`,required:!0,description:`Descripción del producto o servicio`}],output:{structuredContent:`{ result, linkId, url }`,description:`result = respuesta del API tal cual; linkId = id del enlace de pago que representa el producto; url = enlace de cobro del producto.`},api_endpoint:`POST /api/v1/createLinkPayment`},{name:`tilopay_catalog_update_item`,title:`Cambiar un producto del catálogo`,description:`Cambia el nombre, el precio, la moneda o la descripción de un producto del catálogo. El API de Tilopay no permite editar en sitio: se crea el producto con los datos nuevos y se elimina el anterior, asà que el enlace del producto viejo deja de funcionar. Confirme con el comercio antes de usarla.`,access:`destructive`,params:[{name:`item_id`,type:`string`,required:!0,description:`ID del producto a cambiar`},{name:`name`,type:`string`,required:!0,description:`Nombre nuevo (o el mismo)`},{name:`amount`,type:`number`,required:!0,description:`Precio nuevo (o el mismo)`},{name:`currency`,type:`string`,required:!1,description:`Moneda; si se omite, la del paÃs del comercio`},{name:`description`,type:`string`,required:!0,description:`Descripción nueva (o la misma)`}],output:{structuredContent:`{ result, linkId, url, replaced }`,description:`El API no permite editar un enlace: la herramienta crea el producto nuevo y borra el anterior. replaced = id del producto que se reemplazó; linkId y url = los del producto nuevo.`},api_endpoint:`POST /api/v1/createLinkPayment`},{name:`tilopay_catalog_delete_item`,title:`Eliminar un producto del catálogo`,description:`Elimina un producto o servicio del catálogo de Tilopay por su ID. Su enlace deja de funcionar. Confirme con el comercio antes de usarla.`,access:`destructive`,params:[{name:`item_id`,type:`string`,required:!0,description:`ID del producto a eliminar`}],output:{structuredContent:`{ result }`,description:`result = respuesta del API al borrar el enlace de pago que representa el producto.`},api_endpoint:`POST /api/v1/deleteLinkPayment`}]},{slug:`contactos`,title:`Contactos`,tools:[{name:`tilopay_save_contact`,title:`Guardar contacto`,description:`Guarda o actualiza un contacto del comercio (nombre, teléfono de WhatsApp y correo) para reutilizarlo en envÃos.`,access:`write`,params:[{name:`name`,type:`string`,required:!0,description:`Nombre del c
18042ontacto`},{name:`phone`,type:`string`,required:!1,description:`Teléfono de WhatsApp, ej. +50688887777`},{name:`email`,type:`string`,required:!1},{name:`note`,type:`string`,required:!1}],output:{structuredContent:`{ contact }`,description:`El contacto guardado o actualizado.`}},{name:`tilopay_list_contacts`,title:`Ver contactos`,description:`Lista los contactos guardados del comercio; opcionalmente filtra por nombre.`,access:`read`,params:[{name:`search`,type:`string`,required:!1,description:`Texto a buscar en el nombre`}],output:{structuredContent:`{ contacts }`,description:`Lista de contactos guardados del comercio.`}},{name:`tilopay_delete_contact`,title:`Eliminar contacto`,description:`Elimina un contacto guardado del comercio por su nombre.`,access:`destructive`,params:[{name:`name`,type:`string`,required:!0,description:`Nombre del contacto`}],output:{structuredContent:`{ removed }`,description:`removed es true. Si no existe un contacto con ese nombre, devuelve error.`}}]},{slug:`perfil`,title:`Perfil del negocio y recetas`,tools:[{name:`tilopay_get_business_profile`,title:`Ver perfil del negocio`,description:`Devuelve el perfil del negocio del comercio (tipo de negocio, productos, canales, patrón de cobros y meta) y la siguiente pregunta pendiente del onboarding (máximo 4).`,access:`read`,params:[],output:{structuredContent:`{ profile, next_question, total_questions, is_complete }`,description:`profile = el perfil guardado del negocio (o null si no hay); next_question = la siguiente pregunta pendiente del onboarding; total_questions = cuántas preguntas tiene el cuestionario; is_complete = si el perfil ya está completo.`}},{name:`tilopay_save_business_profile`,title:`Guardar perfil del negocio`,description:`Guarda o completa el perfil del negocio con lo que el comercio respondió. Puede guardar un campo a la vez; los campos que no se envÃan se conservan.`,access:`write`,params:[{name:`business_type`,type:`string`,required:!1,description:`A qué se dedica el negocio`},{name:`main_products`,type:`string`,required:!1,description:`Productos o servicios principales`},{name:`sales_channels`,type:`string`,required:!1,description:`Canales de venta: local, en lÃnea, redes, WhatsApp`},{name:`ticket_pattern`,type:`string`,required:!1,description:`Cómo son los cobros: montos, frecuencia, moneda`},{name:`goals`,type:`string`,required:!1,description:`Qué quiere mejorar el comercio`},{name:`notes`,type:`string`,required:!1,description:`Detalles adicionales útiles`}],output:{structuredContent:`{ profile, next_question, is_complete }`,description:`profile = el perfil ya actualizado (los campos que no se envÃan se conservan); next_question = la siguiente pregunta pendiente; is_complete = si con este guardado el perfil quedó completo.`}},{name:`tilopay_recommend_automations`,title:`Recetas y automatizaciones`,description:`Devuelve recetas y automatizaciones sugeridas para el comercio según su perfil de negocio y los módulos del MCP que tiene activos.`,access:`read`,params:[{name:`limit`,type:`integer`,required:!1,description:`Cuántas recetas devolver (por defecto 5)`}],output:{structuredContent:`{ profile_complete, next_question, recipes }`,description:`recipes = recetas y automatizaciones sugeridas según el perfil del negocio y los módulos activos (incluye las bancarias sólo si el usuario tiene BaaS habilitado); profile_complete y next_question indican si falta completar el perfil.`}}]},{slug:`microtienda`,title:`Microtienda y pedidos`,tools:[{name:`tilopay_store_create`,title:`Crear una microtienda con carrito`,description:`Crea un enlace de microtienda para compartir con un cliente: muestra los productos del catálogo, el cliente arma un carrito y al finalizar paga desde la misma página con un enlace que incluye el detalle del carrito. Por defecto incluye todo el catálogo; se puede limitar a ciertos IDs de productos.`,access:`write`,params:[{name:`title`,type:`string`,required:!1,description:`TÃtulo visible de la tienda`},{name:`item_ids`,type:`array<string>`,required:!1,description:`IDs de productos del catálogo a mostrar; si se omite, se muestra todo el catálogo`}],output:{structuredContent:`{ slug, url, items }`,description:`slug = identificador de la microtienda; url = enlace público de la tienda con carrito; items = cuántos productos del catálogo quedaron incluidos.`}},{name:`tilopay_store_list`,title:`Listar microtiendas activas`,description:`Lista las microtiendas activas del comercio con su enlace para compartir.`,access:`read`,params:[],output:{structuredContent:`{ stores[] }`,description:`stores = microtiendas activas con slug, tÃtulo, enlace público y los ids de productos que incluye cada una.`}},{name:`tilopay_store_delete`,title:`Desactivar una microtienda`,description:`Desactiva una microtienda por su slug: el enlace deja de abrir. C
18042onfirme con el comercio antes de usarla.`,access:`destructive`,params:[{name:`slug`,type:`string`,required:!0,description:`Slug de la tienda (el final de su enlace)`}],output:{structuredContent:`{ slug, active }`,description:`Desactiva la microtienda: el enlace deja de mostrar productos. active queda en false; los productos del catálogo no se borran.`}},{name:`tilopay_orders_setup`,title:`Activar o configurar la gestión de pedidos`,description:`Activa el control de pedidos de la microtienda y guarda el nombre de la tienda, el logo y la hora del recordatorio diario de pedidos pagados sin entregar. Sirve también para cambiar cualquiera de esos datos después. El logo puede venir como enlace https de una imagen o como la imagen que el comercio acaba de enviar por WhatsApp (pase la referencia que aparece en el mensaje).`,access:`write`,params:[{name:`store_name`,type:`string`,required:!1,description:`Nombre visible de la tienda`},{name:`logo`,type:`string`,required:!1,description:`Enlace https de la imagen del logo, o la referencia de la imagen enviada por WhatsApp`},{name:`reminder_time`,type:`string`,required:!1,description:`Hora local del recordatorio diario en formato HH:mm (ej. "18:00"); vacÃo lo desactiva`}],output:{structuredContent:`{ orders_enabled, store_name, has_logo, reminder_time }`,description:`Deja la gestión de pedidos activa y devuelve la configuración resultante: nombre de la tienda que ven los clientes, si hay logo cargado y la hora del recordatorio diario de pedidos pendientes.`}},{name:`tilopay_orders_settings`,title:`Ver la configuración de la tienda y los pedidos`,description:`Muestra si la gestión de pedidos está activa, el nombre de la tienda, si hay logo y la hora del recordatorio diario.`,access:`read`,params:[],output:{structuredContent:`{ orders_enabled, store_name, has_logo, reminder_time }`,description:`Configuración actual de la tienda y de los pedidos, sin cambiar nada.`}},{name:`tilopay_orders_status`,title:`Resumen de pedidos`,description:`Resumen de los pedidos de las microtiendas: cuántos están pendientes de pago, cuántos pagados sin entregar (con su monto) y cuántos se entregaron hoy.`,access:`read`,params:[],output:{structuredContent:`{ pending, paid, delivered, ... }`,description:`Resumen de pedidos: cuántos están pendientes de pago, pagados sin entregar y entregados, con los montos del perÃodo.`}},{name:`tilopay_orders_list`,title:`Listar pedidos`,description:`Lista los pedidos de las microtiendas con su código, cliente, total y detalle. Se puede filtrar por estado (pending = pendiente de pago, paid = pagado sin entregar, delivered = entregado) y por los últimos dÃas.`,access:`read`,params:[{name:`status`,type:`string`,required:!1,enum:[`pending`,`paid`,`delivered`,`all`],description:`Estado del pedido; por defecto todos`},{name:`days`,type:`integer`,required:!1,description:`Solo pedidos de los últimos N dÃas`},{name:`limit`,type:`integer`,required:!1}],output:{structuredContent:`{ orders[] }`,description:`orders = pedidos con código, cliente, total, moneda, estado y fecha. Se puede filtrar por estado (pending, paid, delivered, all) y por los últimos dÃas.`}},{name:`tilopay_orders_pending`,title:`Pedidos pagados sin entregar`,description:`Lista los pedidos ya pagados que aún no se han entregado. Es la herramienta que usa el recordatorio diario.`,access:`read`,params:[],output:{structuredContent:`{ pending, orders[] }`,description:`pending = cuántos pedidos están pagados y sin entregar; orders = esos pedidos con código, cliente, total y moneda.`}},{name:`tilopay_order_mark_delivered`,title:`Marcar un pedido como entregado`,description:`Marca uno o varios pedidos como entregados. Acepta el código del pedido (ej. "#A3F2", incluso varios en el mismo mensaje) o el nombre del cliente.`,access:`write`,params:[{name:`code`,type:`string`,required:!1,description:`Código del pedido, ej. "#A3F2"; pueden venir varios`},{name:`client`,type:`string`,required:!1,description:`Nombre del cliente del pedido`}],output:{structuredContent:`{ delivered, missing }`,description:`delivered = cuántos pedidos quedaron marcados como entregados; missing = los códigos que no se encontraron.`}},{name:`tilopay_orders_disable`,title:`Apagar la gestión de pedidos`,description:`Apaga el control de pedidos y cancela el recordatorio diario. Los pedidos ya registrados se conservan. Pida un sà explÃcito antes de usarla.`,access:`destructive`,params:[],output:{structuredContent:`{ orders_enabled: false }`,description:`Apaga la gestión de pedidos. Los pedidos ya registrados se conservan.`}}]},{slug:`avisos`,title:`Avisos y notificaciones`,tools:[{name:`tilopay_get_notification_settings`,title:`Ver la configuración de avisos`,description:`Muestra cómo están configurados los avisos del comercio: si los pagos recibidos se avisan por WhatsApp y/o por correo, a qué correo, desde qué monto y si hay horario de silencio.`,access:`read`,params:[],output:{structuredContent:`{ settings }`,description:`settings = configuración de avisos del comercio: qué avisos por WhatsApp están encendidos (cobros aprobados, cobros fallidos, resumen diario, pedidos) y a qué hora se envÃa el resumen.`}},{name:`tilopay_set_notification_settings`,title:`Configurar los avisos del comercio`,description:`Cambia la configuración de avisos del comercio: activar o desactivar el aviso de pago recibido por WhatsApp y por correo, el correo de destino, el monto mÃnimo para avisar y el horario de silencio (en la hora local del comercio). Solo envÃe los campos que el usuario pidió cambiar.`,access:`write`,params:[{name:`payment_whatsapp`,type:`boolean`,required:!1,description:`Avisar por WhatsApp cuando se recibe un pago`},{name:`payment_email`,type:`boolean`,required:!1,description:`Avisar por correo cuando se recibe un pago`},{name:`notify_email`,type:`string`,required:!1,description:`Correo que recibe los avisos (si se omite, el de la cuenta)`},{name:`min_amount`,type:`number`,required:!1,description:`Monto mÃnimo para avisar (0 = avisar por cualquier monto)`},{name:`quiet_from`,type:`string`,required:!1,description:`Hora local en que empieza el silencio (null para quitarlo)`},{name:`quiet_to`,type:`string`,required:!1,description:`Hora local en que termina el silencio (null para quitarlo)`}],output:{structuredContent:`{ settings }`,description:`settings = la configuración de avisos ya actualizada. Los campos que no se envÃan se
18042conservan.`}}]},{slug:`comprobantes`,title:`Comprobantes de cobro`,tools:[{name:`tilopay_list_receipts`,title:`Listar comprobantes de cobro`,description:`Lista los últimos comprobantes de cobro del comercio (monto, cliente, orden y código). Cada uno tiene una imagen lista para reenviar al cliente. No cobra nada.`,access:`read`,params:[{name:`limit`,type:`integer`,required:!1,description:`Cuántos comprobantes listar (5 por defecto)`}],output:{structuredContent:`{ receipts[] }`,description:`receipts = comprobantes de cobro con código, monto, moneda, cliente, número de orden, fecha de pago, enlace de la página del comprobante y enlace de la imagen.`}},{name:`tilopay_send_receipt`,title:`Reenviar el comprobante de un cobro al cliente`,description:`Prepara el reenvÃo del comprobante de un cobro por WhatsApp: devuelve un enlace wa.me con el mensaje y la imagen del comprobante ya listos. Si no se indica el código, usa el comprobante más reciente. Use send_now solo si el usuario pide que se envÃe directamente.`,access:`write`,params:[{name:`code`,type:`string`,required:!1,description:`Código del comprobante (8 caracteres)`},{name:`contact_name`,type:`string`,required:!1,description:`Nombre del contacto guardado o del cliente`},{name:`phone`,type:`string`,required:!1,description:`Teléfono de WhatsApp, ej. +50688887777`},{name:`message`,type:`string`,required:!1,description:`Texto propio para acompañar el comprobante`},{name:`save_contact`,type:`boolean`,required:!1,description:`Guardar el contacto en la agenda`},{name:`send_now`,type:`boolean`,required:!1,description:`true envÃa el comprobante directamente al cliente; por defecto se entrega el enlace wa.me`}],output:{structuredContent:`{ sent | code, page_url, image_url, whatsapp_url }`,description:`ReenvÃa el comprobante al cliente por WhatsApp: devuelve el código del comprobante, el enlace de su página, el de la imagen y, cuando no se envÃa directo, el enlace de WhatsApp listo para abrir.`}}]},{slug:`recordatorios`,title:`Recordatorios`,tools:[{name:`tilopay_create_reminder`,title:`Crear recordatorio`,description:"Crea un recordatorio por WhatsApp, de una sola vez o recurrente (diario, semanal o mensual). Puede ser solo texto o ejecutar una acción del agente al enviarse (con `action`): resumen de ventas, transacciones del dÃa, enlaces pendientes, saldos BaaS, etc. Si el recordatorio es para enviar un enlace de pago o cobro, SIEMPRE llega al WhatsApp del comercio que lo pidió, nunca al cliente. En los demás casos se envÃa al WhatsApp del comercio o a un contacto ya guardado (contact_name); si el usuario da un teléfono nuevo, hay que guardarlo primero con tilopay_save_contact. Máximo 20 recordatorios activos. El mensaje sale con un prefijo fijo que identifica al comercio. Horas en la hora local del comercio (según el paÃs de su teléfono de WhatsApp).",access:`write`,params:[{name:`message`,type:`string`,required:!0,description:`Texto del recordatorio (máx. 500 caracteres, sin HTML)`},{name:`action`,type:`string`,required:!1,description:`Instrucción que el agente ejecutará al enviarlo, en lenguaje natural, ej. 'dame el resumen de ventas de hoy' o 'lista los enlaces de pago pendientes'. El resultado se adjunta al mensaje. OmÃtelo si es un recordatorio de solo texto.`},{name:`schedule`,type:`string`,required:!0,enum:[`once`,`daily`,`weekly`,`monthly`],description:`Frecuencia: once = una sola vez`},{name:`when`,type:`string`,required:!1,description:`Solo para once: fecha y hora local 'YYYY-MM-DD HH:mm'`},{name:`time_of_day`,type:`string`,required:!1,description:`Para recurrentes: hora local 'HH:mm'`},{name:`weekday`,type:`integer`,required:!1,description:`Para weekly: 0 = domingo ... 6 = sábado`},{name:`day_of_month`,type:`integer`,required:!1,description:`Para monthly: dÃa del mes (1-28)`},{name:`contact_name`,type:`string`,required:!1,description:`Nombre de un contacto ya guardado (mcp_contact) que debe recibirlo. Si se omite, llega al WhatsApp del comercio. No se aceptan teléfonos nuevos: guárdelos primero con tilopay_save_contact.`}
18042],output:{structuredContent:`{ id, message, action, phone, contact_name, schedule, when, next_run_local, is_active }`,description:`El recordatorio creado: cuándo se envÃa en la hora local del comercio, a qué número, y qué acción del agente se ejecuta al enviarse. Máximo 20 recordatorios activos; los de enlaces de cobro siempre llegan al WhatsApp del comercio, nunca al cliente.`}},{name:`tilopay_list_reminders`,title:`Ver recordatorios`,description:`Lista los recordatorios activos del comercio con su próxima fecha de envÃo.`,access:`read`,params:[{name:`include_inactive`,type:`boolean`,required:!1,description:`true para incluir los ya enviados o cancelados`}],output:{structuredContent:`{ reminders[] }`,description:`reminders = recordatorios del comercio con su mensaje, frecuencia, próxima ejecución en hora local y si están activos.`}},{name:`tilopay_cancel_reminder`,title:`Cancelar recordatorio`,description:`Cancela un recordatorio por su ID o buscando parte de su texto. No borra el historial, solo deja de enviarse.`,access:`destructive`,params:[{name:`id`,type:`string`,required:!1,description:`ID del recordatorio`},{name:`search`,type:`string`,required:!1,description:`Parte del texto del recordatorio`}],output:{structuredContent:`{ cancelled }`,description:`cancelled = el recordatorio que quedó desactivado.`}}]},{slug:`recurrentes`,title:`Cobros recurrentes`,tools:[{name:`tilopay_recurring_list_plans`,title:`Listar planes de cobro recurrente`,description:`Lista los planes de cobro recurrente configurados en Tilopay.`,access:`read`,params:[],output:{structuredContent:`{ result }`,description:"Respuesta cruda del API de Tilopay bajo la llave `result`."},api_endpoint:`POST /api/v1/getPlansRepeat`},{name:`tilopay_recurring_get_plan`,title:`Detalle de un plan recurrente`,description:`Obtiene el detalle de un plan de cobro recurrente por su ID.`,access:`read`,params:[{name:`id`,type:`string`,required:!0,description:`ID del plan`}],output:{structuredContent:`{ result }`,description:"Respuesta cruda del API de Tilopay bajo la llave `result`."},api_endpoint:`POST /api/v1/getPlanRepeat`},{name:`tilopay_recurring_get_subscriber`,title:`Detalle de un suscriptor`,description:`Obtiene el detalle de un suscriptor de un plan recurrente por su ID.`,access:`read`,params:[{name:`id`,type:`string`,required:!0,description:`ID del suscriptor`}],output:{structuredContent:`{ result }`,description:"Respuesta cruda del API de Tilopay bajo la llave `result`."},api_endpoint:`POST /api/v1/getSuscriptorRepeat`},{name:`tilopay_recurring_subscriber_payments`,title:`Pagos de un suscriptor`,description:`Lista los pagos realizados por un suscriptor recurrente.`,access:`read`,params:[{name:`id`,type:`string`,required:!0,description:`ID del suscriptor`}],output:{structuredContent:`{ result }`,description:"Respuesta cruda del API de Tilopay bajo la llave `result`."},api_endpoint:`POST /api/v1/getSuscriptorPayments`},{name:`tilopay_recurring_failed_payments`,title:`Cobros recurrentes fallidos`,description:`Lista los últimos cobros recurrentes que fallaron (plan, suscriptor, monto, fecha y motivo). Una sola llamada basta.`,access:`read`,params:[{name:`limit`,type:`integer`,required:!1,description:`Máximo de cobros (por defecto 10)`},{name:`startDate`,type:`string`,required:!1,description:`Desde, "YYYY-MM-DD HH:mm:ss"`},{name:`endDate`,type:`string`,required:!1,description:`Hasta, "YYYY-MM-DD HH:mm:ss"`}],output:{structuredContent:`{ total, source, failures[] }`,description:`failures = cobros recurrentes rechazados, con plan, suscriptor, monto, moneda y motivo del rechazo; total = cuántos se encontraron; source = la ruta del API de la que se obtuvieron. Combina la consulta de planes, suscriptores y sus pagos.`},api_endpoint:`POST /api/v1/getSuscriptorPayments`},{name:`tilopay_recurring_manage_subscriber`,title:`Pausar, reactivar o eliminar un suscriptor`,description:"Pausa, reactiva o elimina un suscriptor de un plan recurrente en Tilopay. Operación sensible: afecta cobros futuros y requiere segundo factor. Llámela primero sin `confirmation_code`: se envÃa un código de 6 dÃgitos al correo del comercio y la respuesta trae `requires_confirmation`. Repita la misma llamada agregando `confirmation_code`.",access:`destructive`,params:[{name:`idSubscriber`,type:`string`,required:!0,description:`ID del suscriptor`},{name:`action`,type:`string`,required:!0,enum:[`pause`,`reactivate`,`delete`],description:`Acción a realizar`},{name:`confirmation_code`,type:`string`,required:!1,description:`Código de 6 dÃgitos recibido por correo para autorizar la operación`}],output:{structuredContent:`{ result }`,description:`Respuesta cruda del endpoint correspondiente a la acción: pause, reactivate o delete.`},api_endpoint:`POST /api/v1/pauseSuscriptorRepeat, /reactiveSuscriptorRepeat o /deleteSuscriptorRepeat`},{name:`tilopay_recurring_create_plan`,title:`Crear plan de suscripción`,description:`Crea un plan de cobro recurrente (suscripción) en Tilopay con su tÃtulo, moneda, frecuencia y modalidades (nombre y monto). Devuelve el ID del plan creado; luego use tilopay_recurring_subscription_url para obtener el enlace con el que los clientes se suscriben.`,access:`write`,params:[{name:`title`,type:`string`,required:!0,description:`TÃtulo del plan`},{name:`modality`,type:`array<object>`,required:!0,description:`Modalidades del plan (al menos una): nombre y monto por ciclo`},{name:`frequency`,type:`string`,required:!0,enum:[`diario`,`semanal`,`mensual`,`anual`,`quincenal`,`bimestral`,`trimestral`,`cuatrimestral`,`semestral`],description:`Frecuencia de cobro`},{name:`description`,type:`string`,required:!1,description:`Descripción del plan`},{name:`currency`,type:`string`,required:!1,description:`Moneda ISO 4217, ej. USD o CRC. Si se omite se usa la del paÃs del comercio.`},{name:`first_amount`,type:`number`,required:!1,description:`Monto del pago inicial (0
18042si no hay)`},{name:`trial_days`,type:`integer`,required:!1,description:`DÃas de prueba gratis (0 si no hay prueba)`},{name:`attempts`,type:`integer`,required:!1,description:`Reintentos ante un cobro fallido (1 por defecto)`},{name:`end_at`,type:`string`,required:!1,description:`Fecha de fin del plan en formato DD-MM-YYYY (opcional)`},{name:`thanks_url`,type:`string`,required:!1,description:`URL de agradecimiento tras suscribirse (opcional)`},{name:`webhook_subscribe`,type:`string`,required:!1,description:`Webhook al suscribirse un cliente (opcional)`},{name:`webhook_payment`,type:`string`,required:!1,description:`Webhook al cobrarse un pago (opcional)`},{name:`webhook_rejected`,type:`string`,required:!1,description:`Webhook al rechazarse un cobro (opcional)`},{name:`webhook_unsubscribe`,type:`string`,required:!1,description:`Webhook al cancelarse una suscripción (opcional)`},{name:`webhook_reactive`,type:`string`,required:!1,description:`Webhook al reactivarse una suscripción (opcional)`}],output:{structuredContent:`{ result, currency, frequency }`,description:`result = respuesta del API con el plan creado; currency y frequency = la moneda y la frecuencia con la que quedó el plan.`},api_endpoint:`POST /api/v1/createPlanRepeat`},{name:`tilopay_recurring_edit_plan`,title:`Editar plan de suscripción`,description:`Modifica un plan de cobro recurrente existente: tÃtulo, descripción, frecuencia, moneda, monto por ciclo (modality), pago inicial, prueba gratis, reintentos, estado o fecha de fin. Consulte primero tilopay_recurring_get_plan para conocer los valores actuales.`,access:`write`,params:[{name:`id`,type:`string`,required:!0,description:`ID del plan`},{name:`title`,type:`string`,required:!0,description:`TÃtulo del plan`},{name:`frequency`,type:`string`,required:!0,enum:[`diario`,`semanal`,`mensual`,`anual`,`quincenal`,`bimestral`,`trimestral`,`cuatrimestral`,`semestral`],description:`Frecuencia de cobro`},{name:`modality`,type:`array<object>`,required:!1,description:`Modalidades con su monto por ciclo; envÃelas cuando cambie el precio del plan`},{name:`currency`,type:`string`,required:!1,description:`Moneda ISO 4217`},{name:`description`,type:`string`,required:!1,description:`Descripción del plan`},{name:`first_amount`,type:`number`,required:!1,description:`Monto del pago inicial`},{name:`trial_days`,type:`integer`,required:!1,description:`DÃas de prueba gratis`},{name:`attempts`,type:`integer`,required:!1,description:`Reintentos ante cobro fallido`},{name:`status`,type:`string`,required:!1,enum:[`inactive`,`active`,`closed_to_new`],description:`Estado: inactive (inactivo), active (activo) o closed_to_new (activo sin registros nuevos)`},{name:`end_at`,type:`string`,required:!1,description:`Fecha de fin del plan en formato DD-MM-YYYY (opcional)`},{name:`thanks_url`,type:`string`,required:!1,description:`URL de agradecimiento`},{name:`webhook_subscribe`,type:`string`,required:!1,description:`Webhook al suscribirse`},{name:`webhook_payment`,type:`string`,required:!1,description:`Webhook al cobrarse un pago`},{name:`webhook_rejected`,type:`string`,required:!1,description:`Webhook al rechazarse un cobro`},{name:`webhook_unsubscribe`,type:`string`,required:!1,description:`Webhook al cancelarse`},{name:`webhook_reactive`,type:`string`,required:!1,description:`Webhook al reactivarse`}],output:{structuredContent:`{ result }`,description:`result = respuesta del API al editar el plan. Los campos que no se envÃan se conservan.`},api_endpoint:`POST /api/v1/editPlanRepeat`},{name:`tilopay_recurring_delete_plan`,title:`Eliminar plan de suscripción`,description:`Elimina un plan de cobro recurrente en Tilopay. Afecta los cobros futuros del plan: confirme con el comercio antes de ejecutarla.`,access:`destructive`,params:[{name:`id`,type:`string`,required:!0,description:`ID del plan`}],output:{structuredContent:`{ result }`,description:`result = respuesta del API al eliminar el plan. Los suscriptores del plan dejan de cobrarse.`},api_endpoint:`POST /api/v1/deletePlanRepeat`},{name:`tilopay_recurring_subscription_url`,title:`Enlace de suscripción a un plan`,description:`Devuelve el enlace con el que un cliente se registra en un plan recurrente (o lo renueva si el correo ya está suscrito). Entregue la URL completa, sin re
18042cortarla.`,access:`read`,params:[{name:`id`,type:`string`,required:!0,description:`ID del plan`},{name:`email`,type:`string`,required:!1,description:`Correo del cliente; si ya está suscrito devuelve el enlace de renovación`}],output:{structuredContent:`{ url, result }`,description:`url = enlace de suscripción al plan, para compartir con el cliente; result = respuesta del API tal cual.`},api_endpoint:`POST /api/v1/recurrentUrl`},{name:`tilopay_recurring_edit_subscriber`,title:`Editar suscriptor de un plan`,description:`Cambia el estado de un suscriptor (activo, pausado o eliminado) y/o su fecha de expiración. Afecta cobros futuros: confirme con el comercio antes de ejecutarla.`,access:`destructive`,params:[{name:`id`,type:`string`,required:!0,description:`ID del suscriptor`},{name:`status`,type:`string`,required:!1,enum:[`active`,`paused`,`deleted`],description:`Nuevo estado del suscriptor`},{name:`expire`,type:`string`,required:!1,description:`Fecha de expiración del plan para ese suscriptor en formato YYYY-MM-DD`}],output:{structuredContent:`{ result }`,description:`result = respuesta del API al editar los datos del suscriptor (correo, teléfono, monto o fecha de vencimiento, según el plan).`},api_endpoint:`POST /api/v1/editSuscriptorRepeat`},{name:`tilopay_recurring_create_coupon`,title:`Crear cupón de descuento`,description:`Crea un cupón de descuento para un plan de suscripción: porcentaje o monto fijo, fecha de vencimiento, correos permitidos y lÃmites de uso.`,access:`write`,params:[{name:`planId`,type:`string`,required:!0,description:`ID del plan recurrente`},{name:`discount_type`,type:`string`,required:!0,enum:[`percentage`,`fixed`],description:`Tipo de descuento: percentage (porcentaje) o fixed (monto fijo)`},{name:`discount`,type:`number`,required:!0,description:`Valor del descuento`},{name:`expire`,type:`string`,required:!0,description:`Fecha de vencimiento del cupón en formato YYYY-MM-DD`},{name:`allow_existing_users`,type:`boolean`,required:!1,description:`true si también lo pueden usar clientes ya registrados (false = solo nuevos)`},{name:`emails`,type:`array<string>`,required:!1,description:`Correos autorizados; si se omite, cualquier correo puede usarlo`},{name:`usage`,type:`integer`,required:!1,description:`Cantidad total de usos`},{name:`renews`,type:`integer`,required:!1,description:`Renovaciones válidas con el cupón`},{name:`renews_by_user`,type:`integer`,required:!1,description:`Usos por un mismo cliente`}],output:{structuredContent:`{ result }`,description:`result = respuesta del API con el cupón de descuento creado para el plan.`},api_endpoint:`POST /api/v1/createCoupon`},{name:`tilopay_recurring_list_coupons`,title:`Cupones de un plan`,description:`Lista los cupones de descuento asociados a un plan de suscripción.`,access:`read`,params:[{name:`planId`,type:`string`,required:!0,description:`ID del plan recurrente`}],output:{structuredContent:`{ result }`,description:`result = cupones del plan tal cual los devuelve el API.`},api_endpoint:`POST /api/v1/getRepeatCoupons`},{name:`tilopay_recurring_get_coupon`,title:`Detalle de un cupón`,description:`Obtiene el detalle de un cupón de descuento por su ID.`,access:`read`,params:[{name:`id`,type:`string`,required:!0,description:`ID del cupón`}],output:{structuredContent:`{ result }`,description:`result = detalle de un cupón tal cual lo devuelve el API.`},api_endpoint:`POST /api/v1/getCoupon`},{name:`tilopay_recurring_delete_coupon`,title:`Eliminar un cupón`,description:`Elimina un cupón de descuento de un plan de suscripción.`,access:`destructive`,params:[{name:`id`,type:`string`,required:!0,description:`ID del cupón`}],output:{structuredContent:`{ result }`,description:`result = respuesta del API al eliminar el cupón.`},api_endpoint:`POST /api/v1/deleteCoupon`},{name:`tilopay_recurring_plan_wizard_start`,title:`Iniciar paso a paso de un plan de suscripción`,description:`Inicia el paso a paso guiado para crear (mode=create) o editar (mode=edit con plan_id) un plan de suscripción. Devuelve la primera pregunta pendiente: entréguela al comercio tal cual y pase su respuesta a tilopay_recurring_plan_wizard_answer. Ãselo en vez de tilopay_recurring_create_plan cuando falte algún dato.`,access:`write`,params:[{name:`mode`,type:`string`,required:!0,enum:[`create`,`edit`],description:`create para un plan nuevo, edit para modificar uno existente`},{name:`plan_id`,type:`string`,required:!1,description:`ID del plan (obligatorio en mode=edit)`},{name:`title`,type:`string`,required:!1,description:`TÃtulo, si el comercio ya lo dijo`},{name:`frequency`,type:`string`,required:!1,enum:[`diario`,`semanal`,`quincenal`,`mensual`,`bimestral`,`trimestral`,`cuatrimestral`,`semestral`,`anual`],description:`Frecuencia, si el comercio ya la dijo`},{name:`amount`,type:`number`,required:!1,description:`Monto por ciclo, si el comercio ya lo dijo`},{name:`currency`,type:`string`,required:!1,description:`Moneda ISO si el comercio la indicó con sÃmbolo o nombre ($ o dólares = USD, â¡ o colones = CRC)`},{name:`description`,type:`string`,required:!1,description:`Descripción, si ya la dijo`}],output:{structuredContent:`{ draft }`,description:`draft = borrador del plan en proceso, con lo que ya se respondió y el siguiente paso pendiente. No crea nada en Tilopay hasta confirmar.`}},{name:`tilopay_recurring_plan_wizard_answer`,title:`Responder un paso del plan de suscripción`,description:`Guarda la respuesta del comercio al paso actual del plan de suscripción y devuelve la siguiente pregunta o el resumen para confirmar. Entregue el texto devuelto tal cual, sin agregar preguntas propias.`,access:`write`,params:[{name:`answer`,type:`string`,required:!0,description:`Lo que respondió el comercio, tal cual`}],output:{structuredContent:`{ draft }`,description:`draft = el borrador actualizado con la respuesta del paso y el siguiente paso pendiente.`}},{name:`tilopay_recurring_plan_wizard_confirm`,title:`Confirmar el plan de suscripción`,description:`Crea o edita el plan de suscripción con los datos del paso a paso, después de que el comercio dijo sà al resumen. Al crear devuelve además el enlace de suscripción: entréguelo completo, sin re
18042cortarlo.`,access:`write`,params:[],output:{structuredContent:`{ plan_id, subscription_url }`,description:`Crea el plan con lo que se armó paso a paso: plan_id = id del plan creado; subscription_url = enlace de suscripción para compartir.`},api_endpoint:`POST /api/v1/createPlanRepeat`},{name:`tilopay_recurring_plan_wizard_cancel`,title:`Cancelar el paso a paso del plan`,description:`Descarta el plan de suscripción que estaba en proceso sin crear ni cambiar nada.`,access:`write`,params:[],output:{description:`Descarta el borrador del plan en proceso. No crea ni cambia nada en Tilopay; devuelve sólo la confirmación en texto.`}},{name:`tilopay_recurring_settle_link`,title:`Enlace de pago para poner al dÃa un cobro recurrente fallido`,description:`Crea un enlace de pago por el monto de un cobro recurrente que falló y lo asocia al suscriptor del plan. Cuando el cliente paga ese enlace, la suscripción queda al dÃa automáticamente: el suscriptor se reactiva y su fecha de expiración avanza al siguiente ciclo. Ãsala cuando el comercio acepte enviarle el enlace al cliente de un cobro fallido (los datos salen de tilopay_recurring_failed_payments). Devuelve la URL del enlace y, si hay teléfono, un enlace de WhatsApp listo para enviarle al cliente.`,access:`write`,params:[{name:`subscriber_id`,type:`string`,required:!0,description:`ID del suscriptor con el cobro fallido`},{name:`amount`,type:`number`,required:!0,description:`Monto pendiente del cobro fallido`},{name:`currency`,type:`string`,required:!1,description:`Moneda del cobro. Si se omite se usa la del paÃs del comercio.`},{name:`plan_id`,type:`string`,required:!1,description:`ID del plan de suscripción`},{name:`plan_name`,type:`string`,required:!1,description:`Nombre del plan, para el concepto del cobro`},{name:`frequency`,type:`string`,required:!1,enum:[`diario`,`semanal`,`quincenal`,`mensual`,`bimestral`,`trimestral`,`cuatrimestral`,`semestral`,`anual`],description:`Frecuencia del plan; si se omite se consulta al plan o se asume mensual`},{name:`client_name`,type:`string`,required:!1,description:`Nombre del cliente`},{name:`client_email`,type:`string`,required:!1,description:`Correo del cliente`},{name:`client_phone`,type:`string`,required:!1,description:`Teléfono del cliente en formato internacional, para el enlace de WhatsApp`},{name:`message`,type:`string`,required:!1,description:`Mensaje propio para el cliente; si se omite se arma uno`}],output:{structuredContent:`{ url, linkId, whatsapp_url, currency, amount, subscriber_id, frequency }`,description:`Crea un enlace de pago de un solo uso para que el suscriptor ponga al dÃa un cobro recurrente fallido: url = enlace de pago; whatsapp_url = enlace de WhatsApp listo para enviarlo; linkId = id del enlace creado.`},api_endpoint:`POST /api/v1/createLinkPayment`},{name:`tilopay_recurring_mark_settled`,title:`Poner al dÃa un suscriptor`,description:`Marca al suscriptor como al dÃa en su plan: lo deja activo y corre su fecha de expiración al siguiente ciclo. Ãsala cuando el cobro pendiente ya se pagó por otro medio. Si el pago se hizo con el enlace de tilopay_recurring_settle_link, no hace falta: se actualiza solo. Confirme con el comercio antes de ejecutarla.`,access:`write`,params:[{name:`subscriber_id`,type:`string`,required:!0,description:`ID del suscriptor`},{name:`plan_id`,type:`string`,required:!1,description:`ID del plan de suscripción`},{name:`frequency`,type:`string`,required:!1,enum:[`diario`,`semanal`,`quincenal`,`mensual`,`bimestral`,`trimestral`,`cuatrimestral`,`semestral`,`anual`],description:`Frecuencia del plan; si se omite se consulta al plan o se asume mensual`},{name:`expire`,type:`string`,required:!1,description:`Nueva fecha de expiración YYYY-MM-DD; si se omite se calcula el siguiente ciclo`}],output:{structuredContent:`{ ok, expire, frequency }`,description:`Corre la fecha de vencimiento del suscriptor según la frecuencia del plan, para dejarlo al dÃa después de recuperar un cobro fallido. expire = la nueva fecha de vencimiento.`},api_endpoint:`POST /api/v1/editSuscriptorRepeat`}]},{slug:`tarjetas-guardadas`,title:`Tarjetas guardadas y cobros masivos`,tools:[{name:`tilopay_saved_cards_list_groups`,title:`Listar grupos de cobro`,description:`Lista los grupos de cobro con tarjetas almacenadas (afiliados) en Tilopay.`,access:`read`,params:[],output:{structuredContent:`{ result }`,description:"Respuesta cruda del API de Tilopay bajo la llave `result`."},api_endpoint:`POST /api/v1/collect/get/groups`},{name:`tilopay_saved_cards_list_affiliates`,title:`Listar afiliados con tarjeta almacenada`,description:`Lista los afiliados (clientes con tarjeta almacenada) de un grupo de cobro.`,access:`read`,params:[{name:`group`,type:`integer`,required:!1,description:`ID del grupo (0 para todos)`}],output:{structuredContent:`{ result }`,description:"Respuesta cruda del API de Tilopay bajo la llave `result`."},api_endpoint:`POST /api/v1/collect/get/affiliates`},{name:`tilopay_saved_cards_list_collections`,title:`Listar cobros masivos`,description:`Lista los cobros masivos realizados con tarjetas almacenadas en Tilopay.`,access:`read`,params:[],output:{structuredContent:`{ result }`,description:"Respuesta cruda del API de Tilopay bajo la llave `result`."},api_endpoint:`POST /api/v1/collect/get/massive`},{name:`tilopay_saved_cards_collection_detail`,title:`Detalle de un cobro masivo`,description:"Obtiene el detalle de un cobro masivo. Requiere el `code` del c
18042obro (campo `code` devuelto por tilopay_saved_cards_list_collections).",access:`read`,params:[{name:`code`,type:`string`,required:!0,description:"Código del cobro masivo (campo `code` de la lista de cobros)"}],output:{structuredContent:`{ result }`,description:"Respuesta cruda del API de Tilopay bajo la llave `result`."},api_endpoint:`POST /api/v1/collect/get/massive/detail`},{name:`tilopay_tokenize_card`,title:`Guardar la tarjeta de un cliente (tokenizar)`,description:`Genera el enlace seguro de Tilopay donde el cliente ingresa su tarjeta para dejarla guardada (tokenizada). El comercio nunca ve ni recibe los datos de la tarjeta. Una vez guardada, se le puede cobrar con tilopay_saved_cards_create_payments (esa sà pide código de confirmación por correo). Si se indica un contacto o teléfono, también devuelve un enlace de WhatsApp con el mensaje listo para enviarle al cliente.`,access:`write`,params:[{name:`email`,type:`string`,required:!0,description:`Correo del tarjetahabiente`},{name:`first_name`,type:`string`,required:!0,description:`Nombre del tarjetahabiente`},{name:`last_name`,type:`string`,required:!0,description:`Apellido del tarjetahabiente`},{name:`language`,type:`string`,required:!1,enum:[`es`,`en`],description:`Idioma del formulario (es por defecto)`},{name:`redirect_url`,type:`string`,required:!1,description:`URL a la que vuelve el cliente al terminar (opcional)`},{name:`contact_name`,type:`string`,required:!1,description:`Nombre del contacto guardado o del cliente, para armar el mensaje de WhatsApp`},{name:`phone`,type:`string`,required:!1,description:`Teléfono de WhatsApp del cliente, ej. +50688887777`},{name:`message`,type:`string`,required:!1,description:`Texto propio para el mensaje al cliente`},{name:`save_contact`,type:`boolean`,required:!1,description:`Guardar el contacto en la agenda`}],output:{structuredContent:`{ tokenize_url, whatsapp_url, email, contact }`,description:`tokenize_url = enlace seguro donde el cliente ingresa su tarjeta para guardarla; whatsapp_url = enlace de WhatsApp listo para enviárselo. La tarjeta la digita el cliente: el agente nunca recibe el número.`},api_endpoint:`POST /api/v1/processTokenize`},{name:`tilopay_list_customer_cards`,title:`Listar las tarjetas guardadas de un cliente`,description:`Lista las tarjetas que un cliente ya tiene guardadas (tokenizadas) en Tilopay, identificadas por su correo. Devuelve el token de cada tarjeta, que es lo que necesita tilopay_charge_saved_card para cobrarle. Solo se pueden cobrar tarjetas guardadas con el enlace de este asistente o del MCP. No cobra nada.`,access:`read`,params:[{name:`email`,type:`string`,required:!0,description:`Correo del cliente dueño de las tarjetas`},{name:`currency`,type:`string`,required:!1,description:`Moneda de referencia, ej. CRC o USD. Si se omite se usa la del paÃs del comercio.`}],output:{structuredContent:`{ cards, count }`,description:`cards = tarjetas ya guardadas de ese cliente, con marca, últimos dÃgitos y su identificador para cobrar; count = cuántas hay. Nunca devuelve el número completo de la tarjeta.`}},{name:`tilopay_payment_methods`,title:`Métodos de pago disponibles y cuotas`,description:`Lista los métodos de pago habilitados para el comercio en el checkout de Tilopay (tarjetas, SINPE Móvil, Yappy, cuotas o tasa cero cuando están activos) y si la cuenta responde en producción o en pruebas. Ãsala cuando el comercio pregunte qué puede ofrecerle a su cliente o si tiene cuotas / tasa cero.`,access:`read`,params:[{name:`amount`,type:`number`,required:!1,description:`Monto de referencia; algunos métodos y cuotas dependen del monto`},{name:`currency`,type:`string`,required:!1,description:`Moneda de referencia. Si se omite se usa la del paÃs del comercio.`},{name:`email`,type:`string`,required:!1,description:`Correo del cliente (opcional; solo para ver también sus tarjetas guardadas)`}],output:{structuredContent:`{ methods, installments, cards, environment, currency }`,description:`methods = métodos de pago habilitados para el comercio;
18042 installments = cuotas disponibles cuando el método las admite; cards = tarjetas guardadas del cliente si se envió su correo; environment = production o test.`}},{name:`tilopay_charge_saved_card`,title:`Cobrar a una tarjeta guardada de un cliente`,description:"Cobra un monto a una tarjeta ya guardada (tokenizada) de un cliente. Requiere el correo del cliente y el token de la tarjeta (se obtiene con tilopay_list_customer_cards). Operación sensible: mueve dinero real y requiere segundo factor. Llámela primero sin `confirmation_code`: se envÃa un código de 6 dÃgitos al correo del comercio y la respuesta trae `requires_confirmation`. Repita la misma llamada, con los mismos parámetros, agregando `confirmation_code`.",access:`destructive`,params:[{name:`email`,type:`string`,required:!0,description:`Correo del tarjetahabiente`},{name:`card`,type:`string`,required:!0,description:`Token de la tarjeta guardada (versión v2)`},{name:`amount`,type:`number`,required:!0,description:`Monto a cobrar`},{name:`currency`,type:`string`,required:!1,description:`Moneda del cobro. Si se omite se usa la del paÃs del comercio.`},{name:`order_number`,type:`string`,required:!1,description:`Número de orden; si se omite se genera uno único`},{name:`capture`,type:`boolean`,required:!1,description:`Capturar de inmediato (por defecto true)`},{name:`confirmation_code`,type:`string`,required:!1,description:`Código de 6 dÃgitos recibido por correo para autorizar la operación`}],output:{structuredContent:`{ result, approved, orderNumber, currency, receipt_code, receipt_url, receipt_image_url }`,description:`Cobra a una tarjeta ya guardada del cliente: approved = si el cobro fue aprobado; orderNumber = número de orden generado; receipt_* = comprobante del cobro cuando se generó. Exige segundo factor por correo.`},api_endpoint:`POST /api/v1/processRecurrentPayment`},{name:`tilopay_remove_saved_card`,title:`Eliminar una tarjeta guardada de un cliente`,description:"Elimina una tarjeta guardada (token) de un cliente en Tilopay. Operación sensible: requiere segundo factor. Llámela primero sin `confirmation_code` y repÃtala luego con el código de 6 dÃgitos que llega al correo del comercio.",access:`destructive`,params:[{name:`email`,type:`string`,required:!0,description:`Correo del cliente dueño de la tarjeta`},{name:`token`,type:`string`,required:!0,description:`Token de la tarjeta a eliminar`},{name:`confirmation_code`,type:`string`,required:!1,description:`Código de 6 dÃgitos recibido por correo para autorizar la operación`}],output:{structuredContent:`{ result }`,description:`result = respuesta del API al eliminar la tarjeta guardada del cliente. Exige segundo factor por correo.`},api_endpoint:`POST /api/v1/user/card-remove`},{name:`tilopay_saved_cards_create_payments`,title:`Cobrar a tarjetas almacenadas`,description:"Crea cobros a afiliados y/o grupos con tarjetas almacenadas en Tilopay. Solo se permiten afiliados cuya tarjeta se guardó con el enlace de este asistente o del MCP (tilopay_tokenize_card); los demás se rechazan. Operación sensible: afecta dinero real y requiere segundo factor. Llámela primero sin `confirmation_code`: se envÃa un código de 6 dÃgitos al correo del comercio y la respuesta trae `requires_confirmation`. Repita la misma llamada, con los mismos parámetros, agregando `confirmation_code`.",access:`destructive`,params:[{name:`reason`,type:`string`,required:!0,description:`Motivo del cobro, ej. "Cobro mensualidad"`},{name:`capture`,type:`boolean`,required:!1,description:`Capturar de inmediato (por defecto true)`},{name:`users`,type:`array<object>`,required:!1,description:`Afiliados individuales a cobrar`},{name:`groups`,type:`array<object>`,required:!1,description:`Grupos a cobrar`},{name:`confirmation_code`,type:`string`,required:!1,description:`Código de 6 dÃgitos recibido por correo para autorizar la operación`}],output:{structuredContent:`{ result }`,description:"Respuesta cruda del API de Tilopay bajo la llave `result`."},api_endpoint:`POST /api/v1/collect/set/payments`}]},{slug:`soporte`,title:`Soporte y diagnóstico`,tools:[{name:`tilopay_diagnostics`,title:`Diagnóstico de conexión con Tilopay`,description:`Verifica las credenciales del usuario y prueba un endpoint de cada grupo (ventas/transacciones, catálogo, recurrentes, tarjetas almacenadas). Ãsalo cuando una herramienta falle para saber qué parte del API responde.`,access:`read`,params:[{name:`environment`,type:`string`,required:!1,enum:[`production`,`test`],description:`Ambiente para la prueba de transacciones (por defecto production)`}],output:{structuredContent:`{ checks, failed }`,description:`checks es una lista con check, ok y detail por cada prueba: credenciales, transacciones, catálogo, recurrentes y tarjetas almacenadas. failed es la cantidad de pruebas con error. Las credenciales se devuelven enmascaradas.`}},{name:`tilopay_help_guides`,title:`Ayuda con las guÃas y tutoriales de Tilopay`,description:`Responde dudas de uso del panel de Tilopay (links de pago, catálogo, suscripciones, depósitos de garantÃa, reembolsos, API/SDK) usando las guÃas oficiales de tilopay.com/guias. Devuelve extractos y los enlaces a las guÃas.`,access:`read`,params:[{name:`question`,type:`string`,required:!0,description:`Pregunta del comercio, tal como la escribió`}],output:{structuredContent:`{ articles }`,description:`Hasta 3 artÃculos con title, url y excerpt, tomados de tilopay.com/guias. Si no hay coincidencia devuelve articles vacÃo y un texto con las guÃas disponibles.`}},{name:`tilopay_debug_code`,title:`Depurar código`,description:`Analiza un fragmento de código o stack trace que envÃa el usuario y devuelve diagnóstico, causa raÃz, corrección concreta y riesgos. No lee repositorios ni ejecuta código.`,access:`read`,params:[{name:`code`,type:`string`,required:!0,description:`Fragmento de código, log o stack trace tal como lo envió el usuario`},{name:`error`,type:`string`,required:!1,description:`Mensaje de error o comportamiento observado, si lo hay`},{name:`language`,type:`string`,required:!1,description:`Lenguaje o stack (ej. typescript, php, react). Si no se indica, se detecta`},{name:`context`,type:`string`,required:!1,description:`Qué deberÃa hacer el código o en qué momento falla`}],output:{structuredContent:`{ report, truncated, redacted, model }`,description:`report es el diagnóstico en texto (diagnóstico, causa raÃz, corrección y riesgos). truncated indica si el código se recortó a 12.000 caracteres; redacted, si se ocultaron posibles credenciales antes del análisis; model, el modelo usado. No lee repositorios ni ejecuta el código.`}}]},{slug:`api-bancario`,title:`Herramientas bancarias`,availability:`on-request`,requires_token:`baas-credentials`,requires:`Credenciales del API bancario de Tilopay registradas por Tilopay para ese usuario.`,tools:[{name:`baas_list_assignments`,title:`Contextos (assignments) del API BaaS`,description:`Lista los contextos tenant/cuenta (assignments) disponibles para las credenciales BaaS del usuario. Ãsalo cuando otra herramienta pida assignmentId.`,access:`read`,params:[],output:{structuredContent:`{ assignments[] }`,description:`assignments = contextos disponibles con assignment_id, tenant_code, owner_type, country_code y status.`}},{name:`baas_diagnostics`,title:`Diagnóstico del API BaaS`,description:`Verifica las credenciales BaaS del usuario, el login, el intercambio de token y el acceso a cuentas. Ãsalo cuando una consulta BaaS falle.`,access:`read`,params:[{name:`assignmentId`,type:`string`,required:!1,description:`Contexto a probar (opcional)`}],output:{structuredContent:`{ checks[], failed }`,description:`checks = una fila por verificación (credenciales, login + assignments, cuentas) con ok y detalle; failed = cuántas fallaron. El correo de la credencial se devuelve enmascarado.`}},{name:`baas_list_accounts`,title:`Listar cuentas BaaS`,description:`Lista las cuentas accesibles del API BaaS (sin saldos): tipo de identificador, valor y moneda.`,access:`read`,params:[{name:`accountType`,type:`string`,required:!1,description:`Filtro por esquema (IBAN)`},{name:`accountValue`,type:`string`,required:!1,description:`Filtro por identificador`},{name:`limit`,type:`integer`,required:!1}
18042,{name:`cursor`,type:`string`,required:!1},{name:`assignmentId`,type:`string`,required:!1,description:`Contexto BaaS (opcional)`}],output:{structuredContent:`{ result }`,description:`result = respuesta del API bancario tal cual.`},api_endpoint:`GET /api/public/v1/accounts`},{name:`baas_list_balances`,title:`Saldos de las cuentas BaaS`,description:`Lista los saldos en tiempo real de las cuentas accesibles del API BaaS (cuenta, montos y fecha de corte).`,access:`read`,params:[{name:`accountType`,type:`string`,required:!1,description:`Filtro por esquema (IBAN)`},{name:`accountValue`,type:`string`,required:!1,description:`Filtro por identificador`},{name:`limit`,type:`integer`,required:!1},{name:`cursor`,type:`string`,required:!1},{name:`assignmentId`,type:`string`,required:!1,description:`Contexto BaaS (opcional)`}],output:{structuredContent:`{ result }`,description:`result = respuesta del API bancario tal cual.`},api_endpoint:`GET /api/public/v1/accounts/balances`},{name:`baas_get_balance`,title:`Saldo de una cuenta BaaS`,description:`Obtiene el saldo actual de una cuenta BaaS identificada por IBAN.`,access:`read`,params:[{name:`accountType`,type:`string`,required:!1,enum:[`IBAN`],description:`Esquema del identificador (IBAN)`},{name:`accountValue`,type:`string`,required:!0,description:`Identificador de la cuenta (IBAN)`},{name:`assignmentId`,type:`string`,required:!1,description:`Contexto BaaS (opcional)`}],output:{structuredContent:`{ result }`,description:`result = respuesta del API bancario tal cual.`},api_endpoint:`GET /api/public/v1/accounts/balance`},{name:`baas_list_payments`,title:`Listar pagos BaaS`,description:`Consulta (solo lectura) los pagos BaaS de una cuenta propia identificada por IBAN, con filtros de fecha, estado, moneda, método y dirección. Paginación por cursor.`,access:`read`,params:[{name:`accountType`,type:`string`,required:!1,enum:[`IBAN`],description:`Esquema del identificador (IBAN)`},{name:`accountValue`,type:`string`,required:!0,description:`Identificador de la cuenta (IBAN)`},{name:`assignmentId`,type:`string`,required:!1,description:`Contexto BaaS (opcional)`},{name:`dateFrom`,type:`string`,required:!1,description:`Desde, RFC 3339 (2026-01-01T00:00:00Z)`},{name:`dateTo`,type:`string`,required:!1,description:`Hasta, RFC 3339`},{name:`status`,type:`string`,required:!1,enum:[`pending`,`processing`,`confirmed`,`posted`,`failed`],description:`Estado público del pago`},{name:`currency`,type:`string`,required:!1,description:`Moneda ISO 4217 (CRC, USD)`},{name:`paymentMethodCode`,type:`string`,required:!1,enum:[`PIN`,`SINPE_MOVIL`]},{name:`direction`,type:`string`,required:!1,enum:[`OUT`,`IN`],description:`OUT = envÃo, IN = recibido`},{name:`clientReference`,type:`string`,required:!1,description:`Referencia del comercio`},{name:`limit`,type:`integer`,required:!1,description:`Tamaño de página (máx 100)`},{name:`cursor`,type:`string`,required:!1,description:`Cursor de la página anterior`}],output:{structuredContent:`{ result }`,description:`result = respuesta del API bancario tal cual, con su cursor de paginación.`},api_endpoint:`GET /api/public/v1/transactions/payments`},{name:`baas_search_payment`,title:`Buscar un pago BaaS`,description:`Busca un pago BaaS dentro de una cuenta por exactamente uno de: paymentId (UUID), publicId (número) o clientReference.`,access:`read`,params:[{name:`accountType`,type:`string`,required:!1,enum:[`IBAN`],description:`Esquema del identificador (IBAN)`},{name:`accountValue`,type:`string`,required:!0,description:`Identificador de la cuenta (IBAN)`},{name:`assignmentId`,type:`string`,required:!1,description:`Contexto BaaS (opcional)`},{name:`paymentId`,type:`string`,required:!1,description:`UUID interno del pago`},{name:`publicId`,type:`string`,required:!1,description:`Identificador público numérico`},{name:`clientReference`,type:`string`,required:!1,description:`Referencia del comercio`}],output:{structuredContent:`{ result }`,description:`result = respuesta del API bancario tal cual.`},api_endpoint:`POST /api/public/v1/transactions/payments/search`},{name:`baas_get_payment`,title:`Detalle de un pago BaaS`,description:`Obtiene el detalle de un pago BaaS por su UUID interno (solo lectura).`,access:`read`,params:[{name:`paymentId`,type:`string`,required:!0,description:`UUID interno del pago`},{name:`assignmentId`,type:`string`,required:!1,description:`Contexto BaaS (opcional)`}],output:{structuredContent:`{ result }`,description:`result = respuesta del API bancario tal cual.`},api_endpoint:`GET /api/public/v1/transactions/payments/{payment_id}`},{name:`baas_request_statement`,title:`Solicitar estado de cuenta BaaS`,description:`Solicita la generación de un estado de cuenta (rango máximo 60 dÃas) para una cuenta BaaS. No mueve dinero: solo genera un documento de consulta. Devuelve request_id y status PENDING.`,access:`write`,params:[{name:`accountType`,type:`string`,required:!1,enum:[`IBAN`],description:`Esquema del identificador (IBAN)`},{name:`accountValue`,type:`string`,required:!0,description:`Identificador de la cuenta (IBAN)`},{name:`dateFrom`,type:`string`,required:!0,description:`Desde, RFC 3339 (2026-01-01T00:00:00Z)`},{name:`dateTo`,type:`string`,required:!0,description:`Hasta, RFC 3339 (máx 60 dÃas después)`},{name:`assignmentId`,type:`string`,required:!1,description:`Contexto BaaS (opcional)`}],output:{structuredContent:`{ result }`,description:`result = respuesta del API bancario con request_id y status. La herramienta solicita el documento sin notificación por correo.`},api_endpoint:`POST /api/public/v1/accounts/statements`},{name:`baas_get_statement_status`,title:`Estado de la solicitud de estado de cuenta`,description:`Consulta el estado de una solicitud de estado de cuenta BaaS. Cuando está DONE incluye el enlace de descarga firmado y su vencimiento.`,access:`read`,params:[{name:`requestId`,type:`string`,required:!0,description:`request_id devuelto al solicitarlo`},{name:`assignmentId`,type:`string`,required:!1,description:`Contexto BaaS (opcional)`}],output:{structuredContent:`{ result }`,description:`result = respuesta del API bancario tal cual.`},api_endpoint:`GET /api/public/v1/accounts/statements/{request_id}`},{name:`baas_analyze_payments`,title:`Analista de pagos BaaS`,description:`Analiza (solo lectura) los pagos BaaS de una cuenta en un rango de fechas y devuelve un informe en lenguaje natural: éxito, fallas, reversiones, montos netos y recomendaciones verificables.`,access:`read`,params:[{name:`accountType`,type:`string`,required:!1,enum:[`IBAN`],description:`Esquema del identificador (IBAN)`},{name:`accountValue`,type:`string`,required:!0,description:`Identificador de la cuenta (IBAN)`},{name:`dateFrom`,type:`string`,required:!0,description:`Desde, RFC 3339`},{name:`dateTo`,type:`string`,required:!0,description:`Hasta, RFC 3339`},{name:`currency`,type:`string`,required:!1,description:`Moneda ISO 4217`},{name:`direction`,type:`string`,required:!1,enum:[`OUT`,`IN`]},{name:`question`,type:`string`,required:!1,description:`Enfoque especÃfico del análisis`},{name:`maxItems`,type:`integer`,required:!1,description:`Máximo de pagos (por defecto 300)`},{name:`assignmentId`,type:`string`,required:!1,description:`Contexto BaaS (opcional)`}],output:{structuredContent:`{ summary }`,description:`summary trae account, range, totals {count, succeeded, failed, reversed, pending, successRate}, byCurrency con succeededAmount, reversedAmount, netAmount y averageTicket, failureReasons y sample. El informe redactado viene en el texto. Si no hay pagos en el rango, avisa y no analiza.`}},{name:`baas_validate_destination`,title:`Validar cuenta destino BaaS`,description:`Valida una cuenta destino antes de transferir: PHONE para SINPE Móvil o IBAN para transferencia a cuenta. Devuelve el nombre del titular que el banco confirma.`,access:`read`,params:[{name:`accountType`,type:`string`,required:!0,enum:[`PHONE`,`IBAN`],description:`Esquema del identificador: PHONE para SINPE Móvil, IBAN para cuenta.`},{name:`accountValue`,type:`string`,required:!0,description:`Número de teléfono E.164 o IBAN`},{name:`assignmentId`,type:`string`,required:!1,description:`Contexto BaaS (opcional)`}],output:{structuredContent:`{ result }`,description:`result = datos que devuelve el API bancario sobre la cuenta destino (titular, tipo de cuenta, moneda y estado) antes de enviar una transferencia. No mueve dinero.`},api_endpoint:`POST /api/public/v1/accounts/validate`},{name:`baas_send_transfer`,title:`Enviar transferencia BaaS`,description:`EnvÃa una transferencia desde la cuenta bancaria del comercio. Método por defecto: SINPE Móvil (destino por teléfono). Para transferencia a cuenta use accountType=IBAN. Requiere código de 6 dÃgitos por correo. Valida lÃmites por transferencia y acumulado diario.`,access:`destructive`,params:[{name:`amount`,type:`number`,required:!0,description:`Monto a transferir`},{name:`currency`,type:`string`,required:!0,description:`Moneda ISO 4217 (CRC, USD)`},{name:`contactName`,type:`string`,required:!1,description:`Nombre del c
18042ontacto guardado (busca su teléfono/IBAN)`},{name:`destinationAccountType`,type:`string`,required:!1,enum:[`PHONE`,`IBAN`],description:`PHONE = SINPE Móvil (por defecto), IBAN = transferencia a cuenta`},{name:`destinationAccountValue`,type:`string`,required:!1,description:`Teléfono E.164 o IBAN del destino (si no se usa contactName)`},{name:`destinationName`,type:`string`,required:!1,description:`Nombre del destinatario (si no se valida via contacto)`},{name:`detailReference`,type:`string`,required:!1,description:`Descripción del pago (si se omite, se genera una)`},{name:`assignmentId`,type:`string`,required:!1,description:`Contexto BaaS (opcional)`},{name:`confirmation_code`,type:`string`,required:!1,description:`Código de 6 dÃgitos del correo (segundo factor)`}],output:{structuredContent:`{ result: { payment, clientReference, detailReference, destinationName, destinationAccount } }`,description:`EnvÃa una transferencia desde una cuenta BaaS del comercio: payment = el pago creado con su payment_id y estado; clientReference y detailReference = referencias para conciliar; destinationName y destinationAccount = a quién y a qué cuenta se envió. Valida la cuenta destino antes y exige código de confirmación por correo.`},api_endpoint:`POST /api/public/v1/transactions/payments`},{name:`baas_get_transfer_status`,title:`Estado de transferencia BaaS`,description:`Consulta el estado actual de una transferencia por su payment_id (solo lectura).`,access:`read`,params:[{name:`paymentId`,type:`string`,required:!0,description:`UUID interno del pago`},{name:`assignmentId`,type:`string`,required:!1,description:`Contexto BaaS (opcional)`}],output:{structuredContent:`{ result }`,description:`result = estado actual de la transferencia consultada por su payment_id (estado, resultado, monto, moneda, destino y fecha).`},api_endpoint:`GET /api/public/v1/transactions/payments/{payment_id}`}]}],notes:[`Las salidas se derivaron del código del servidor: el manifiesto trae outputSchema en null.`,`Toda herramienta con api_endpoint devuelve la respuesta del API de Tilopay tal cual, asà que su página puede enlazar a la operación correspondiente del portal.`,`Los endpoints /api/v1/collect/** que usan las herramientas de cobros masivos no están documentados hoy en el portal de API, asà que no se publican como referencia.`,`Las herramientas de perfil, microtienda, pedidos, avisos, comprobantes, recordatorios y el paso a paso de planes no llaman al API de Tilopay: usan datos del propio motor, las guÃas públicas o un modelo de lenguaje.`,`Las herramientas del grupo Herramientas bancarias se activan bajo solicitud y sólo funcionan para usuarios con credenciales del API bancario de Tilopay registradas: sin esas credenciales la herramienta responde que no existen.`,`Las operaciones sensibles (modificar una transacción, cobrar o eliminar una tarjeta guardada, borrar planes, productos o enlaces, y enviar una transferencia bancaria) exigen un código de confirmación que llega al correo del comercio.`]};`${Q.server.public_host}${Q.server.mcp_path}`,Q.groups;var yO=Q.groups.flatMap(e=>e.tools.map(t=>({...t,group:e.slug})));Q.access_legend;var bO=[`ventas`,`enlaces-de-pago`,`catalogo`,`contactos`,`perfil`,`microtienda`,`avisos`,`comprobantes`,`recordatorios`,`recurrentes`,`tarjetas-guardadas`,`soporte`,`api-bancario`];function xO(e){return bO.includes(e)}var SO=bO.map(e=>Q.groups.find(t=>t.slug===e)).filter(e=>!!e);function CO(e){return Q.groups.find(t=>t.slug===e)??null}function wO(e){return!e.includes(`/collect/`)}var TO=[`api-bancario`],EO={baas_list_assignments:`otras-operaciones`,baas_diagnostics:`otras-operaciones`,baas_list_accounts:`otras-operaciones`,baas_get_balance:`otras-operaciones`,baas_get_statement_status:`otras-operaciones`},DO={"otras-operaciones":{title:{es:`Otras operaciones`,en:`Other BaaS operations`},description:{es:`Contextos (assignments), diagnóstico de credenciales, listado de cuentas, saldo de una cuenta y estado de una solicitud de estado de cuenta.`,en:`Assignments, credential diagnostics, account listing, balance of one account and status of a statement request.`}}};function OO(e,t){return`agentes/mcp/${e}/${EO[t]??t.replace(/^baas_/,``).replace(/_/g,`-`)}`}function kO(e){return TO.includes(e)}var AO={ventas:`Sales and transactions`,"enlaces-de-pago":`Payment links`,catalogo:`Catalog`,contactos:`Contacts`,perfil:`Business profile and recipes`,microtienda:`Micro-store and orders`,avisos:`Alerts and notifications`,comprobantes:`Payment receipts`,recordatorios:`Reminders`,recurrentes:`Recurring billing`,"tarjetas-guardadas":`Stored cards and bulk collections`,soporte:`Support and diagnostics`,"api-bancario":`Banking tools`},jO={tilopay_list_transactions:{title:`List Tilopay transactions`,description:`Queries Tilopay transactions in a date range. It can filter by currency, order number,
18042customer email and environment.`,output:`total = rows found before applying limit; transactions = the rows returned; environmentNote warns when the queried environment returned no rows.`,params:{startDate:`Start date, e.g. "2026-08-01 00:00:00"`,endDate:`End date, e.g. "2026-08-31 23:59:59"`,status:`approved = only approved, declined = only declined, all = all`,sort:`newest = most recent first`,onlyAproved:`Compatibility: false is equivalent to status: "all"`,environment:`Environment, production by default`,currency:`Currencies, e.g. ["USD","CRC"]`,orderNumber:`Filter by order number`,email:`Filter by customer email`,limit:`Maximum rows to return (100 by default, 500 maximum)`}},tilopay_get_transaction:{title:`Get one transaction`,description:`Returns the detail of a specific transaction from its order number.`,output:"Raw Tilopay API response under the `result` key.",params:{orderNumber:`Order number of the transaction`,merchantId:`Merchant ID (optional)`}},tilopay_sales_summary:{title:`Sales summary and trends`,description:`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.`,output:`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.`,params:{startDate:`Start date "YYYY-MM-DD HH:mm:ss"`,endDate:`End date "YYYY-MM-DD HH:mm:ss"`,includeDeclined:`Include declined transactions to measure the approval rate (true by default)`}},tilopay_analyze_sales:{title:`Sales analyst agent`,description:`Agent that analyses the transactions in a date range and returns a natural-language report: performance, trends, seasonality, approval quality, risks and actionable recommendations.`,output:`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.`,params:{startDate:`Start date "YYYY-MM-DD HH:mm:ss"`,endDate:`End date "YYYY-MM-DD HH:mm:ss"`,question:`Specific question or focus for the analysis`}},tilopay_modify_transaction:{title:`Capture, refund or reverse`,description:`Modifies a transaction: capture, refund or reversal for the given amount. Sensitive operation: it moves real money.`,output:"Raw Tilopay API response under the `result` key.",params:{orderNumber:`Order number of the transaction`,action:`Type of modification`,amount:`Amount to modify, greater than zero`,confirmation_code:`6-digit code received by email to authorize the operation`}},tilopay_create_payment_link:{title:`Create payment link`,description:`Creates a payment link to charge a specific amount.`,output:`result is the raw response; linkId and url are the id and the URL of the link already extracted. When webhook_url is not sent, the server sets one of its own so it can report the payment.`,params:{amount:`Amount to charge, greater than zero`,reference:`Internal reference for the charge`,description:`Description of the charge`,currency:`Currency, e.g. USD or CRC (USD by default)`,client:`Customer name`,client_email:`Customer email`,client_phone:`Customer phone`,type:`Link type (0 by default)`,callback_url:`Return URL after the payment`,webhook_url:`Notification webhook URL`}},tilopay_get_payment_link:{title:`Payment link detail`,description:`Returns the detail of a payment link by its ID.`,output:"Raw Tilopay API response under the `result` key.",params:{linkPaymentId:`Payment link ID`}},tilopay_delete_payment_link:{title:`Delete payment link`,description:`Deletes a payment link by its ID.`,output:"Raw Tilopay API response under the `result` key.",params:{id:`ID of the payment link to delete`,confirmation_code:`6-digit code received by email to authorize the operation`}},tilopay_send_payment_link_whatsapp:{title:`Send payment link over WhatsApp`,description:`Prepares sending the payment link over WhatsApp: it returns a wa.me link with the message ready. It accepts the name of a saved contact or a phone number.`,output:`It does not send the message: it returns the resolved phone, the drafted text and a wa.me link to send it with one tap. When there is no phone and no saved contact with that name, it returns an error asking for it. It saves the contact unless save_contact is false.`,params:{link_url:`Payment link URL`,contact_name:`Name of the saved contact or of the customer`,phone:`WhatsApp phone, e.g. +50688887777`,message:`Your own message text`,save_contact:`Save the contact in the address book`,send_now:`Deprecated: ignored. The wa.me link is always returned.`}},tilopay_send_payment_link_email:{title:`Send payment link over email`,description:`Emails the payment link to the customer. It accepts the name of a saved contact or an email address.`,output:`sent is true and to is the address it was sent to. When there is no email and no saved contact with that name, it returns an error asking for it.`,params:{link_url:`Payment link URL`,email:`Recipient email`,contact_name:`Name of the saved contact or of the customer`,message:`Additional note for the customer`,save_contact:`Save the contact in the address book`}},tilopay_catalog_list_items:{title:`List catalog of products or services`,description:`Lists the products or services in the payment links catalog.`,output:"Raw Tilopay API response under the `result` key.",params:{limit:`Maximum items (50 by default, 500 maximum)`}},tilopay_catalog_get_item:{title:`Catalog item detail`,description:`Returns the detail of a catalog product or service by its ID.`,output:"Raw Tilopay API response under the `result` key.",params:{itemId:`Catalog item ID`}},tilopay_list_contacts:{title:`View contacts`,description:`Lists the merchant's saved contacts; it can filter by name.`,output:`List of the merchant's saved contacts.`,params:{search:`Text to search in the name`}},tilopay_save_contact:{title:`Save contact`,description:`Saves or updates a merchant contact (name, WhatsApp phone and email) to reuse it when sending links.`,output:`The saved or updated contact.`,params:{name:`Contact name`,phone:`WhatsApp phone, e.g. +50688887777`}},tilopay_delete_contact:{title:`Delete contact`,description:`Deletes a saved merchant contact by its name.`,output:`removed is true. When no contact exists with that name, it returns an error.`,params:{name:`Contact name`}},tilopay_help_guides:{title:`Help from Tilopay guides and tutorials`,description:`Answers questions about using the Tilopay dashboard with the official guides at tilopay.com/guias. It returns excerpts and the links to those guides.`,output:`Up to 3 articles with title, url and excerpt, taken from tilopay.com/guias. With no match it returns an empty articles list and a text with the available guides.`,params:{question:`The merchant's question, as written`}},tilopay_diagnostics:{title:`Tilopay connection diagnostics`,description:`Verifies the user credentials and tests one endpoint of each group (sales and transactions, catalog, recurring, stored cards). Useful when a tool fails, to know which part of the API is responding.`,output:`checks is a list with check, ok and detail for each test: credentials, transactions, catalog, recurring and stored cards. failed is the number of failing tests. Credentials come back masked.`,params:{environment:`Environment for the transactions test (production by default)`}},tilopay_recurring_list_plans:{title:`List recurring plans`,description:`Lists the recurring billing plans configured in Tilopay.`,output:"Raw Tilopay API response under the `result` key."},tilopay_recurring_get_plan:{title:`Recurring plan detail`,description:`Returns the detail of a recurring billing plan by its ID.`,output:"Raw Tilopay API response under the `result` key.",params:{id:`Plan ID`}},tilopay_recurring_get_subscriber:{title:`Subscriber detail`,description:`Returns the detail of a subscriber of a recurring plan by its ID.`,output:"Raw Tilopay API response under the `result` key.",params:{id:`Subscriber ID`}},tilopay_recurring_subscriber_payments:{title:`Subscriber payments`,description:`Lists the payments made by a recurring subscriber.`,output:"Raw Tilopay API response under the `result` key.",params:{id:`Subscriber ID`}},tilopay_recurring_manage_subscriber:{title:`Pause, reactivate or delete a subscriber`,description:`Pauses, reactivates or deletes a subscriber of a recurring plan in Tilopay. Sensitive operation: it affects future charges.`,output:`Raw response of the endpoint matching the action: pause, reactivate or delete.`,params:{idSubscriber:`Subscriber ID`,action:`Action to perform`,confirmation_code:`6-digit code received by email to authorize the operation`}},tilopay_saved_cards_list_groups:{title:`List collection groups`,description:`Lists the collection groups with stored cards (affiliates) in Tilopay.`,output:"Raw Tilopay API response under the `result` key."},tilopay_saved_cards_list_affiliates:{title:`List affiliates with a stored card`,description:`Lists the affiliates (customers with a stored card) of a collection group.`,output:"Raw Tilopay API response under the `result` key.",params:{group:`Group ID (0 for all)`}},tilopay_saved_cards_list_collections:{title:`List bulk collections`,description:`Lists the bulk collections made with stored cards in Tilopay.`,output:"Raw Tilopay API response under the `result` key."}
18042,tilopay_saved_cards_collection_detail:{title:`Bulk collection detail`,description:"Returns the detail of a bulk collection. It requires the collection `code` (the `code` field returned by tilopay_saved_cards_list_collections).",output:"Raw Tilopay API response under the `result` key.",params:{code:"Bulk collection code (the `code` field of the collections list)"}},tilopay_saved_cards_create_payments:{title:`Charge stored cards`,description:`Creates charges to affiliates and/or groups with stored cards in Tilopay. Sensitive operation: it moves real money.`,output:"Raw Tilopay API response under the `result` key.",params:{reason:`Reason for the charge, e.g. "Monthly fee"`,capture:`Capture immediately (true by default)`,users:`Individual affiliates to charge. Each item: id (string, required), amount (number, required, greater than zero), currency (string, required), date (string "YYYY-MM-DD", empty = immediate)`,groups:`Groups to charge. Each item: id (string, required), amount per affiliate (number, required, greater than zero), currency (string, required), date (string "YYYY-MM-DD", empty = immediate)`,confirmation_code:`6-digit code received by email to authorize the operation`}},tilopay_debug_code:{title:`Debug code`,description:`Analyses a code snippet or stack trace sent by the user and returns a diagnosis, root cause, a concrete fix and risks. It does not read repositories and does not run code.`,output:`report is the diagnosis in text (diagnosis, root cause, fix and risks). truncated says whether the code was cut down to 12,000 characters; redacted, whether possible credentials were hidden before the analysis; model, the model used. It does not read repositories and does not run the code.`,params:{code:`Code snippet, log or stack trace as the user sent it`,error:`Error message or observed behaviour, if any`,language:`Language or stack (e.g. typescript, php, react). Detected when not given`,context:`What the code should do or when it fails`}},baas_list_assignments:{title:`Banking API contexts (assignments)`,description:`Lists the tenant/account contexts (assignments) available for the user's banking API credentials. Use it when another tool asks for assignmentId.`,output:`assignments = available contexts with assignment_id, tenant_code, owner_type, country_code and status.`},baas_diagnostics:{title:`Banking API diagnostics`,description:`Checks the user's banking API credentials, the login, the token exchange and access to accounts. Use it when a query fails.`,output:`checks = one row per check (credentials, login + assignments, accounts) with ok and detail; failed = how many failed. The credential email comes back masked.`,params:{assignmentId:`Banking API context (assignment); only needed when there are several`}},baas_list_accounts:{title:`List banking API accounts`,description:`Lists the accessible banking API accounts, without balances: identifier type, value and currency.`,output:`result = the banking API response as returned.`,params:{accountType:`Filter by scheme (IBAN)`,accountValue:`Filter by identifier`,limit:`Page size, between 1 and 100`,cursor:`Cursor from the previous page`,assignmentId:`Banking API context (assignment); only needed when there are several`}},baas_list_balances:{title:`Banking API account balances`,description:`Lists the real-time balances of the accessible accounts: account, amounts and cut-off date.`,output:`result = the banking API response as returned.`,params:{accountType:`Filter by scheme (IBAN)`,accountValue:`Filter by identifier`,limit:`Page size, between 1 and 100`,cursor:`Cursor from the previous page`,assignmentId:`Banking API context (assignment); only needed when there are several`}},baas_get_balance:{title:`Balance of one account`,description:`Gets the current balance of a banking API account identified by IBAN.`,output:`result = the banking API response as returned.`,params:{accountType:`Identifier scheme (IBAN)`,accountValue:`Account identifier (IBAN)`,assignmentId:`Banking API context (assignment); only needed when there are several`}},baas_list_payments:{title:`List banking API payments`,description:`Reads the payments of an owned account identified by IBAN, with date, status, currency, method and direction filters. Cursor pagination.`,output:`result = the banking API response as returned, with its pagination cursor.`,params:{accountType:`Identifier scheme (IBAN)`,accountValue:`Account identifier (IBAN)`,assignmentId:`Banking API context (assignment); only needed when there are several`,dateFrom:`From, RFC 3339 (2026-01-01T00:00:00Z)`,dateTo:`To, RFC 3339`,status:`Public payment status`,currency:`ISO 4217 currency (CRC, USD)`,paymentMethodCode:`Payment method`,direction:`OUT = sent, IN = received`,clientReference:`Merchant reference`,limit:`Page size, 100 maximum (20 by default)`,cursor:`Cursor from the previous page`}},baas_search_payment:{title:`Find a payment`,description:`Finds a payment inside an account by exactly one of: paymentId (UUID), publicId (number) or clientReference. Sending more than one returns an error.`,output:`result = the banking API response as returned.`,params:{accountType:`Identifier scheme (IBAN)`,accountValue:`Account identifier (IBAN)`,assignmentId:`Banking API context (assignment); only needed when there are several`,paymentId:`Internal payment UUID`,publicId:`Numeric public identifier`,clientReference:`Merchant reference`}},baas_get_payment:{title:`Payment detail`,description:`Gets the detail of a banking API payment from its internal UUID, read only.`,output:`result = the banking API response as returned.`,params:{paymentId:`Internal payment UUID`,assignmentId:`Banking API context (assignment); only needed when there are several`}},baas_request_statement:{title:`Request an account statement`,description:`Requests the generation of an account statement for a banking API account, with a 60-day maximum range. It moves no money: it generates a read-only document and returns request_id with status PENDING.`,output:`result = the banking API response with request_id and status. The tool requests the document without email notification.`,params:{accountType:`Identifier scheme (IBAN)`,accountValue:`Account identifier (IBAN)`,assignmentId:`Banking API context (assignment); only needed when there are several`,dateFrom:`From, RFC 3339 (2026-01-01T00:00:00Z)`,dateTo:`To, RFC 3339, at most 60 days after dateFrom`}},baas_get_statement_status:{title:`Statement request status`,description:`Reads the status of an account statement request. When it is DONE it includes the signed download link and its expiry.`,output:`result = the banking API response as returned.`,params:{requestId:`request_id returned when the statement was requested`,assignmentId:`Banking API context (assignment); only needed when there are several`}},baas_analyze_payments:{title:`Banking API payments analyst`,description:`Analyses, read only, the payments of an account in a date range and returns a natural-language report: success, failures, reversals, net amounts and recommendations. It runs a language model over the computed figures.`,output:`summary carries account, range, totals {count, succeeded, failed, reversed, pending, successRate}, byCurrency with succeededAmount, reversedAmount, netAmount and averageTicket, failureReasons and sample. The written report comes in the text. With no payments in the range it says so and does not analyse.`,params:{accountType:`Identifier scheme (IBAN)`,accountValue:`Account identifier (IBAN)`,assignmentId:`Banking API context (assignment); only needed when there are several`,dateFrom:`From, RFC 3339`,dateTo:`To, RFC 3339`,currency:`ISO 4217 currency`,direction:`OUT = sent, IN = received`,question:`Specific focus for the analysis`,maxItems:`Maximum payments to analyse, between 1 and 1000 (300 by default)`}},tilopay_catalog_create_item:{title:`Create a catalog product or service`,description:`Creates a product or service in the Tilopay catalog (it becomes a reusable payment link with its price and description).`,output:`result = the raw API response; linkId = id of the payment link representing the product; url = the product's charge link.`,params:{name:`Product or service name`,amount:`Price`,currency:`Currency, e.g. CRC or USD. If omitted, the merchant's country currency is used.`,description:`Product or service description`}},tilopay_catalog_update_item:{title:`Change a catalog product`,description:`Changes the name, price, currency or description of a catalog product. The Tilopay API does not allow in-place editing: the product is created with the new data and the old one is deleted, so the old product's link stops working. Confirm with the merchant before using it.`,output:`The API does not allow editing a link: the tool creates the new product and deletes the previous one. replaced = id of the product that was replaced; linkId and url = those of the new product.`,params:{item_id:`ID of the product to change`,name:`New name (or the same one)`,amount:`New price (or the same one)`,currency:`Currency; if omitted, the merchant's country currency`,description:`New description (or the same one)`}},tilopay_catalog_delete_item:{title:`Delete a catalog product`,description:`Deletes a product or service from the catalog by its ID. Its link stops working. Confirm with the merchant before using it.`,output:`result = API response deleting the payment link representing the product.`,params:{item_id:`ID of the product to delete`}},tilopay_get_business_profile:{title:`View business profile`,description:`Returns the merchant's business profile (business type, products, channels, charge pattern and goal) and the next pending onboarding question (up to 4).`,output:`profile = the saved business profile (or null if there is none); next_question = the next pending onboarding question; total_questions = how many questions the questionnaire has; is_complete = whether the profile is already complete.`},tilopay_save_business_profile:{title:`Save business profile`,description:`Saves or completes the business profile with what the merchant answered. It can save one field at a time; fields that are not sent are kept.`,output:`profile = the already updated profile (fields that are not sent are kept); next_question = the next pending question; is_complete = whether the profile became complete with this save.`,params:{business_type:`What the business does`,main_products:`Main products or services`,sales_channels:`Sales channels:
18042in-store, online, social media, WhatsApp`,ticket_pattern:`What the charges look like: amounts, frequency, currency`,goals:`What the merchant wants to improve`,notes:`Additional useful details`}},tilopay_recommend_automations:{title:`Recipes and automations`,description:`Returns suggested recipes and automations for the merchant based on their business profile and the active MCP modules.`,output:`recipes = suggested recipes and automations based on the business profile and active modules (includes banking ones only when the user has BaaS enabled); profile_complete and next_question indicate whether the profile still needs completing.`,params:{limit:`How many recipes to return (5 by default)`}},tilopay_store_create:{title:`Create a micro-store with cart`,description:`Creates a micro-store link to share with a customer: it shows the catalog products, the customer builds a cart and pays at the end from the same page with a link that includes the cart detail. By default it includes the whole catalog; it can be limited to certain product IDs.`,output:`slug = the micro-store identifier; url = public store link with cart; items = how many catalog products were included.`,params:{title:`Visible store title`,item_ids:`Catalog product IDs to show; if omitted, the whole catalog is shown`}},tilopay_store_list:{title:`List active micro-stores`,description:`Lists the merchant's active micro-stores with their sharing link.`,output:`stores = active micro-stores with slug, title, public link and the product ids each one includes.`},tilopay_store_delete:{title:`Disable a micro-store`,description:`Disables a micro-store by its slug: the link stops opening. Confirm with the merchant before using it.`,output:`Disables the micro-store: the link stops showing products. active is set to false; the catalog products are not deleted.`,params:{slug:`Store slug (the end of its link)`}},tilopay_orders_setup:{title:`Turn on or configure order management`,description:`Turns on order tracking for the micro-store and saves the store name, the logo and the time of the daily reminder for paid, undelivered orders. It is also used to change any of that data later. The logo can be an https link to an image or the image the merchant just sent over WhatsApp (pass the reference shown in the message).`,output:`Leaves order management on and returns the resulting configuration: the store name customers see, whether a logo is loaded and the time of the daily pending-orders reminder.`,params:{store_name:`Visible store name`,logo:`https link of the logo image, or the reference of the image sent over WhatsApp`,reminder_time:`Local time of the daily reminder in HH:mm format (e.g. "18:00"); empty disables it`}},tilopay_orders_settings:{title:`View store and order settings`,description:`Shows whether order management is on, the store name, whether there is a logo and the time of the daily reminder.`,output:`Current store and order configuration, without changing anything.`},tilopay_orders_status:{title:`Order summary`,description:`Summary of the micro-stores' orders: how many are pending payment, how many are paid and undelivered (with their amount) and how many were delivered today.`,output:`Order summary: how many are pending payment, paid and undelivered, and delivered, with the period's amounts.`},tilopay_orders_list:{title:`List orders`,description:`Lists the micro-stores' orders with their code, customer, total and detail. It can be filtered by status (pending = pending payment, paid = paid and undelivered, delivered = delivered) and by the last days.`,output:`orders = orders with code, customer, total, currency, status and date. It can be filtered by status (pending, paid, delivered, all) and by the last days.`,params:{status:`Order status; all by default`,days:`Only orders from the last N days`}},tilopay_orders_pending:{title:`Paid, undelivered orders`,description:`Lists the orders already paid that have not been delivered yet. This is the tool used by the daily reminder.`,output:`pending = how many orders are paid and undelivered; orders = those orders with code, customer, total and currency.`},tilopay_order_mark_delivered:{title:`Mark an order as delivered`,description:`Marks one or several orders as delivered. It accepts the order
18042code (e.g. "#A3F2", even several in the same message) or the customer name.`,output:`delivered = how many orders were marked as delivered; missing = the codes that were not found.`,params:{code:`Order code, e.g. "#A3F2"; several can be given`,client:`Customer name of the order`}},tilopay_orders_disable:{title:`Turn off order management`,description:`Turns off order tracking and cancels the daily reminder. Already registered orders are kept. Ask for an explicit yes before using it.`,output:`Turns off order management. Already registered orders are kept.`},tilopay_get_notification_settings:{title:`View notification settings`,description:`Shows how the merchant's notifications are configured: whether payments received are notified over WhatsApp and/or email, which email, from which amount and whether there is a quiet-hours window.`,output:`settings = the merchant's notification configuration: which WhatsApp notifications are on (approved charges, failed charges, daily summary, orders) and what time the daily summary is sent.`},tilopay_set_notification_settings:{title:`Configure the merchant's notifications`,description:`Changes the merchant's notification settings: turn on or off the payment-received notification over WhatsApp and email, the destination email, the minimum amount to notify and the quiet-hours window (in the merchant's local time). Only send the fields the user asked to change.`,output:`settings = the already updated notification configuration. Fields that are not sent are kept.`,params:{payment_whatsapp:`Notify over WhatsApp when a payment is received`,payment_email:`Notify over email when a payment is received`,notify_email:`Email that receives the notifications (if omitted, the account's)`,min_amount:`Minimum amount to notify (0 = notify for any amount)`,quiet_from:`Local time when the quiet window starts (null to remove it)`,quiet_to:`Local time when the quiet window ends (null to remove it)`}},tilopay_list_receipts:{title:`List payment receipts`,description:`Lists the merchant's latest payment receipts (amount, customer, order and code). Each one has an image ready to resend to the customer. It does not charge anything.`,output:`receipts = payment receipts with code, amount, currency, customer, order number, payment date, receipt page link and image link.`,params:{limit:`How many receipts to list (5 by default)`}},tilopay_send_receipt:{title:`Resend a payment's receipt to the customer`,description:`Prepares resending a payment's receipt over WhatsApp: it returns a wa.me link with the message and the receipt image ready. If no code is given, it uses the most recent receipt. Use send_now only if the user asks for it to be sent directly.`,output:`Resends the receipt to the customer over WhatsApp: it returns the receipt code, its page link, the image link and, when not sent directly, the wa.me link ready to open.`,params:{code:`Receipt code (8 characters)`,contact_name:`Name of the saved contact or of the customer`,phone:`WhatsApp phone, e.g. +50688887777`,message:`Your own text to go along with the receipt`,save_contact:`Save the contact in the address book`,send_now:`true sends the receipt directly to the customer; by default the wa.me link is delivered`}},tilopay_create_reminder:{title:`Create reminder`,description:"Creates a WhatsApp reminder, one-off or recurring (daily, weekly or monthly). It can be plain text or run an agent action when sent (with `action`): sales summary, today's transactions, pending links, BaaS balances, etc. If the reminder is meant to send a payment or charge link, it ALWAYS reaches the WhatsApp of the merchant who requested it, never the customer. In other cases it is sent to the merchant's WhatsApp or to an already saved contact (contact_name); if the user gives a new phone number, it must be saved first with tilopay_save_contact. Maximum 20 active reminders. The message is sent with a fixed prefix identifying the merchant. Times are in the merchant's local time (based on their WhatsApp phone's country).",output:`The created reminder: when it is sent in the merchant's local time, to which number, and what agent action runs when it is sent. Maximum 20 active reminders; charge-link ones always reach the merchant's WhatsApp, never the customer's.`,params:{message:`Reminder text (max. 500 characters, no HTML)`,action:`Instru
18042ction the agent will run when sending it, in natural language, e.g. 'give me today's sales summary' or 'list pending payment links'. The result is attached to the message. Omit it for a plain-text reminder.`,schedule:`Frequency: once = one time only`,when:`Only for once: local date and time 'YYYY-MM-DD HH:mm'`,time_of_day:`For recurring ones: local time 'HH:mm'`,weekday:`For weekly: 0 = Sunday ... 6 = Saturday`,day_of_month:`For monthly: day of the month (1-28)`,contact_name:`Name of an already saved contact (mcp_contact) who should receive it. If omitted, it reaches the merchant's WhatsApp. New phone numbers are not accepted: save them first with tilopay_save_contact.`}},tilopay_list_reminders:{title:`View reminders`,description:`Lists the merchant's active reminders with their next send date.`,output:`reminders = the merchant's reminders with their message, frequency, next run in local time and whether they are active.`,params:{include_inactive:`true to include those already sent or cancelled`}},tilopay_cancel_reminder:{title:`Cancel reminder`,description:`Cancels a reminder by its ID or by searching part of its text. It does not delete the history, it just stops being sent.`,output:`cancelled = the reminder that was deactivated.`,params:{id:`Reminder ID`,search:`Part of the reminder's text`}},tilopay_recurring_failed_payments:{title:`Failed recurring charges`,description:`Lists the latest recurring charges that failed (plan, subscriber, amount, date and reason). One call is enough.`,output:`failures = declined recurring charges, with plan, subscriber, amount, currency and decline reason; total = how many were found; source = the API route they were obtained from. It combines the query of plans, subscribers and their payments.`,params:{limit:`Maximum charges (10 by default)`,startDate:`From, "YYYY-MM-DD HH:mm:ss"`,endDate:`To, "YYYY-MM-DD HH:mm:ss"`}},tilopay_recurring_create_plan:{title:`Create subscription plan`,description:`Creates a recurring billing plan (subscription) in Tilopay with its title, currency, frequency and modalities (name and amount). Returns the ID of the created plan; then use tilopay_recurring_subscription_url to get the link customers use to subscribe.`,output:`result = API response with the created plan; currency and frequency = the currency and frequency the plan ended up with.`,params:{title:`Plan title`,modality:`Plan modalities (at least one): name and amount per cycle`,frequency:`Charge frequency`,description:`Plan description`,currency:`ISO 4217 currency, e.g. USD or CRC. If omitted, the merchant's country currency is used.`,first_amount:`Amount of the initial payment (0 if there is none)`,trial_days:`Free trial days (0 if there is no trial)`,attempts:`Retries on a failed charge (1 by default)`,end_at:`Plan end date in DD-MM-YYYY format (optional)`,thanks_url:`Thank-you URL after subscribing (optional)`,webhook_subscribe:`Webhook when a customer subscribes (optional)`,webhook_payment:`Webhook when a payment is charged (optional)`,webhook_rejected:`Webhook when a charge is declined (optional)`,webhook_unsubscribe:`Webhook when a subscription is cancelled (optional)`,webhook_reactive:`Webhook when a subscription is reactivated (optional)`}},tilopay_recurring_edit_plan:{title:`Edit subscription plan`,description:`Modifies an existing recurring billing plan: title, description, frequency, currency, amount per cycle (modality), initial payment, free trial, retries, status or end date. First check tilopay_recurring_get_plan to know the current values.`,output:`result = API response editing the plan. Fields that are not sent are kept.`,params:{id:`Plan ID`,title:`Plan title`,frequency:`Charge frequency`,modality:`Modalities with their amount per cycle; send them when the plan price changes`,currency:`ISO 4217 currency`,description:`Plan description`,first_amount:`Amount of the initial payment`,trial_days:`Free trial days`,attempts:`Retries on a failed charge`,status:`Status: inactive, active or closed_to_new (active with no new sign-ups)`,end_at:`Plan end date in DD-MM-YYYY format (optional)`,thanks_url:`Thank-you URL`,webhook_subscribe:`Webhook on subscribe`,webhook_payment:`Webhook when a payment is charged`,webhook_rejected:`Webhook when a charge is declined`,webhook_unsubscribe:`Webhook on cancellation`,webhook_reactive:`Webhook on reactivation`}},tilopay_recurring_delete_plan:{title:`Delete subscription plan`,description:`Deletes a recurring billing plan in Tilopay. It affects the plan's future charges: confirm with the merchant before running it.`,output:`result = API response deleting the plan. The plan's subscribers stop being charged.`,params:{id:`Plan ID`}},tilopay_recurring_subscription_url:{title:`Subscription link for a plan`,description:`Returns the link a customer uses to sign up for a recurring plan (or renew it if the email is already subscribed). Deliver the full URL, without shortening it.`,output:`url = subscription link for the plan, to share with the customer; result = the raw API response.`,params:{id:`Plan ID`,email:`Customer email;
18042 if already subscribed it returns the renewal link`}},tilopay_recurring_edit_subscriber:{title:`Edit a plan's subscriber`,description:`Changes a subscriber's status (active, paused or deleted) and/or its expiration date. It affects future charges: confirm with the merchant before running it.`,output:`result = API response editing the subscriber's data (email, phone, amount or expiration date, depending on the plan).`,params:{id:`Subscriber ID`,status:`New subscriber status`,expire:`Plan expiration date for that subscriber in YYYY-MM-DD format`}},tilopay_recurring_create_coupon:{title:`Create discount coupon`,description:`Creates a discount coupon for a subscription plan: percentage or fixed amount, expiration date, allowed emails and usage limits.`,output:`result = API response with the discount coupon created for the plan.`,params:{planId:`Recurring plan ID`,discount_type:`Discount type: percentage or fixed`,discount:`Discount value`,expire:`Coupon expiration date in YYYY-MM-DD format`,allow_existing_users:`true if already registered customers can also use it (false = new customers only)`,emails:`Authorized emails; if omitted, any email can use it`,usage:`Total number of uses`,renews:`Renewals valid with the coupon`,renews_by_user:`Uses per single customer`}},tilopay_recurring_list_coupons:{title:`A plan's coupons`,description:`Lists the discount coupons associated with a subscription plan.`,output:`result = the plan's coupons as returned by the API.`,params:{planId:`Recurring plan ID`}},tilopay_recurring_get_coupon:{title:`Coupon detail`,description:`Returns the detail of a discount coupon by its ID.`,output:`result = coupon detail as returned by the API.`,params:{id:`Coupon ID`}},tilopay_recurring_delete_coupon:{title:`Delete a coupon`,description:`Deletes a discount coupon of a subscription plan.`,output:`result = API response deleting the coupon.`,params:{id:`Coupon ID`}},tilopay_recurring_plan_wizard_start:{title:`Start step by step for a subscription plan`,description:`Starts the guided step-by-step to create (mode=create) or edit (mode=edit with plan_id) a subscription plan. Returns the first pending question: deliver it to the merchant as is and pass their answer to tilopay_recurring_plan_wizard_answer. Use it instead of tilopay_recurring_create_plan when some data is missing.`,output:`draft = the plan draft in progress, with what has already been answered and the next pending step. It creates nothing in Tilopay until confirmed.`,params:{mode:`create for a new plan, edit to modify an existing one`,plan_id:`Plan ID (required in mode=edit)`,title:`Title, if the merchant already gave it`,frequency:`Frequency, if the merchant already gave it`,amount:`Amount per cycle, if the merchant already gave it`,currency:`ISO currency if the merchant indicated it with a symbol or name ($ or dollars = USD, â¡ or colones = CRC)`,description:`Description, if already given`}},tilopay_recurring_plan_wizard_answer:{title:`Answer a step of the subscription plan`,description:`Saves the merchant's answer to the current step of the subscription plan and returns the next question or the summary to confirm. Deliver the returned text as is, without adding questions of your own.`,output:`draft = the updated draft with the step's answer and the next pending step.`,params:{answer:`What the merchant answered, as is`}},tilopay_recurring_plan_wizard_confirm:{title:`Confirm the subscription plan`,description:`Creates or edits the subscription plan with the step-by-step data, after the merchant said yes to the summary. When creating, it also returns the subscription link: deliver it in full, without shortening it.`,output:`Creates the plan with what was built step by step: plan_id = id of the created plan; subscription_url = subscription link to share.`},tilopay_recurring_plan_wizard_cancel:{title:`Cancel the plan step by step`,description:`Discards the subscription plan that was in progress without creating or changing anything.`,output:`Discards the plan draft in progress. It creates or changes nothing in Tilopay; it only returns the confirmation in text.`},tilopay_recurring_settle_link:{title:`Payment link to settle a failed recurring charge`,description:`Creates a payment link for the amount of a recurring charge that failed and associates it with the plan's subscriber. When the customer pays that link, the subscription is settled automatically: the subscriber is reactivated and its expiration date moves to the next cycle. Use it when the merchant agrees to send the link to the customer of a failed charge (the data comes from tilopay_recurring_failed_payments). Returns the link URL and, if there is a phone number, a WhatsApp link ready to send to the customer.`,output:`Creates a one-time payment link for the subscriber to settle a failed recurring charge: url = payment link; whatsapp_url = WhatsApp link ready to send it; linkId = id of the created link.`,params:{subscriber_id:`ID of the subscriber with the failed charge`,amount:`Outstanding amount of the failed charge`,currency:`Currency of the charge. If omitted, the merchant's country currency is used.`,plan_id:`Subscription plan ID`,plan_name:`Plan name, for the charge's concept`,frequency:`Plan frequency; if omitted it is queried from the plan or assumed monthly`,client_name:`Customer name`,client_email:`Customer email`,client_phone:`Customer phone in international format, for the WhatsApp link`,message:`Your own message for the customer; if omitted one is drafted`}},tilopay_recurring_mark_settled:{title:`Settle a subscriber`,description:`Marks the subscriber as settled on their plan: leaves them active and moves their expiration date to the next cycle. Use it when the pending charge has already been paid through another channel. If the payment was made with the tilopay_recurring_settle_link link, this is not needed: it updates itself. Confirm with the merchant before running it.`,output:`Moves the subscriber's due date forward according to the plan's frequency, to settle them after recovering a failed charge. expire = the new expiration date.`,params:{subscriber_id:`Subscriber ID`,plan_id:`Subscription plan ID`,frequency:`Plan frequency; if omitted it is queried from the plan or assumed monthly`,expire:`New expiration date YYYY-MM-DD; if omitted the next cycle is calculated`}},tilopay_tokenize_card:{title:`Save a customer's card (tokenize)`,description:`Generates the secure Tilopay link
18042where the customer enters their card to have it saved (tokenized). The merchant never sees or receives the card data. Once saved, it can be charged with tilopay_saved_cards_create_payments (that one does ask for a confirmation code by email). If a contact or phone is given, it also returns a WhatsApp link with the message ready to send to the customer.`,output:`tokenize_url = secure link where the customer enters their card to save it; whatsapp_url = WhatsApp link ready to send it. The card is typed by the customer: the agent never receives the number.`,params:{email:`Cardholder's email`,first_name:`Cardholder's first name`,last_name:`Cardholder's last name`,language:`Form language (es by default)`,redirect_url:`URL the customer returns to when finished (optional)`,contact_name:`Name of the saved contact or of the customer, to draft the WhatsApp message`,phone:`Customer's WhatsApp phone, e.g. +50688887777`,message:`Your own text for the message to the customer`,save_contact:`Save the contact in the address book`}},tilopay_list_customer_cards:{title:`List a customer's saved cards`,description:`Lists the cards a customer already has saved (tokenized) in Tilopay, identified by their email. Returns each card's token, which is what tilopay_charge_saved_card needs to charge them. Only cards saved with this assistant's link or the MCP's can be charged. It does not charge anything.`,output:`cards = that customer's already saved cards, with brand, last digits and their identifier to charge; count = how many there are. It never returns the full card number.`,params:{email:`Email of the customer who owns the cards`,currency:`Reference currency, e.g. CRC or USD. If omitted, the merchant's country currency is used.`}},tilopay_payment_methods:{title:`Available payment methods and installments`,description:`Lists the payment methods enabled for the merchant in the Tilopay checkout (cards, SINPE Móvil, Yappy, installments or zero rate when active) and whether the account responds in production or test. Use it when the merchant asks what they can offer their customer or whether they have installments / zero rate.`,output:`methods = payment methods enabled for the merchant; installments = installments available when the method allows them; cards = customer's saved cards if their email was sent; environment = production or test.`,params:{amount:`Reference amount; some methods and installments depend on the amount`,currency:`Reference currency. If omitted, the merchant's country currency is used.`,email:`Customer email (optional; only to also see their saved cards)`}},tilopay_charge_saved_card:{title:`Charge a customer's saved card`,description:"Charges an amount to a customer's already saved (tokenized) card. Requires the customer's email and the card token (obtained with tilopay_list_customer_cards). Sensitive operation: it moves 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 carries `requires_confirmation`. Repeat the same call, with the same parameters, adding `confirmation_code`.",output:`Charges an already saved card of the customer: approved = whether the charge was approved; orderNumber = generated order number; receipt_* = the charge's receipt when generated. Requires a second factor by email.`,params:{email:`Cardholder's email`,card:`Token of the saved card (v2 version)`,amount:`Amount to charge`,currency:`Currency of the charge. If omitted, the merchant's country currency is used.`,order_number:`Order number; if omitted a unique one is generated`,capture:`Capture immediately (true by default)`,confirmation_code:`6-digit code received by email to authorize the operation`}},tilopay_remove_saved_card:{title:`Delete a customer's saved card`,description:"Deletes a customer's saved card (token) in Tilopay. Sensitive operation: requires a second factor. Call it first without `confirmation_code` and repeat it later with the 6-digit code sent to the merchant's email.",output:`result = API response deleting the customer's saved card. Requires a second factor by email.`,params:{email:`Email of the customer who owns the card`,token:`Token of the card to delete`,confirmation_code:`6-digit code received by email to authorize the operation`}},baas_validate_destination:{title:`Validate BaaS destination account`,description:`Validates a destination account before transferring: PHONE for SINPE Móvil or IBAN for account transfer. Returns the holder name the bank confirms.`,output:`result = data the banking API returns about the destination account (holder, account type, currency and status) before sending a transfer. It does not move money.`,params:{accountType:`Identifier scheme: PHONE for SINPE Móvil, IBAN for account.`,accountValue:`E.164 phone number or IBAN`,assignmentId:`Banking API context (optional)`}},baas_send_transfer:{title:`Send BaaS transfer`,description:`Sends a transfer from the merchant's bank account. Default method: SINPE Móvil (destination by phone). For an account transfer use accountType=IBAN. Requires a 6-digit code by email. Validates per-transfer and daily accumulated limits.`,output:`Sends a transfer from a merchant's BaaS account: payment = the created payment with its payment_id and status; clientReference and detailReference = references for reconciliation; destinationName and destinationAccount = who and which account it was sent to. It validates the destination account beforehand and requires a confirmation code by email.`,params:{amount:`Amount to transfer`,currency:`ISO 4217 currency (CRC, USD)`,contactName:`Name of the saved contact (looks up their phone/IBAN)`,destinationAccountType:`PHONE = SINPE Móvil (default), IBAN = account transfer`,destinationAccountValue:`E.164 phone or destination IBAN (if contactName is not used)`,destinationName:`Recipient name (if not validated via contact)`,detailReference:`Payment description (if omitted, one is generated)`,assignmentId:`Banking API context (optional)`,confirmation_code:`6-digit email code (second factor)`}},baas_get_transfer_status:{title:`BaaS transfer status`,description:`Checks the current status of a transfer by its payment_id (read only).`,output:`result = current status of the transfer queried by its payment_id (status, result, amount, currency, destination and date).`,params:{paymentId:`Internal payment UUID`,assignmentId:`Banking API context (optional)`}}},MO={"/api/v1/consultTransactions":`api/procesos-operativos/consult-transactions`,"/api/v1/consult":`api/procesos-operativos/consult`,"/api/v1/processModification":`api/procesos-operativos/process-modification`,"/api/v1/createLinkPayment":`api/links-de-pago/create-link-payment`,"/api/v1/getDetailLinkPayment":`api/links-de-pago/detail-link-payment`,"/api/v1/deleteLinkPayment":`api/links-de-pago/delete-link-payment`,"/api/v1/getLinkPaymentList":`api/links-de-pago/payment-item-list`,"/api/v1/getLinkPaymentById":`api/links-de-pago/payment-by-id`,"/api/public/v1/transactions/payments":`api-bancario/pagos`,"/api/public/v1/accounts":`api-bancario/cuentas`};function NO(e){if(e){for(let[t,n]of Object.entries(MO))if(e.includes(t))return n}}function PO(e,t=`es`){return SO.filter(t=>t.tools.some(t=>NO(t.api_endpoint)===e)).map(e=>$(e.slug,t)).filter(e=>!!e)}var FO={ventas:{es:`Consulta de transacciones, métricas de ventas y la modificación de una transacción (captura, reembolso o reversión).`,en:`Transaction lookups, sales metrics and modifying a transaction (capture, refund or reversal).`},"enlaces-de-pago":{es:`Creación, consulta y borrado de enlaces de pago, más la preparación del envÃo por WhatsApp o correo.`,en:`Creating, reading and deleting payment links, plus preparing delivery over WhatsApp or email.`},catalogo:{es:`Lectura del catálogo de productos y servicios que el comercio ya tiene creado en enlaces de pago.`,en:`Reading the catalog of products and services the merchant already created as payment links.`},contactos:{es:`Agenda del comercio: contactos guardados para reutilizar teléfono y correo al enviar un enlace de pago.`,en:`The merchant address book: saved contacts to reuse phone and email when sending a payment link.`},perfil:{es:`Perfil del negocio del comercio (a qué se dedica, qué vende, cómo cobra y qué quiere mejorar) y las recetas de automatización que el agente sugiere a partir de ese perfil.`,en:`The merchant business profile (what they do, what they sell, how they charge and what they want to improve) and the automation recipes the agent suggests from it.`},microtienda:{es:`Microtiendas con carrito armadas desde el catálogo, y la gestión de los pedidos que entran por ahÃ: activación, resumen, listado, pendientes de entrega y cierre.`,en:`Micro-stores with a cart built from the catalog, plus managing the orders they generate: setup, summary, listing, pending deliveries and closing.`},avisos:{es:`Avisos por WhatsApp del comercio: cobros aprobados y rechazados, resumen diario y pedidos. Sólo lee y cambia la configuración; no envÃa mensajes por su cuenta.`,en:`The merchant WhatsApp alerts: approved and declined charges, daily summary and orders. These tools only read and change the settings; they do not send messages on their own.`},comprobantes:{es:`Comprobantes de los cobros aprobados: listarlos y reenviarle a un cliente el comprobante de su pago.`,en:`Receipts for approved charges: listing them and resending a customer the receipt for their payment.`},recordatorios:{es:`Recordatorios por WhatsApp, de una vez o recurrentes, que pueden ejecutar una acción del agente al enviarse (resumen de ventas, enlaces pendientes, saldos).`,en:`WhatsApp reminders, one-off or recurring, which can run an agent action when they fire (sales summary, pending links, balances).`},recurrentes:{es:`Planes de suscripción y sus suscriptores: consulta, creación y edición de planes, cupones, enlaces de suscripción, cobros fallidos y el paso a paso guiado para armar un plan.`,en:`Subscription plans and their subscribers: reading, creating and editing plans, coupons, subscription links, failed charges and the guided step-by-step to build a plan.`},"tarjetas-guardadas":{es:`Tarjetas guardadas de los clientes y cobros masivos: tokenización, métodos de pago disponibles, cobro a una tarjeta guardada, eliminación de una tarjeta y grupos de cobro.`,en:`Customers' stored cards and bulk collections: tokenization, available payment methods, charging a stored card, removing a card and collection groups.`},soporte:{es:`Respuestas tomadas de las guÃas oficiales y una prueba de conexión contra cada grupo del API.`,en:`Answers taken from the official guides and a connectivity test against each API group.`},"api-bancario":{es:`API bancario (BaaS): contextos, cuentas, saldos, pagos, estados de cuenta, un informe analÃtico de pagos y el envÃo de transferencias. Las transferencias exigen validar la cuenta destino y un código de confirmación que llega al correo del comercio.`,en:`The banking API (BaaS): contexts, accounts, balances, payments, statements, an analytical payments report and sending transfers. Transfers require validating the destination account and a confirmation code sent to the merchant's email.`}};function IO(e,t){return e.availability===`on-request`?t===`en`?`These tools are enabled on request and only w
18042ork for users with Tilopay banking API credentials. They are not part of the default MCP access: Tilopay enables the group case by case. Requires: ${e.requires??``}`.trim():`Estas herramientas se activan bajo solicitud y sólo funcionan para usuarios con credenciales del API bancario de Tilopay. No forman parte del acceso MCP por defecto: Tilopay habilita el grupo caso por caso. Requiere: ${e.requires??``}`.trim():null}function LO(e,t){let n=t===`en`?jO[e.name]:void 0,r=NO(e.api_endpoint);return{name:e.name,title:n?.title??e.title,description:n?.description??e.description,access:e.access,params:e.params.map(e=>({...e,description:n?.params?.[e.name]??e.description??``})),output:{...e.output.structuredContent?{structuredContent:e.output.structuredContent}:{},description:n?.output??e.output.description??``},...e.api_endpoint&&wO(e.api_endpoint)?{apiEndpoint:e.api_endpoint}:{},...r?{apiDoc:r}:{}}}function $(e,t){let n=CO(e);if(!n||!xO(e))return null;let r=t===`en`,i=FO[e];return{slug:e,title:(r?AO[e]:n.title)??n.title,intro:(r?i?.en:i?.es)??``,availability:n.availability??`default`,...n.requires?{requires:n.requires}:{},tools:n.tools.map(e=>LO(e,t))}}function RO(e,t){return(t===`en`?{read:`Read only`,write:`Write`,destructive:`Sensitive`}:{read:`Sólo lectura`,write:`Escritura`,destructive:`Sensible`})[e]}function zO(e){return e.enum?`${e.type} (${e.enum.join(` | `)})`:e.type}var BO=(e,t)=>`${t===`en`?`/en`:``}/developers/${e}`;function VO(){let e=[];for(let t of SO.filter(e=>kO(e.slug)))for(let n of t.tools){let r=OO(t.slug,n.name),i=e.find(e=>e.slug===r);i?i.tools.push(n.name):e.push({slug:r,group:t.slug,tools:[n.name]})}return e}function HO(e,t){let n=$(e,t);return n?VO().filter(t=>t.group===e).map(e=>{let r=e.tools.map(e=>n.tools.find(t=>t.name===e)).filter(e=>!!e),i=e.slug.split(`/`).pop(),a=DO[i],o=r.length>1&&a;return{slug:e.slug,title:o?a.title[t]:r[0]?.title??i,description:o?a.description[t]:r[0]?.description??``,tools:r}}):[]}function UO(e,t){for(let n of SO){if(!n.tools.find(t=>t.name===e))continue;let r=$(n.slug,t);if(!r)return null;let i=r.tools.find(t=>t.name===e);return i?{group:r,tool:i}:null}return null}function WO(e,t){return e.split(`,`).map(e=>$(e.trim(),t)).filter(e=>e!==null)}function GO(e,t=`es`){let n=UO(e,t);if(!n)return``;let{tool:r}=n;return[r.name,r.name.replace(/_/g,` `),r.title,r.description,r.params.map(e=>e.name).join(` `)].filter(Boolean).join(` `)}function KO(){let e=yO;return{total:e.length,read:e.filter(e=>e.access===`read`).length,write:e.filter(e=>e.access!==`read`).length,destructive:e.filter(e=>e.access===`destructive`).length}}function qO(e){let t=KO();return e===`en`?`Of the ${t.total} tools, ${t.read} only read and ${t.write} change state. ${t.destructive} of those ${t.write} are marked as sensitive.`:`De las ${t.total} herramientas, ${t.read} sólo leen y ${t.write} modifican estado. ${t.destructive} de esas ${t.write} están marcadas como sensibles.`}function JO(e,t=`es`){let n=$(e,t);if(!n)return``;let r=[n.title,n.intro];for(let e of n.tools)r.push(e.name,e.name.replace(/_/g,` `),e.title,e.description,e.params.map(e=>e.name).join(` `));return r.filter(Boolean).join(` `)}function YO(e=`es`){return SO.map(t=>JO(t.slug,e)).join(` `)}export{Ur as C,rO as S,gO as _,qO as a,_O as b,PO as c,GO as d,IO as f,pO as g,Z as h,YO as i,HO as l,UO as m,BO as n,WO as o,zO as p,$ as r,JO as s,RO as t,VO as u,mO as v,vO as x,hO as y};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.