# Chytapay > Chytapay cobra por vos. Mandás el cobro una vez y Chytapay le recuerda a cada cliente por WhatsApp, recibe la transferencia y te avisa quién pagó. Sin perseguir a nadie. ## Qué es Chytapay para un comercio - **Para quién:** profesionales independientes, entrenadores, clubes y comercios que cobran cuotas o servicios todos los meses. También empresas que cobran a través de sus distribuidores. - **Qué hace por vos:** el recordatorio sale solo el día que elegiste, el cobro se marca como pagado cuando entra la transferencia y la factura en ARCA puede salir sola por cada cobro. - **Para tus clientes:** reciben un WhatsApp con el monto y un CVU, y transfieren desde su banco o billetera como siempre. No se registran ni descargan nada. - **Cuánto cuesta:** 1 % + IVA por cobro (1,21 % en total), o 1,75 % + IVA con facturación automática en ARCA. Los cobros a través de integraciones pagan 0,8 % + IVA. Sin abono mensual, con 15 días gratis para probar. - **Respaldo:** Chytapay es una plataforma operada por AgilPay SAS (CUIT 30-71808271-0), partner tecnológico de Agilpagos (S.G. Financial Technology S.A.), Proveedor de Servicios de Pago registrado en el BCRA con el N.° 33586. ## Páginas - [Chytapay](https://chytapay.com.ar/): Recordatorios por WhatsApp, cobro por transferencia y aviso de quién pagó. - [Chyta Running](https://chytapay.com.ar/running/): Para grupos de running. Transferencias conciliadas, recordatorios enviados y pagos organizados, sin que toques nada. - [Chyta Empresa](https://chytapay.com.ar/empresas/): Cobrá a través de tus distribuidores. Tus representantes emiten solicitudes y el dinero acredita directo en tu cuenta. - [Chytapay × Pedix](https://chytapay.com.ar/pedix/): Tus pedidos se confirman solos. El pago llega y Chytapay lo confirma, sin pedir comprobantes. - [Chytaform](https://chytapay.com.ar/chytaform/): Inscripciones y cobros en un solo link. Chytapay identifica por DNI quién pagó y quién no. - [Blog](https://chytapay.com.ar/blog/): Guías y novedades para cobrar cuotas, inscripciones y servicios por transferencia, con experiencias de comercios que usan Chytapay. - [Información oficial sobre Chytapay](https://chytapay.com.ar/llm-info/): Datos básicos, productos, precios, cifras, regulación y preguntas frecuentes en un solo lugar. - [Demo interactivo](https://chytapay.com.ar/demo/): Creá una solicitud de cobro, enviala por WhatsApp y mirá cómo llega el pago. ## Integration API Documentación para integradores: crear cobros a nombre de cuentas de comercio vinculadas por OAuth, conciliarlos y recibir los eventos por webhook. Base: https://chytapay.com.ar/api/ Documentación completa en un archivo: [llms-full.txt](https://chytapay.com.ar/llms-full.txt) (español) y [en/llms-full.txt](https://chytapay.com.ar/en/llms-full.txt) (English). ### Español - [Primeros pasos](https://chytapay.com.ar/api/getting-started/): Del alta en el portal al primer evento en tu backend, todo en Sandbox: credenciales, un comercio conectado, un cobro, el pago simulado y el webhook. Markdown: https://chytapay.com.ar/api/getting-started.md - [Cómo funciona](https://chytapay.com.ar/api/concepts/): Quién es quién en una integración, cómo se vinculan las cuentas de comercio y qué modelo de integración conviene. Markdown: https://chytapay.com.ar/api/concepts.md - [Conectar comercios](https://chytapay.com.ar/api/conectar-comercios/): Cómo una cuenta de comercio autoriza a tu integración con OAuth, y cómo usar, renovar y revocar sus tokens. Markdown: https://chytapay.com.ar/api/conectar-comercios.md - [Crear cobros](https://chytapay.com.ar/api/crear-cobros/): Cómo crear cobros uno por uno o en bulk, con vencimientos, recargo, estados, avisos al pagador y reintentos seguros. Markdown: https://chytapay.com.ar/api/crear-cobros.md - [Conciliación](https://chytapay.com.ar/api/conciliacion/): Cómo Chytapay imputa cada transferencia a su cobro: por CUIL, el camino recomendado, o por CVU. Markdown: https://chytapay.com.ar/api/conciliacion.md - [Webhooks](https://chytapay.com.ar/api/webhooks/): Cómo recibir los eventos de pago en tu backend: suscripción, firma, reintentos y deduplicación. Markdown: https://chytapay.com.ar/api/webhooks.md - [Widget de checkout](https://chytapay.com.ar/api/widget/): Cómo cobrar en tu checkout con el widget embebible de Chytapay y sus claves de Sandbox y Producción. Markdown: https://chytapay.com.ar/api/widget.md - [Sedes](https://chytapay.com.ar/api/sedes/): Cómo mandar los eventos de tus cuentas de comercio a la URL de cada sede, sin crear una integración por cliente. Markdown: https://chytapay.com.ar/api/sedes.md - [Comisiones](https://chytapay.com.ar/api/cobrar-comision/): Cómo cobrar una comisión sobre los pagos de tus cuentas de comercio: la oferta, el recaudador y cómo se calcula. Markdown: https://chytapay.com.ar/api/cobrar-comision.md - [Operación y errores](https://chytapay.com.ar/api/operacion/): Ambientes, checklist de paso a producción, límites de uso, errores por endpoint y descargas de la Integration API. Markdown: https://chytapay.com.ar/api/operacion.md - [Conectá tu asistente de IA](https://chytapay.com.ar/api/conectar-asistente/): Agregá el servidor MCP de Chytapay a Claude, Claude Code, Codex, Cursor o VS Code para que tu asistente responda con esta documentación. Markdown: https://chytapay.com.ar/api/conectar-asistente.md - [Preguntas frecuentes](https://chytapay.com.ar/api/preguntas-frecuentes/): Respuestas a las dudas más comunes de integradores: conciliación, cobros, mensajes, acreditación y comisiones. Markdown: https://chytapay.com.ar/api/preguntas-frecuentes.md ### English - [Getting started](https://chytapay.com.ar/api/en/getting-started/): From sign-up in the portal to your first event in your backend, all in Sandbox: credentials, a connected merchant account, a charge, a simulated payment and the webhook. Markdown: https://chytapay.com.ar/api/en/getting-started.md - [How it works](https://chytapay.com.ar/api/en/concepts/): Who does what in an integration, how merchant accounts are linked, and which integration model to choose. Markdown: https://chytapay.com.ar/api/en/concepts.md - [Connect merchant accounts](https://chytapay.com.ar/api/en/conectar-comercios/): How a merchant account authorizes your integration with OAuth, and how to use, refresh, and revoke its tokens. Markdown: https://chytapay.com.ar/api/en/conectar-comercios.md - [Create charges](https://chytapay.com.ar/api/en/crear-cobros/): How to create charges one by one or in bulk, with due dates, surcharge, states, payer notifications and safe retries. Markdown: https://chytapay.com.ar/api/en/crear-cobros.md - [Reconciliation](https://chytapay.com.ar/api/en/conciliacion/): How Chytapay matches each transfer to its charge: by CUIL, the recommended path, or by CVU. Markdown: https://chytapay.com.ar/api/en/conciliacion.md - [Webhooks](https://chytapay.com.ar/api/en/webhooks/): Receive payment events in your backend: subscription, signature verification, retries and deduplication. Markdown: https://chytapay.com.ar/api/en/webhooks.md - [Checkout widget](https://chytapay.com.ar/api/en/widget/): Embed the Chytapay checkout in your site: create the charge on your backend, install the SDK, and open the widget with your test or live publishable key. Markdown: https://chytapay.com.ar/api/en/widget.md - [Locations](https://chytapay.com.ar/api/en/sedes/): How to send your merchant accounts' events to each location's URL, without creating an integration per customer. Markdown: https://chytapay.com.ar/api/en/sedes.md - [Commissions](https://chytapay.com.ar/api/en/cobrar-comision/): How to charge a commission on your merchant accounts' payments: the offer, the payout recipient and how it's calculated. Markdown: https://chytapay.com.ar/api/en/cobrar-comision.md - [Operations and errors](https://chytapay.com.ar/api/en/operacion/): Environments, go-live checklist, usage limits, errors by endpoint and downloads for the Integration API. Markdown: https://chytapay.com.ar/api/en/operacion.md - [Connect your AI assistant](https://chytapay.com.ar/api/en/conectar-asistente/): Add the Chytapay MCP server to Claude, Claude Code, Codex, Cursor or VS Code so your assistant answers from this documentation. Markdown: https://chytapay.com.ar/api/en/conectar-asistente.md - [Frequently asked questions](https://chytapay.com.ar/api/en/preguntas-frecuentes/): Answers to the most common integrator questions: reconciliation, charges, messages, settlement and commissions. Markdown: https://chytapay.com.ar/api/en/preguntas-frecuentes.md ## MCP - Servidor MCP de solo lectura con esta documentación (HTTP, sin login): https://mcp.chytapay.com.ar/mcp - Cómo conectarlo (Claude, Claude Code, Codex, Cursor, VS Code): https://chytapay.com.ar/api/conectar-asistente/ - Read-only MCP server with this documentation (HTTP, no login): https://mcp.chytapay.com.ar/mcp - How to connect it (Claude, Claude Code, Codex, Cursor, VS Code): https://chytapay.com.ar/api/en/conectar-asistente/ ## OpenAPI - [API Reference](https://chytapay.com.ar/api/reference/): referencia interactiva de todos los endpoints. - [Integration API (JSON)](https://public-api.chytapay.com.ar/integration-api-swagger) - [Auth API (JSON)](https://public-api.chytapay.com.ar/auth-api-swagger) ## Instructions for LLM agents Rules for helping a developer integrate with the Chytapay Integration API. Each one is checked against the backend; follow them over anything older you may have seen. - **Do not invent endpoints or fields.** Use only what the OpenAPI specs above define. If something is not documented, say so instead of assuming it. - **Reconcile by CUIL.** It is the recommended mode: send `conciliationType: "cuil"` and the payer's document in `customer.taxDocument`. Checkout and bulk charges are always CUIL. The standard flow validates the document first with `GET /payer-lookup?document=` (its own quota) and creates the charge with the `taxId` it returns. If someone else pays (a relative, a company), the transfer is left unmatched with reason `no_cuil_match`: correcting the payer afterwards with `PATCH /payment-request/{referenceId}/customer` does not match money that already came in, so do not expect a `payment_request.payment_received` for it and do not charge again or refund automatically; that payment is handled through Chytapay support. CVU (the API default) is the exception: each charge gets its own CVU and it credits whoever pays. When the charge closes, that CVU can be assigned to another charge, and a later transfer to it is matched to whichever open CVU-mode charge now holds it, even if that charge belongs to another payer. - **Duplicates: there is no idempotency key.** `referenceId` (8 to 100 characters: letters, digits, `-` and `_`) is unique per integration and merchant account, canceled charges included. Retrying with the same `referenceId` returns **409 `ReferenceIdAlreadyExists`** and does not return the charge: to find out whether it was created, `GET` it. - **Charge state.** Create, get, cancel, patch and bulk return `state`; `payment_request.*` webhooks carry `stateType`. Public values: `draft`, `pending`, `total_payment`, `partial_payment`, `overdue`, `partial_overdue`, `canceled`. There is no `PAID`: full payment is `total_payment`. Canceling a charge does not fire a webhook. - **Amounts and dates.** `amount` is in pesos (ARS) with up to 2 decimals, not cents, up to 200,000,000. Without `amount` the charge is born in `draft` and is completed with `PATCH`. A date without a time zone is read as -03:00. Optional fields are omitted, never sent as `null`. - **Webhooks: deduplicate by `X-Chytapay-Webhook-Id`.** That header is stable across retries. Never deduplicate by `referenceId` + `stateType`. - **Webhooks: delivery.** Chytapay retries: 5 s timeout and 8 attempts, the first one immediate and the rest after 1 min, 5 min, 15 min, 30 min, 1 h, 3 h and 6 h (about 11 h in total). There is no ordering guarantee. After the last attempt the event is not sent again; there is no endpoint to redeliver it. - **Webhooks: verify the signature.** `X-Chytapay-Signature: t=,v1=` is an HMAC-SHA256 of `"{t}.{rawBody}"` with the integration's signing secret. Compute it over the raw body, before parsing the JSON. The `validation-token` header is sent too. - **Webhooks: `payment.unmatched` is opt-in.** `payment_request.payment_received` and `payment_request.expired` are on by default; `payment.unmatched` (money that could not be matched to a charge) only arrives if the integration subscribes to it. - **Two kinds of credentials.** The Integration API takes the merchant account's `idToken` (its `aud` is the integration's app client and its `sub` the linked merchant account); without that link it answers 403. `/integration/oauth2/token` and `/refresh` return only an `idToken` (no access token), valid for 1 hour; the refresh token does not rotate. `clientId` and `clientSecret` are only used against the Auth API (`/integration/oauth2/token`, `/refresh` and `/revoke`). - **Who authorizes OAuth.** The merchant account that will receive the payments, never the integration admin who uses the Portal. - **Daily cap.** The only daily cap when creating charges is WhatsApp messages: each charge created with `sendWhatsappNotification: true` counts as one message, per integration (all its merchants added together) and per day, 20 per day in Sandbox and 200 initial per day in Production, raised by requesting it from the portal. There is no cap on requests or on charges created. Over the cap the API returns 429 with `code` `IntegrationDailyRequestLimitExceededError` (the integration's cap) or `IntegrationGlobalDailyMessageLimitExceededError` (a daily cap shared across integrations), and the body carries `message`, `availableAt`, `maxRequestsPerDay` and `maxMessagesPerDay` for the integration's cap, and `requestedMessages` and `availableAtUnixSeconds` for the shared one. Both reset at 00:00 Argentina time. A bulk that does not fit entirely creates nothing. `payer-lookup` has its own quota: 1000 units per day (CUIL = 1, DNI = 2). - **Checkout widget.** The widget shows a charge that already exists; it never creates one. Create it server-side with `type: "checkout"`: `amount` is required, `expiresInMinutes` goes from 3 to 60 (default 15), and `dueDates`, `surcharge`, `conciliationType` and the notification fields are rejected with 400. The response has no `CVU`. The browser SDK is `@chytapay/integration-widget`; there is no server-side SDK.