PageSourceSearch

https://tilopay.com/assets/render-8pVjJoty.js

js tilopay.com collected 2026-09-24 08:40:13 UTC 1,847,372 bytes, 18,042 lines download raw bytes

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.