{"openapi":"3.1.1","info":{"title":"API de facturación de Fiscalisto","version":"2026-10-24","description":"Timbre CFDI 4.0 con una llamada: facturas, complementos de pago, notas de crédito, nómina, retenciones, anticipos y lotes, con las mismas revisiones del SAT que la app de Fiscalisto. Llaves fk_test_ (pruebas, gratis) y fk_live_ (producción, por timbre). Guías: https://fiscalisto.com/docs/api","contact":{"name":"Fiscalisto","url":"https://fiscalisto.com/docs/api","email":"hola@fiscalisto.com"}},"servers":[{"url":"https://api.fiscalisto.com","description":"Producción y pruebas (según la llave)"}],"security":[{"bearerAuth":[]}],"tags":[{"name":"Cuenta","description":"Su cuenta API y sus timbres.","x-displayName":"Cuenta"},{"name":"Emisores","description":"Los RFC que timbran desde su cuenta, con su CSD.","x-displayName":"Emisores"},{"name":"Entornos de prueba","description":"Un modo de pruebas aparte para cada persona del equipo, con su emisor, llaves, webhooks y eventos.","x-displayName":"Entornos de prueba"},{"name":"Facturas","description":"Facturas de ingreso, globales y traslados: timbrar, consultar, enviar, cancelar y sustituir.","x-displayName":"Facturas"},{"name":"Pagos y notas de crédito","description":"Complementos de pago (tipo P) y notas de crédito (tipo E).","x-displayName":"Pagos y notas de crédito"},{"name":"Anticipos","description":"Anticipos y su aplicación, con las dos opciones del SAT.","x-displayName":"Anticipos"},{"name":"Retenciones","description":"Constancias de retenciones e información de pagos (Retenciones 2.0).","x-displayName":"Retenciones"},{"name":"Nómina","description":"Empleados y recibos de nómina ordinaria calculados por Fiscalisto.","x-displayName":"Nómina"},{"name":"Lotes","description":"Muchas facturas en una sola llamada, timbradas en segundo plano.","x-displayName":"Lotes"},{"name":"Sucursales","description":"Los lugares desde donde factura un emisor además de su domicilio fiscal, cada uno con su código postal y sus series.","x-displayName":"Sucursales"},{"name":"Inventario","description":"Almacenes, existencias, movimientos (kárdex) y ajustes: cada factura que vende un producto con track_stock saca lo que vende.","x-displayName":"Inventario"},{"name":"Clientes","description":"El catálogo de clientes de cada emisor.","x-displayName":"Clientes"},{"name":"Productos","description":"El catálogo de productos y servicios de cada emisor.","x-displayName":"Productos"},{"name":"Catálogos del SAT","description":"Claves de producto, unidad, régimen, uso y demás catálogos del CFDI 4.0.","x-displayName":"Catálogos del SAT"},{"name":"Listas del SAT","description":"Si un RFC está en la lista 69-B o en las del artículo 69.","x-displayName":"Listas del SAT"},{"name":"Descargas del SAT","description":"Las facturas emitidas y recibidas de un emisor, directo del SAT, con su XML.","x-displayName":"Descargas del SAT"},{"name":"Declaraciones del SAT","description":"Las declaraciones que un emisor presentó ante el SAT, con su PDF, su acuse y sus cifras.","x-displayName":"Declaraciones del SAT"},{"name":"Cumplimiento SAT","description":"La opinión de cumplimiento (32-D), la constancia de situación fiscal y el buzón tributario de cada emisor, y los hallazgos en sus CFDI.","x-displayName":"Cumplimiento SAT"},{"name":"Autofactura","description":"Tickets que sus compradores facturan ellos mismos en el portal del emisor.","x-displayName":"Autofactura"},{"name":"Contabilidad","description":"Pólizas, balanza, catálogo de cuentas, contabilidad electrónica (Anexo 24) y DIOT, de los CFDI del emisor.","x-displayName":"Contabilidad"},{"name":"Tiendas en línea","description":"Shopify y Mercado Libre conectados: cada pedido pagado se vuelve un ticket de autofactura.","x-displayName":"Tiendas en línea"},{"name":"Facturas recurrentes","description":"Facturas que el emisor timbra solo cada mes, semana o día.","x-displayName":"Facturas recurrentes"},{"name":"Cuentas por cobrar","description":"Lo que cada cliente debe: facturas por cobrar, pagadas y en parcialidades.","x-displayName":"Cuentas por cobrar"},{"name":"Conciliación bancaria","description":"Los depósitos del banco, con las facturas que pagaron.","x-displayName":"Conciliación bancaria"},{"name":"Cotizaciones","description":"Cotizaciones que su cliente ve, acepta o rechaza en una liga, y se facturan.","x-displayName":"Cotizaciones"},{"name":"Webhooks","description":"Direcciones de su servidor que reciben los eventos, firmados.","x-displayName":"Webhooks"},{"name":"Eventos","description":"Lo que pasó en su cuenta: timbradas, rechazadas, canceladas.","x-displayName":"Eventos"}],"paths":{"/v1/account":{"get":{"operationId":"getAccount","tags":["Cuenta"],"security":[{"bearerAuth":[]}],"summary":"Ver la cuenta","description":"La cuenta API y la llave con que se hizo la solicitud. Útil para probar la llave.","parameters":[],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Account"},"example":{"id":"org_39c5a6b2-02b3-8453-9c35-aba6b43c876a","object":"account","livemode":false,"name":"Mi plataforma","api_version":"2026-10-24","latest_api_version":"2026-10-24","key":{"id":"key_vFQbeTxgHVoTlowHaTLR","name":"Pruebas","issuers":null,"read_only":false,"expires_at":null,"sandbox":null}}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"post":{"operationId":"updateAccount","tags":["Cuenta"],"security":[{"bearerAuth":[]}],"summary":"Cambiar la versión de la API","description":"Mueve la versión de la API de la cuenta: la que reciben sus solicitudes sin el encabezado Fiscalisto-Version y sus webhooks sin api_version propio. Antes, pruebe la nueva mandando Fiscalisto-Version en sus solicitudes. Con una llave de la cuenta con todos los permisos (no de un entorno de prueba). Queda en Desarrolladores › Actividad.","parameters":[{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"api_version":{"type":"string","description":"La versión de la API de la cuenta: la que reciben sus solicitudes sin Fiscalisto-Version y sus webhooks sin api_version propio. Pruebe antes la nueva con el encabezado.","example":"2026-10-24"}},"required":["api_version"],"additionalProperties":false},"example":{"api_version":"2026-10-24"}}}},"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Account"},"example":{"id":"org_39c5a6b2-02b3-8453-9c35-aba6b43c876a","object":"account","livemode":false,"name":"Mi plataforma","api_version":"2026-10-24","latest_api_version":"2026-10-24","key":{"id":"key_vFQbeTxgHVoTlowHaTLR","name":"Pruebas","issuers":null,"read_only":false,"expires_at":null,"sandbox":null}}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/test_data/reset":{"post":{"operationId":"resetTestData","tags":["Cuenta"],"security":[{"bearerAuth":[]}],"summary":"Reiniciar los datos de prueba","description":"Deja el modo de pruebas como nuevo: cada emisor de pruebas conserva su RFC y su CSD de pruebas pero pierde sus facturas, clientes, productos, lotes, ligas y descargas, y se borran los eventos y el registro de solicitudes de pruebas. Las llaves y los webhooks se quedan. Con seed (por omisión) deja 3 clientes y 3 productos de ejemplo. Solo con una llave fk_test_; producción nunca se toca.","parameters":[{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"seed":{"default":true,"description":"true (por omisión) para dejarle a cada emisor de pruebas 3 clientes y 3 productos de ejemplo. false para dejarlo vacío.","type":"boolean"}},"additionalProperties":false},"example":{"seed":true}}}},"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestDataReset"},"example":{"object":"test_data_reset","livemode":false,"issuers":1,"deleted_rows":214,"deleted_events":37,"customers_created":3,"products_created":3}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/sandboxes":{"post":{"operationId":"createSandbox","tags":["Entornos de prueba"],"security":[{"bearerAuth":[]}],"summary":"Crear un entorno de prueba","description":"Un modo de pruebas propio para una persona o un proyecto: nace con el emisor de pruebas del SAT y una llave fk_test_ (key.secret, una sola vez) que solo ve los emisores, webhooks y eventos del entorno, y que reinicia solo los suyos. Se crea con una llave de pruebas de la cuenta (no de otro entorno ni limitada a emisores). Hasta 25 por cuenta.","parameters":[{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":60,"description":"Para quién o para qué es, por ejemplo el nombre de quien lo usa."}},"required":["name"],"additionalProperties":false},"example":{"name":"Ana"}}}},"responses":{"201":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Sandbox"},"example":{"id":"sbx_4kQm8ZtR2wLp9XbN","object":"sandbox","livemode":false,"name":"Ana","issuers":1,"created_at":"2026-10-25T09:40:00-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"get":{"operationId":"listSandboxes","tags":["Entornos de prueba"],"security":[{"bearerAuth":[]}],"summary":"Listar entornos de prueba","description":"Los entornos de prueba de la cuenta, cada uno con su emisor de prueba y su llave fk_test_. Hasta 25 por cuenta.","parameters":[],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SandboxList"},"example":{"object":"list","data":[{"id":"sbx_4kQm8ZtR2wLp9XbN","object":"sandbox","livemode":false,"name":"Ana","issuers":1,"created_at":"2026-10-25T09:40:00-06:00"}],"has_more":false,"url":"/v1/sandboxes"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/sandboxes/{id}":{"get":{"operationId":"getSandbox","tags":["Entornos de prueba"],"security":[{"bearerAuth":[]}],"summary":"Ver un entorno de prueba","description":"Un entorno de prueba: su nombre, su emisor y lo que lleva usado hoy de sus reinicios.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Sandbox"},"example":{"id":"sbx_4kQm8ZtR2wLp9XbN","object":"sandbox","livemode":false,"name":"Ana","issuers":1,"created_at":"2026-10-25T09:40:00-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"delete":{"operationId":"deleteSandbox","tags":["Entornos de prueba"],"security":[{"bearerAuth":[]}],"summary":"Borrar un entorno de prueba","description":"Sus llaves dejan de funcionar al momento, sus emisores se archivan y sus webhooks se borran. No toca nada de la cuenta ni de otros entornos.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Deleted"},"example":{"id":"prd_OufpKqnrvx9p1","object":"product","deleted":true}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/issuers/{id}/test_clock":{"post":{"operationId":"createTestClock","tags":["Entornos de prueba"],"security":[{"bearerAuth":[]}],"summary":"Crear un reloj de prueba","description":"Le da a un emisor de pruebas su propia hora, congelada en frozen_time (ahora, si no la manda): sus facturas recurrentes, cotizaciones, cuentas por cobrar y tickets cuentan los días con ella, y nada de eso corre solo hasta que usted lo adelanta. Para ver en segundos lo que pasa en meses. Solo emisores de prueba; uno por emisor.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"frozen_time":{"description":"Dónde empieza el reloj; si no la manda, ahora.","type":"string","example":"2026-12-01T09:00:00-06:00"}},"additionalProperties":false},"example":{"frozen_time":"2026-10-25T09:00:00-06:00"}}}},"responses":{"201":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestClock"},"example":{"id":"clk_0q1Vmmw52sbD","object":"test_clock","livemode":false,"issuer":"iss_0q1Vmmw52sbD","frozen_time":"2026-12-01T09:00:00-06:00","status":"ready","created_at":"2026-10-25T09:40:00-06:00","advanced":{"recurring_invoices":2,"quotes_expired":1,"global_invoices":1}}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"get":{"operationId":"getTestClock","tags":["Entornos de prueba"],"security":[{"bearerAuth":[]}],"summary":"Ver el reloj de prueba","description":"La hora que es «hoy» para un emisor de prueba y hasta dónde se ha adelantado. Solo emisores de prueba.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestClock"},"example":{"id":"clk_0q1Vmmw52sbD","object":"test_clock","livemode":false,"issuer":"iss_0q1Vmmw52sbD","frozen_time":"2026-12-01T09:00:00-06:00","status":"ready","created_at":"2026-10-25T09:40:00-06:00","advanced":{"recurring_invoices":2,"quotes_expired":1,"global_invoices":1}}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"delete":{"operationId":"deleteTestClock","tags":["Entornos de prueba"],"security":[{"bearerAuth":[]}],"summary":"Borrar el reloj de prueba","description":"El emisor vuelve a la hora real; lo que el reloj dejó pendiente lo hacen los procesos diarios.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestClock"},"example":{"id":"clk_0q1Vmmw52sbD","object":"test_clock","livemode":false,"issuer":"iss_0q1Vmmw52sbD","frozen_time":"2026-12-01T09:00:00-06:00","status":"ready","created_at":"2026-10-25T09:40:00-06:00","advanced":{"recurring_invoices":2,"quotes_expired":1,"global_invoices":1}}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/issuers/{id}/test_clock/advance":{"post":{"operationId":"advanceTestClock","tags":["Entornos de prueba"],"security":[{"bearerAuth":[]}],"summary":"Adelantar el reloj de prueba","description":"Mueve el reloj hasta frozen_time haciendo, día por día, lo que habría pasado: timbra las facturas recurrentes de cada periodo, vence las cotizaciones y hace las facturas globales de tickets, con sus eventos. Contesta cuando terminó, con lo que hizo en advanced, y llega test_clock.ready. Hasta 25 comprobantes por solicitud: si se detiene antes, stopped_early y otra llamada sigue. Los CFDI se timbran con la fecha real (el SAT solo acepta la de hoy); el periodo, los vencimientos y los eventos siguen al reloj.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"frozen_time":{"type":"string","description":"A dónde adelantarlo: después de la hora actual del reloj. Lo que toca en el camino se hace día por día.","example":"2026-12-01T09:00:00-06:00"}},"required":["frozen_time"],"additionalProperties":false},"example":{"frozen_time":"2026-12-01T09:00:00-06:00"}}}},"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestClock"},"example":{"id":"clk_0q1Vmmw52sbD","object":"test_clock","livemode":false,"issuer":"iss_0q1Vmmw52sbD","frozen_time":"2026-12-01T09:00:00-06:00","status":"ready","created_at":"2026-10-25T09:40:00-06:00","advanced":{"recurring_invoices":2,"quotes_expired":1,"global_invoices":1}}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/balance":{"get":{"operationId":"getBalance","tags":["Cuenta"],"security":[{"bearerAuth":[]}],"summary":"Ver los timbres","description":"Los timbres de producción que le quedan, por paquete. En pruebas se timbra gratis.","parameters":[],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Balance"},"example":{"object":"balance","livemode":true,"available":20,"unlimited":false,"low_balance_at":100,"auto_recharge":null,"packs":[{"timbres":20,"remaining":20,"purchased_at":"2026-10-24T10:15:42-06:00","expires_at":null}]}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/issuers":{"post":{"operationId":"createIssuer","tags":["Emisores"],"security":[{"bearerAuth":[]}],"summary":"Crear un emisor","description":"Agrega un RFC que va a timbrar. Después suba su CSD (POST /v1/issuers/{id}/certificates) y, solo en producción, firme una vez el contrato con el PAC con su e.firma (POST /v1/issuers/{id}/efirma).","parameters":[{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tax_id":{"type":"string","description":"RFC (Rfc), 12 caracteres una persona moral y 13 una física."},"legal_name":{"type":"string","minLength":1,"maxLength":300,"description":"Nombre o razón social tal como está en la constancia de situación fiscal, sin el régimen de capital (sin «S.A. de C.V.»)."},"tax_system":{"type":"string","pattern":"^6\\d\\d$","description":"Régimen fiscal (RegimenFiscal), clave de c_RegimenFiscal: 601, 612, 626…"},"zip":{"type":"string","pattern":"^\\d{5}$","description":"Código postal del domicilio fiscal, 5 dígitos, como en la constancia de situación fiscal. El de un emisor es el lugar de expedición (LugarExpedicion) de sus comprobantes."},"employer_registration":{"type":["string","null"],"description":"Registro patronal ante el IMSS (RegistroPatronal), 11 caracteres. Necesario para timbrar nómina."},"curp":{"type":["string","null"],"description":"CURP, 18 caracteres."},"metadata":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":40},"additionalProperties":{"type":"string","maxLength":500},"description":"Sus propios datos: hasta 50 llaves de 40 caracteres con valores de texto de hasta 500. No van al CFDI; vuelven en el objeto y en los webhooks."}},"required":["tax_id","legal_name","tax_system","zip"],"additionalProperties":false},"example":{"tax_id":"TOL190312KT4","legal_name":"TOLPI","tax_system":"601","zip":"64000","metadata":{"cliente":"42"}}}}},"responses":{"201":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Issuer"},"example":{"id":"iss_OufpKqnrvx9p","object":"issuer","livemode":false,"tax_id":"TOL190312KT4","legal_name":"TOLPI","tax_system":"601","zip":"64000","status":"active","requirement":null,"certificate":{"serial_number":"30001000000500003416","expires_at":"2027-05-18T05:43:51-06:00"},"sat_downloads":{"available":true,"efirma_expires_at":null},"employer_registration":null,"curp":null,"stamps_as":"EKU9003173C9","sandbox":null,"test_clock":null,"created_at":"2026-10-24T10:15:42-06:00","archived_at":null,"metadata":{"cliente":"42"}}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"get":{"operationId":"listIssuers","tags":["Emisores"],"security":[{"bearerAuth":[]}],"summary":"Listar emisores","description":"Los emisores de la cuenta en el modo de la llave, los más recientes primero. Una llave limitada a algunos emisores solo ve los suyos.","parameters":[{"name":"limit","in":"query","description":"Cuántos por página, de 1 a 100. Por omisión 10.","schema":{"type":"integer","minimum":1,"maximum":100,"default":10}},{"name":"starting_after","in":"query","description":"El id del último de la página anterior, para la siguiente.","schema":{"type":"string"}},{"name":"tax_id","in":"query","description":"Solo el de este RFC.","schema":{"type":"string"}},{"name":"include_archived","in":"query","description":"true para incluir los archivados.","schema":{"type":"boolean"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssuerList"},"example":{"object":"list","data":[{"id":"iss_OufpKqnrvx9p","object":"issuer","livemode":false,"tax_id":"TOL190312KT4","legal_name":"TOLPI","tax_system":"601","zip":"64000","status":"active","requirement":null,"certificate":{"serial_number":"30001000000500003416","expires_at":"2027-05-18T05:43:51-06:00"},"sat_downloads":{"available":true,"efirma_expires_at":null},"employer_registration":null,"curp":null,"stamps_as":"EKU9003173C9","sandbox":null,"test_clock":null,"created_at":"2026-10-24T10:15:42-06:00","archived_at":null,"metadata":{"cliente":"42"}}],"has_more":false,"url":"/v1/issuers"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/issuers/{id}":{"get":{"operationId":"getIssuer","tags":["Emisores"],"security":[{"bearerAuth":[]}],"summary":"Ver un emisor","description":"Un emisor: sus datos fiscales, si ya puede timbrar (status, CSD y contrato con el PAC) y su registro patronal.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Issuer"},"example":{"id":"iss_OufpKqnrvx9p","object":"issuer","livemode":false,"tax_id":"TOL190312KT4","legal_name":"TOLPI","tax_system":"601","zip":"64000","status":"active","requirement":null,"certificate":{"serial_number":"30001000000500003416","expires_at":"2027-05-18T05:43:51-06:00"},"sat_downloads":{"available":true,"efirma_expires_at":null},"employer_registration":null,"curp":null,"stamps_as":"EKU9003173C9","sandbox":null,"test_clock":null,"created_at":"2026-10-24T10:15:42-06:00","archived_at":null,"metadata":{"cliente":"42"}}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"post":{"operationId":"updateIssuer","tags":["Emisores"],"security":[{"bearerAuth":[]}],"summary":"Actualizar un emisor","description":"Solo cambia lo que mande. El RFC no cambia: cree otro emisor.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"legal_name":{"type":"string","minLength":1,"maxLength":300,"description":"Nombre o razón social tal como está en la constancia de situación fiscal, sin el régimen de capital (sin «S.A. de C.V.»)."},"tax_system":{"type":"string","pattern":"^6\\d\\d$","description":"Régimen fiscal (RegimenFiscal), clave de c_RegimenFiscal: 601, 612, 626…"},"zip":{"type":"string","pattern":"^\\d{5}$","description":"Código postal del domicilio fiscal, 5 dígitos, como en la constancia de situación fiscal. El de un emisor es el lugar de expedición (LugarExpedicion) de sus comprobantes."},"employer_registration":{"type":["string","null"],"description":"Registro patronal ante el IMSS (RegistroPatronal), 11 caracteres. Necesario para timbrar nómina."},"curp":{"type":["string","null"],"description":"CURP, 18 caracteres."},"metadata":{"anyOf":[{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":40},"additionalProperties":{"type":"string","maxLength":500}},{"type":"null"}],"description":"Sus propios datos: hasta 50 llaves de 40 caracteres con valores de texto de hasta 500. No van al CFDI; vuelven en el objeto y en los webhooks."}},"additionalProperties":false},"example":{"zip":"64010","employer_registration":"Y5412345109"}}}},"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Issuer"},"example":{"id":"iss_OufpKqnrvx9p","object":"issuer","livemode":false,"tax_id":"TOL190312KT4","legal_name":"TOLPI","tax_system":"601","zip":"64000","status":"active","requirement":null,"certificate":{"serial_number":"30001000000500003416","expires_at":"2027-05-18T05:43:51-06:00"},"sat_downloads":{"available":true,"efirma_expires_at":null},"employer_registration":null,"curp":null,"stamps_as":"EKU9003173C9","sandbox":null,"test_clock":null,"created_at":"2026-10-24T10:15:42-06:00","archived_at":null,"metadata":{"cliente":"42"}}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"delete":{"operationId":"archiveIssuer","tags":["Emisores"],"security":[{"bearerAuth":[]}],"summary":"Archivar un emisor","description":"Deja de timbrar; sus comprobantes se quedan.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Issuer"},"example":{"id":"iss_OufpKqnrvx9p","object":"issuer","livemode":false,"tax_id":"TOL190312KT4","legal_name":"TOLPI","tax_system":"601","zip":"64000","status":"active","requirement":null,"certificate":{"serial_number":"30001000000500003416","expires_at":"2027-05-18T05:43:51-06:00"},"sat_downloads":{"available":true,"efirma_expires_at":null},"employer_registration":null,"curp":null,"stamps_as":"EKU9003173C9","sandbox":null,"test_clock":null,"created_at":"2026-10-24T10:15:42-06:00","archived_at":null,"metadata":{"cliente":"42"}}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/issuers/{id}/certificates":{"post":{"operationId":"uploadCertificate","tags":["Emisores"],"security":[{"bearerAuth":[]}],"summary":"Subir el CSD","description":"El certificado de sello digital (.cer y .key en base64) y la contraseña de la llave. Se guarda cifrado y solo se usa para sellar. En pruebas se revisa pero se timbra con el CSD de pruebas del SAT.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"cer":{"type":"string","minLength":1,"maxLength":87386,"description":"El archivo .cer en base64 (puede traer el prefijo data:)."},"key":{"type":"string","minLength":1,"maxLength":87386,"description":"El archivo .key en base64 (puede traer el prefijo data:)."},"password":{"type":"string","minLength":1,"maxLength":256,"description":"La contraseña de la llave privada (.key). Se usa para abrirla y no se guarda en texto."}},"required":["cer","key","password"],"additionalProperties":false},"example":{"cer":"MIIF+TCCA+GgAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTY=","key":"MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQI","password":"12345678a"}}}},"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Issuer"},"example":{"id":"iss_OufpKqnrvx9p","object":"issuer","livemode":false,"tax_id":"TOL190312KT4","legal_name":"TOLPI","tax_system":"601","zip":"64000","status":"active","requirement":null,"certificate":{"serial_number":"30001000000500003416","expires_at":"2027-05-18T05:43:51-06:00"},"sat_downloads":{"available":true,"efirma_expires_at":null},"employer_registration":null,"curp":null,"stamps_as":"EKU9003173C9","sandbox":null,"test_clock":null,"created_at":"2026-10-24T10:15:42-06:00","archived_at":null,"metadata":{"cliente":"42"}}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/issuers/{id}/efirma":{"post":{"operationId":"signEfirma","tags":["Emisores"],"security":[{"bearerAuth":[]}],"summary":"Firmar el contrato con el PAC","description":"Una sola vez por RFC antes de timbrar en producción: firma el contrato de servicio del PAC (Finkok) con la e.firma del emisor. La e.firma se usa en memoria para esa firma y no se guarda, salvo que mande keep_for_downloads: true para pedirle al SAT las facturas del emisor (POST /v1/sat_downloads); entonces se guarda cifrada y puede borrarla con DELETE.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"cer":{"type":"string","minLength":1,"maxLength":87386,"description":"El archivo .cer en base64 (puede traer el prefijo data:)."},"key":{"type":"string","minLength":1,"maxLength":87386,"description":"El archivo .key en base64 (puede traer el prefijo data:)."},"password":{"type":"string","minLength":1,"maxLength":256,"description":"La contraseña de la llave privada (.key). Se usa para abrirla y no se guarda en texto."},"keep_for_downloads":{"description":"true para guardarla (cifrada) y poder pedir al SAT las facturas del emisor con POST /v1/sat_downloads. Sin esto solo firma el contrato con el PAC y no se guarda.","type":"boolean"}},"required":["cer","key","password"],"additionalProperties":false},"example":{"cer":"MIIF+TCCA+GgAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTY=","key":"MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQI","password":"12345678a","keep_for_downloads":true}}}},"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Issuer"},"example":{"id":"iss_OufpKqnrvx9p","object":"issuer","livemode":false,"tax_id":"TOL190312KT4","legal_name":"TOLPI","tax_system":"601","zip":"64000","status":"active","requirement":null,"certificate":{"serial_number":"30001000000500003416","expires_at":"2027-05-18T05:43:51-06:00"},"sat_downloads":{"available":true,"efirma_expires_at":null},"employer_registration":null,"curp":null,"stamps_as":"EKU9003173C9","sandbox":null,"test_clock":null,"created_at":"2026-10-24T10:15:42-06:00","archived_at":null,"metadata":{"cliente":"42"}}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"delete":{"operationId":"deleteEfirma","tags":["Emisores"],"security":[{"bearerAuth":[]}],"summary":"Borrar la e.firma guardada","description":"Borra la e.firma que guardó con keep_for_downloads. El emisor sigue timbrando; ya no puede pedir descargas al SAT hasta que la mande de nuevo.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Issuer"},"example":{"id":"iss_OufpKqnrvx9p","object":"issuer","livemode":false,"tax_id":"TOL190312KT4","legal_name":"TOLPI","tax_system":"601","zip":"64000","status":"active","requirement":null,"certificate":{"serial_number":"30001000000500003416","expires_at":"2027-05-18T05:43:51-06:00"},"sat_downloads":{"available":true,"efirma_expires_at":null},"employer_registration":null,"curp":null,"stamps_as":"EKU9003173C9","sandbox":null,"test_clock":null,"created_at":"2026-10-24T10:15:42-06:00","archived_at":null,"metadata":{"cliente":"42"}}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/issuers/{id}/onboarding_links":{"post":{"operationId":"createIssuerOnboardingLink","tags":["Emisores"],"security":[{"bearerAuth":[]}],"summary":"Crear una liga de alta","description":"Una página en fiscalisto.com donde el dueño del emisor sube su CSD y firma el contrato con el PAC con su e.firma, sin que esos archivos ni sus contraseñas pasen por su plataforma. Mande a su cliente a url; al terminar vuelve a return_url y llega issuer.ready. Cada liga sirve para un emisor, hasta que vence.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"return_url":{"description":"A dónde regresa el botón al terminar, por ejemplo la página de su plataforma donde su cliente sigue. Sin ella, la página solo dice que ya terminó.","type":"string","maxLength":2000,"format":"uri"},"expires_in_hours":{"description":"Horas que la liga sirve, de 1 a 168 (7 días). Por omisión 24.","type":"integer","minimum":1,"maximum":168}},"additionalProperties":false},"example":{"return_url":"https://miplataforma.mx/configuracion/facturas"}}}},"responses":{"201":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssuerOnboardingLink"},"example":{"object":"issuer_onboarding_link","livemode":false,"issuer":"iss_0q1Vmmw52sbD","url":"https://fiscalisto.com/alta/fko_8Xc1nQ2VbT0aLm3Rk7Yp9WdZs4Hf6Jg5Ue1Oi2Ky","return_url":"https://miplataforma.mx/configuracion/facturas","expires_at":"2026-10-25T10:15:00-06:00","created_at":"2026-10-24T10:15:00-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/invoices":{"post":{"operationId":"createInvoice","tags":["Facturas"],"security":[{"bearerAuth":[]}],"summary":"Timbrar una factura","description":"Revisa la factura con las reglas del SAT, la sella y la timbra en una sola llamada. Responde con la factura timbrada (status valid) o, si el PAC tarda, en processing (escuche invoice.stamped). Lo que puede omitir tiene el valor usual: PUE, MXN, uso G03 (S01 con régimen 616), objeto de impuesto 02, IVA 16%, cantidad 1, unidad E48.","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoiceCreate"},"example":{"customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826","email":"pagos@cva.example"},"payment_form":"03","items":[{"description":"Mensualidad","product_key":"86121700","quantity":2,"unit_price":2500}],"send_email":true,"metadata":{"pedido":"A-1042"}}}}},"responses":{"201":{"description":"Correcto. Repetir la solicitud con la misma Idempotency-Key contesta lo mismo, con el mismo status y el encabezado idempotent-replayed: true.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"},"idempotent-replayed":{"$ref":"#/components/headers/IdempotentReplayed"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Invoice"},"example":{"id":"inv_OufpKqnrvx9p0Nfbydl9jG4UNGeTYcvdrg","object":"invoice","livemode":false,"issuer":"iss_OufpKqnrvx9p","branch":null,"type":"I","status":"valid","uuid":"5F1E8C2A-3B7D-4C9E-A1B2-C3D4E5F60718","series":null,"folio":"1","date":"2026-10-24T10:15:42","customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826"},"use":"I04","payment_form":"03","payment_method":"PUE","currency":"MXN","exchange_rate":null,"items":[{"description":"Mensualidad","product_key":"86121700","unit_key":"E48","unit_name":"Unidad de servicio","sku":"MEN-1","quantity":2,"unit_price":2500,"taxability":"02","iva":"0.16"}],"subtotal":5000,"discount":0,"taxes":{"iva":800,"ieps":0,"iva_withheld":0,"isr_withheld":0,"local_transferred":0,"local_withheld":0},"total":5800,"payment_status":"paid","amount_due":0,"amount_paid":5800,"related":null,"cancellation":null,"email":null,"error":null,"recurring_invoice":null,"created_at":"2026-10-24T10:15:42-06:00","metadata":{}}}}},"202":{"description":"El PAC no contestó a tiempo: el comprobante queda en processing y se timbra solo en unos momentos. Escuche el evento *.stamped o consúltelo con GET; repetir la solicitud con la misma Idempotency-Key contesta su estado sin timbrar otra vez.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"},"idempotent-replayed":{"$ref":"#/components/headers/IdempotentReplayed"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Invoice"},"example":{"id":"inv_OufpKqnrvx9p0Nfbydl9jG4UNGeTYcvdrg","object":"invoice","livemode":false,"issuer":"iss_OufpKqnrvx9p","branch":null,"type":"I","status":"valid","uuid":"5F1E8C2A-3B7D-4C9E-A1B2-C3D4E5F60718","series":null,"folio":"1","date":"2026-10-24T10:15:42","customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826"},"use":"I04","payment_form":"03","payment_method":"PUE","currency":"MXN","exchange_rate":null,"items":[{"description":"Mensualidad","product_key":"86121700","unit_key":"E48","unit_name":"Unidad de servicio","sku":"MEN-1","quantity":2,"unit_price":2500,"taxability":"02","iva":"0.16"}],"subtotal":5000,"discount":0,"taxes":{"iva":800,"ieps":0,"iva_withheld":0,"isr_withheld":0,"local_transferred":0,"local_withheld":0},"total":5800,"payment_status":"paid","amount_due":0,"amount_paid":5800,"related":null,"cancellation":null,"email":null,"error":null,"recurring_invoice":null,"created_at":"2026-10-24T10:15:42-06:00","metadata":{}}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"402":{"$ref":"#/components/responses/Error402"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"409":{"$ref":"#/components/responses/Error409"},"422":{"$ref":"#/components/responses/Error422"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"get":{"operationId":"listInvoices","tags":["Facturas"],"security":[{"bearerAuth":[]}],"summary":"Listar facturas","description":"Las más recientes primero.","parameters":[{"name":"limit","in":"query","description":"Cuántos por página, de 1 a 100. Por omisión 10.","schema":{"type":"integer","minimum":1,"maximum":100,"default":10}},{"name":"starting_after","in":"query","description":"El id del último de la página anterior, para la siguiente.","schema":{"type":"string"}},{"name":"issuer","in":"query","description":"El emisor (iss_…). Puede omitirse si la llave o la cuenta tienen uno solo.","schema":{"type":"string"}},{"name":"status","in":"query","description":"valid, pending, canceled, rejected o processing.","schema":{"type":"string","enum":["valid","pending","canceled","rejected","processing"]}},{"name":"type","in":"query","description":"I, E, P, T o N.","schema":{"type":"string","enum":["I","E","P","T","N"]}},{"name":"customer","in":"query","description":"RFC del cliente o su id (cus_…).","schema":{"type":"string"}},{"name":"payment_status","in":"query","description":"Facturas de ingreso por lo que deben: unpaid, partial, open (unpaid o partial) o paid.","schema":{"type":"string","enum":["unpaid","partial","open","paid"]}},{"name":"created_gte","in":"query","description":"Creadas desde, en ISO 8601. Un día solo (2026-10-01) cuenta desde su inicio en hora de la Ciudad de México.","schema":{"type":"string"}},{"name":"created_lte","in":"query","description":"Creadas hasta, en ISO 8601. Un día solo (2026-10-31) incluye el día completo en hora de la Ciudad de México.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoiceList"},"example":{"object":"list","data":[{"id":"inv_OufpKqnrvx9p0Nfbydl9jG4UNGeTYcvdrg","object":"invoice","livemode":false,"issuer":"iss_OufpKqnrvx9p","branch":null,"type":"I","status":"valid","uuid":"5F1E8C2A-3B7D-4C9E-A1B2-C3D4E5F60718","series":null,"folio":"1","date":"2026-10-24T10:15:42","customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826"},"use":"I04","payment_form":"03","payment_method":"PUE","currency":"MXN","exchange_rate":null,"items":[{"description":"Mensualidad","product_key":"86121700","unit_key":"E48","unit_name":"Unidad de servicio","sku":"MEN-1","quantity":2,"unit_price":2500,"taxability":"02","iva":"0.16"}],"subtotal":5000,"discount":0,"taxes":{"iva":800,"ieps":0,"iva_withheld":0,"isr_withheld":0,"local_transferred":0,"local_withheld":0},"total":5800,"payment_status":"paid","amount_due":0,"amount_paid":5800,"related":null,"cancellation":null,"email":null,"error":null,"recurring_invoice":null,"created_at":"2026-10-24T10:15:42-06:00","metadata":{}}],"has_more":false,"url":"/v1/invoices"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/invoices/{id}":{"get":{"operationId":"getInvoice","tags":["Facturas"],"security":[{"bearerAuth":[]}],"summary":"Ver una factura","description":"Por su id (inv_…) o por su folio fiscal (UUID).","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"name":"issuer","in":"query","description":"Con un UUID en vez del id, el emisor (iss_…) si la cuenta tiene varios.","schema":{"type":"string"}},{"name":"refresh","in":"query","description":"true para preguntar su estado al SAT ahora (cancelaciones en espera).","schema":{"type":"boolean"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Invoice"},"example":{"id":"inv_OufpKqnrvx9p0Nfbydl9jG4UNGeTYcvdrg","object":"invoice","livemode":false,"issuer":"iss_OufpKqnrvx9p","branch":null,"type":"I","status":"valid","uuid":"5F1E8C2A-3B7D-4C9E-A1B2-C3D4E5F60718","series":null,"folio":"1","date":"2026-10-24T10:15:42","customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826"},"use":"I04","payment_form":"03","payment_method":"PUE","currency":"MXN","exchange_rate":null,"items":[{"description":"Mensualidad","product_key":"86121700","unit_key":"E48","unit_name":"Unidad de servicio","sku":"MEN-1","quantity":2,"unit_price":2500,"taxability":"02","iva":"0.16"}],"subtotal":5000,"discount":0,"taxes":{"iva":800,"ieps":0,"iva_withheld":0,"isr_withheld":0,"local_transferred":0,"local_withheld":0},"total":5800,"payment_status":"paid","amount_due":0,"amount_paid":5800,"related":null,"cancellation":null,"email":null,"error":null,"recurring_invoice":null,"created_at":"2026-10-24T10:15:42-06:00","metadata":{}}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/invoices/{id}/pdf":{"get":{"operationId":"getInvoicePdf","tags":["Facturas"],"security":[{"bearerAuth":[]}],"summary":"Descargar el PDF","description":"La representación impresa del CFDI, como la recibe su cliente. En vez del id puede usar el UUID (con issuer si la cuenta tiene varios emisores).","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"name":"issuer","in":"query","description":"Con un UUID en vez del id, el emisor (iss_…) si la cuenta tiene varios.","schema":{"type":"string"}}],"responses":{"200":{"description":"El archivo.","content":{"application/pdf":{"schema":{"type":"string","format":"binary"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/invoices/{id}/xml":{"get":{"operationId":"getInvoiceXml","tags":["Facturas"],"security":[{"bearerAuth":[]}],"summary":"Descargar el XML","description":"El CFDI timbrado, tal como lo tiene el SAT.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"name":"issuer","in":"query","description":"Con un UUID en vez del id, el emisor (iss_…) si la cuenta tiene varios.","schema":{"type":"string"}}],"responses":{"200":{"description":"El archivo.","content":{"application/xml":{"schema":{"type":"string","format":"binary"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/invoices/{id}/send":{"post":{"operationId":"sendInvoice","tags":["Facturas"],"security":[{"bearerAuth":[]}],"summary":"Enviar por correo","description":"Manda el PDF y el XML con el diseño de Fiscalisto. Sin `to`, al correo del cliente. Con la misma Idempotency-Key no se manda dos veces.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"to":{"type":"string","maxLength":1000,"description":"A quién (correos separados por comas)."},"cc":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"description":"Con copia (correos separados por comas)."}},"additionalProperties":false},"example":{"to":"pagos@cva.example","cc":"contabilidad@cva.example"}}}},"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Invoice"},"example":{"id":"inv_OufpKqnrvx9p0Nfbydl9jG4UNGeTYcvdrg","object":"invoice","livemode":false,"issuer":"iss_OufpKqnrvx9p","branch":null,"type":"I","status":"valid","uuid":"5F1E8C2A-3B7D-4C9E-A1B2-C3D4E5F60718","series":null,"folio":"1","date":"2026-10-24T10:15:42","customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826"},"use":"I04","payment_form":"03","payment_method":"PUE","currency":"MXN","exchange_rate":null,"items":[{"description":"Mensualidad","product_key":"86121700","unit_key":"E48","unit_name":"Unidad de servicio","sku":"MEN-1","quantity":2,"unit_price":2500,"taxability":"02","iva":"0.16"}],"subtotal":5000,"discount":0,"taxes":{"iva":800,"ieps":0,"iva_withheld":0,"isr_withheld":0,"local_transferred":0,"local_withheld":0},"total":5800,"payment_status":"paid","amount_due":0,"amount_paid":5800,"related":null,"cancellation":null,"email":null,"error":null,"recurring_invoice":null,"created_at":"2026-10-24T10:15:42-06:00","metadata":{}}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/invoices/{id}/cancel":{"post":{"operationId":"cancelInvoice","tags":["Facturas"],"security":[{"bearerAuth":[]}],"summary":"Cancelar una factura","description":"Pide la cancelación al SAT. Si el cliente debe aceptarla queda en pending (escuche invoice.canceled o invoice.cancellation_rejected). No usa timbres.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"motive":{"default":"02","type":"string","enum":["01","02","03","04"],"description":"Motivo de cancelación (c_MotivoCancelacion): 01 con errores con relación (lleva substitution), 02 con errores sin relación (por omisión), 03 no se llevó a cabo, 04 solo en una factura global, cuando una venta incluida se facturó a nombre del cliente."},"substitution":{"type":"string","description":"El comprobante que sustituye a este (su id o su UUID), con el motivo 01."}},"additionalProperties":false},"example":{"motive":"02"}}}},"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Invoice"},"example":{"id":"inv_OufpKqnrvx9p0Nfbydl9jG4UNGeTYcvdrg","object":"invoice","livemode":false,"issuer":"iss_OufpKqnrvx9p","branch":null,"type":"I","status":"valid","uuid":"5F1E8C2A-3B7D-4C9E-A1B2-C3D4E5F60718","series":null,"folio":"1","date":"2026-10-24T10:15:42","customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826"},"use":"I04","payment_form":"03","payment_method":"PUE","currency":"MXN","exchange_rate":null,"items":[{"description":"Mensualidad","product_key":"86121700","unit_key":"E48","unit_name":"Unidad de servicio","sku":"MEN-1","quantity":2,"unit_price":2500,"taxability":"02","iva":"0.16"}],"subtotal":5000,"discount":0,"taxes":{"iva":800,"ieps":0,"iva_withheld":0,"isr_withheld":0,"local_transferred":0,"local_withheld":0},"total":5800,"payment_status":"paid","amount_due":0,"amount_paid":5800,"related":null,"cancellation":null,"email":null,"error":null,"recurring_invoice":null,"created_at":"2026-10-24T10:15:42-06:00","metadata":{}}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"422":{"$ref":"#/components/responses/Error422"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/invoices/{id}/substitute":{"post":{"operationId":"substituteInvoice","tags":["Facturas"],"security":[{"bearerAuth":[]}],"summary":"Sustituir una factura","description":"Timbra la factura corregida (el mismo cuerpo que POST /v1/invoices, relacionada 04) y cancela la anterior con motivo 01.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoiceCreate"},"example":{"customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826","email":"pagos@cva.example"},"payment_form":"03","items":[{"description":"Mensualidad","product_key":"86121700","quantity":2,"unit_price":2400}],"send_email":true,"metadata":{"pedido":"A-1042"}}}}},"responses":{"201":{"description":"Correcto. Repetir la solicitud con la misma Idempotency-Key contesta lo mismo, con el mismo status y el encabezado idempotent-replayed: true.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"},"idempotent-replayed":{"$ref":"#/components/headers/IdempotentReplayed"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Invoice"},"example":{"id":"inv_OufpKqnrvx9p0Nfbydl9jG4UNGeTYcvdrg","object":"invoice","livemode":false,"issuer":"iss_OufpKqnrvx9p","branch":null,"type":"I","status":"valid","uuid":"5F1E8C2A-3B7D-4C9E-A1B2-C3D4E5F60718","series":null,"folio":"1","date":"2026-10-24T10:15:42","customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826"},"use":"I04","payment_form":"03","payment_method":"PUE","currency":"MXN","exchange_rate":null,"items":[{"description":"Mensualidad","product_key":"86121700","unit_key":"E48","unit_name":"Unidad de servicio","sku":"MEN-1","quantity":2,"unit_price":2500,"taxability":"02","iva":"0.16"}],"subtotal":5000,"discount":0,"taxes":{"iva":800,"ieps":0,"iva_withheld":0,"isr_withheld":0,"local_transferred":0,"local_withheld":0},"total":5800,"payment_status":"paid","amount_due":0,"amount_paid":5800,"related":null,"cancellation":null,"email":null,"error":null,"recurring_invoice":null,"created_at":"2026-10-24T10:15:42-06:00","metadata":{}}}}},"202":{"description":"El PAC no contestó a tiempo: el comprobante queda en processing y se timbra solo en unos momentos. Escuche el evento *.stamped o consúltelo con GET; repetir la solicitud con la misma Idempotency-Key contesta su estado sin timbrar otra vez.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"},"idempotent-replayed":{"$ref":"#/components/headers/IdempotentReplayed"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Invoice"},"example":{"id":"inv_OufpKqnrvx9p0Nfbydl9jG4UNGeTYcvdrg","object":"invoice","livemode":false,"issuer":"iss_OufpKqnrvx9p","branch":null,"type":"I","status":"valid","uuid":"5F1E8C2A-3B7D-4C9E-A1B2-C3D4E5F60718","series":null,"folio":"1","date":"2026-10-24T10:15:42","customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826"},"use":"I04","payment_form":"03","payment_method":"PUE","currency":"MXN","exchange_rate":null,"items":[{"description":"Mensualidad","product_key":"86121700","unit_key":"E48","unit_name":"Unidad de servicio","sku":"MEN-1","quantity":2,"unit_price":2500,"taxability":"02","iva":"0.16"}],"subtotal":5000,"discount":0,"taxes":{"iva":800,"ieps":0,"iva_withheld":0,"isr_withheld":0,"local_transferred":0,"local_withheld":0},"total":5800,"payment_status":"paid","amount_due":0,"amount_paid":5800,"related":null,"cancellation":null,"email":null,"error":null,"recurring_invoice":null,"created_at":"2026-10-24T10:15:42-06:00","metadata":{}}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"402":{"$ref":"#/components/responses/Error402"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"409":{"$ref":"#/components/responses/Error409"},"422":{"$ref":"#/components/responses/Error422"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/invoices/{id}/mark_paid":{"post":{"operationId":"markInvoicePaid","tags":["Cuentas por cobrar"],"security":[{"bearerAuth":[]}],"summary":"Marcar pagada","description":"Una factura PUE timbrada con paid_later (o marcada por cobrar) ya se pagó: queda paid y llega invoice.paid. Una PPD se paga con su complemento de pago (POST /v1/payments).","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Invoice"},"example":{"id":"inv_OufpKqnrvx9p0Nfbydl9jG4UNGeTYcvdrg","object":"invoice","livemode":false,"issuer":"iss_OufpKqnrvx9p","branch":null,"type":"I","status":"valid","uuid":"5F1E8C2A-3B7D-4C9E-A1B2-C3D4E5F60718","series":null,"folio":"1","date":"2026-10-24T10:15:42","customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826"},"use":"I04","payment_form":"03","payment_method":"PUE","currency":"MXN","exchange_rate":null,"items":[{"description":"Mensualidad","product_key":"86121700","unit_key":"E48","unit_name":"Unidad de servicio","sku":"MEN-1","quantity":2,"unit_price":2500,"taxability":"02","iva":"0.16"}],"subtotal":5000,"discount":0,"taxes":{"iva":800,"ieps":0,"iva_withheld":0,"isr_withheld":0,"local_transferred":0,"local_withheld":0},"total":5800,"payment_status":"paid","amount_due":0,"amount_paid":5800,"related":null,"cancellation":null,"email":null,"error":null,"recurring_invoice":null,"created_at":"2026-10-24T10:15:42-06:00","metadata":{}}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/invoices/{id}/mark_unpaid":{"post":{"operationId":"markInvoiceUnpaid","tags":["Cuentas por cobrar"],"security":[{"bearerAuth":[]}],"summary":"Marcar por cobrar","description":"Una factura PUE que el cliente aún no paga (le paga este mes): queda unpaid hasta POST /v1/invoices/{id}/mark_paid. Si el mes termina sin pago, la ley pide sustituirla por una PPD (regla 2.7.1.39 de la RMF).","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Invoice"},"example":{"id":"inv_OufpKqnrvx9p0Nfbydl9jG4UNGeTYcvdrg","object":"invoice","livemode":false,"issuer":"iss_OufpKqnrvx9p","branch":null,"type":"I","status":"valid","uuid":"5F1E8C2A-3B7D-4C9E-A1B2-C3D4E5F60718","series":null,"folio":"1","date":"2026-10-24T10:15:42","customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826"},"use":"I04","payment_form":"03","payment_method":"PUE","currency":"MXN","exchange_rate":null,"items":[{"description":"Mensualidad","product_key":"86121700","unit_key":"E48","unit_name":"Unidad de servicio","sku":"MEN-1","quantity":2,"unit_price":2500,"taxability":"02","iva":"0.16"}],"subtotal":5000,"discount":0,"taxes":{"iva":800,"ieps":0,"iva_withheld":0,"isr_withheld":0,"local_transferred":0,"local_withheld":0},"total":5800,"payment_status":"paid","amount_due":0,"amount_paid":5800,"related":null,"cancellation":null,"email":null,"error":null,"recurring_invoice":null,"created_at":"2026-10-24T10:15:42-06:00","metadata":{}}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/receivables":{"get":{"operationId":"listReceivables","tags":["Cuentas por cobrar"],"security":[{"bearerAuth":[]}],"summary":"Ver lo que le deben","description":"Lo que debe cada cliente, por moneda, de sus facturas abiertas (PPD con saldo y PUE por cobrar), ordenado por RFC. Las facturas de cada uno: GET /v1/invoices?customer=RFC&payment_status=open.","parameters":[{"name":"limit","in":"query","description":"Cuántos por página, de 1 a 100. Por omisión 10.","schema":{"type":"integer","minimum":1,"maximum":100,"default":10}},{"name":"starting_after","in":"query","description":"El id del último de la página anterior, para la siguiente.","schema":{"type":"string"}},{"name":"issuer","in":"query","description":"El emisor (iss_…). Puede omitirse si la llave o la cuenta tienen uno solo.","schema":{"type":"string"}},{"name":"customer","in":"query","description":"Solo este cliente: su RFC o su id (cus_…).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReceivableList"},"example":{"object":"list","data":[{"id":"ICV060329BY0:MXN","object":"receivable","livemode":false,"issuer":"iss_OufpKqnrvx9p","customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA"},"currency":"MXN","amount_due":34800,"open_invoices":2,"oldest_invoice_date":"2026-09-01"}],"has_more":false,"url":"/v1/receivables"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/bank_transactions":{"post":{"operationId":"createBankTransactions","tags":["Conciliación bancaria"],"security":[{"bearerAuth":[]}],"summary":"Mandar depósitos","description":"Los depósitos de la cuenta del emisor (de la API de su banco o de un estado de cuenta), hasta 1,000 por solicitud. Uno que ya mandó (mismo día, monto, referencia y concepto) se omite, así que puede mandar periodos que se enciman. Cada uno trae suggested_match: las facturas que parece pagar.","parameters":[{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"issuer":{"type":"string","description":"Emisor (iss_…). Si la llave tiene un solo emisor o la cuenta tiene uno solo, puede omitirse."},"account":{"description":"La cuenta (CLABE o número; se guardan sus últimos 4 dígitos).","type":"string","maxLength":40},"transactions":{"minItems":1,"maxItems":1000,"type":"array","items":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"El día del depósito (AAAA-MM-DD)."},"amount":{"type":"number","exclusiveMinimum":0,"maximum":1000000000000,"description":"Lo depositado, en pesos. Los retiros no se mandan."},"description":{"type":"string","minLength":1,"maxLength":500,"description":"El concepto del banco, como viene (SPEI, nombre del ordenante…)."},"reference":{"description":"La referencia o clave de rastreo.","type":"string","maxLength":100},"payer_tax_id":{"description":"El RFC de quien depositó, si lo sabe (ayuda a sugerir la factura).","type":"string","pattern":"^[A-ZÑ&]{3,4}\\d{6}[A-Z\\d]{3}$"}},"required":["date","amount","description"],"additionalProperties":false},"description":"Los depósitos, hasta 1,000 por solicitud."}},"required":["transactions"],"additionalProperties":false},"example":{"account":"012180001234567891","transactions":[{"date":"2026-10-24","amount":5800,"description":"SPEI RECIBIDO INMOBILIARIA CVA","reference":"F-1024","payer_tax_id":"ICV060329BY0"}]}}}},"responses":{"201":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BankImport"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"get":{"operationId":"listBankTransactions","tags":["Conciliación bancaria"],"security":[{"bearerAuth":[]}],"summary":"Listar depósitos","description":"Los más recientes primero; los abiertos con su suggested_match.","parameters":[{"name":"limit","in":"query","description":"Cuántos por página, de 1 a 100. Por omisión 10.","schema":{"type":"integer","minimum":1,"maximum":100,"default":10}},{"name":"starting_after","in":"query","description":"El id del último de la página anterior, para la siguiente.","schema":{"type":"string"}},{"name":"issuer","in":"query","description":"El emisor (iss_…). Puede omitirse si la llave o la cuenta tienen uno solo.","schema":{"type":"string"}},{"name":"status","in":"query","description":"open (sin conciliar), matched o classified.","schema":{"type":"string","enum":["open","matched","classified"]}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BankTransactionList"},"example":{"object":"list","data":[{"id":"btx_OufpKqnrvx9p9Rt4sLm2XyT5uBcW8sKdLx","object":"bank_transaction","livemode":false,"issuer":"iss_OufpKqnrvx9p","date":"2026-10-24","amount":5800,"description":"SPEI RECIBIDO INMOBILIARIA CVA · ICV060329BY0","reference":"F-1024","account":"4821","payer_tax_id":"ICV060329BY0","status":"open","classification":null,"note":null,"invoices":[],"payment":null,"suggested_match":{"invoices":["inv_OufpKqnrvx9p6hW1yQbT3mZr8sKdLx0VeN"],"amounts":{"inv_OufpKqnrvx9p6hW1yQbT3mZr8sKdLx0VeN":5800},"method":"PUE","confidence":"high","reasons":["Mismo monto","RFC del cliente en el concepto"]},"created_at":"2026-10-25T09:00:00-06:00"}],"has_more":false,"url":"/v1/bank_transactions"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/bank_transactions/{id}":{"get":{"operationId":"getBankTransaction","tags":["Conciliación bancaria"],"security":[{"bearerAuth":[]}],"summary":"Ver un depósito","description":"Un depósito mandado a conciliación, con las facturas que se le encontraron o el pago que se registró con él.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BankTransaction"},"example":{"id":"btx_OufpKqnrvx9p9Rt4sLm2XyT5uBcW8sKdLx","object":"bank_transaction","livemode":false,"issuer":"iss_OufpKqnrvx9p","date":"2026-10-24","amount":5800,"description":"SPEI RECIBIDO INMOBILIARIA CVA · ICV060329BY0","reference":"F-1024","account":"4821","payer_tax_id":"ICV060329BY0","status":"open","classification":null,"note":null,"invoices":[],"payment":null,"suggested_match":{"invoices":["inv_OufpKqnrvx9p6hW1yQbT3mZr8sKdLx0VeN"],"amounts":{"inv_OufpKqnrvx9p6hW1yQbT3mZr8sKdLx0VeN":5800},"method":"PUE","confidence":"high","reasons":["Mismo monto","RFC del cliente en el concepto"]},"created_at":"2026-10-25T09:00:00-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/bank_transactions/{id}/match":{"post":{"operationId":"matchBankTransaction","tags":["Conciliación bancaria"],"security":[{"bearerAuth":[]}],"summary":"Conciliar un depósito","description":"El depósito pagó estas facturas (de un mismo cliente), o sin invoices, las de suggested_match. Sus facturas PUE por cobrar quedan pagadas (invoice.paid). No timbra: para pagar una PPD con este depósito, POST /v1/payments con bank_transaction.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"invoices":{"description":"Las facturas (inv_… o UUID) que pagó este depósito, de un mismo cliente. Sin ellas, las de suggested_match.","minItems":1,"maxItems":50,"type":"array","items":{"type":"string","minLength":1}}},"additionalProperties":false},"example":{"invoices":["inv_OufpKqnrvx9p6hW1yQbT3mZr8sKdLx0VeN"]}}}},"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BankTransaction"},"example":{"id":"btx_OufpKqnrvx9p9Rt4sLm2XyT5uBcW8sKdLx","object":"bank_transaction","livemode":false,"issuer":"iss_OufpKqnrvx9p","date":"2026-10-24","amount":5800,"description":"SPEI RECIBIDO INMOBILIARIA CVA · ICV060329BY0","reference":"F-1024","account":"4821","payer_tax_id":"ICV060329BY0","status":"open","classification":null,"note":null,"invoices":[],"payment":null,"suggested_match":{"invoices":["inv_OufpKqnrvx9p6hW1yQbT3mZr8sKdLx0VeN"],"amounts":{"inv_OufpKqnrvx9p6hW1yQbT3mZr8sKdLx0VeN":5800},"method":"PUE","confidence":"high","reasons":["Mismo monto","RFC del cliente en el concepto"]},"created_at":"2026-10-25T09:00:00-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/bank_transactions/{id}/classify":{"post":{"operationId":"classifyBankTransaction","tags":["Conciliación bancaria"],"security":[{"bearerAuth":[]}],"summary":"Explicar un depósito sin factura","description":"Un depósito que ninguna factura explica: venta (aún sin facturar), prestamo, traspaso o devolucion. El SAT puede presumir ingreso un depósito sin explicar (CFF art. 59 fr. III).","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"classification":{"type":"string","enum":["venta","prestamo","traspaso","devolucion"],"description":"venta (una venta que aún no se factura), prestamo, traspaso (entre cuentas propias) o devolucion."},"note":{"description":"Una nota para su equipo (de dónde vino, por qué).","type":"string","maxLength":500}},"required":["classification"],"additionalProperties":false},"example":{"classification":"traspaso","note":"De la cuenta de ahorro"}}}},"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BankTransaction"},"example":{"id":"btx_OufpKqnrvx9p9Rt4sLm2XyT5uBcW8sKdLx","object":"bank_transaction","livemode":false,"issuer":"iss_OufpKqnrvx9p","date":"2026-10-24","amount":5800,"description":"SPEI RECIBIDO INMOBILIARIA CVA · ICV060329BY0","reference":"F-1024","account":"4821","payer_tax_id":"ICV060329BY0","status":"open","classification":null,"note":null,"invoices":[],"payment":null,"suggested_match":{"invoices":["inv_OufpKqnrvx9p6hW1yQbT3mZr8sKdLx0VeN"],"amounts":{"inv_OufpKqnrvx9p6hW1yQbT3mZr8sKdLx0VeN":5800},"method":"PUE","confidence":"high","reasons":["Mismo monto","RFC del cliente en el concepto"]},"created_at":"2026-10-25T09:00:00-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/bank_transactions/{id}/reopen":{"post":{"operationId":"reopenBankTransaction","tags":["Conciliación bancaria"],"security":[{"bearerAuth":[]}],"summary":"Deshacer la conciliación","description":"Vuelve a open, y sus facturas vuelven a deber. Si se pagó con un complemento vigente, cancélelo antes.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BankTransaction"},"example":{"id":"btx_OufpKqnrvx9p9Rt4sLm2XyT5uBcW8sKdLx","object":"bank_transaction","livemode":false,"issuer":"iss_OufpKqnrvx9p","date":"2026-10-24","amount":5800,"description":"SPEI RECIBIDO INMOBILIARIA CVA · ICV060329BY0","reference":"F-1024","account":"4821","payer_tax_id":"ICV060329BY0","status":"open","classification":null,"note":null,"invoices":[],"payment":null,"suggested_match":{"invoices":["inv_OufpKqnrvx9p6hW1yQbT3mZr8sKdLx0VeN"],"amounts":{"inv_OufpKqnrvx9p6hW1yQbT3mZr8sKdLx0VeN":5800},"method":"PUE","confidence":"high","reasons":["Mismo monto","RFC del cliente en el concepto"]},"created_at":"2026-10-25T09:00:00-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/payments":{"post":{"operationId":"createPayment","tags":["Pagos y notas de crédito"],"security":[{"bearerAuth":[]}],"summary":"Timbrar un complemento de pago","description":"El recibo de pago (CFDI tipo P, Pagos 2.0) de facturas PPD: parcialidad, saldo anterior e insoluto e impuestos de cada una los calcula Fiscalisto.","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"issuer":{"type":"string","description":"Emisor (iss_…). Si la llave tiene un solo emisor o la cuenta tiene uno solo, puede omitirse."},"date":{"description":"Fecha en que le pagaron (FechaPago), AAAA-MM-DD. Por omisión hoy.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"payment_form":{"type":"string","pattern":"^\\d{2}$","description":"Forma de pago (FormaPago), clave de c_FormaPago: 01 efectivo, 03 transferencia, 04 tarjeta de crédito, 28 débito, 99 por definir… Obligatoria con PUE; con PPD es 99."},"operation_number":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"description":"Número de operación del pago (NumOperacion), como el rastreo SPEI."},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"Moneda, clave ISO 4217 de c_Moneda (MXN, USD, EUR…). Por omisión MXN."},"exchange_rate":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}],"description":"Tipo de cambio a pesos (TipoCambio). Obligatorio si la moneda no es MXN; use el del DOF del día anterior."},"series":{"type":"string","maxLength":25,"description":"Serie (Serie), hasta 25 caracteres. Cada serie lleva sus propios folios."},"documents":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"object","properties":{"invoice":{"type":"string","minLength":1,"description":"La factura (inv_… o su UUID)."},"amount":{"type":"number","exclusiveMinimum":0,"description":"Lo que se paga de esa factura (ImpPagado), en la moneda de la factura."},"received":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}],"description":"Solo si la factura es de otra moneda que el pago: lo que recibió por ella en la moneda del pago. Fiscalisto calcula la equivalencia (EquivalenciaDR)."}},"required":["invoice","amount"],"additionalProperties":false},"description":"Las facturas que paga (DoctoRelacionado)."},"send_email":{"type":"boolean","description":"true para mandar el PDF y el XML por correo al timbrar, con el diseño de Fiscalisto. Por omisión no se envía."},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","description":"Correo a donde se envía (varios separados por comas). Solo se usa si se pide enviarlo."},"email_cc":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"description":"Correos con copia, separados por comas."},"metadata":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":40},"additionalProperties":{"type":"string","maxLength":500},"description":"Sus propios datos: hasta 50 llaves de 40 caracteres con valores de texto de hasta 500. No van al CFDI; vuelven en el objeto y en los webhooks."},"bank_transaction":{"description":"El depósito (btx_…) con que le pagaron: queda conciliado con este complemento, y date es su día si no manda otra.","type":"string"}},"required":["payment_form","documents"],"additionalProperties":false},"example":{"payment_form":"03","operation_number":"SPEI-2026102400123","documents":[{"invoice":"inv_OufpKqnrvx9p0Nfbydl9jG4UNGeTYcvdrg","amount":2900}],"send_email":true}}}},"responses":{"201":{"description":"Correcto. Repetir la solicitud con la misma Idempotency-Key contesta lo mismo, con el mismo status y el encabezado idempotent-replayed: true.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"},"idempotent-replayed":{"$ref":"#/components/headers/IdempotentReplayed"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Invoice"},"example":{"id":"inv_OufpKqnrvx9p0Nfbydl9jG4UNGeTYcvdrg","object":"invoice","livemode":false,"issuer":"iss_OufpKqnrvx9p","branch":null,"type":"I","status":"valid","uuid":"5F1E8C2A-3B7D-4C9E-A1B2-C3D4E5F60718","series":null,"folio":"1","date":"2026-10-24T10:15:42","customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826"},"use":"I04","payment_form":"03","payment_method":"PUE","currency":"MXN","exchange_rate":null,"items":[{"description":"Mensualidad","product_key":"86121700","unit_key":"E48","unit_name":"Unidad de servicio","sku":"MEN-1","quantity":2,"unit_price":2500,"taxability":"02","iva":"0.16"}],"subtotal":5000,"discount":0,"taxes":{"iva":800,"ieps":0,"iva_withheld":0,"isr_withheld":0,"local_transferred":0,"local_withheld":0},"total":5800,"payment_status":"paid","amount_due":0,"amount_paid":5800,"related":null,"cancellation":null,"email":null,"error":null,"recurring_invoice":null,"created_at":"2026-10-24T10:15:42-06:00","metadata":{}}}}},"202":{"description":"El PAC no contestó a tiempo: el comprobante queda en processing y se timbra solo en unos momentos. Escuche el evento *.stamped o consúltelo con GET; repetir la solicitud con la misma Idempotency-Key contesta su estado sin timbrar otra vez.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"},"idempotent-replayed":{"$ref":"#/components/headers/IdempotentReplayed"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Invoice"},"example":{"id":"inv_OufpKqnrvx9p0Nfbydl9jG4UNGeTYcvdrg","object":"invoice","livemode":false,"issuer":"iss_OufpKqnrvx9p","branch":null,"type":"I","status":"valid","uuid":"5F1E8C2A-3B7D-4C9E-A1B2-C3D4E5F60718","series":null,"folio":"1","date":"2026-10-24T10:15:42","customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826"},"use":"I04","payment_form":"03","payment_method":"PUE","currency":"MXN","exchange_rate":null,"items":[{"description":"Mensualidad","product_key":"86121700","unit_key":"E48","unit_name":"Unidad de servicio","sku":"MEN-1","quantity":2,"unit_price":2500,"taxability":"02","iva":"0.16"}],"subtotal":5000,"discount":0,"taxes":{"iva":800,"ieps":0,"iva_withheld":0,"isr_withheld":0,"local_transferred":0,"local_withheld":0},"total":5800,"payment_status":"paid","amount_due":0,"amount_paid":5800,"related":null,"cancellation":null,"email":null,"error":null,"recurring_invoice":null,"created_at":"2026-10-24T10:15:42-06:00","metadata":{}}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"402":{"$ref":"#/components/responses/Error402"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"409":{"$ref":"#/components/responses/Error409"},"422":{"$ref":"#/components/responses/Error422"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/credit_notes":{"post":{"operationId":"createCreditNote","tags":["Pagos y notas de crédito"],"security":[{"bearerAuth":[]}],"summary":"Timbrar una nota de crédito","description":"Un egreso (tipo E) relacionado 01 (o 03, devolución) a una factura, con su IVA y retenciones en la misma proporción. amount es antes de impuestos.","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"invoice":{"type":"string","minLength":1,"description":"La factura (inv_… o su UUID)."},"amount":{"type":"number","exclusiveMinimum":0,"description":"Importe de la nota antes de impuestos: Fiscalisto agrega el IVA y las retenciones de la factura en la misma proporción."},"description":{"description":"Descripción del concepto de la nota (Descripcion), como «Descuento por pronto pago».","type":"string","minLength":1,"maxLength":1000},"payment_form":{"type":"string","pattern":"^\\d{2}$","description":"Forma de pago (FormaPago), clave de c_FormaPago: 01 efectivo, 03 transferencia, 04 tarjeta de crédito, 28 débito, 99 por definir… Obligatoria con PUE; con PPD es 99."},"relationship":{"type":"string","enum":["01","03"],"description":"Tipo de relación (TipoRelacion): 01 nota de crédito, 03 devolución, 04 sustitución, 07 anticipo…"},"send_email":{"type":"boolean","description":"true para mandar el PDF y el XML por correo al timbrar, con el diseño de Fiscalisto. Por omisión no se envía."},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","description":"Correo a donde se envía (varios separados por comas). Solo se usa si se pide enviarlo."},"email_cc":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"description":"Correos con copia, separados por comas."},"metadata":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":40},"additionalProperties":{"type":"string","maxLength":500},"description":"Sus propios datos: hasta 50 llaves de 40 caracteres con valores de texto de hasta 500. No van al CFDI; vuelven en el objeto y en los webhooks."}},"required":["invoice","amount","payment_form"],"additionalProperties":false},"example":{"invoice":"inv_OufpKqnrvx9p0Nfbydl9jG4UNGeTYcvdrg","amount":500,"description":"Descuento por pronto pago","payment_form":"03"}}}},"responses":{"201":{"description":"Correcto. Repetir la solicitud con la misma Idempotency-Key contesta lo mismo, con el mismo status y el encabezado idempotent-replayed: true.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"},"idempotent-replayed":{"$ref":"#/components/headers/IdempotentReplayed"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Invoice"},"example":{"id":"inv_OufpKqnrvx9p0Nfbydl9jG4UNGeTYcvdrg","object":"invoice","livemode":false,"issuer":"iss_OufpKqnrvx9p","branch":null,"type":"I","status":"valid","uuid":"5F1E8C2A-3B7D-4C9E-A1B2-C3D4E5F60718","series":null,"folio":"1","date":"2026-10-24T10:15:42","customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826"},"use":"I04","payment_form":"03","payment_method":"PUE","currency":"MXN","exchange_rate":null,"items":[{"description":"Mensualidad","product_key":"86121700","unit_key":"E48","unit_name":"Unidad de servicio","sku":"MEN-1","quantity":2,"unit_price":2500,"taxability":"02","iva":"0.16"}],"subtotal":5000,"discount":0,"taxes":{"iva":800,"ieps":0,"iva_withheld":0,"isr_withheld":0,"local_transferred":0,"local_withheld":0},"total":5800,"payment_status":"paid","amount_due":0,"amount_paid":5800,"related":null,"cancellation":null,"email":null,"error":null,"recurring_invoice":null,"created_at":"2026-10-24T10:15:42-06:00","metadata":{}}}}},"202":{"description":"El PAC no contestó a tiempo: el comprobante queda en processing y se timbra solo en unos momentos. Escuche el evento *.stamped o consúltelo con GET; repetir la solicitud con la misma Idempotency-Key contesta su estado sin timbrar otra vez.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"},"idempotent-replayed":{"$ref":"#/components/headers/IdempotentReplayed"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Invoice"},"example":{"id":"inv_OufpKqnrvx9p0Nfbydl9jG4UNGeTYcvdrg","object":"invoice","livemode":false,"issuer":"iss_OufpKqnrvx9p","branch":null,"type":"I","status":"valid","uuid":"5F1E8C2A-3B7D-4C9E-A1B2-C3D4E5F60718","series":null,"folio":"1","date":"2026-10-24T10:15:42","customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826"},"use":"I04","payment_form":"03","payment_method":"PUE","currency":"MXN","exchange_rate":null,"items":[{"description":"Mensualidad","product_key":"86121700","unit_key":"E48","unit_name":"Unidad de servicio","sku":"MEN-1","quantity":2,"unit_price":2500,"taxability":"02","iva":"0.16"}],"subtotal":5000,"discount":0,"taxes":{"iva":800,"ieps":0,"iva_withheld":0,"isr_withheld":0,"local_transferred":0,"local_withheld":0},"total":5800,"payment_status":"paid","amount_due":0,"amount_paid":5800,"related":null,"cancellation":null,"email":null,"error":null,"recurring_invoice":null,"created_at":"2026-10-24T10:15:42-06:00","metadata":{}}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"402":{"$ref":"#/components/responses/Error402"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"409":{"$ref":"#/components/responses/Error409"},"422":{"$ref":"#/components/responses/Error422"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/advances":{"post":{"operationId":"createAdvance","tags":["Anticipos"],"security":[{"bearerAuth":[]}],"summary":"Timbrar un anticipo","description":"La factura del anticipo: un concepto «Anticipo del bien o servicio» (84111506, ACT). amount es lo que pagó el cliente con IVA.","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"issuer":{"type":"string","description":"Emisor (iss_…). Si la llave tiene un solo emisor o la cuenta tiene uno solo, puede omitirse."},"customer":{"oneOf":[{"type":"string","pattern":"^cus_"},{"type":"object","properties":{"tax_id":{"type":"string","pattern":"^[A-ZÑ&]{3,4}\\d{6}[A-Z0-9]{3}$","description":"RFC (Rfc), 12 caracteres una persona moral y 13 una física."},"legal_name":{"type":"string","minLength":1,"maxLength":300,"description":"Nombre o razón social tal como está en la constancia de situación fiscal, sin el régimen de capital (sin «S.A. de C.V.»)."},"tax_system":{"type":"string","pattern":"^6\\d\\d$","description":"Régimen fiscal (RegimenFiscal), clave de c_RegimenFiscal: 601, 612, 626…"},"zip":{"type":"string","pattern":"^\\d{5}$","description":"Código postal del domicilio fiscal del cliente (DomicilioFiscalReceptor), 5 dígitos."},"email":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"description":"Correo a donde se envía (varios separados por comas). Solo se usa si se pide enviarlo."},"foreign":{"type":"object","properties":{"country":{"type":"string","minLength":3,"maxLength":3,"description":"País de residencia fiscal, clave de 3 letras de c_Pais (USA, CAN…)."},"tax_id":{"type":"string","minLength":1,"maxLength":40,"description":"Número de registro de identidad fiscal en su país (NumRegIdTrib)."}},"required":["country","tax_id"],"description":"Si es extranjero: su país de residencia (ResidenciaFiscal, c_Pais) y su número de registro tributario (NumRegIdTrib), con el RFC genérico XEXX010101000."},"ieps_taxpayer":{"type":"boolean","description":"true si el cliente es contribuyente de IEPS: el IEPS va desglosado en vez de sumado al precio."}},"required":["tax_id","legal_name","tax_system","zip"]}],"description":"Cliente (Receptor): el id de uno de su catálogo (cus_…) o sus datos en un objeto."},"use":{"type":"string","description":"Uso del CFDI (UsoCFDI), clave de c_UsoCFDI. Por omisión G03, o S01 con régimen 616."},"amount":{"type":"number","exclusiveMinimum":0,"description":"Lo que pagó el cliente, con IVA incluido."},"iva":{"default":"0.16","type":"string","enum":["0","0.16","0.08","exento"],"description":"Tasa de IVA trasladado: 0.16 (por omisión), 0.08 (región fronteriza), 0 o exento."},"payment_form":{"type":"string","pattern":"^\\d{2}$","description":"Forma de pago (FormaPago), clave de c_FormaPago: 01 efectivo, 03 transferencia, 04 tarjeta de crédito, 28 débito, 99 por definir… Obligatoria con PUE; con PPD es 99."},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"Moneda, clave ISO 4217 de c_Moneda (MXN, USD, EUR…). Por omisión MXN."},"exchange_rate":{"type":"number","exclusiveMinimum":0,"description":"Tipo de cambio a pesos (TipoCambio). Obligatorio si la moneda no es MXN; use el del DOF del día anterior."},"series":{"type":"string","maxLength":25,"description":"Serie (Serie), hasta 25 caracteres. Cada serie lleva sus propios folios."},"notes":{"type":"string","maxLength":1000,"description":"Observaciones que aparecen en el PDF (no van en el XML)."},"send_email":{"type":"boolean","description":"true para mandar el PDF y el XML por correo al timbrar, con el diseño de Fiscalisto. Por omisión no se envía."},"email_cc":{"type":["string","null"],"description":"Correos con copia, separados por comas."},"metadata":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":40},"additionalProperties":{"type":"string","maxLength":500},"description":"Sus propios datos: hasta 50 llaves de 40 caracteres con valores de texto de hasta 500. No van al CFDI; vuelven en el objeto y en los webhooks."}},"required":["customer","amount","payment_form"],"additionalProperties":false},"example":{"customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826","email":"pagos@cva.example"},"amount":1160,"payment_form":"03"}}}},"responses":{"201":{"description":"Correcto. Repetir la solicitud con la misma Idempotency-Key contesta lo mismo, con el mismo status y el encabezado idempotent-replayed: true.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"},"idempotent-replayed":{"$ref":"#/components/headers/IdempotentReplayed"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Invoice"},"example":{"id":"inv_OufpKqnrvx9p0Nfbydl9jG4UNGeTYcvdrg","object":"invoice","livemode":false,"issuer":"iss_OufpKqnrvx9p","branch":null,"type":"I","status":"valid","uuid":"5F1E8C2A-3B7D-4C9E-A1B2-C3D4E5F60718","series":null,"folio":"1","date":"2026-10-24T10:15:42","customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826"},"use":"I04","payment_form":"03","payment_method":"PUE","currency":"MXN","exchange_rate":null,"items":[{"description":"Mensualidad","product_key":"86121700","unit_key":"E48","unit_name":"Unidad de servicio","sku":"MEN-1","quantity":2,"unit_price":2500,"taxability":"02","iva":"0.16"}],"subtotal":5000,"discount":0,"taxes":{"iva":800,"ieps":0,"iva_withheld":0,"isr_withheld":0,"local_transferred":0,"local_withheld":0},"total":5800,"payment_status":"paid","amount_due":0,"amount_paid":5800,"related":null,"cancellation":null,"email":null,"error":null,"recurring_invoice":null,"created_at":"2026-10-24T10:15:42-06:00","metadata":{}}}}},"202":{"description":"El PAC no contestó a tiempo: el comprobante queda en processing y se timbra solo en unos momentos. Escuche el evento *.stamped o consúltelo con GET; repetir la solicitud con la misma Idempotency-Key contesta su estado sin timbrar otra vez.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"},"idempotent-replayed":{"$ref":"#/components/headers/IdempotentReplayed"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Invoice"},"example":{"id":"inv_OufpKqnrvx9p0Nfbydl9jG4UNGeTYcvdrg","object":"invoice","livemode":false,"issuer":"iss_OufpKqnrvx9p","branch":null,"type":"I","status":"valid","uuid":"5F1E8C2A-3B7D-4C9E-A1B2-C3D4E5F60718","series":null,"folio":"1","date":"2026-10-24T10:15:42","customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826"},"use":"I04","payment_form":"03","payment_method":"PUE","currency":"MXN","exchange_rate":null,"items":[{"description":"Mensualidad","product_key":"86121700","unit_key":"E48","unit_name":"Unidad de servicio","sku":"MEN-1","quantity":2,"unit_price":2500,"taxability":"02","iva":"0.16"}],"subtotal":5000,"discount":0,"taxes":{"iva":800,"ieps":0,"iva_withheld":0,"isr_withheld":0,"local_transferred":0,"local_withheld":0},"total":5800,"payment_status":"paid","amount_due":0,"amount_paid":5800,"related":null,"cancellation":null,"email":null,"error":null,"recurring_invoice":null,"created_at":"2026-10-24T10:15:42-06:00","metadata":{}}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"402":{"$ref":"#/components/responses/Error402"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"409":{"$ref":"#/components/responses/Error409"},"422":{"$ref":"#/components/responses/Error422"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"get":{"operationId":"listAdvances","tags":["Anticipos"],"security":[{"bearerAuth":[]}],"summary":"Listar anticipos sin aplicar","description":"Los anticipos timbrados que todavía no se aplican a una factura, con lo que queda de cada uno. Filtre por customer para los de un cliente.","parameters":[{"name":"issuer","in":"query","description":"El emisor (iss_…). Puede omitirse si la llave o la cuenta tienen uno solo.","schema":{"type":"string"}},{"name":"customer","in":"query","description":"RFC del cliente o su id (cus_…).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdvanceList"},"example":{"object":"list","data":[{"object":"advance","uuid":"D7BDBADC-7E6E-41E0-8D94-7E5FC4BB796E","date":"2026-10-24","series":null,"folio":"1","customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA"},"amount":1000,"total":1160,"iva":"0.16","currency":"MXN"}],"has_more":false,"url":"/v1/advances"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/advances/{id}/apply":{"post":{"operationId":"applyAdvance","tags":["Anticipos"],"security":[{"bearerAuth":[]}],"summary":"Aplicar un anticipo","description":"Timbra la factura de lo vendido (el cuerpo de POST /v1/invoices) relacionada 07 al anticipo. Con method egreso, también la nota de aplicación. La misma Idempotency-Key continúa donde se quedó.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"description":"El cuerpo de POST /v1/invoices (la factura de lo vendido) con method y remainder.","allOf":[{"type":"object","properties":{"method":{"default":"egreso","type":"string","enum":["egreso","remanente"],"description":"egreso (la factura completa y después una nota de crédito por el anticipo, opción A) o remanente (la factura solo por lo que falta, opción B)."},"remainder":{"type":"object","properties":{"paid_now":{"type":"boolean","description":"true si lo que falta se paga ahora (PUE); false si después (PPD)."},"payment_form":{"type":"string","pattern":"^\\d{2}$","description":"Forma de pago (FormaPago), clave de c_FormaPago: 01 efectivo, 03 transferencia, 04 tarjeta de crédito, 28 débito, 99 por definir… Obligatoria con PUE; con PPD es 99."}},"required":["paid_now"],"additionalProperties":false,"description":"Cómo se paga lo que falta del anticipo: ahora con su forma de pago, o después (PPD)."}}},{"$ref":"#/components/schemas/InvoiceCreate"}]},"example":{"method":"egreso","customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826","email":"pagos@cva.example"},"payment_form":"03","items":[{"description":"Desarrollo de sitio web","product_key":"81112100","unit_price":10000}]}}}},"responses":{"201":{"description":"Correcto. Repetir la solicitud con la misma Idempotency-Key contesta lo mismo, con el mismo status y el encabezado idempotent-replayed: true.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"},"idempotent-replayed":{"$ref":"#/components/headers/IdempotentReplayed"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Invoice"},"example":{"id":"inv_OufpKqnrvx9p0Nfbydl9jG4UNGeTYcvdrg","object":"invoice","livemode":false,"issuer":"iss_OufpKqnrvx9p","branch":null,"type":"I","status":"valid","uuid":"5F1E8C2A-3B7D-4C9E-A1B2-C3D4E5F60718","series":null,"folio":"1","date":"2026-10-24T10:15:42","customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826"},"use":"I04","payment_form":"03","payment_method":"PUE","currency":"MXN","exchange_rate":null,"items":[{"description":"Mensualidad","product_key":"86121700","unit_key":"E48","unit_name":"Unidad de servicio","sku":"MEN-1","quantity":2,"unit_price":2500,"taxability":"02","iva":"0.16"}],"subtotal":5000,"discount":0,"taxes":{"iva":800,"ieps":0,"iva_withheld":0,"isr_withheld":0,"local_transferred":0,"local_withheld":0},"total":5800,"payment_status":"paid","amount_due":0,"amount_paid":5800,"related":null,"cancellation":null,"email":null,"error":null,"recurring_invoice":null,"created_at":"2026-10-24T10:15:42-06:00","metadata":{}}}}},"202":{"description":"El PAC no contestó a tiempo: el comprobante queda en processing y se timbra solo en unos momentos. Escuche el evento *.stamped o consúltelo con GET; repetir la solicitud con la misma Idempotency-Key contesta su estado sin timbrar otra vez.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"},"idempotent-replayed":{"$ref":"#/components/headers/IdempotentReplayed"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Invoice"},"example":{"id":"inv_OufpKqnrvx9p0Nfbydl9jG4UNGeTYcvdrg","object":"invoice","livemode":false,"issuer":"iss_OufpKqnrvx9p","branch":null,"type":"I","status":"valid","uuid":"5F1E8C2A-3B7D-4C9E-A1B2-C3D4E5F60718","series":null,"folio":"1","date":"2026-10-24T10:15:42","customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826"},"use":"I04","payment_form":"03","payment_method":"PUE","currency":"MXN","exchange_rate":null,"items":[{"description":"Mensualidad","product_key":"86121700","unit_key":"E48","unit_name":"Unidad de servicio","sku":"MEN-1","quantity":2,"unit_price":2500,"taxability":"02","iva":"0.16"}],"subtotal":5000,"discount":0,"taxes":{"iva":800,"ieps":0,"iva_withheld":0,"isr_withheld":0,"local_transferred":0,"local_withheld":0},"total":5800,"payment_status":"paid","amount_due":0,"amount_paid":5800,"related":null,"cancellation":null,"email":null,"error":null,"recurring_invoice":null,"created_at":"2026-10-24T10:15:42-06:00","metadata":{}}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"402":{"$ref":"#/components/responses/Error402"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"409":{"$ref":"#/components/responses/Error409"},"422":{"$ref":"#/components/responses/Error422"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/retentions":{"post":{"operationId":"createRetention","tags":["Retenciones"],"security":[{"bearerAuth":[]}],"summary":"Timbrar una constancia de retenciones","description":"Timbra una constancia de retenciones e información de pagos (Retenciones 2.0) con los folios RET1, RET2… del emisor. Una vez por Idempotency-Key; con send_email y email la manda al receptor al timbrarla.","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"issuer":{"type":"string","description":"Emisor (iss_…). Si la llave tiene un solo emisor o la cuenta tiene uno solo, puede omitirse."},"code":{"type":"string","description":"Clave de la retención (CveRetenc), c_CveRetenc: 01 servicios profesionales, 05 arrendamiento, 14 dividendos, 16 intereses, 18 pagos al extranjero… Las claves 14, 16, 17 y 18 a 24 llevan su complemento (dividends, interest, trust_lease, foreign_payment, share_sale, prize, trust, retirement_plan, mortgage_interest, financial_derivatives); la 26 (plataformas tecnológicas) aún no se puede emitir."},"description":{"description":"Descripción de la retención (DescRetenc); obligatoria con la clave 25 (otro tipo).","anyOf":[{"type":"string","minLength":1,"maxLength":100},{"type":"null"}]},"recipient":{"type":"object","properties":{"foreign":{"type":"boolean","description":"true si el receptor es extranjero (sin RFC)."},"tax_id":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"description":"RFC (Rfc), 12 caracteres una persona moral y 13 una física."},"legal_name":{"type":"string","minLength":1,"maxLength":300,"description":"Nombre o razón social tal como está en la constancia de situación fiscal, sin el régimen de capital (sin «S.A. de C.V.»)."},"zip":{"type":"string","pattern":"^\\d{5}$","description":"Código postal del domicilio fiscal, 5 dígitos, como en la constancia de situación fiscal. El de un emisor es el lugar de expedición (LugarExpedicion) de sus comprobantes."},"curp":{"type":["string","null"],"description":"CURP, 18 caracteres."}},"required":["legal_name"],"additionalProperties":false,"description":"Receptor de la constancia (Receptor): nacional con RFC y código postal, o extranjero."},"period":{"type":"object","properties":{"year":{"type":"integer","minimum":2004,"maximum":2100,"description":"Año (Ejercicio)."},"month":{"type":"integer","minimum":1,"maximum":12,"description":"Un solo mes, del 1 al 12 (MesIni y MesFin iguales)."},"from_month":{"type":"integer","minimum":1,"maximum":12,"description":"Mes inicial (MesIni), 1 a 12."},"to_month":{"type":"integer","minimum":1,"maximum":12,"description":"Mes final (MesFin), 1 a 12, del mismo año."}},"required":["year"],"additionalProperties":false,"description":"Periodo (Periodo): mes inicial, mes final y año."},"totals":{"type":"object","properties":{"operation":{"type":"number","minimum":0,"description":"Monto total de la operación (MontoTotOperacion)."},"taxed":{"type":"number","minimum":0,"description":"Monto gravado (MontoTotGrav). Por omisión, operation menos exempt."},"exempt":{"type":"number","minimum":0,"description":"Monto exento (MontoTotExent). Por omisión 0."}},"required":["operation"],"additionalProperties":false,"description":"Totales (Totales)."},"taxes":{"maxItems":50,"type":"array","items":{"type":"object","properties":{"tax":{"type":"string","description":"Impuesto: isr, iva o ieps (ImpuestoRet 001, 002, 003)."},"base":{"type":"number","minimum":0,"description":"Base del impuesto retenido (BaseRet)."},"amount":{"type":"number","minimum":0,"description":"Monto retenido (MontoRet)."},"payment_type":{"type":"string","description":"Tipo de pago de la retención (TipoPagoRet): 01 definitivo IVA, 02 definitivo IEPS, 03 definitivo ISR, 04 provisional ISR. Por omisión el usual de cada impuesto."}},"required":["tax","base","amount"],"additionalProperties":false},"description":"Impuestos del comprobante, por tipo."},"dividends":{"type":"object","properties":{"type":{"type":"string","enum":["01","02","03","04","05","06"],"description":"Tipo de dividendo o utilidad distribuida (CveTipDivOUtil), c_TipoDividendoOUtilidadDistribuida."},"isr_mexico":{"type":"number","minimum":0,"description":"ISR acreditable en México (MontISRAcredRetMexico)."},"isr_foreign":{"type":"number","minimum":0,"description":"ISR acreditable en el extranjero (MontISRAcredRetExtranjero)."},"foreign_retention":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"description":"Retención en el extranjero sobre dividendos (MontRetExtDivExt)."},"company":{"type":"string","enum":["nacional","extranjera"],"description":"Tipo de sociedad que distribuye (TipoSocDistrDiv): nacional o extranjera."},"national_credit":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"description":"ISR acreditable nacional (MontISRAcredNal)."},"accumulated_national":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"description":"Dividendo acumulable nacional (MontDivAcumNal)."},"accumulated_foreign":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"description":"Dividendo acumulable extranjero (MontDivAcumExt)."}},"required":["type","isr_mexico","isr_foreign","company"],"additionalProperties":false,"description":"Complemento de dividendos."},"interest":{"type":"object","properties":{"financial_system":{"type":"boolean","description":"true si los intereses vienen del sistema financiero (SistFinanciero)."},"retirement":{"type":"boolean","description":"true si se retiraron los intereses en el periodo (RetiroAORESRetInt)."},"derivatives":{"type":"boolean","description":"true si son operaciones financieras derivadas (OperFinancDerivad)."},"nominal":{"type":"number","description":"Interés nominal (MontIntNominal)."},"real":{"type":"number","description":"Interés real (MontIntReal)."},"loss":{"type":"number","description":"Pérdida (Perdida)."}},"required":["financial_system","retirement","derivatives","nominal","real","loss"],"additionalProperties":false,"description":"Complemento de intereses."},"foreign_payment":{"type":"object","properties":{"beneficiary":{"type":"boolean","description":"true si quien recibe es el beneficiario efectivo (EsBenefEfectDelCobro)."},"country":{"anyOf":[{"type":"string","minLength":2,"maxLength":2},{"type":"null"}],"description":"País de residencia del extranjero (PaisDeResidParaEfecFisc), 2 letras."},"concept":{"type":"string","enum":["1","2","3","4","5","6","7","8","9"],"description":"Concepto del pago (ConceptoPago), c_TipoContribuyenteSujetoRetencion."},"description":{"type":"string","minLength":1,"maxLength":255,"description":"Descripción del concepto (DescripcionConcepto)."},"beneficiary_tax_id":{"type":["string","null"],"description":"RFC del beneficiario, si no es quien recibe (RFC)."},"beneficiary_curp":{"type":["string","null"],"description":"CURP del beneficiario (CURP)."},"beneficiary_name":{"type":["string","null"],"description":"Nombre o razón social del beneficiario (NomDenRazSocB)."}},"required":["beneficiary","concept","description"],"additionalProperties":false,"description":"Complemento de pagos a extranjeros."},"trust_lease":{"type":"object","properties":{"trustee_payment":{"type":"number","minimum":0,"description":"Pago provisional que el fiduciario efectuó al arrendador en el periodo (PagProvEfecPorFiduc)."},"income":{"type":"number","minimum":0,"description":"Rendimientos del periodo por el arrendamiento de los bienes (RendimFideicom)."},"deductions":{"type":"number","minimum":0,"description":"Deducciones del arrendamiento en el periodo (DeduccCorresp)."},"withheld_total":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"description":"Monto total retenido del arrendamiento en el periodo (MontTotRet)."},"fibra_result":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"description":"Resultado fiscal distribuido por FIBRAS (MontResFiscDistFibras)."},"other_amount":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"description":"Monto de otros conceptos distribuidos (MontOtrosConceptDistr)."},"other_description":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"description":"Qué son los otros conceptos distribuidos (DescrMontOtrosConceptDistr); obligatoria con other_amount."}},"required":["trustee_payment","income","deductions"],"additionalProperties":false,"description":"Complemento de arrendamiento en fideicomiso (Arrendamientoenfideicomiso 1.0), obligatorio con code 17."},"share_sale":{"type":"object","properties":{"contract":{"type":"string","minLength":1,"maxLength":300,"description":"Descripción del contrato de intermediación (ContratoIntermediacion)."},"gain":{"type":"number","minimum":0,"description":"Ganancia obtenida (Ganancia)."},"loss":{"type":"number","minimum":0,"description":"Pérdida (Perdida)."}},"required":["contract","gain","loss"],"additionalProperties":false,"description":"Complemento de enajenación de acciones u operaciones de valores (EnajenaciondeAcciones 1.0), obligatorio con code 19."},"prize":{"type":"object","properties":{"state":{"type":"string","description":"Entidad federativa donde se paga el premio (EntidadFederativa), c_EntidadesFederativas de catRetenciones: 01 Aguascalientes … 09 Ciudad de México … 32 Zacatecas."}},"required":["state"],"additionalProperties":false,"description":"Complemento de premios (Premios 1.0), obligatorio con code 20. Sus montos son los de totals."},"trust":{"type":"object","properties":{"income":{"type":"object","properties":{"concept":{"type":"string","minLength":1,"maxLength":100,"description":"Concepto de los ingresos (IntegracIngresos/Concepto), hasta 100 caracteres."},"total":{"type":"number","minimum":0,"description":"Ingresos totales del fideicomiso en el periodo (MontTotEntradasPeriodo)."},"share":{"type":"number","minimum":0,"description":"Parte proporcional de los ingresos acumulables del receptor (PartPropAcumDelFideicom)."},"proportion":{"type":"number","minimum":0,"maximum":999.999999,"description":"Proporción de participación del receptor según el contrato (PropDelMontTot)."}},"required":["concept","total","share","proportion"],"additionalProperties":false,"description":"Ingresos o entradas del fideicomiso en el periodo (IngresosOEntradas) y la parte del receptor."},"deductions":{"type":"object","properties":{"concept":{"type":"string","minLength":1,"maxLength":100,"description":"Concepto de los egresos (IntegracEgresos/ConceptoS), hasta 100 caracteres."},"total":{"type":"number","minimum":0,"description":"Egresos totales del fideicomiso en el periodo (MontTotEgresPeriodo)."},"share":{"type":"number","minimum":0,"description":"Parte proporcional de las deducciones autorizadas del receptor (PartPropDelFideicom)."},"proportion":{"type":"number","minimum":0,"maximum":999.999999,"description":"Proporción de participación del receptor según el contrato (PropDelMontTot)."}},"required":["concept","total","share","proportion"],"additionalProperties":false,"description":"Deducciones o salidas del fideicomiso en el periodo (DeduccOSalidas) y la parte del receptor."},"withholding":{"type":"object","properties":{"amount":{"type":"number","minimum":0,"description":"Monto de la retención (MontRetRelPagFideic)."},"description":{"type":"string","minLength":1,"maxLength":100,"description":"Descripción de la retención (DescRetRelPagFideic), hasta 100 caracteres."}},"required":["amount","description"],"additionalProperties":false,"description":"Retención efectuada al fideicomiso (RetEfectFideicomiso)."}},"required":["income","deductions","withholding"],"additionalProperties":false,"description":"Complemento de fideicomisos que no realizan actividades empresariales (Fideicomisonoempresarial 1.0), obligatorio con code 21."},"retirement_plan":{"type":"object","properties":{"financial_system":{"type":"boolean","description":"true si el plan es del sistema financiero (SistemaFinanc)."},"contributions_last_year":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"description":"Aportaciones actualizadas del año anterior (MontTotAportAnioInmAnterior)."},"real_interest":{"type":"number","minimum":0,"description":"Intereses reales devengados o percibidos el año anterior (MontIntRealesDevengAniooInmAnt)."},"early_withdrawals":{"type":"boolean","description":"true si hubo retiros antes de cumplir los requisitos de permanencia (HuboRetirosAnioInmAntPer)."},"early_withdrawn":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"description":"Monto retirado antes de cumplir la permanencia (MontTotRetiradoAnioInmAntPer); obligatorio con early_withdrawals."},"exempt_withdrawn":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"description":"Monto exento de lo retirado el año anterior (MontTotExentRetiradoAnioInmAnt)."},"excess_withdrawn":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"description":"Excedente del monto exento de lo retirado el año anterior (MontTotExedenteAnioInmAnt)."},"withdrawals":{"type":"boolean","description":"true si hubo retiros el año anterior (HuboRetirosAnioInmAnt)."},"withdrawn":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"description":"Monto retirado el año anterior (MontTotRetiradoAnioInmAnt); obligatorio con withdrawals."},"reference":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"description":"Número de referencia, contrato o cuenta del cliente (NumReferencia)."},"contributions":{"maxItems":3,"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["a","b","c"],"description":"Tipo de aportación (TipoAportacionODeposito): a (art. 151 fracc. V LISR), b (art. 185 LISR) o c (art. 258 RLISR, con trustee_rfc)."},"amount":{"type":"number","minimum":0,"description":"Monto de la aportación o depósito (MontAportODep)."},"trustee_rfc":{"type":["string","null"],"description":"RFC de la fiduciaria que administra el plan (RFCFiduciaria); obligatorio con el tipo c."}},"required":["type","amount"],"additionalProperties":false},"description":"Aportaciones o depósitos (AportacionesODepositos), uno por tipo y hasta tres."}},"required":["financial_system","real_interest","early_withdrawals","withdrawals"],"additionalProperties":false,"description":"Complemento de planes personales de retiro (Planesderetiro 1.1), obligatorio con code 22: lo del año anterior."},"mortgage_interest":{"type":"object","properties":{"financial_institution":{"type":"boolean","description":"true si el crédito lo otorgó una institución financiera (CreditoDeInstFinanc)."},"outstanding_balance":{"type":"number","minimum":0,"description":"Saldo insoluto al 31 de diciembre del año anterior, o a la fecha del contrato si es de este año (SaldoInsoluto)."},"deductible_proportion":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"description":"Proporción deducible del crédito sobre los intereses reales devengados y pagados (PropDeducDelCredit)."},"nominal_accrued":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"description":"Intereses nominales devengados (MontTotIntNominalesDev)."},"nominal_accrued_paid":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"description":"Intereses nominales devengados y pagados (MontTotIntNominalesDevYPag)."},"real_deductible":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"description":"Intereses reales pagados deducibles (MontTotIntRealPagDeduc)."},"contract":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"description":"Número de contrato del crédito hipotecario (NumContrato)."}},"required":["financial_institution","outstanding_balance"],"additionalProperties":false,"description":"Complemento de intereses reales deducibles por créditos hipotecarios (Intereseshipotecarios 1.0), obligatorio con code 23."},"financial_derivatives":{"type":"object","properties":{"gain":{"type":"number","minimum":0,"description":"Ganancia acumulable (MontGanAcum)."},"loss":{"type":"number","minimum":0,"description":"Pérdida deducible (MontPerdDed)."}},"required":["gain","loss"],"additionalProperties":false,"description":"Complemento de operaciones financieras derivadas de capital (Operacionesconderivados 1.0), obligatorio con code 24."},"send_email":{"type":"boolean","description":"true para mandar el PDF y el XML por correo al timbrar, con el diseño de Fiscalisto. Por omisión no se envía."},"email":{"type":"string","maxLength":1000,"description":"Correo a donde se envía (varios separados por comas). Solo se usa si se pide enviarlo."},"metadata":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":40},"additionalProperties":{"type":"string","maxLength":500},"description":"Sus propios datos: hasta 50 llaves de 40 caracteres con valores de texto de hasta 500. No van al CFDI; vuelven en el objeto y en los webhooks."}},"required":["code","recipient","period","totals","taxes"],"additionalProperties":false},"example":{"code":"01","recipient":{"tax_id":"PEPJ800101AB1","legal_name":"JUAN PEREZ PEREZ","zip":"33826"},"period":{"year":2026,"month":9},"totals":{"operation":10000},"taxes":[{"tax":"isr","base":10000,"amount":1000},{"tax":"iva","base":10000,"amount":1066.67}],"metadata":{"proveedor":"42"}}}}},"responses":{"201":{"description":"Correcto. Repetir la solicitud con la misma Idempotency-Key contesta lo mismo, con el mismo status y el encabezado idempotent-replayed: true.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"},"idempotent-replayed":{"$ref":"#/components/headers/IdempotentReplayed"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Retention"},"example":{"id":"ret_OufpKqnrvx9p5tENFcmUXpXJ58XxnF67kv","object":"retention","livemode":false,"issuer":"iss_OufpKqnrvx9p","status":"valid","uuid":"9A6F6BF3-6786-4747-800A-C9964E6509AE","folio":1,"internal_folio":"RET1","date":"2026-10-24T10:15:42","code":"01","description":null,"recipient":{"foreign":false,"tax_id":"PEPJ800101AB1","legal_name":"JUAN PEREZ PEREZ","zip":"33826","curp":null},"period":{"year":2026,"from_month":9,"to_month":9},"totals":{"operation":10000,"taxed":10000,"exempt":0,"withheld":2066.67},"taxes":[{"tax":"isr","base":10000,"amount":1000,"payment_type":"04"},{"tax":"iva","base":10000,"amount":1066.67,"payment_type":"01"}],"cancellation":null,"email":null,"error":null,"created_at":"2026-10-24T10:15:42-06:00","metadata":{"proveedor":"42"}}}}},"202":{"description":"El PAC no contestó a tiempo: el comprobante queda en processing y se timbra solo en unos momentos. Escuche el evento *.stamped o consúltelo con GET; repetir la solicitud con la misma Idempotency-Key contesta su estado sin timbrar otra vez.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"},"idempotent-replayed":{"$ref":"#/components/headers/IdempotentReplayed"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Retention"},"example":{"id":"ret_OufpKqnrvx9p5tENFcmUXpXJ58XxnF67kv","object":"retention","livemode":false,"issuer":"iss_OufpKqnrvx9p","status":"valid","uuid":"9A6F6BF3-6786-4747-800A-C9964E6509AE","folio":1,"internal_folio":"RET1","date":"2026-10-24T10:15:42","code":"01","description":null,"recipient":{"foreign":false,"tax_id":"PEPJ800101AB1","legal_name":"JUAN PEREZ PEREZ","zip":"33826","curp":null},"period":{"year":2026,"from_month":9,"to_month":9},"totals":{"operation":10000,"taxed":10000,"exempt":0,"withheld":2066.67},"taxes":[{"tax":"isr","base":10000,"amount":1000,"payment_type":"04"},{"tax":"iva","base":10000,"amount":1066.67,"payment_type":"01"}],"cancellation":null,"email":null,"error":null,"created_at":"2026-10-24T10:15:42-06:00","metadata":{"proveedor":"42"}}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"402":{"$ref":"#/components/responses/Error402"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"409":{"$ref":"#/components/responses/Error409"},"422":{"$ref":"#/components/responses/Error422"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"get":{"operationId":"listRetentions","tags":["Retenciones"],"security":[{"bearerAuth":[]}],"summary":"Listar constancias","description":"Las constancias del emisor, las más recientes primero.","parameters":[{"name":"limit","in":"query","description":"Cuántos por página, de 1 a 100. Por omisión 10.","schema":{"type":"integer","minimum":1,"maximum":100,"default":10}},{"name":"starting_after","in":"query","description":"El id del último de la página anterior, para la siguiente.","schema":{"type":"string"}},{"name":"issuer","in":"query","description":"El emisor (iss_…). Puede omitirse si la llave o la cuenta tienen uno solo.","schema":{"type":"string"}},{"name":"status","in":"query","description":"valid, canceled, rejected o processing.","schema":{"type":"string","enum":["valid","canceled","rejected","processing"]}},{"name":"recipient","in":"query","description":"RFC del receptor.","schema":{"type":"string"}},{"name":"year","in":"query","description":"Ejercicio, 4 dígitos.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetentionList"},"example":{"object":"list","data":[{"id":"ret_OufpKqnrvx9p5tENFcmUXpXJ58XxnF67kv","object":"retention","livemode":false,"issuer":"iss_OufpKqnrvx9p","status":"valid","uuid":"9A6F6BF3-6786-4747-800A-C9964E6509AE","folio":1,"internal_folio":"RET1","date":"2026-10-24T10:15:42","code":"01","description":null,"recipient":{"foreign":false,"tax_id":"PEPJ800101AB1","legal_name":"JUAN PEREZ PEREZ","zip":"33826","curp":null},"period":{"year":2026,"from_month":9,"to_month":9},"totals":{"operation":10000,"taxed":10000,"exempt":0,"withheld":2066.67},"taxes":[{"tax":"isr","base":10000,"amount":1000,"payment_type":"04"},{"tax":"iva","base":10000,"amount":1066.67,"payment_type":"01"}],"cancellation":null,"email":null,"error":null,"created_at":"2026-10-24T10:15:42-06:00","metadata":{"proveedor":"42"}}],"has_more":false,"url":"/v1/retentions"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/retentions/{id}":{"get":{"operationId":"getRetention","tags":["Retenciones"],"security":[{"bearerAuth":[]}],"summary":"Ver una constancia","description":"Una constancia de retenciones con su estado, sus impuestos retenidos y, si se mandó, a quién.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"name":"issuer","in":"query","description":"Con un UUID en vez del id, el emisor (iss_…) si la cuenta tiene varios.","schema":{"type":"string"}},{"name":"refresh","in":"query","description":"true para preguntar su estado al SAT ahora (cancelaciones en espera).","schema":{"type":"boolean"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Retention"},"example":{"id":"ret_OufpKqnrvx9p5tENFcmUXpXJ58XxnF67kv","object":"retention","livemode":false,"issuer":"iss_OufpKqnrvx9p","status":"valid","uuid":"9A6F6BF3-6786-4747-800A-C9964E6509AE","folio":1,"internal_folio":"RET1","date":"2026-10-24T10:15:42","code":"01","description":null,"recipient":{"foreign":false,"tax_id":"PEPJ800101AB1","legal_name":"JUAN PEREZ PEREZ","zip":"33826","curp":null},"period":{"year":2026,"from_month":9,"to_month":9},"totals":{"operation":10000,"taxed":10000,"exempt":0,"withheld":2066.67},"taxes":[{"tax":"isr","base":10000,"amount":1000,"payment_type":"04"},{"tax":"iva","base":10000,"amount":1066.67,"payment_type":"01"}],"cancellation":null,"email":null,"error":null,"created_at":"2026-10-24T10:15:42-06:00","metadata":{"proveedor":"42"}}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/retentions/{id}/pdf":{"get":{"operationId":"getRetentionPdf","tags":["Retenciones"],"security":[{"bearerAuth":[]}],"summary":"Descargar el PDF","description":"La representación impresa de la constancia.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"name":"issuer","in":"query","description":"Con un UUID en vez del id, el emisor (iss_…) si la cuenta tiene varios.","schema":{"type":"string"}}],"responses":{"200":{"description":"El archivo.","content":{"application/pdf":{"schema":{"type":"string","format":"binary"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/retentions/{id}/xml":{"get":{"operationId":"getRetentionXml","tags":["Retenciones"],"security":[{"bearerAuth":[]}],"summary":"Descargar el XML","description":"El XML timbrado de la constancia, tal como lo tiene el SAT.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"name":"issuer","in":"query","description":"Con un UUID en vez del id, el emisor (iss_…) si la cuenta tiene varios.","schema":{"type":"string"}}],"responses":{"200":{"description":"El archivo.","content":{"application/xml":{"schema":{"type":"string","format":"binary"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/retentions/{id}/send":{"post":{"operationId":"sendRetention","tags":["Retenciones"],"security":[{"bearerAuth":[]}],"summary":"Enviar por correo","description":"Manda el PDF y el XML de la constancia a los correos de to (o al que se dio al timbrarla). Dos envíos a la vez de la misma constancia: el segundo contesta email_failed.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"to":{"type":"string","maxLength":1000,"description":"A quién (correos separados por comas)."}},"additionalProperties":false},"example":{"to":"juan@example.com"}}}},"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Retention"},"example":{"id":"ret_OufpKqnrvx9p5tENFcmUXpXJ58XxnF67kv","object":"retention","livemode":false,"issuer":"iss_OufpKqnrvx9p","status":"valid","uuid":"9A6F6BF3-6786-4747-800A-C9964E6509AE","folio":1,"internal_folio":"RET1","date":"2026-10-24T10:15:42","code":"01","description":null,"recipient":{"foreign":false,"tax_id":"PEPJ800101AB1","legal_name":"JUAN PEREZ PEREZ","zip":"33826","curp":null},"period":{"year":2026,"from_month":9,"to_month":9},"totals":{"operation":10000,"taxed":10000,"exempt":0,"withheld":2066.67},"taxes":[{"tax":"isr","base":10000,"amount":1000,"payment_type":"04"},{"tax":"iva","base":10000,"amount":1066.67,"payment_type":"01"}],"cancellation":null,"email":null,"error":null,"created_at":"2026-10-24T10:15:42-06:00","metadata":{"proveedor":"42"}}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/retentions/{id}/cancel":{"post":{"operationId":"cancelRetention","tags":["Retenciones"],"security":[{"bearerAuth":[]}],"summary":"Cancelar una constancia","description":"Se cancela en el momento (no espera aceptación). No usa timbres.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"motive":{"default":"02","type":"string","enum":["01","02","03","04"],"description":"Motivo de cancelación (c_MotivoCancelacion): 01 con errores con relación (lleva substitution), 02 con errores sin relación (por omisión), 03 no se llevó a cabo, 04 solo en una factura global, cuando una venta incluida se facturó a nombre del cliente."},"substitution":{"type":"string","description":"El comprobante que sustituye a este (su id o su UUID), con el motivo 01."}},"additionalProperties":false},"example":{"motive":"02"}}}},"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Retention"},"example":{"id":"ret_OufpKqnrvx9p5tENFcmUXpXJ58XxnF67kv","object":"retention","livemode":false,"issuer":"iss_OufpKqnrvx9p","status":"valid","uuid":"9A6F6BF3-6786-4747-800A-C9964E6509AE","folio":1,"internal_folio":"RET1","date":"2026-10-24T10:15:42","code":"01","description":null,"recipient":{"foreign":false,"tax_id":"PEPJ800101AB1","legal_name":"JUAN PEREZ PEREZ","zip":"33826","curp":null},"period":{"year":2026,"from_month":9,"to_month":9},"totals":{"operation":10000,"taxed":10000,"exempt":0,"withheld":2066.67},"taxes":[{"tax":"isr","base":10000,"amount":1000,"payment_type":"04"},{"tax":"iva","base":10000,"amount":1066.67,"payment_type":"01"}],"cancellation":null,"email":null,"error":null,"created_at":"2026-10-24T10:15:42-06:00","metadata":{"proveedor":"42"}}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"422":{"$ref":"#/components/responses/Error422"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/employees":{"post":{"operationId":"createEmployee","tags":["Nómina"],"security":[{"bearerAuth":[]}],"summary":"Crear un empleado","description":"Un empleado del emisor para sus recibos de nómina: RFC, CURP, NSS, salario diario, salario diario integrado y periodicidad. Lo que no mande tiene el valor usual (contrato indefinido, jornada diurna, quincenal, riesgo clase I). warnings dice lo que el SAT podría rechazar.","parameters":[{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"issuer":{"type":"string","pattern":"^iss_","description":"Emisor (iss_…). Si la llave tiene un solo emisor o la cuenta tiene uno solo, puede omitirse."},"number":{"type":"string","minLength":1,"maxLength":15,"description":"Número de empleado (NumEmpleado)."},"name":{"type":"string","minLength":1,"maxLength":300,"description":"Nombre completo del empleado, como en su constancia de situación fiscal."},"tax_id":{"type":"string","description":"RFC (Rfc), 12 caracteres una persona moral y 13 una física."},"curp":{"type":"string","description":"CURP, 18 caracteres."},"social_security_number":{"type":"string","description":"Número de seguridad social (NumSeguridadSocial), 11 dígitos."},"zip":{"type":"string","pattern":"^\\d{5}$","description":"Código postal del domicilio fiscal, 5 dígitos, como en la constancia de situación fiscal. El de un emisor es el lugar de expedición (LugarExpedicion) de sus comprobantes."},"email":{"description":"Correo del empleado, a donde van sus recibos con send_email.","anyOf":[{"type":"string","maxLength":1000},{"type":"null"}]},"start_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Fecha de inicio de la relación laboral (FechaInicioRelLaboral), AAAA-MM-DD."},"end_date":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},{"type":"null"}],"description":"Último día trabajado si ya no trabaja ahí, AAAA-MM-DD."},"daily_salary":{"type":"number","exclusiveMinimum":0,"description":"Salario diario."},"integrated_daily_salary":{"type":"number","exclusiveMinimum":0,"description":"Salario diario integrado (SalarioDiarioIntegrado): no menor al salario diario."},"contract_type":{"type":"string","enum":["01","02","03","04","05","06","07","08"],"description":"Tipo de contrato (TipoContrato), c_TipoContrato. Por omisión 01, por tiempo indeterminado."},"workday_type":{"type":"string","description":"Tipo de jornada (TipoJornada), c_TipoJornada. Por omisión 01, diurna."},"periodicity":{"type":"string","description":"Periodicidad del pago (PeriodicidadPago): 02 semanal, 03 catorcenal, 04 quincenal (por omisión), 05 mensual."},"risk_class":{"type":"string","description":"Clase de riesgo del puesto ante el IMSS (RiesgoPuesto), 1 a 5. Por omisión 1."},"state":{"type":"string","description":"Entidad federativa donde trabaja (ClaveEntFed): JAL, CMX, NLE…"},"border_zone":{"type":"boolean","description":"true si trabaja en la zona libre de la frontera norte (salario mínimo de frontera)."},"unionized":{"type":"boolean","description":"true si es sindicalizado (Sindicalizado)."},"department":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"description":"Departamento (Departamento)."},"position":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"description":"Puesto (Puesto)."}},"required":["number","name","tax_id","curp","social_security_number","zip","start_date","daily_salary","integrated_daily_salary","state"],"additionalProperties":false},"example":{"number":"9","name":"ANA GÓMEZ RUIZ","tax_id":"GORA800101JK2","curp":"GORA800101MDFMZN09","social_security_number":"12345678903","zip":"06000","start_date":"2024-03-04","daily_salary":320,"integrated_daily_salary":334.66,"periodicity":"02","state":"CMX"}}}},"responses":{"201":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Employee"},"example":{"id":"emp_OufpKqnrvx9p3RxmD1RIDgEHzKYPYnYBlV","object":"employee","livemode":false,"issuer":"iss_OufpKqnrvx9p","number":"9","name":"ANA GÓMEZ RUIZ","tax_id":"GORA800101JK2","curp":"GORA800101MDFMZN09","social_security_number":"12345678903","zip":"06000","email":null,"start_date":"2024-03-04","end_date":null,"daily_salary":320,"integrated_daily_salary":334.66,"contract_type":"01","workday_type":"01","regime_type":"02","periodicity":"02","risk_class":"1","state":"CMX","border_zone":false,"unionized":false,"department":null,"position":null,"warnings":[],"created_at":"2026-10-20T09:02:11-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"get":{"operationId":"listEmployees","tags":["Nómina"],"security":[{"bearerAuth":[]}],"summary":"Listar empleados","description":"Los empleados del emisor, los más recientes primero.","parameters":[{"name":"limit","in":"query","description":"Cuántos por página, de 1 a 100. Por omisión 10.","schema":{"type":"integer","minimum":1,"maximum":100,"default":10}},{"name":"starting_after","in":"query","description":"El id del último de la página anterior, para la siguiente.","schema":{"type":"string"}},{"name":"issuer","in":"query","description":"El emisor (iss_…). Puede omitirse si la llave o la cuenta tienen uno solo.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmployeeList"},"example":{"object":"list","data":[{"id":"emp_OufpKqnrvx9p3RxmD1RIDgEHzKYPYnYBlV","object":"employee","livemode":false,"issuer":"iss_OufpKqnrvx9p","number":"9","name":"ANA GÓMEZ RUIZ","tax_id":"GORA800101JK2","curp":"GORA800101MDFMZN09","social_security_number":"12345678903","zip":"06000","email":null,"start_date":"2024-03-04","end_date":null,"daily_salary":320,"integrated_daily_salary":334.66,"contract_type":"01","workday_type":"01","regime_type":"02","periodicity":"02","risk_class":"1","state":"CMX","border_zone":false,"unionized":false,"department":null,"position":null,"warnings":[],"created_at":"2026-10-20T09:02:11-06:00"}],"has_more":false,"url":"/v1/employees"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/employees/{id}":{"get":{"operationId":"getEmployee","tags":["Nómina"],"security":[{"bearerAuth":[]}],"summary":"Ver un empleado","description":"Un empleado con sus datos y lo que el SAT podría rechazar en warnings.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Employee"},"example":{"id":"emp_OufpKqnrvx9p3RxmD1RIDgEHzKYPYnYBlV","object":"employee","livemode":false,"issuer":"iss_OufpKqnrvx9p","number":"9","name":"ANA GÓMEZ RUIZ","tax_id":"GORA800101JK2","curp":"GORA800101MDFMZN09","social_security_number":"12345678903","zip":"06000","email":null,"start_date":"2024-03-04","end_date":null,"daily_salary":320,"integrated_daily_salary":334.66,"contract_type":"01","workday_type":"01","regime_type":"02","periodicity":"02","risk_class":"1","state":"CMX","border_zone":false,"unionized":false,"department":null,"position":null,"warnings":[],"created_at":"2026-10-20T09:02:11-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"post":{"operationId":"updateEmployee","tags":["Nómina"],"security":[{"bearerAuth":[]}],"summary":"Actualizar un empleado","description":"Cambia solo los campos que manda; los recibos ya timbrados no cambian.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"number":{"type":"string","minLength":1,"maxLength":15,"description":"Número de empleado (NumEmpleado)."},"name":{"type":"string","minLength":1,"maxLength":300,"description":"Nombre completo del empleado, como en su constancia de situación fiscal."},"tax_id":{"type":"string","description":"RFC (Rfc), 12 caracteres una persona moral y 13 una física."},"curp":{"type":"string","description":"CURP, 18 caracteres."},"social_security_number":{"type":"string","description":"Número de seguridad social (NumSeguridadSocial), 11 dígitos."},"zip":{"type":"string","pattern":"^\\d{5}$","description":"Código postal del domicilio fiscal, 5 dígitos, como en la constancia de situación fiscal. El de un emisor es el lugar de expedición (LugarExpedicion) de sus comprobantes."},"email":{"description":"Correo del empleado, a donde van sus recibos con send_email.","anyOf":[{"type":"string","maxLength":1000},{"type":"null"}]},"start_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Fecha de inicio de la relación laboral (FechaInicioRelLaboral), AAAA-MM-DD."},"end_date":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},{"type":"null"}],"description":"Último día trabajado si ya no trabaja ahí, AAAA-MM-DD."},"daily_salary":{"type":"number","exclusiveMinimum":0,"description":"Salario diario."},"integrated_daily_salary":{"type":"number","exclusiveMinimum":0,"description":"Salario diario integrado (SalarioDiarioIntegrado): no menor al salario diario."},"contract_type":{"type":"string","enum":["01","02","03","04","05","06","07","08"],"description":"Tipo de contrato (TipoContrato), c_TipoContrato. Por omisión 01, por tiempo indeterminado."},"workday_type":{"type":"string","description":"Tipo de jornada (TipoJornada), c_TipoJornada. Por omisión 01, diurna."},"periodicity":{"type":"string","description":"Periodicidad del pago (PeriodicidadPago): 02 semanal, 03 catorcenal, 04 quincenal (por omisión), 05 mensual."},"risk_class":{"type":"string","description":"Clase de riesgo del puesto ante el IMSS (RiesgoPuesto), 1 a 5. Por omisión 1."},"state":{"type":"string","description":"Entidad federativa donde trabaja (ClaveEntFed): JAL, CMX, NLE…"},"border_zone":{"type":"boolean","description":"true si trabaja en la zona libre de la frontera norte (salario mínimo de frontera)."},"unionized":{"type":"boolean","description":"true si es sindicalizado (Sindicalizado)."},"department":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"description":"Departamento (Departamento)."},"position":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"description":"Puesto (Puesto)."}},"additionalProperties":false},"example":{"daily_salary":350,"integrated_daily_salary":366}}}},"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Employee"},"example":{"id":"emp_OufpKqnrvx9p3RxmD1RIDgEHzKYPYnYBlV","object":"employee","livemode":false,"issuer":"iss_OufpKqnrvx9p","number":"9","name":"ANA GÓMEZ RUIZ","tax_id":"GORA800101JK2","curp":"GORA800101MDFMZN09","social_security_number":"12345678903","zip":"06000","email":null,"start_date":"2024-03-04","end_date":null,"daily_salary":320,"integrated_daily_salary":334.66,"contract_type":"01","workday_type":"01","regime_type":"02","periodicity":"02","risk_class":"1","state":"CMX","border_zone":false,"unionized":false,"department":null,"position":null,"warnings":[],"created_at":"2026-10-20T09:02:11-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"delete":{"operationId":"deleteEmployee","tags":["Nómina"],"security":[{"bearerAuth":[]}],"summary":"Borrar un empleado","description":"Sus recibos timbrados se quedan.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Deleted"},"example":{"id":"prd_OufpKqnrvx9p1","object":"product","deleted":true}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/payroll_receipts":{"post":{"operationId":"createPayrollReceipt","tags":["Nómina"],"security":[{"bearerAuth":[]}],"summary":"Timbrar un recibo de nómina","description":"Nómina ordinaria (Nómina 1.2): Fiscalisto calcula sueldo, ISR con subsidio al empleo e IMSS del empleado y el periodo, como la app. Queda como factura tipo N (GET /v1/invoices/{id}). El emisor necesita employer_registration.","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"employee":{"type":"string","minLength":1,"description":"El empleado (emp_…)."},"period":{"type":"object","properties":{"start":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Primer día del periodo (FechaInicialPago), AAAA-MM-DD."},"end":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Último día del periodo (FechaFinalPago), AAAA-MM-DD."},"payment_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Fecha de pago (FechaPago), AAAA-MM-DD. Por omisión el último día del periodo."}},"required":["start","end"],"additionalProperties":false,"description":"Periodo (Periodo): mes inicial, mes final y año."},"days":{"type":"number","exclusiveMinimum":0,"maximum":31,"description":"Días pagados (NumDiasPagados). Por omisión, todos los del periodo que le tocan."},"send_email":{"type":"boolean","description":"true para mandar el PDF y el XML por correo al timbrar, con el diseño de Fiscalisto. Por omisión no se envía."},"metadata":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":40},"additionalProperties":{"type":"string","maxLength":500},"description":"Sus propios datos: hasta 50 llaves de 40 caracteres con valores de texto de hasta 500. No van al CFDI; vuelven en el objeto y en los webhooks."}},"required":["employee","period"],"additionalProperties":false},"example":{"employee":"emp_OufpKqnrvx9p3RxmD1RIDgEHzKYPYnYBlV","period":{"start":"2026-10-10","end":"2026-10-16"},"send_email":true,"metadata":{"corrida":"2026-42"}}}}},"responses":{"201":{"description":"Correcto. Repetir la solicitud con la misma Idempotency-Key contesta lo mismo, con el mismo status y el encabezado idempotent-replayed: true.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"},"idempotent-replayed":{"$ref":"#/components/headers/IdempotentReplayed"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Invoice"},"example":{"id":"inv_OufpKqnrvx9p0Nfbydl9jG4UNGeTYcvdrg","object":"invoice","livemode":false,"issuer":"iss_OufpKqnrvx9p","branch":null,"type":"I","status":"valid","uuid":"5F1E8C2A-3B7D-4C9E-A1B2-C3D4E5F60718","series":null,"folio":"1","date":"2026-10-24T10:15:42","customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826"},"use":"I04","payment_form":"03","payment_method":"PUE","currency":"MXN","exchange_rate":null,"items":[{"description":"Mensualidad","product_key":"86121700","unit_key":"E48","unit_name":"Unidad de servicio","sku":"MEN-1","quantity":2,"unit_price":2500,"taxability":"02","iva":"0.16"}],"subtotal":5000,"discount":0,"taxes":{"iva":800,"ieps":0,"iva_withheld":0,"isr_withheld":0,"local_transferred":0,"local_withheld":0},"total":5800,"payment_status":"paid","amount_due":0,"amount_paid":5800,"related":null,"cancellation":null,"email":null,"error":null,"recurring_invoice":null,"created_at":"2026-10-24T10:15:42-06:00","metadata":{}}}}},"202":{"description":"El PAC no contestó a tiempo: el comprobante queda en processing y se timbra solo en unos momentos. Escuche el evento *.stamped o consúltelo con GET; repetir la solicitud con la misma Idempotency-Key contesta su estado sin timbrar otra vez.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"},"idempotent-replayed":{"$ref":"#/components/headers/IdempotentReplayed"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Invoice"},"example":{"id":"inv_OufpKqnrvx9p0Nfbydl9jG4UNGeTYcvdrg","object":"invoice","livemode":false,"issuer":"iss_OufpKqnrvx9p","branch":null,"type":"I","status":"valid","uuid":"5F1E8C2A-3B7D-4C9E-A1B2-C3D4E5F60718","series":null,"folio":"1","date":"2026-10-24T10:15:42","customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826"},"use":"I04","payment_form":"03","payment_method":"PUE","currency":"MXN","exchange_rate":null,"items":[{"description":"Mensualidad","product_key":"86121700","unit_key":"E48","unit_name":"Unidad de servicio","sku":"MEN-1","quantity":2,"unit_price":2500,"taxability":"02","iva":"0.16"}],"subtotal":5000,"discount":0,"taxes":{"iva":800,"ieps":0,"iva_withheld":0,"isr_withheld":0,"local_transferred":0,"local_withheld":0},"total":5800,"payment_status":"paid","amount_due":0,"amount_paid":5800,"related":null,"cancellation":null,"email":null,"error":null,"recurring_invoice":null,"created_at":"2026-10-24T10:15:42-06:00","metadata":{}}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"402":{"$ref":"#/components/responses/Error402"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"409":{"$ref":"#/components/responses/Error409"},"422":{"$ref":"#/components/responses/Error422"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/payroll_receipts/preview":{"post":{"operationId":"previewPayrollReceipt","tags":["Nómina"],"security":[{"bearerAuth":[]}],"summary":"Calcular un recibo sin timbrar","description":"El recibo como se timbraría (percepciones, ISR con el subsidio para el empleo, cuotas IMSS y el neto), sin timbrar ni usar timbres.","parameters":[{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"employee":{"type":"string","minLength":1,"description":"El empleado (emp_…)."},"period":{"type":"object","properties":{"start":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Primer día del periodo (FechaInicialPago), AAAA-MM-DD."},"end":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Último día del periodo (FechaFinalPago), AAAA-MM-DD."},"payment_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Fecha de pago (FechaPago), AAAA-MM-DD. Por omisión el último día del periodo."}},"required":["start","end"],"additionalProperties":false,"description":"Periodo (Periodo): mes inicial, mes final y año."},"days":{"type":"number","exclusiveMinimum":0,"maximum":31,"description":"Días pagados (NumDiasPagados). Por omisión, todos los del periodo que le tocan."},"send_email":{"type":"boolean","description":"true para mandar el PDF y el XML por correo al timbrar, con el diseño de Fiscalisto. Por omisión no se envía."},"metadata":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":40},"additionalProperties":{"type":"string","maxLength":500},"description":"Sus propios datos: hasta 50 llaves de 40 caracteres con valores de texto de hasta 500. No van al CFDI; vuelven en el objeto y en los webhooks."}},"required":["employee","period"],"additionalProperties":false},"example":{"employee":"emp_OufpKqnrvx9p3RxmD1RIDgEHzKYPYnYBlV","period":{"start":"2026-10-10","end":"2026-10-16"}}}}},"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PayrollReceiptPreview"},"example":{"object":"payroll_receipt_preview","employee":"emp_OufpKqnrvx9p3RxmD1RIDgEHzKYPYnYBlV","periodicity":"02","period":{"start":"2026-10-10","end":"2026-10-16","payment_date":"2026-10-16"},"days":7,"contribution_base_salary":334.66,"perceptions":[{"type":"001","key":"001","concept":"Sueldo","taxed":2240,"exempt":0}],"deductions":[{"type":"001","key":"001","concept":"Cuotas IMSS","amount":55.63},{"type":"002","key":"002","concept":"ISR","amount":37.73}],"other_payments":[{"type":"002","key":"002","concept":"Subsidio para el empleo del Decreto que otorga el subsidio para el empleo (DOF 1 de mayo de 2024)","amount":0,"subsidy_caused":123.34,"subsidy_applied":123.34}],"isr":{"tariff":161.07,"subsidy":123.34,"withheld":37.73,"exempt_minimum":false},"totals":{"salaries":2240,"taxed":2240,"exempt":0,"perceptions":2240,"other_deductions":55.63,"taxes_withheld":37.73,"deductions":93.36,"other_payments":0,"subtotal":2240,"net":2146.64}}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/invoice_batches":{"post":{"operationId":"createInvoiceBatch","tags":["Lotes"],"security":[{"bearerAuth":[]}],"summary":"Timbrar un lote de facturas","description":"Hasta 1,000 facturas de ingreso de un emisor, timbradas en segundo plano. Se revisan todas antes de empezar: si una no pasa, no se timbra ninguna. Responde 202; escuche invoice_batch.completed o consulte el lote.","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["invoices"],"properties":{"issuer":{"type":"string","pattern":"^iss_","description":"Emisor (iss_…). Si la llave tiene un solo emisor o la cuenta tiene uno solo, puede omitirse."},"name":{"type":"string","maxLength":120,"description":"Nombre del lote, para usted."},"invoices":{"type":"array","minItems":1,"maxItems":1000,"items":{"description":"Una factura del lote: el cuerpo de POST /v1/invoices, sin issuer, type, global ni metadata (el lote es de un emisor y de facturas de ingreso), con su reference.","allOf":[{"$ref":"#/components/schemas/InvoiceCreate"},{"type":"object","properties":{"reference":{"type":"string","maxLength":100,"description":"Su identificador de esta factura (su número de pedido), hasta 100 caracteres."}}}]},"description":"Las facturas, como el cuerpo de POST /v1/invoices, con reference opcional."}}},"example":{"name":"Cuotas de octubre","invoices":[{"reference":"depto-101","customer":"cus_OufpKqnrvx9p1","payment_form":"03","items":[{"product":"prd_OufpKqnrvx9p1"}]},{"reference":"depto-102","customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826","email":"pagos@cva.example"},"payment_form":"03","items":[{"description":"Cuota de mantenimiento","product_key":"80131500","unit_price":1500}]}]}}}},"responses":{"202":{"description":"Correcto. Repetir la solicitud con la misma Idempotency-Key contesta lo mismo, con el mismo status y el encabezado idempotent-replayed: true.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"},"idempotent-replayed":{"$ref":"#/components/headers/IdempotentReplayed"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoiceBatch"},"example":{"id":"bat_OufpKqnrvx9p4hMdcoapAo5aaGJEme7mXj","object":"invoice_batch","livemode":false,"issuer":"iss_OufpKqnrvx9p","name":"Cuotas de octubre","status":"completed","total":2,"stamped":1,"failed":1,"created_at":"2026-10-24T10:15:42-06:00","completed_at":"2026-10-24T10:15:42-06:00","processing":0,"invoices":[{"index":0,"reference":"depto-101","status":"valid","invoice":"inv_OufpKqnrvx9p0mn7VjQ6JlfipKAkHWstOK","uuid":"DB494B07-D6DE-4F70-8ED0-C8B864FF8717","total":1740,"error":null},{"index":1,"reference":"depto-102","status":"failed","invoice":null,"uuid":null,"total":1740,"error":"El SAT no reconoce el nombre del cliente. Escríbalo exactamente como en su constancia de situación fiscal, en mayúsculas y sin «S.A. de C.V.» ni otro régimen de capital."}]}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"402":{"$ref":"#/components/responses/Error402"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"409":{"$ref":"#/components/responses/Error409"},"422":{"$ref":"#/components/responses/Error422"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"get":{"operationId":"listInvoiceBatches","tags":["Lotes"],"security":[{"bearerAuth":[]}],"summary":"Listar lotes","description":"Los lotes de facturas, los más recientes primero, con cuántas se timbraron y cuántas fallaron.","parameters":[{"name":"limit","in":"query","description":"Cuántos por página, de 1 a 100. Por omisión 10.","schema":{"type":"integer","minimum":1,"maximum":100,"default":10}},{"name":"starting_after","in":"query","description":"El id del último de la página anterior, para la siguiente.","schema":{"type":"string"}},{"name":"issuer","in":"query","description":"El emisor (iss_…). Puede omitirse si la llave o la cuenta tienen uno solo.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoiceBatchList"},"example":{"object":"list","data":[{"id":"bat_OufpKqnrvx9p4hMdcoapAo5aaGJEme7mXj","object":"invoice_batch","livemode":false,"issuer":"iss_OufpKqnrvx9p","name":"Cuotas de octubre","status":"completed","total":2,"stamped":1,"failed":1,"created_at":"2026-10-24T10:15:42-06:00","completed_at":"2026-10-24T10:15:42-06:00","processing":0,"invoices":[{"index":0,"reference":"depto-101","status":"valid","invoice":"inv_OufpKqnrvx9p0mn7VjQ6JlfipKAkHWstOK","uuid":"DB494B07-D6DE-4F70-8ED0-C8B864FF8717","total":1740,"error":null},{"index":1,"reference":"depto-102","status":"failed","invoice":null,"uuid":null,"total":1740,"error":"El SAT no reconoce el nombre del cliente. Escríbalo exactamente como en su constancia de situación fiscal, en mayúsculas y sin «S.A. de C.V.» ni otro régimen de capital."}]}],"has_more":false,"url":"/v1/invoice_batches"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/invoice_batches/{id}":{"get":{"operationId":"getInvoiceBatch","tags":["Lotes"],"security":[{"bearerAuth":[]}],"summary":"Ver un lote","description":"Con cada factura: su estado, su id y su error.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoiceBatch"},"example":{"id":"bat_OufpKqnrvx9p4hMdcoapAo5aaGJEme7mXj","object":"invoice_batch","livemode":false,"issuer":"iss_OufpKqnrvx9p","name":"Cuotas de octubre","status":"completed","total":2,"stamped":1,"failed":1,"created_at":"2026-10-24T10:15:42-06:00","completed_at":"2026-10-24T10:15:42-06:00","processing":0,"invoices":[{"index":0,"reference":"depto-101","status":"valid","invoice":"inv_OufpKqnrvx9p0mn7VjQ6JlfipKAkHWstOK","uuid":"DB494B07-D6DE-4F70-8ED0-C8B864FF8717","total":1740,"error":null},{"index":1,"reference":"depto-102","status":"failed","invoice":null,"uuid":null,"total":1740,"error":"El SAT no reconoce el nombre del cliente. Escríbalo exactamente como en su constancia de situación fiscal, en mayúsculas y sin «S.A. de C.V.» ni otro régimen de capital."}]}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/tax_ids/validate":{"post":{"operationId":"validateTaxId","tags":["Clientes"],"security":[{"bearerAuth":[]}],"summary":"Validar los datos fiscales de un cliente","description":"Antes de timbrar: si el RFC, el nombre, el régimen, el código postal y el uso van a pasar. Sin cif_id revisa lo que se puede revisar sin el SAT (formato, régimen para ese tipo de persona, código postal en el catálogo, uso para el régimen, nombre sin «S.A. de C.V.») y las listas del SAT. Con el idCIF de la constancia lee el registro del SAT y compara nombre, código postal y régimen, como hará el PAC. No usa timbres.","parameters":[{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tax_id":{"type":"string","minLength":1,"maxLength":20,"description":"El RFC del cliente."},"legal_name":{"description":"El nombre o razón social que va a poner en la factura.","type":"string","maxLength":300},"tax_system":{"description":"Su régimen fiscal (c_RegimenFiscal), como 601 o 612.","type":"string"},"zip":{"description":"El código postal de su domicilio fiscal.","type":"string"},"use":{"description":"El uso del CFDI (c_UsoCFDI), como G03.","type":"string"},"cif_id":{"description":"El idCIF de su constancia de situación fiscal (11 dígitos, arriba a la izquierda, junto al QR). Con él se compara todo con lo que tiene el SAT.","type":"string"}},"required":["tax_id"],"additionalProperties":false},"example":{"tax_id":"ICV060329BY0","legal_name":"Inmobiliaria CVA, S.A. de C.V.","tax_system":"601","zip":"33800","use":"G03","cif_id":"12345678901"}}}},"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaxIdValidation"},"example":{"object":"tax_id_validation","tax_id":"ICV060329BY0","kind":"company","valid":false,"checked_with_sat":true,"errors":[{"param":"legal_name","code":"legal_name_capital_regime","message":"Sin «S.A. de C.V.»: en CFDI 4.0 el nombre va sin régimen de capital, como en la constancia.","suggestion":"INMOBILIARIA CVA"},{"param":"zip","code":"zip_mismatch","message":"El código postal no es el del domicilio fiscal que tiene el SAT.","suggestion":"33826"}],"warnings":[],"sat_record":{"legal_name":"INMOBILIARIA CVA","zip":"33826","tax_systems":["601"]},"sat_error":null,"sat_lists":{"object":"sat_list_check","tax_id":"ICV060329BY0","name":null,"listed":false,"risk":"none","lists":[],"lists_updated_at":"2026-10-24T00:12:40-06:00"}}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/branches":{"post":{"operationId":"createBranch","tags":["Sucursales"],"security":[{"bearerAuth":[]}],"summary":"Crear una sucursal","description":"Otro lugar desde donde factura el emisor, con su propio código postal: sus facturas llevan ese CP en LugarExpedicion (y su zona horaria en la Fecha, y el IVA 8 % si es de la franja fronteriza), su dirección en el PDF y, si las da, sus propias series. Un CP que ya tiene otra sucursal contesta branch_exists; el del domicilio fiscal del emisor no es sucursal (es la Matriz). Hasta 200 por emisor.","parameters":[{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"issuer":{"description":"El emisor (iss_…). Por omisión, su único emisor.","type":"string"},"name":{"type":"string","minLength":1,"maxLength":60,"description":"Cómo la llama su equipo, por ejemplo «Sucursal Monterrey». Va en el PDF."},"zip":{"type":"string","pattern":"^\\d{5}$","description":"Su código postal (LugarExpedicion de sus CFDI): uno por sucursal, distinto del domicilio fiscal del emisor."},"address":{"description":"La dirección que va en el PDF de sus facturas.","type":"object","properties":{"street":{"description":"Calle.","anyOf":[{"type":"string","maxLength":100},{"type":"null"}]},"exterior":{"description":"Número exterior.","anyOf":[{"type":"string","maxLength":30},{"type":"null"}]},"interior":{"description":"Número interior.","anyOf":[{"type":"string","maxLength":30},{"type":"null"}]},"neighborhood":{"description":"Colonia.","anyOf":[{"type":"string","maxLength":100},{"type":"null"}]},"city":{"description":"Municipio o alcaldía.","anyOf":[{"type":"string","maxLength":100},{"type":"null"}]},"state":{"description":"Estado; por omisión, el de su código postal.","anyOf":[{"type":"string","maxLength":60},{"type":"null"}]}},"additionalProperties":false},"phone":{"description":"Teléfono, para el PDF.","anyOf":[{"type":"string","maxLength":30},{"type":"null"}]},"email":{"description":"Correo, para el PDF.","anyOf":[{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"null"}]},"series":{"type":"object","properties":{"invoice":{"description":"Serie de sus facturas (tipo I); sin ella, la del emisor.","anyOf":[{"type":"string","maxLength":25},{"type":"null"}]},"credit_note":{"description":"Serie de sus notas de crédito (tipo E); sin ella, la del emisor.","anyOf":[{"type":"string","maxLength":25},{"type":"null"}]},"payment":{"description":"Serie de sus complementos de pago (tipo P); sin ella, la del emisor.","anyOf":[{"type":"string","maxLength":25},{"type":"null"}]},"transfer":{"description":"Serie de sus traslados (tipo T); sin ella, la del emisor.","anyOf":[{"type":"string","maxLength":25},{"type":"null"}]}},"additionalProperties":false,"description":"Serie (Serie), hasta 25 caracteres. Cada serie lleva sus propios folios."}},"required":["name","zip"],"additionalProperties":false},"example":{"name":"Sucursal Monterrey","zip":"64000","address":{"street":"Av. Constitución","exterior":"1500","neighborhood":"Centro","city":"Monterrey"},"phone":"81 1234 5678","series":{"invoice":"MTY"}}}}},"responses":{"201":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Branch"},"example":{"id":"brn_OufpKqnrvx9p3","object":"branch","livemode":false,"issuer":"iss_OufpKqnrvx9p","name":"Sucursal Monterrey","zip":"64000","address":{"street":"Av. Constitución","exterior":"1500","interior":null,"neighborhood":"Centro","city":"Monterrey","state":"Nuevo León"},"phone":"81 1234 5678","email":null,"series":{"invoice":"MTY","credit_note":null,"payment":null,"transfer":null},"archived":false,"created_at":"2026-10-27T09:12:00-06:00","updated_at":"2026-10-27T09:12:00-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"get":{"operationId":"listBranches","tags":["Sucursales"],"security":[{"bearerAuth":[]}],"summary":"Listar sucursales","description":"Las sucursales del emisor, las más recientes primero. Las archivadas solo con include_archived=true.","parameters":[{"name":"limit","in":"query","description":"Cuántos por página, de 1 a 100. Por omisión 10.","schema":{"type":"integer","minimum":1,"maximum":100,"default":10}},{"name":"starting_after","in":"query","description":"El id del último de la página anterior, para la siguiente.","schema":{"type":"string"}},{"name":"issuer","in":"query","description":"El emisor (iss_…). Puede omitirse si la llave o la cuenta tienen uno solo.","schema":{"type":"string"}},{"name":"include_archived","in":"query","description":"true para incluir las archivadas.","schema":{"type":"boolean"}},{"name":"zip","in":"query","description":"Solo la de este código postal.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BranchList"},"example":{"object":"list","data":[{"id":"brn_OufpKqnrvx9p3","object":"branch","livemode":false,"issuer":"iss_OufpKqnrvx9p","name":"Sucursal Monterrey","zip":"64000","address":{"street":"Av. Constitución","exterior":"1500","interior":null,"neighborhood":"Centro","city":"Monterrey","state":"Nuevo León"},"phone":"81 1234 5678","email":null,"series":{"invoice":"MTY","credit_note":null,"payment":null,"transfer":null},"archived":false,"created_at":"2026-10-27T09:12:00-06:00","updated_at":"2026-10-27T09:12:00-06:00"}],"has_more":false,"url":"/v1/branches"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/branches/{id}":{"get":{"operationId":"getBranch","tags":["Sucursales"],"security":[{"bearerAuth":[]}],"summary":"Ver una sucursal","description":"Una sucursal del emisor.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Branch"},"example":{"id":"brn_OufpKqnrvx9p3","object":"branch","livemode":false,"issuer":"iss_OufpKqnrvx9p","name":"Sucursal Monterrey","zip":"64000","address":{"street":"Av. Constitución","exterior":"1500","interior":null,"neighborhood":"Centro","city":"Monterrey","state":"Nuevo León"},"phone":"81 1234 5678","email":null,"series":{"invoice":"MTY","credit_note":null,"payment":null,"transfer":null},"archived":false,"created_at":"2026-10-27T09:12:00-06:00","updated_at":"2026-10-27T09:12:00-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"post":{"operationId":"updateBranch","tags":["Sucursales"],"security":[{"bearerAuth":[]}],"summary":"Actualizar una sucursal","description":"Cambia solo los campos que manda; una serie en null vuelve a la del emisor. archived: true la archiva (ya no se factura desde ella y sus facturas la siguen nombrando), false la restaura. El código postal de una sucursal que ya facturó no cambia: si se mudó, archívela y cree otra.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":60,"description":"Cómo la llama su equipo, por ejemplo «Sucursal Monterrey». Va en el PDF."},"zip":{"type":"string","pattern":"^\\d{5}$","description":"Su código postal (LugarExpedicion de sus CFDI): uno por sucursal, distinto del domicilio fiscal del emisor."},"address":{"description":"La dirección que va en el PDF de sus facturas.","type":"object","properties":{"street":{"description":"Calle.","anyOf":[{"type":"string","maxLength":100},{"type":"null"}]},"exterior":{"description":"Número exterior.","anyOf":[{"type":"string","maxLength":30},{"type":"null"}]},"interior":{"description":"Número interior.","anyOf":[{"type":"string","maxLength":30},{"type":"null"}]},"neighborhood":{"description":"Colonia.","anyOf":[{"type":"string","maxLength":100},{"type":"null"}]},"city":{"description":"Municipio o alcaldía.","anyOf":[{"type":"string","maxLength":100},{"type":"null"}]},"state":{"description":"Estado; por omisión, el de su código postal.","anyOf":[{"type":"string","maxLength":60},{"type":"null"}]}},"additionalProperties":false},"phone":{"description":"Teléfono, para el PDF.","anyOf":[{"type":"string","maxLength":30},{"type":"null"}]},"email":{"description":"Correo, para el PDF.","anyOf":[{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"type":"null"}]},"series":{"type":"object","properties":{"invoice":{"description":"Serie de sus facturas (tipo I); sin ella, la del emisor.","anyOf":[{"type":"string","maxLength":25},{"type":"null"}]},"credit_note":{"description":"Serie de sus notas de crédito (tipo E); sin ella, la del emisor.","anyOf":[{"type":"string","maxLength":25},{"type":"null"}]},"payment":{"description":"Serie de sus complementos de pago (tipo P); sin ella, la del emisor.","anyOf":[{"type":"string","maxLength":25},{"type":"null"}]},"transfer":{"description":"Serie de sus traslados (tipo T); sin ella, la del emisor.","anyOf":[{"type":"string","maxLength":25},{"type":"null"}]}},"additionalProperties":false,"description":"Serie (Serie), hasta 25 caracteres. Cada serie lleva sus propios folios."},"archived":{"description":"true la archiva: ya no se puede facturar desde ella, y sus facturas la siguen nombrando. false la restaura.","type":"boolean"}},"additionalProperties":false},"example":{"archived":true}}}},"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Branch"},"example":{"id":"brn_OufpKqnrvx9p3","object":"branch","livemode":false,"issuer":"iss_OufpKqnrvx9p","name":"Sucursal Monterrey","zip":"64000","address":{"street":"Av. Constitución","exterior":"1500","interior":null,"neighborhood":"Centro","city":"Monterrey","state":"Nuevo León"},"phone":"81 1234 5678","email":null,"series":{"invoice":"MTY","credit_note":null,"payment":null,"transfer":null},"archived":false,"created_at":"2026-10-27T09:12:00-06:00","updated_at":"2026-10-27T09:12:00-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"delete":{"operationId":"deleteBranch","tags":["Sucursales"],"security":[{"bearerAuth":[]}],"summary":"Borrar una sucursal","description":"Solo una que nunca facturó; con facturas contesta branch_has_invoices: archívela con archived: true.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Deleted"},"example":{"id":"prd_OufpKqnrvx9p1","object":"product","deleted":true}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/customers":{"post":{"operationId":"createCustomer","tags":["Clientes"],"security":[{"bearerAuth":[]}],"summary":"Crear un cliente","description":"Un cliente del catálogo del emisor, con sus datos fiscales como vienen en su constancia. Un RFC que ya está en el catálogo contesta customer_exists.","parameters":[{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"issuer":{"type":"string","description":"Emisor (iss_…). Si la llave tiene un solo emisor o la cuenta tiene uno solo, puede omitirse."},"tax_id":{"type":"string","pattern":"^[A-ZÑ&]{3,4}\\d{6}[A-Z0-9]{3}$","description":"RFC (Rfc), 12 caracteres una persona moral y 13 una física."},"legal_name":{"type":"string","minLength":1,"maxLength":300,"description":"Nombre o razón social tal como está en la constancia de situación fiscal, sin el régimen de capital (sin «S.A. de C.V.»)."},"tax_system":{"type":"string","pattern":"^6\\d\\d$","description":"Régimen fiscal (RegimenFiscal), clave de c_RegimenFiscal: 601, 612, 626…"},"zip":{"type":"string","pattern":"^\\d{5}$","description":"Código postal del domicilio fiscal, 5 dígitos, como en la constancia de situación fiscal. El de un emisor es el lugar de expedición (LugarExpedicion) de sus comprobantes."},"email":{"description":"Correo del cliente (varios separados por comas), a donde van sus facturas con send_email.","anyOf":[{"type":"string","maxLength":1000},{"type":"null"}]},"use":{"type":"string","pattern":"^[A-Z]{1,2}\\d{2}$","description":"Uso del CFDI (UsoCFDI), clave de c_UsoCFDI. Por omisión G03, o S01 con régimen 616."},"foreign":{"anyOf":[{"type":"object","properties":{"country":{"type":"string","pattern":"^[A-Z]{3}$","description":"País de residencia fiscal, clave de 3 letras de c_Pais (USA, CAN…)."},"tax_id":{"type":"string","minLength":1,"maxLength":40,"description":"Número de registro de identidad fiscal en su país (NumRegIdTrib)."}},"required":["country","tax_id"],"additionalProperties":false},{"type":"null"}],"description":"Si es extranjero: su país de residencia (ResidenciaFiscal, c_Pais) y su número de registro tributario (NumRegIdTrib), con el RFC genérico XEXX010101000."},"ieps_taxpayer":{"type":"boolean","description":"true si el cliente es contribuyente de IEPS: el IEPS va desglosado en vez de sumado al precio."}},"required":["tax_id","legal_name","tax_system","zip"],"additionalProperties":false},"example":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826","email":"pagos@cva.example"}}}},"responses":{"201":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customer"},"example":{"id":"cus_OufpKqnrvx9p1","object":"customer","livemode":false,"issuer":"iss_OufpKqnrvx9p","tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826","email":"pagos@cva.example","use":"G03","foreign":null,"ieps_taxpayer":false,"created_at":"2026-10-20T09:02:11-06:00","updated_at":"2026-10-24T10:15:42-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"get":{"operationId":"listCustomers","tags":["Clientes"],"security":[{"bearerAuth":[]}],"summary":"Listar clientes","description":"Los clientes del emisor, los más recientes primero. Con tax_id, el de ese RFC.","parameters":[{"name":"limit","in":"query","description":"Cuántos por página, de 1 a 100. Por omisión 10.","schema":{"type":"integer","minimum":1,"maximum":100,"default":10}},{"name":"starting_after","in":"query","description":"El id del último de la página anterior, para la siguiente.","schema":{"type":"string"}},{"name":"issuer","in":"query","description":"El emisor (iss_…). Puede omitirse si la llave o la cuenta tienen uno solo.","schema":{"type":"string"}},{"name":"tax_id","in":"query","description":"Solo el de este RFC.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerList"},"example":{"object":"list","data":[{"id":"cus_OufpKqnrvx9p1","object":"customer","livemode":false,"issuer":"iss_OufpKqnrvx9p","tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826","email":"pagos@cva.example","use":"G03","foreign":null,"ieps_taxpayer":false,"created_at":"2026-10-20T09:02:11-06:00","updated_at":"2026-10-24T10:15:42-06:00"}],"has_more":false,"url":"/v1/customers"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/customers/{id}":{"get":{"operationId":"getCustomer","tags":["Clientes"],"security":[{"bearerAuth":[]}],"summary":"Ver un cliente","description":"Un cliente del catálogo.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customer"},"example":{"id":"cus_OufpKqnrvx9p1","object":"customer","livemode":false,"issuer":"iss_OufpKqnrvx9p","tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826","email":"pagos@cva.example","use":"G03","foreign":null,"ieps_taxpayer":false,"created_at":"2026-10-20T09:02:11-06:00","updated_at":"2026-10-24T10:15:42-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"post":{"operationId":"updateCustomer","tags":["Clientes"],"security":[{"bearerAuth":[]}],"summary":"Actualizar un cliente","description":"Cambia solo los campos que manda. Las facturas ya timbradas no cambian.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tax_id":{"type":"string","pattern":"^[A-ZÑ&]{3,4}\\d{6}[A-Z0-9]{3}$","description":"RFC (Rfc), 12 caracteres una persona moral y 13 una física."},"legal_name":{"type":"string","minLength":1,"maxLength":300,"description":"Nombre o razón social tal como está en la constancia de situación fiscal, sin el régimen de capital (sin «S.A. de C.V.»)."},"tax_system":{"type":"string","pattern":"^6\\d\\d$","description":"Régimen fiscal (RegimenFiscal), clave de c_RegimenFiscal: 601, 612, 626…"},"zip":{"type":"string","pattern":"^\\d{5}$","description":"Código postal del domicilio fiscal, 5 dígitos, como en la constancia de situación fiscal. El de un emisor es el lugar de expedición (LugarExpedicion) de sus comprobantes."},"email":{"description":"Correo del cliente (varios separados por comas), a donde van sus facturas con send_email.","anyOf":[{"type":"string","maxLength":1000},{"type":"null"}]},"use":{"type":"string","pattern":"^[A-Z]{1,2}\\d{2}$","description":"Uso del CFDI (UsoCFDI), clave de c_UsoCFDI. Por omisión G03, o S01 con régimen 616."},"foreign":{"anyOf":[{"type":"object","properties":{"country":{"type":"string","pattern":"^[A-Z]{3}$","description":"País de residencia fiscal, clave de 3 letras de c_Pais (USA, CAN…)."},"tax_id":{"type":"string","minLength":1,"maxLength":40,"description":"Número de registro de identidad fiscal en su país (NumRegIdTrib)."}},"required":["country","tax_id"],"additionalProperties":false},{"type":"null"}],"description":"Si es extranjero: su país de residencia (ResidenciaFiscal, c_Pais) y su número de registro tributario (NumRegIdTrib), con el RFC genérico XEXX010101000."},"ieps_taxpayer":{"type":"boolean","description":"true si el cliente es contribuyente de IEPS: el IEPS va desglosado en vez de sumado al precio."}},"additionalProperties":false},"example":{"email":"facturas@cva.example"}}}},"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customer"},"example":{"id":"cus_OufpKqnrvx9p1","object":"customer","livemode":false,"issuer":"iss_OufpKqnrvx9p","tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826","email":"pagos@cva.example","use":"G03","foreign":null,"ieps_taxpayer":false,"created_at":"2026-10-20T09:02:11-06:00","updated_at":"2026-10-24T10:15:42-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"delete":{"operationId":"deleteCustomer","tags":["Clientes"],"security":[{"bearerAuth":[]}],"summary":"Borrar un cliente","description":"Lo quita del catálogo. Sus facturas timbradas siguen igual.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Deleted"},"example":{"id":"prd_OufpKqnrvx9p1","object":"product","deleted":true}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/customer_data_requests":{"post":{"operationId":"createCustomerDataRequest","tags":["Clientes"],"security":[{"bearerAuth":[]}],"summary":"Pedirle sus datos fiscales a un cliente","description":"Una liga (url) que usted le manda a su cliente: la abre en fiscalisto.com y da su RFC, nombre, régimen, código postal y uso, escritos o leídos de su constancia, revisados antes de aceptarlos. Al mandarlos llega customer_data_request.completed. Un cliente nuevo queda en el catálogo del emisor; si ya existía con otros datos, los nuevos vienen en submission para que usted los aplique.","parameters":[{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"issuer":{"description":"El emisor (iss_…) que va a facturarle. Por omisión, su único emisor.","type":"string"},"reference":{"description":"Su id para este cliente o pedido, como «Pedido 1042». El cliente la ve arriba del formulario y viene de vuelta en el evento.","type":"string","maxLength":100},"description":{"description":"Una línea que el cliente ve arriba del formulario: para qué son sus datos.","type":"string","maxLength":300},"expires_in_days":{"description":"Días que la liga sirve, de 1 a 60. Por omisión 60.","type":"integer","minimum":1,"maximum":60}},"additionalProperties":false},"example":{"reference":"cliente-8812","description":"Para facturar su suscripción de octubre."}}}},"responses":{"201":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerDataRequest"},"example":{"id":"cdr_0q1Vmmw52sbD4cHPqLfBvX0AkFg3hX2Ys","object":"customer_data_request","livemode":false,"issuer":"iss_0q1Vmmw52sbD","status":"completed","url":null,"reference":"cliente-8812","description":"Para facturar su suscripción de octubre.","expires_at":"2026-12-23T10:15:00-06:00","created_at":"2026-10-24T10:15:00-06:00","submission":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826","use":"G03","email":"facturas@inmobiliariacva.mx","source":"constancia","customer":"cus_0q1Vmmw52sbD1","applied":true,"submitted_at":"2026-10-24T11:02:41-06:00"}}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"get":{"operationId":"listCustomerDataRequests","tags":["Clientes"],"security":[{"bearerAuth":[]}],"summary":"Listar solicitudes de datos","description":"Las ligas para pedir datos fiscales, las más recientes primero, con su estado.","parameters":[{"name":"limit","in":"query","description":"Cuántos por página, de 1 a 100. Por omisión 10.","schema":{"type":"integer","minimum":1,"maximum":100,"default":10}},{"name":"starting_after","in":"query","description":"El id del último de la página anterior, para la siguiente.","schema":{"type":"string"}},{"name":"issuer","in":"query","description":"El emisor (iss_…). Puede omitirse si la llave o la cuenta tienen uno solo.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerDataRequestList"},"example":{"object":"list","data":[{"id":"cdr_0q1Vmmw52sbD4cHPqLfBvX0AkFg3hX2Ys","object":"customer_data_request","livemode":false,"issuer":"iss_0q1Vmmw52sbD","status":"completed","url":null,"reference":"cliente-8812","description":"Para facturar su suscripción de octubre.","expires_at":"2026-12-23T10:15:00-06:00","created_at":"2026-10-24T10:15:00-06:00","submission":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826","use":"G03","email":"facturas@inmobiliariacva.mx","source":"constancia","customer":"cus_0q1Vmmw52sbD1","applied":true,"submitted_at":"2026-10-24T11:02:41-06:00"}}],"has_more":false,"url":"/v1/customer_data_requests"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/customer_data_requests/{id}":{"get":{"operationId":"getCustomerDataRequest","tags":["Clientes"],"security":[{"bearerAuth":[]}],"summary":"Ver una solicitud de datos","description":"Una solicitud de datos: su liga y, si el cliente ya contestó, sus datos fiscales y el cliente que se guardó.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerDataRequest"},"example":{"id":"cdr_0q1Vmmw52sbD4cHPqLfBvX0AkFg3hX2Ys","object":"customer_data_request","livemode":false,"issuer":"iss_0q1Vmmw52sbD","status":"completed","url":null,"reference":"cliente-8812","description":"Para facturar su suscripción de octubre.","expires_at":"2026-12-23T10:15:00-06:00","created_at":"2026-10-24T10:15:00-06:00","submission":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826","use":"G03","email":"facturas@inmobiliariacva.mx","source":"constancia","customer":"cus_0q1Vmmw52sbD1","applied":true,"submitted_at":"2026-10-24T11:02:41-06:00"}}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"delete":{"operationId":"cancelCustomerDataRequest","tags":["Clientes"],"security":[{"bearerAuth":[]}],"summary":"Cancelar una solicitud de datos","description":"La liga deja de funcionar. Una que el cliente ya contestó no se cancela.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerDataRequest"},"example":{"id":"cdr_0q1Vmmw52sbD4cHPqLfBvX0AkFg3hX2Ys","object":"customer_data_request","livemode":false,"issuer":"iss_0q1Vmmw52sbD","status":"completed","url":null,"reference":"cliente-8812","description":"Para facturar su suscripción de octubre.","expires_at":"2026-12-23T10:15:00-06:00","created_at":"2026-10-24T10:15:00-06:00","submission":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826","use":"G03","email":"facturas@inmobiliariacva.mx","source":"constancia","customer":"cus_0q1Vmmw52sbD1","applied":true,"submitted_at":"2026-10-24T11:02:41-06:00"}}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/products":{"post":{"operationId":"createProduct","tags":["Productos"],"security":[{"bearerAuth":[]}],"summary":"Crear un producto","description":"Un producto o servicio del catálogo del emisor, con su clave del SAT, su unidad, su precio y sus impuestos, para usarlo en items con product.","parameters":[{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"issuer":{"type":"string","description":"Emisor (iss_…). Si la llave tiene un solo emisor o la cuenta tiene uno solo, puede omitirse."},"name":{"description":"Nombre corto para encontrarlo, solo para usted; en el CFDI va description.","anyOf":[{"type":"string","maxLength":100},{"type":"null"}]},"description":{"type":"string","minLength":1,"maxLength":1000,"description":"Descripción."},"product_key":{"type":"string","pattern":"^\\d{8}$","description":"Clave del producto o servicio (ClaveProdServ), 8 dígitos de c_ClaveProdServ. Búsquela con GET /v1/sat_catalogs/product_keys?q=…"},"unit_key":{"type":"string","minLength":1,"maxLength":5,"description":"Clave de unidad (ClaveUnidad) de c_ClaveUnidad: E48 unidad de servicio (por omisión), H87 pieza, ACT actividad…"},"unit_name":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"description":"Nombre de la unidad (Unidad), hasta 20 caracteres."},"sku":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"description":"Número de identificación o SKU (NoIdentificacion)."},"unit_price":{"type":"number","minimum":0,"maximum":1000000000000,"description":"Precio unitario antes de impuestos (ValorUnitario)."},"open_price":{"description":"Precio abierto: sin precio fijo (una noche de hotel que cambia cada día); cada factura manda su unit_price.","type":"boolean"},"taxability":{"type":"string","enum":["01","02","03","04","05","06","07","08"],"description":"Objeto de impuesto (ObjetoImp), c_ObjetoImp: 01 no objeto, 02 sí objeto (por omisión), 03 sin desglose, 04 no causa…"},"iva":{"type":"string","enum":["0","0.16","0.08","exento"],"description":"Tasa de IVA trasladado: 0.16 (por omisión), 0.08 (región fronteriza), 0 o exento."},"ieps":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"description":"IEPS trasladado: tasa (0.265…) o cuota en pesos por unidad, según ieps_factor."},"ieps_factor":{"type":"string","enum":["Tasa","Cuota"],"description":"Tasa o Cuota (TipoFactor del IEPS)."},"iva_retention":{"type":"number","minimum":0,"maximum":0.16,"description":"Tasa de IVA retenido (por ejemplo 0.106667, dos terceras partes del 16%)."},"isr_retention":{"type":"number","minimum":0,"maximum":0.35,"description":"Tasa de ISR retenido (por ejemplo 0.10 honorarios, 0.0125 RESICO)."},"local_taxes":{"description":"Impuestos locales que lleva, como el ISH 3% de hospedaje: van en cada factura con él, sobre sus conceptos.","maxItems":20,"type":"array","items":{"type":"object","properties":{"retention":{"type":"boolean","description":"true si es una retención local; false si es un traslado."},"name":{"type":"string","minLength":1,"maxLength":100,"description":"Nombre del impuesto local (ImpLocTrasladado o ImpLocRetenido), como ISH."},"rate":{"type":"number","exclusiveMinimum":0,"maximum":100,"description":"Tasa en por ciento (TasadeTraslado o TasadeRetencion)."}},"required":["retention","name","rate"],"additionalProperties":false}},"track_stock":{"description":"Lleva existencias (Inventario): cada factura que lo vende las saca del almacén de su sucursal, y una cancelada las regresa. Ver GET /v1/products/{id}/stock.","type":"boolean"},"cost":{"description":"Su costo por unidad en pesos sin IVA, hasta que sus compras den otro: vale las existencias que entran sin unit_cost.","anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"barcode":{"description":"Código de barras (EAN, UPC o el suyo). Una factura cuyo concepto lo trae como NoIdentificacion saca existencias de este producto.","anyOf":[{"type":"string","maxLength":60},{"type":"null"}]},"min_stock":{"description":"Existencia mínima: por debajo, el aviso de existencias bajas lo incluye.","anyOf":[{"type":"number","minimum":0},{"type":"null"}]}},"required":["description","product_key"],"additionalProperties":false},"example":{"description":"Mensualidad","product_key":"86121700","sku":"MEN-1","unit_price":2500}}}},"responses":{"201":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Product"},"example":{"id":"prd_OufpKqnrvx9p1","object":"product","livemode":false,"issuer":"iss_OufpKqnrvx9p","name":null,"description":"Mensualidad","product_key":"86121700","unit_key":"E48","unit_name":"Unidad de servicio","sku":"MEN-1","unit_price":2500,"open_price":false,"taxability":"02","iva":"0.16","ieps":null,"ieps_factor":null,"iva_retention":0,"isr_retention":0,"local_taxes":[],"track_stock":false,"cost":null,"barcode":null,"min_stock":null,"created_at":"2026-10-20T09:02:11-06:00","updated_at":"2026-10-24T10:15:42-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"get":{"operationId":"listProducts","tags":["Productos"],"security":[{"bearerAuth":[]}],"summary":"Listar productos","description":"Los productos del emisor, los más recientes primero. Filtre por sku o product_key.","parameters":[{"name":"limit","in":"query","description":"Cuántos por página, de 1 a 100. Por omisión 10.","schema":{"type":"integer","minimum":1,"maximum":100,"default":10}},{"name":"starting_after","in":"query","description":"El id del último de la página anterior, para la siguiente.","schema":{"type":"string"}},{"name":"issuer","in":"query","description":"El emisor (iss_…). Puede omitirse si la llave o la cuenta tienen uno solo.","schema":{"type":"string"}},{"name":"sku","in":"query","description":"Solo el de este SKU.","schema":{"type":"string"}},{"name":"product_key","in":"query","description":"Solo los de esta clave del SAT.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductList"},"example":{"object":"list","data":[{"id":"prd_OufpKqnrvx9p1","object":"product","livemode":false,"issuer":"iss_OufpKqnrvx9p","name":null,"description":"Mensualidad","product_key":"86121700","unit_key":"E48","unit_name":"Unidad de servicio","sku":"MEN-1","unit_price":2500,"open_price":false,"taxability":"02","iva":"0.16","ieps":null,"ieps_factor":null,"iva_retention":0,"isr_retention":0,"local_taxes":[],"track_stock":false,"cost":null,"barcode":null,"min_stock":null,"created_at":"2026-10-20T09:02:11-06:00","updated_at":"2026-10-24T10:15:42-06:00"}],"has_more":false,"url":"/v1/products"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/products/{id}":{"get":{"operationId":"getProduct","tags":["Productos"],"security":[{"bearerAuth":[]}],"summary":"Ver un producto","description":"Un producto del catálogo.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Product"},"example":{"id":"prd_OufpKqnrvx9p1","object":"product","livemode":false,"issuer":"iss_OufpKqnrvx9p","name":null,"description":"Mensualidad","product_key":"86121700","unit_key":"E48","unit_name":"Unidad de servicio","sku":"MEN-1","unit_price":2500,"open_price":false,"taxability":"02","iva":"0.16","ieps":null,"ieps_factor":null,"iva_retention":0,"isr_retention":0,"local_taxes":[],"track_stock":false,"cost":null,"barcode":null,"min_stock":null,"created_at":"2026-10-20T09:02:11-06:00","updated_at":"2026-10-24T10:15:42-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"post":{"operationId":"updateProduct","tags":["Productos"],"security":[{"bearerAuth":[]}],"summary":"Actualizar un producto","description":"Cambia solo los campos que manda. Las facturas ya timbradas no cambian.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"Nombre corto para encontrarlo, solo para usted; en el CFDI va description.","anyOf":[{"type":"string","maxLength":100},{"type":"null"}]},"description":{"type":"string","minLength":1,"maxLength":1000,"description":"Descripción."},"product_key":{"type":"string","pattern":"^\\d{8}$","description":"Clave del producto o servicio (ClaveProdServ), 8 dígitos de c_ClaveProdServ. Búsquela con GET /v1/sat_catalogs/product_keys?q=…"},"unit_key":{"type":"string","minLength":1,"maxLength":5,"description":"Clave de unidad (ClaveUnidad) de c_ClaveUnidad: E48 unidad de servicio (por omisión), H87 pieza, ACT actividad…"},"unit_name":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"description":"Nombre de la unidad (Unidad), hasta 20 caracteres."},"sku":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"description":"Número de identificación o SKU (NoIdentificacion)."},"unit_price":{"type":"number","minimum":0,"maximum":1000000000000,"description":"Precio unitario antes de impuestos (ValorUnitario)."},"open_price":{"description":"Precio abierto: sin precio fijo (una noche de hotel que cambia cada día); cada factura manda su unit_price.","type":"boolean"},"taxability":{"type":"string","enum":["01","02","03","04","05","06","07","08"],"description":"Objeto de impuesto (ObjetoImp), c_ObjetoImp: 01 no objeto, 02 sí objeto (por omisión), 03 sin desglose, 04 no causa…"},"iva":{"type":"string","enum":["0","0.16","0.08","exento"],"description":"Tasa de IVA trasladado: 0.16 (por omisión), 0.08 (región fronteriza), 0 o exento."},"ieps":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"description":"IEPS trasladado: tasa (0.265…) o cuota en pesos por unidad, según ieps_factor."},"ieps_factor":{"type":"string","enum":["Tasa","Cuota"],"description":"Tasa o Cuota (TipoFactor del IEPS)."},"iva_retention":{"type":"number","minimum":0,"maximum":0.16,"description":"Tasa de IVA retenido (por ejemplo 0.106667, dos terceras partes del 16%)."},"isr_retention":{"type":"number","minimum":0,"maximum":0.35,"description":"Tasa de ISR retenido (por ejemplo 0.10 honorarios, 0.0125 RESICO)."},"local_taxes":{"description":"Impuestos locales que lleva, como el ISH 3% de hospedaje: van en cada factura con él, sobre sus conceptos.","maxItems":20,"type":"array","items":{"type":"object","properties":{"retention":{"type":"boolean","description":"true si es una retención local; false si es un traslado."},"name":{"type":"string","minLength":1,"maxLength":100,"description":"Nombre del impuesto local (ImpLocTrasladado o ImpLocRetenido), como ISH."},"rate":{"type":"number","exclusiveMinimum":0,"maximum":100,"description":"Tasa en por ciento (TasadeTraslado o TasadeRetencion)."}},"required":["retention","name","rate"],"additionalProperties":false}},"track_stock":{"description":"Lleva existencias (Inventario): cada factura que lo vende las saca del almacén de su sucursal, y una cancelada las regresa. Ver GET /v1/products/{id}/stock.","type":"boolean"},"cost":{"description":"Su costo por unidad en pesos sin IVA, hasta que sus compras den otro: vale las existencias que entran sin unit_cost.","anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"barcode":{"description":"Código de barras (EAN, UPC o el suyo). Una factura cuyo concepto lo trae como NoIdentificacion saca existencias de este producto.","anyOf":[{"type":"string","maxLength":60},{"type":"null"}]},"min_stock":{"description":"Existencia mínima: por debajo, el aviso de existencias bajas lo incluye.","anyOf":[{"type":"number","minimum":0},{"type":"null"}]}},"additionalProperties":false},"example":{"unit_price":2600}}}},"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Product"},"example":{"id":"prd_OufpKqnrvx9p1","object":"product","livemode":false,"issuer":"iss_OufpKqnrvx9p","name":null,"description":"Mensualidad","product_key":"86121700","unit_key":"E48","unit_name":"Unidad de servicio","sku":"MEN-1","unit_price":2500,"open_price":false,"taxability":"02","iva":"0.16","ieps":null,"ieps_factor":null,"iva_retention":0,"isr_retention":0,"local_taxes":[],"track_stock":false,"cost":null,"barcode":null,"min_stock":null,"created_at":"2026-10-20T09:02:11-06:00","updated_at":"2026-10-24T10:15:42-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"delete":{"operationId":"deleteProduct","tags":["Productos"],"security":[{"bearerAuth":[]}],"summary":"Borrar un producto","description":"Lo quita del catálogo. Las facturas que lo usaron siguen igual.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Deleted"},"example":{"id":"prd_OufpKqnrvx9p1","object":"product","deleted":true}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/issuers/{id}/compliance_opinion":{"get":{"operationId":"getComplianceOpinion","tags":["Cumplimiento SAT"],"security":[{"bearerAuth":[]}],"summary":"Ver la opinión de cumplimiento (32-D)","description":"La última opinión que trajo del SAT: positiva, negativa (con sus motivos), sin obligaciones o en suspensión. result es null hasta la primera consulta. No usa timbres.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ComplianceOpinion"},"example":{"object":"compliance_opinion","livemode":false,"issuer":"iss_OufpKqnrvx9p","result":"positive","date":"2026-10-27","folio":"26NA20261027TEST","reasons":[],"pdf":true,"checked_at":"2026-10-27T09:12:00-06:00","last_error":null}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/issuers/{id}/compliance_opinion/refresh":{"post":{"operationId":"refreshComplianceOpinion","tags":["Cumplimiento SAT"],"security":[{"bearerAuth":[]}],"summary":"Pedir la opinión de cumplimiento al SAT","description":"La pide al SAT ahora con la e.firma guardada del emisor (POST /v1/issuers/{id}/efirma con keep_for_downloads: true). 1 timbre en producción, una vez cada 10 minutos; regresa si el SAT no contesta. Si el SAT tarda, contesta status processing y el resultado llega a GET /v1/issuers/{id}/compliance_opinion. En pruebas da una positiva de ejemplo.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SatRefresh"},"example":{"object":"sat_refresh","livemode":false,"issuer":"iss_OufpKqnrvx9p","document":"compliance_opinion","status":"completed","refreshed_at":"2026-10-27T09:12:00-06:00","next_refresh_at":"2026-10-27T09:22:00-06:00","url":"/v1/issuers/iss_OufpKqnrvx9p/compliance_opinion"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/issuers/{id}/compliance_opinion/pdf":{"get":{"operationId":"getComplianceOpinionPdf","tags":["Cumplimiento SAT"],"security":[{"bearerAuth":[]}],"summary":"Descargar el PDF de la opinión de cumplimiento","description":"El PDF de la última opinión, como lo da el SAT. No usa timbres.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"El archivo.","content":{"application/pdf":{"schema":{"type":"string","format":"binary"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/issuers/{id}/tax_status_certificate":{"get":{"operationId":"getTaxStatusCertificate","tags":["Cumplimiento SAT"],"security":[{"bearerAuth":[]}],"summary":"Ver la constancia de situación fiscal","description":"Lo que dice la última constancia generada: razón social, regímenes, código postal, estatus en el padrón e idCIF. No usa timbres.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaxStatusCertificate"},"example":{"object":"tax_status_certificate","livemode":false,"issuer":"iss_OufpKqnrvx9p","issued_on":"2026-10-27","id_cif":"26010000000","tax_id":"EKU9003173C9","legal_name":"ESCUELA KEMPER URGATE","tax_systems":[{"code":"601","name":"Régimen General de Ley Personas Morales"}],"zip":"42501","status":"ACTIVO","pdf":true,"created_at":"2026-10-27T09:12:00-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/issuers/{id}/tax_status_certificate/refresh":{"post":{"operationId":"refreshTaxStatusCertificate","tags":["Cumplimiento SAT"],"security":[{"bearerAuth":[]}],"summary":"Generar la constancia de situación fiscal en el SAT","description":"Genera una constancia nueva con la e.firma guardada del emisor. 1 timbre en producción, una vez cada 10 minutos; regresa si el SAT no contesta. En pruebas hace una con los datos del emisor.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SatRefresh"},"example":{"object":"sat_refresh","livemode":false,"issuer":"iss_OufpKqnrvx9p","document":"compliance_opinion","status":"completed","refreshed_at":"2026-10-27T09:12:00-06:00","next_refresh_at":"2026-10-27T09:22:00-06:00","url":"/v1/issuers/iss_OufpKqnrvx9p/compliance_opinion"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/issuers/{id}/tax_status_certificate/pdf":{"get":{"operationId":"getTaxStatusCertificatePdf","tags":["Cumplimiento SAT"],"security":[{"bearerAuth":[]}],"summary":"Descargar el PDF de la constancia","description":"El PDF de la última constancia, como lo da el SAT. No usa timbres.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"El archivo.","content":{"application/pdf":{"schema":{"type":"string","format":"binary"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/issuers/{id}/sat_mailbox/refresh":{"post":{"operationId":"refreshSatMailbox","tags":["Cumplimiento SAT"],"security":[{"bearerAuth":[]}],"summary":"Revisar el buzón tributario en el SAT","description":"Lee los avisos del buzón tributario del emisor ahora, con su e.firma guardada; nunca abre notificaciones (abrirlas firma el acuse y corren los plazos). 1 timbre en producción, una vez cada 10 minutos. En pruebas deja dos avisos de ejemplo.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SatRefresh"},"example":{"object":"sat_refresh","livemode":false,"issuer":"iss_OufpKqnrvx9p","document":"compliance_opinion","status":"completed","refreshed_at":"2026-10-27T09:12:00-06:00","next_refresh_at":"2026-10-27T09:22:00-06:00","url":"/v1/issuers/iss_OufpKqnrvx9p/compliance_opinion"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/sat_mailbox_messages":{"get":{"operationId":"listSatMailboxMessages","tags":["Cumplimiento SAT"],"security":[{"bearerAuth":[]}],"summary":"Listar avisos del buzón tributario","description":"Los avisos que trajo del buzón del emisor, los más recientes primero. No usa timbres.","parameters":[{"name":"limit","in":"query","description":"Cuántos por página, de 1 a 100. Por omisión 10.","schema":{"type":"integer","minimum":1,"maximum":100,"default":10}},{"name":"starting_after","in":"query","description":"El id del último de la página anterior, para la siguiente.","schema":{"type":"string"}},{"name":"issuer","in":"query","description":"El emisor (iss_…). Puede omitirse si la llave o la cuenta tienen uno solo.","schema":{"type":"string"}},{"name":"unread","in":"query","description":"true para solo los no leídos en el SAT, false para los leídos.","schema":{"type":"boolean"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SatMailboxMessageList"},"example":{"object":"list","data":[{"id":"sbm_OufpKqnrvx9p1","object":"sat_mailbox_message","livemode":false,"issuer":"iss_OufpKqnrvx9p","subject":"Requerimiento de información","summary":"Se le requiere la documentación que acredite…","source":"mailbox","unread":true,"urgency":"urgent","kind":"Requerimiento","action_required":true,"received_at":"2026-10-27","created_at":"2026-10-27T09:12:00-06:00"}],"has_more":false,"url":"/v1/sat_mailbox_messages"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/sat_mailbox_messages/{id}":{"get":{"operationId":"getSatMailboxMessage","tags":["Cumplimiento SAT"],"security":[{"bearerAuth":[]}],"summary":"Ver un aviso del buzón tributario","description":"Un aviso del buzón, con su urgencia y si pide hacer algo.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SatMailboxMessage"},"example":{"id":"sbm_OufpKqnrvx9p1","object":"sat_mailbox_message","livemode":false,"issuer":"iss_OufpKqnrvx9p","subject":"Requerimiento de información","summary":"Se le requiere la documentación que acredite…","source":"mailbox","unread":true,"urgency":"urgent","kind":"Requerimiento","action_required":true,"received_at":"2026-10-27","created_at":"2026-10-27T09:12:00-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/sat_findings":{"get":{"operationId":"listSatFindings","tags":["Cumplimiento SAT"],"security":[{"bearerAuth":[]}],"summary":"Listar hallazgos en los CFDI","description":"Lo que Fiscalisto encontró en los CFDI del emisor (los suyos y los descargados del SAT) y nadie ha revisado, por tipo y del más grave al más leve: proveedores en la lista 69-B, CFDI cancelados, pagos en efectivo de más de $2,000, errores de CFDI 4.0. Todos en una página. No usa timbres.","parameters":[{"name":"issuer","in":"query","description":"El emisor (iss_…). Puede omitirse si la llave o la cuenta tienen uno solo.","schema":{"type":"string"}},{"name":"direction","in":"query","description":"issued (emitidos) o received (recibidos); sin él, los dos.","schema":{"type":"string","enum":["issued","received"]}},{"name":"date_gte","in":"query","description":"CFDI desde este día (AAAA-MM-DD).","schema":{"type":"string"}},{"name":"date_lte","in":"query","description":"CFDI hasta este día (AAAA-MM-DD, completo).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SatFindingList"},"example":{"object":"list","data":[{"id":"efos_definitivo","object":"sat_finding","livemode":false,"issuer":"iss_OufpKqnrvx9p","code":"efos_definitivo","severity":"critical","title":"Proveedor en la lista 69-B","explanation":"El SAT presume que sus operaciones son simuladas: sus CFDI no se deducen.","invoices":3,"amount":48720}],"has_more":false,"url":"/v1/sat_findings"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/warehouses":{"get":{"operationId":"listWarehouses","tags":["Inventario"],"security":[{"bearerAuth":[]}],"summary":"Listar almacenes","description":"Los almacenes del emisor, los más recientes primero: el de la Matriz y uno por sucursal se crean solos. Todos en una página.","parameters":[{"name":"issuer","in":"query","description":"El emisor (iss_…). Puede omitirse si la llave o la cuenta tienen uno solo.","schema":{"type":"string"}},{"name":"include_archived","in":"query","description":"true para incluir los archivados.","schema":{"type":"boolean"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WarehouseList"},"example":{"object":"list","data":[{"id":"whs_OufpKqnrvx9p1","object":"warehouse","livemode":false,"issuer":"iss_OufpKqnrvx9p","name":"Matriz","code":null,"type":"warehouse","branch":null,"default":true,"archived":false,"created_at":"2026-10-27T09:12:00-06:00"}],"has_more":false,"url":"/v1/warehouses"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/warehouses/{id}":{"get":{"operationId":"getWarehouse","tags":["Inventario"],"security":[{"bearerAuth":[]}],"summary":"Ver un almacén","description":"Un almacén del emisor.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Warehouse"},"example":{"id":"whs_OufpKqnrvx9p1","object":"warehouse","livemode":false,"issuer":"iss_OufpKqnrvx9p","name":"Matriz","code":null,"type":"warehouse","branch":null,"default":true,"archived":false,"created_at":"2026-10-27T09:12:00-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/warehouses/{id}/stock":{"get":{"operationId":"listWarehouseStock","tags":["Inventario"],"security":[{"bearerAuth":[]}],"summary":"Ver las existencias de un almacén","description":"Lo que hay de cada producto en el almacén, el producto más reciente primero. Solo los que tienen existencias, salvo con include_empty=true (todos los que llevan track_stock).","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"name":"limit","in":"query","description":"Cuántos por página, de 1 a 100. Por omisión 10.","schema":{"type":"integer","minimum":1,"maximum":100,"default":10}},{"name":"starting_after","in":"query","description":"El id del último de la página anterior, para la siguiente.","schema":{"type":"string"}},{"name":"include_empty","in":"query","description":"true para incluir los productos con track_stock que están en 0.","schema":{"type":"boolean"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StockLevelList"},"example":{"object":"list","data":[{"id":"stl_OufpKqnrvx9p4gfFC6","object":"stock_level","livemode":false,"product":"prd_OufpKqnrvx9p2","warehouse":"whs_OufpKqnrvx9p1","on_hand":48,"reserved":6,"available":42,"value":4320,"average_cost":90}],"has_more":false,"url":"/v1/warehouses/{id}/stock"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/products/{id}/stock":{"get":{"operationId":"getProductStock","tags":["Inventario"],"security":[{"bearerAuth":[]}],"summary":"Ver las existencias de un producto","description":"Lo que hay del producto en cada almacén del emisor (también en 0), apartado por cotizaciones y disponible.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StockLevelList"},"example":{"object":"list","data":[{"id":"stl_OufpKqnrvx9p4gfFC6","object":"stock_level","livemode":false,"product":"prd_OufpKqnrvx9p2","warehouse":"whs_OufpKqnrvx9p1","on_hand":48,"reserved":6,"available":42,"value":4320,"average_cost":90}],"has_more":false,"url":"/v1/products/{id}/stock"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/stock_movements":{"get":{"operationId":"listStockMovements","tags":["Inventario"],"security":[{"bearerAuth":[]}],"summary":"Listar movimientos (kárdex)","description":"Cada entrada y salida de existencias, la más reciente primero: ventas (de sus facturas), compras, ajustes, traspasos y lo que deshizo una cancelación.","parameters":[{"name":"limit","in":"query","description":"Cuántos por página, de 1 a 100. Por omisión 10.","schema":{"type":"integer","minimum":1,"maximum":100,"default":10}},{"name":"starting_after","in":"query","description":"El id del último de la página anterior, para la siguiente.","schema":{"type":"string"}},{"name":"issuer","in":"query","description":"El emisor (iss_…). Puede omitirse si la llave o la cuenta tienen uno solo.","schema":{"type":"string"}},{"name":"product","in":"query","description":"Solo los de este producto (prd_…).","schema":{"type":"string"}},{"name":"warehouse","in":"query","description":"Solo los de este almacén (whs_…).","schema":{"type":"string"}},{"name":"type","in":"query","description":"Solo los de este tipo.","schema":{"type":"string","enum":["sale","purchase","customer_return","supplier_return","adjustment","count","transfer_out","transfer_in","initial","cost","reversal"]}},{"name":"date_gte","in":"query","description":"Desde este día (AAAA-MM-DD) u hora (AAAA-MM-DDTHH:MM:SS) de la Ciudad de México.","schema":{"type":"string"}},{"name":"date_lte","in":"query","description":"Hasta este día (completo) u hora de la Ciudad de México.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StockMovementList"},"example":{"object":"list","data":[{"id":"stm_OufpKqnrvx9p7","object":"stock_movement","livemode":false,"issuer":"iss_OufpKqnrvx9p","product":"prd_OufpKqnrvx9p2","warehouse":"whs_OufpKqnrvx9p1","type":"sale","quantity":-2,"unit_cost":90,"value":-180,"lot":null,"source":{"type":"invoice","id":"5F1E8C2A-3B7D-4C9E-A1B2-C3D4E5F60718"},"reason":null,"date":"2026-10-27T10:15:42","reversed":false,"created_at":"2026-10-27T10:15:43-06:00"}],"has_more":false,"url":"/v1/stock_movements"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/stock_movements/{id}":{"get":{"operationId":"getStockMovement","tags":["Inventario"],"security":[{"bearerAuth":[]}],"summary":"Ver un movimiento","description":"Una entrada o salida de existencias, con lo que la causó (source).","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StockMovement"},"example":{"id":"stm_OufpKqnrvx9p7","object":"stock_movement","livemode":false,"issuer":"iss_OufpKqnrvx9p","product":"prd_OufpKqnrvx9p2","warehouse":"whs_OufpKqnrvx9p1","type":"sale","quantity":-2,"unit_cost":90,"value":-180,"lot":null,"source":{"type":"invoice","id":"5F1E8C2A-3B7D-4C9E-A1B2-C3D4E5F60718"},"reason":null,"date":"2026-10-27T10:15:42","reversed":false,"created_at":"2026-10-27T10:15:43-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/stock_adjustments":{"post":{"operationId":"createStockAdjustment","tags":["Inventario"],"security":[{"bearerAuth":[]}],"summary":"Ajustar existencias","description":"Mete o saca existencias de un almacén con su motivo: el inventario inicial, una merma, un robo, un sobrante. Las entradas valen su unit_cost (o el costo promedio), las salidas el costo del emisor (promedio o PEPS). Los productos deben llevar track_stock: true. Se aplica al momento (status applied).","parameters":[{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"issuer":{"description":"El emisor (iss_…). Por omisión, su único emisor.","type":"string"},"warehouse":{"description":"El almacén (whs_…). Por omisión, el de la Matriz.","type":"string"},"reason":{"type":"string","enum":["shrinkage","theft","damage","expiration","internal_use","gift","initial","surplus","count","other"],"description":"Por qué: shrinkage (merma), theft (robo o extravío), damage (daño), expiration (caducidad), internal_use (uso interno), gift (muestra o regalo), initial (inventario inicial), surplus (sobrante), count (conteo físico) u other."},"note":{"description":"Una nota, para el kárdex.","anyOf":[{"type":"string","maxLength":300},{"type":"null"}]},"lines":{"minItems":1,"maxItems":500,"type":"array","items":{"type":"object","properties":{"product":{"type":"string","description":"El producto (prd_…), con track_stock: true."},"quantity":{"type":"number","description":"Cuánto entra (positivo) o sale (negativo), en la unidad del producto."},"unit_cost":{"description":"Lo que costó cada unidad que entra, en pesos sin IVA; sin él, el costo promedio de hoy.","type":"number","minimum":0},"lot":{"description":"El lote o número de serie, si el producto los lleva.","type":"string","minLength":1,"maxLength":60},"expires_on":{"description":"La caducidad de un lote nuevo (AAAA-MM-DD).","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"required":["product","quantity"],"additionalProperties":false},"description":"Lo que entra o sale de cada producto, hasta 500 líneas."}},"required":["reason","lines"],"additionalProperties":false},"example":{"reason":"initial","note":"Inventario de apertura","lines":[{"product":"prd_OufpKqnrvx9p2","quantity":50,"unit_cost":90}]}}}},"responses":{"201":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StockAdjustment"},"example":{"id":"adj_OufpKqnrvx9p1","object":"stock_adjustment","livemode":false,"issuer":"iss_OufpKqnrvx9p","warehouse":"whs_OufpKqnrvx9p1","reason":"initial","note":"Inventario de apertura","status":"applied","value":4500,"lines":[{"product":"prd_OufpKqnrvx9p2","quantity":50,"unit_cost":90,"lot":null}],"created_at":"2026-10-27T09:30:00-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"get":{"operationId":"listStockAdjustments","tags":["Inventario"],"security":[{"bearerAuth":[]}],"summary":"Listar ajustes","description":"Los ajustes del emisor, los más recientes primero.","parameters":[{"name":"limit","in":"query","description":"Cuántos por página, de 1 a 100. Por omisión 10.","schema":{"type":"integer","minimum":1,"maximum":100,"default":10}},{"name":"starting_after","in":"query","description":"El id del último de la página anterior, para la siguiente.","schema":{"type":"string"}},{"name":"issuer","in":"query","description":"El emisor (iss_…). Puede omitirse si la llave o la cuenta tienen uno solo.","schema":{"type":"string"}},{"name":"warehouse","in":"query","description":"Solo los de este almacén (whs_…).","schema":{"type":"string"}},{"name":"status","in":"query","description":"applied, pending, rejected o reversed.","schema":{"type":"string","enum":["applied","pending","rejected","reversed"]}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StockAdjustmentList"},"example":{"object":"list","data":[{"id":"adj_OufpKqnrvx9p1","object":"stock_adjustment","livemode":false,"issuer":"iss_OufpKqnrvx9p","warehouse":"whs_OufpKqnrvx9p1","reason":"initial","note":"Inventario de apertura","status":"applied","value":4500,"lines":[{"product":"prd_OufpKqnrvx9p2","quantity":50,"unit_cost":90,"lot":null}],"created_at":"2026-10-27T09:30:00-06:00"}],"has_more":false,"url":"/v1/stock_adjustments"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/stock_adjustments/{id}":{"get":{"operationId":"getStockAdjustment","tags":["Inventario"],"security":[{"bearerAuth":[]}],"summary":"Ver un ajuste","description":"Un ajuste de existencias, con sus líneas.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StockAdjustment"},"example":{"id":"adj_OufpKqnrvx9p1","object":"stock_adjustment","livemode":false,"issuer":"iss_OufpKqnrvx9p","warehouse":"whs_OufpKqnrvx9p1","reason":"initial","note":"Inventario de apertura","status":"applied","value":4500,"lines":[{"product":"prd_OufpKqnrvx9p2","quantity":50,"unit_cost":90,"lot":null}],"created_at":"2026-10-27T09:30:00-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/sat_catalogs/{name}":{"get":{"operationId":"getSatCatalog","tags":["Catálogos del SAT"],"security":[{"bearerAuth":[]}],"summary":"Consultar un catálogo del SAT","description":"product_keys y unit_keys se buscan con q (texto o clave). Los demás vienen completos: tax_systems, cfdi_uses, payment_forms, payment_methods, relationship_types, cancellation_motives, export_types, tax_objects, retention_codes.","parameters":[{"name":"name","in":"path","required":true,"description":"El catálogo, uno de: product_keys, unit_keys, tax_systems, cfdi_uses, payment_forms, payment_methods, relationship_types, cancellation_motives, export_types, tax_objects, retention_codes.","schema":{"type":"string"}},{"name":"q","in":"query","description":"Qué buscar: palabras («consultoría») o una clave.","schema":{"type":"string"}},{"name":"limit","in":"query","description":"Hasta cuántos, de 1 a 100 (búsquedas). Por omisión 20.","schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SatCatalogEntryList"},"example":{"object":"list","data":[{"code":"80131500","description":"Alquiler de propiedades","similar_words":"renta"}],"has_more":false,"url":"/v1/sat_catalogs/{name}"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"},"503":{"$ref":"#/components/responses/Error503"}}}},"/v1/sat_lists/{tax_id}":{"get":{"operationId":"getSatListCheck","tags":["Listas del SAT"],"security":[{"bearerAuth":[]}],"summary":"Revisar un RFC en las listas del SAT","description":"Si el RFC aparece en la lista 69-B (operaciones simuladas), 69-B Bis o del art. 69 (no localizados, créditos firmes, exigibles, cancelados, sentencias, CSD sin efectos). Las listas se actualizan cada día con los archivos del SAT. No usa timbres.","parameters":[{"name":"tax_id","in":"path","required":true,"description":"El RFC a revisar (12 caracteres para morales, 13 para físicas).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SatListCheck"},"example":{"object":"sat_list_check","tax_id":"AAA080808HL8","name":"EMPRESA SIMULADORA SA DE CV","listed":true,"risk":"high","lists":[{"list":"69b","source":"69b","source_name":"69-B (operaciones simuladas)","situation":"Definitivo","published_on":null,"details":{"Publicación página SAT definitivos":"15/03/2024","Número y fecha de oficio global de definitivos":"500-05-2024-1234 de fecha 01/03/2024"}}],"lists_updated_at":"2026-10-24T00:12:40-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/sat_lists/check":{"post":{"operationId":"checkSatLists","tags":["Listas del SAT"],"security":[{"bearerAuth":[]}],"summary":"Revisar varios RFC en las listas del SAT","description":"Hasta 1,000 RFC en una solicitud, en el mismo orden en que los mandó (sin repetidos). No usa timbres.","parameters":[{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tax_ids":{"minItems":1,"maxItems":1000,"type":"array","items":{"type":"string"},"description":"Los RFC a revisar, hasta 1000."}},"required":["tax_ids"],"additionalProperties":false},"example":{"tax_ids":["AAA080808HL8","ICV060329BY0"]}}}},"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SatListCheckList"},"example":{"object":"list","data":[{"object":"sat_list_check","tax_id":"AAA080808HL8","name":"EMPRESA SIMULADORA SA DE CV","listed":true,"risk":"high","lists":[{"list":"69b","source":"69b","source_name":"69-B (operaciones simuladas)","situation":"Definitivo","published_on":null,"details":{"Publicación página SAT definitivos":"15/03/2024","Número y fecha de oficio global de definitivos":"500-05-2024-1234 de fecha 01/03/2024"}}],"lists_updated_at":"2026-10-24T00:12:40-06:00"}],"has_more":false,"url":"/v1/sat_lists/check"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/sat_downloads":{"post":{"operationId":"createSatDownload","tags":["Descargas del SAT"],"security":[{"bearerAuth":[]}],"summary":"Pedirle al SAT las facturas de un emisor","description":"La descarga masiva del SAT: las facturas que el emisor recibió (o emitió) en un periodo de hasta un año, con su XML. Contesta 202 de inmediato; el SAT tarda de minutos a horas y al terminar llega sat_download.completed (o sat_download.failed) y las facturas quedan en GET /v1/sat_invoices. En producción necesita la e.firma guardada del emisor; en pruebas no se le pregunta al SAT: la descarga trae facturas de ejemplo al instante. En producción usa 1 timbre por cada 100 CFDI que trae (al menos 1).","parameters":[{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"issuer":{"description":"El emisor (iss_…). Por omisión, su único emisor.","type":"string"},"direction":{"default":"received","description":"received (las facturas que le hicieron al emisor, por omisión) o issued (las que emitió, aunque no haya sido con Fiscalisto).","type":"string","enum":["received","issued"]},"from":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Desde qué día (incluido), en hora de la Ciudad de México."},"to":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Hasta qué día (incluido). A lo más un año después de from, y no después de hoy."},"type":{"description":"Solo un tipo de comprobante: I, E, P, T o N. Por omisión, todos.","type":"string","enum":["I","E","P","T","N"]},"counterparty_tax_id":{"description":"Solo las de un RFC: el emisor de las recibidas, o el receptor de las emitidas.","type":"string","pattern":"^[A-ZÑ&]{3,4}\\d{6}[A-Z0-9]{3}$"},"uuid":{"description":"Una sola factura, por su folio fiscal (UUID).","type":"string","format":"uuid","pattern":"^([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)$"}},"required":["from","to"],"additionalProperties":false},"example":{"direction":"received","from":"2026-09-01","to":"2026-09-30"}}}},"responses":{"202":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SatDownload"},"example":{"id":"sdl_OufpKqnrvx9p3n8vQd2LkW7mZr1XyT5uBc","object":"sat_download","livemode":false,"issuer":"iss_OufpKqnrvx9p","direction":"received","from":"2026-09-01","to":"2026-09-30","type":null,"counterparty_tax_id":null,"uuid":null,"status":"completed","new_invoices":8,"error":null,"created_at":"2026-10-24T10:20:00-06:00","completed_at":"2026-10-24T10:27:41-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"get":{"operationId":"listSatDownloads","tags":["Descargas del SAT"],"security":[{"bearerAuth":[]}],"summary":"Listar descargas del SAT","description":"Las descargas pedidas al SAT, las más recientes primero, con su estado.","parameters":[{"name":"limit","in":"query","description":"Cuántos por página, de 1 a 100. Por omisión 10.","schema":{"type":"integer","minimum":1,"maximum":100,"default":10}},{"name":"starting_after","in":"query","description":"El id del último de la página anterior, para la siguiente.","schema":{"type":"string"}},{"name":"issuer","in":"query","description":"El emisor (iss_…). Puede omitirse si la llave o la cuenta tienen uno solo.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SatDownloadList"},"example":{"object":"list","data":[{"id":"sdl_OufpKqnrvx9p3n8vQd2LkW7mZr1XyT5uBc","object":"sat_download","livemode":false,"issuer":"iss_OufpKqnrvx9p","direction":"received","from":"2026-09-01","to":"2026-09-30","type":null,"counterparty_tax_id":null,"uuid":null,"status":"completed","new_invoices":8,"error":null,"created_at":"2026-10-24T10:20:00-06:00","completed_at":"2026-10-24T10:27:41-06:00"}],"has_more":false,"url":"/v1/sat_downloads"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/sat_downloads/{id}":{"get":{"operationId":"getSatDownload","tags":["Descargas del SAT"],"security":[{"bearerAuth":[]}],"summary":"Ver una descarga del SAT","description":"Una descarga del SAT: su periodo, su estado y cuántos CFDI trajo. Al terminar llega sat_download.completed.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SatDownload"},"example":{"id":"sdl_OufpKqnrvx9p3n8vQd2LkW7mZr1XyT5uBc","object":"sat_download","livemode":false,"issuer":"iss_OufpKqnrvx9p","direction":"received","from":"2026-09-01","to":"2026-09-30","type":null,"counterparty_tax_id":null,"uuid":null,"status":"completed","new_invoices":8,"error":null,"created_at":"2026-10-24T10:20:00-06:00","completed_at":"2026-10-24T10:27:41-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/sat_invoices":{"get":{"operationId":"listSatInvoices","tags":["Descargas del SAT"],"security":[{"bearerAuth":[]}],"summary":"Listar facturas del SAT","description":"Las facturas que trajeron sus descargas (y las demás que Fiscalisto tenga del emisor), de la más reciente a la más antigua por fecha.","parameters":[{"name":"limit","in":"query","description":"Cuántos por página, de 1 a 100. Por omisión 10.","schema":{"type":"integer","minimum":1,"maximum":100,"default":10}},{"name":"starting_after","in":"query","description":"El id del último de la página anterior, para la siguiente.","schema":{"type":"string"}},{"name":"issuer","in":"query","description":"El emisor (iss_…). Puede omitirse si la llave o la cuenta tienen uno solo.","schema":{"type":"string"}},{"name":"direction","in":"query","description":"received (por omisión) o issued.","schema":{"type":"string","enum":["received","issued"],"default":"received"}},{"name":"type","in":"query","description":"I, E, P, T o N.","schema":{"type":"string","enum":["I","E","P","T","N"]}},{"name":"counterparty_tax_id","in":"query","description":"El RFC de quien la emitió (recibidas) o de quien la recibió (emitidas).","schema":{"type":"string"}},{"name":"date_gte","in":"query","description":"Con fecha desde este día (AAAA-MM-DD).","schema":{"type":"string"}},{"name":"date_lte","in":"query","description":"Con fecha hasta este día (AAAA-MM-DD), incluido.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SatInvoiceList"},"example":{"object":"list","data":[{"id":"sat_OufpKqnrvx9p1F","object":"sat_invoice","livemode":false,"issuer":"iss_OufpKqnrvx9p","uuid":"9B2D4E61-7C3A-4F18-8E5D-0A6B9C1D2E3F","direction":"received","type":"I","date":"2026-09-12T11:04:00","series":"A","folio":"4821","issued_by":{"tax_id":"XIA190128J61","legal_name":"XENON INDUSTRIAL ARTICLES"},"issued_to":{"tax_id":"TOL190312KT4","legal_name":"TOLPI"},"currency":"MXN","exchange_rate":null,"payment_method":"PUE","payment_form":"03","use":"G03","subtotal":18400,"total":21344,"taxes":{"iva":2944,"ieps":0,"iva_withheld":0,"isr_withheld":0,"ieps_withheld":0,"local_transferred":0,"local_withheld":0},"sat_status":"active","sat_download":"sdl_OufpKqnrvx9p3n8vQd2LkW7mZr1XyT5uBc","downloaded_at":"2026-10-24T10:27:40-06:00"}],"has_more":false,"url":"/v1/sat_invoices"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/sat_invoices/{id}":{"get":{"operationId":"getSatInvoice","tags":["Descargas del SAT"],"security":[{"bearerAuth":[]}],"summary":"Ver una factura del SAT","description":"Un CFDI que trajo una descarga del SAT, con sus importes y su estado ante el SAT.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SatInvoice"},"example":{"id":"sat_OufpKqnrvx9p1F","object":"sat_invoice","livemode":false,"issuer":"iss_OufpKqnrvx9p","uuid":"9B2D4E61-7C3A-4F18-8E5D-0A6B9C1D2E3F","direction":"received","type":"I","date":"2026-09-12T11:04:00","series":"A","folio":"4821","issued_by":{"tax_id":"XIA190128J61","legal_name":"XENON INDUSTRIAL ARTICLES"},"issued_to":{"tax_id":"TOL190312KT4","legal_name":"TOLPI"},"currency":"MXN","exchange_rate":null,"payment_method":"PUE","payment_form":"03","use":"G03","subtotal":18400,"total":21344,"taxes":{"iva":2944,"ieps":0,"iva_withheld":0,"isr_withheld":0,"ieps_withheld":0,"local_transferred":0,"local_withheld":0},"sat_status":"active","sat_download":"sdl_OufpKqnrvx9p3n8vQd2LkW7mZr1XyT5uBc","downloaded_at":"2026-10-24T10:27:40-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/sat_invoices/{id}/xml":{"get":{"operationId":"getSatInvoiceXml","tags":["Descargas del SAT"],"security":[{"bearerAuth":[]}],"summary":"Descargar el XML de una factura del SAT","description":"El CFDI tal como lo entregó el SAT.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"El archivo.","content":{"application/xml":{"schema":{"type":"string","format":"binary"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/sat_declarations/refresh":{"post":{"operationId":"refreshSatDeclarations","tags":["Declaraciones del SAT"],"security":[{"bearerAuth":[]}],"summary":"Consultar las declaraciones de un emisor en el SAT","description":"Entra al SAT con la e.firma guardada del emisor y trae las declaraciones que presentó: provisionales o definitivas (desde 2022), la anual de persona moral (desde 2019) y las del servicio anterior Declaraciones y pagos, con su PDF, su acuse y sus cifras. La primera consulta trae todos los años que el SAT conserva; las siguientes, este año y el anterior. Solo consulta: nunca presenta ni firma nada. En producción usa 1 timbre por consulta (regresa si el SAT no contesta) y se puede hacer una vez cada 10 minutos por emisor. Contesta en menos de un minuto; si queda algo por bajar (status processing), sigue solo en la siguiente hora sin otro timbre. En pruebas no se le pregunta al SAT: trae declaraciones de ejemplo al instante.","parameters":[{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"issuer":{"description":"El emisor (iss_…). Por omisión, su único emisor.","type":"string"}},"additionalProperties":false},"example":{}}}},"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SatDeclarationsRefresh"},"example":{"object":"sat_declarations_refresh","livemode":false,"issuer":"iss_OufpKqnrvx9p","status":"completed","found":10,"downloaded":10,"pending":0,"warning":null,"refreshed_at":"2026-10-26T09:12:00-06:00","next_refresh_at":"2026-10-26T09:22:00-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/sat_declarations":{"get":{"operationId":"listSatDeclarations","tags":["Declaraciones del SAT"],"security":[{"bearerAuth":[]}],"summary":"Listar declaraciones del SAT","description":"Las declaraciones que trajeron sus consultas, del ejercicio y mes más recientes a los más antiguos (la anual antes de los meses de su año). No usa timbres.","parameters":[{"name":"limit","in":"query","description":"Cuántos por página, de 1 a 100. Por omisión 10.","schema":{"type":"integer","minimum":1,"maximum":100,"default":10}},{"name":"starting_after","in":"query","description":"El id del último de la página anterior, para la siguiente.","schema":{"type":"string"}},{"name":"issuer","in":"query","description":"El emisor (iss_…). Puede omitirse si la llave o la cuenta tienen uno solo.","schema":{"type":"string"}},{"name":"year","in":"query","description":"Solo las de un ejercicio, como 2025.","schema":{"type":"integer"}},{"name":"source","in":"query","description":"monthly (provisionales o definitivas), annual (la anual) o dyp (Declaraciones y pagos).","schema":{"type":"string","enum":["monthly","annual","dyp"]}},{"name":"month","in":"query","description":"Solo las de un mes (1 a 12).","schema":{"type":"integer"}},{"name":"type","in":"query","description":"normal o complementary (complementarias).","schema":{"type":"string","enum":["normal","complementary"]}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SatDeclarationList"},"example":{"object":"list","data":[{"id":"dcl_OufpKqnrvx9p1F","object":"sat_declaration","livemode":false,"issuer":"iss_OufpKqnrvx9p","source":"monthly","year":2026,"month":9,"period":"Septiembre","type":"normal","complementary_type":null,"operation_number":"92026090000001","payment_line":"0426TEST2026090001","filed_on":"2026-10-15","profit_coefficient":0.0219,"isr_due":7718.53,"vat_due":16520,"total_due":24238.53,"sections":[{"tax":"ISR personas morales","fields":[{"label":"INGRESOS NOMINALES DEL PERIODO","value":292500},{"label":"COEFICIENTE DE UTILIDAD","value":0.0219},{"label":"IMPUESTO A CARGO","value":7718.53}]}],"receipt":{"concepts":[{"concept":"ISR personas morales","due":7718.53,"amount_due":7718.53,"amount_to_pay":7718.53},{"concept":"IVA personas morales","due":16520,"amount_due":16520,"amount_to_pay":16520}],"total":24238.53,"payment_line":"0426TEST2026090001","valid_until":null},"summary":{"obligations":[{"obligation":"isr","name":"ISR personas morales","read":true,"amount_due":7718.53,"amount_to_pay":7718.53,"figures":{"income":292500,"invoiced_income":292500,"income_ytd":2632500,"deductions":null,"profit_coefficient":0.0219,"taxable_profit":57651.75,"losses_applied":0,"tax_base":57651.75,"tax_caused":17295.53,"prior_payments":9577,"withheld":0,"surcharges":null,"inflation":null,"paid_before":null,"due":7718.53,"in_favor":null,"to_pay":7718.53}},{"obligation":"vat","name":"IVA personas morales","read":false,"amount_due":16520,"amount_to_pay":16520,"figures":{"taxable_16":null,"taxable_0":null,"exempt":null,"charged":null,"paid_16":null,"creditable":null,"withheld":null,"balance_applied":null,"surcharges":null,"inflation":null,"paid_before":null,"due":null,"in_favor":null,"to_pay":null}}],"total_to_pay":24238.53},"files":{"pdf":true,"receipt":true,"financial_statements":false},"files_error":null,"created_at":"2026-10-26T09:12:00-06:00","updated_at":"2026-10-26T09:12:04-06:00"}],"has_more":false,"url":"/v1/sat_declarations"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/sat_declarations/calendar":{"get":{"operationId":"getSatDeclarationCalendar","tags":["Declaraciones del SAT"],"security":[{"bearerAuth":[]}],"summary":"Ver el año mes por mes","description":"Cada mes del ejercicio con sus obligaciones: presentada (con sus declaraciones), falta (venció y no la encontramos) o por presentar, con el día en que vence (el 17 del mes siguiente, o el día hábil siguiente, más los días por el sexto dígito del RFC). Se arma con lo que trajeron sus consultas; no usa timbres.","parameters":[{"name":"issuer","in":"query","description":"El emisor (iss_…). Puede omitirse si la llave o la cuenta tienen uno solo.","schema":{"type":"string"}},{"name":"year","in":"query","description":"El ejercicio, como 2026. Por omisión, el actual.","schema":{"type":"integer"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SatDeclarationCalendar"},"example":{"object":"sat_declaration_calendar","livemode":false,"issuer":"iss_OufpKqnrvx9p","year":2026,"missing":1,"months":[{"month":8,"due_on":"2026-09-18","obligations":[{"obligation":"isr","status":"filed","declarations":["dcl_OufpKqnrvx9p1E"]},{"obligation":"vat","status":"filed","declarations":["dcl_OufpKqnrvx9p1E"]},{"obligation":"isr_salaries","status":"missing","declarations":[]}]},{"month":9,"due_on":"2026-10-19","obligations":[{"obligation":"isr","status":"filed","declarations":["dcl_OufpKqnrvx9p1F"]},{"obligation":"vat","status":"filed","declarations":["dcl_OufpKqnrvx9p1F"]}]},{"month":null,"due_on":"2027-03-31","obligations":[{"obligation":"annual_return","status":"due","declarations":[]}]}]}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/sat_declarations/{id}":{"get":{"operationId":"getSatDeclaration","tags":["Declaraciones del SAT"],"security":[{"bearerAuth":[]}],"summary":"Ver una declaración del SAT","description":"Una declaración presentada al SAT, con sus cifras en summary y si ya están su PDF y su acuse.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SatDeclaration"},"example":{"id":"dcl_OufpKqnrvx9p1F","object":"sat_declaration","livemode":false,"issuer":"iss_OufpKqnrvx9p","source":"monthly","year":2026,"month":9,"period":"Septiembre","type":"normal","complementary_type":null,"operation_number":"92026090000001","payment_line":"0426TEST2026090001","filed_on":"2026-10-15","profit_coefficient":0.0219,"isr_due":7718.53,"vat_due":16520,"total_due":24238.53,"sections":[{"tax":"ISR personas morales","fields":[{"label":"INGRESOS NOMINALES DEL PERIODO","value":292500},{"label":"COEFICIENTE DE UTILIDAD","value":0.0219},{"label":"IMPUESTO A CARGO","value":7718.53}]}],"receipt":{"concepts":[{"concept":"ISR personas morales","due":7718.53,"amount_due":7718.53,"amount_to_pay":7718.53},{"concept":"IVA personas morales","due":16520,"amount_due":16520,"amount_to_pay":16520}],"total":24238.53,"payment_line":"0426TEST2026090001","valid_until":null},"summary":{"obligations":[{"obligation":"isr","name":"ISR personas morales","read":true,"amount_due":7718.53,"amount_to_pay":7718.53,"figures":{"income":292500,"invoiced_income":292500,"income_ytd":2632500,"deductions":null,"profit_coefficient":0.0219,"taxable_profit":57651.75,"losses_applied":0,"tax_base":57651.75,"tax_caused":17295.53,"prior_payments":9577,"withheld":0,"surcharges":null,"inflation":null,"paid_before":null,"due":7718.53,"in_favor":null,"to_pay":7718.53}},{"obligation":"vat","name":"IVA personas morales","read":false,"amount_due":16520,"amount_to_pay":16520,"figures":{"taxable_16":null,"taxable_0":null,"exempt":null,"charged":null,"paid_16":null,"creditable":null,"withheld":null,"balance_applied":null,"surcharges":null,"inflation":null,"paid_before":null,"due":null,"in_favor":null,"to_pay":null}}],"total_to_pay":24238.53},"files":{"pdf":true,"receipt":true,"financial_statements":false},"files_error":null,"created_at":"2026-10-26T09:12:00-06:00","updated_at":"2026-10-26T09:12:04-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/sat_declarations/{id}/pdf":{"get":{"operationId":"getSatDeclarationPdf","tags":["Declaraciones del SAT"],"security":[{"bearerAuth":[]}],"summary":"Descargar el PDF de una declaración","description":"La declaración como la da el SAT. No usa timbres.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"El archivo.","content":{"application/pdf":{"schema":{"type":"string","format":"binary"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/sat_declarations/{id}/receipt":{"get":{"operationId":"getSatDeclarationReceipt","tags":["Declaraciones del SAT"],"security":[{"bearerAuth":[]}],"summary":"Descargar el acuse de una declaración","description":"El acuse de recibo, con la línea de captura si hay algo a pagar. No usa timbres.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"El archivo.","content":{"application/pdf":{"schema":{"type":"string","format":"binary"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/sat_declarations/{id}/financial_statements":{"get":{"operationId":"getSatDeclarationFinancialStatements","tags":["Declaraciones del SAT"],"security":[{"bearerAuth":[]}],"summary":"Descargar los estados financieros de una anual","description":"El Excel de estados financieros de la anual de persona moral, como lo da el SAT. No usa timbres.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"El archivo.","content":{"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"schema":{"type":"string","format":"binary"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/tickets":{"post":{"operationId":"createTicket","tags":["Autofactura"],"security":[{"bearerAuth":[]}],"summary":"Registrar un ticket","description":"Una venta que su comprador factura él mismo: con el código (code) y el total en el portal del emisor (url, que puede incrustar en su página con fiscalisto.js), da sus datos fiscales y la factura se timbra al momento con los timbres de su cuenta. Lo que nadie factura entra solo en la factura global del periodo. Registrar otra vez el mismo folio con el mismo total contesta el ticket que ya existe (los reintentos son seguros); con otro total, 409.","parameters":[{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"issuer":{"description":"El emisor (iss_…) que vendió. Por omisión, su único emisor.","type":"string"},"folio":{"type":"string","minLength":1,"maxLength":40,"description":"El folio de la venta en su sistema, único por emisor: letras, números, - _ / y punto. Registrar el mismo folio con el mismo total responde el ticket que ya existe."},"total":{"type":"number","exclusiveMinimum":0,"maximum":10000000,"description":"Lo que se cobró, impuestos incluidos y sin propina."},"tip":{"description":"Propina: no va en la factura. El cliente puede escribir el total con ella o sin ella.","type":"number","minimum":0,"maximum":10000000},"payment_form":{"type":"string","pattern":"^\\d{2}$","description":"c_FormaPago de la venta: 01 efectivo, 04 tarjeta de crédito…"},"sold_at":{"description":"Cuándo se vendió: ISO 8601 (2026-10-02T13:45:00-06:00) o la hora de la Ciudad de México sin zona. Por omisión, ahora.","type":"string","maxLength":40},"product":{"description":"Un producto (prd_…) de su catálogo: el concepto de la factura.","type":"string"},"description":{"description":"El concepto. Con `product`, reemplaza su descripción; sin él, va con `product_key`.","type":"string","minLength":1,"maxLength":1000},"product_key":{"description":"c_ClaveProdServ (8 dígitos), si no usa `product`.","type":"string","pattern":"^\\d{8}$"},"unit_key":{"description":"c_ClaveUnidad. Por omisión, la de la clave del producto.","type":"string","pattern":"^[A-Z0-9]{1,3}$"},"iva":{"description":"Tasa de IVA incluida en el total. Por omisión 0.16.","type":"string","enum":["0","0.16","0.08","exento"]}},"required":["folio","total","payment_form"],"additionalProperties":false},"example":{"folio":"A1042","total":580,"payment_form":"04","product_key":"90101501","description":"Consumo de alimentos","sold_at":"2026-10-24T14:32:00-06:00"}}}},"responses":{"201":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ticket"},"example":{"id":"tkt_OufpKqnrvx9p6hW1yQbT3mZr8sKdLx0VeN","object":"ticket","livemode":false,"issuer":"iss_OufpKqnrvx9p","folio":"A1042","code":"A1042-K7QX","status":"pending","url":"https://fiscalisto.com/autofactura/Tx8mQ2vLp9WnR4c?c=A1042-K7QX","total":580,"tip":0,"payment_form":"04","description":"Consumo de alimentos","product_key":"90101501","sold_at":"2026-10-24T14:32:00-06:00","invoiceable_until":"2026-10-31","invoice":null,"global_invoice":null,"customer":null,"created_at":"2026-10-24T14:32:05-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"get":{"operationId":"listTickets","tags":["Autofactura"],"security":[{"bearerAuth":[]}],"summary":"Listar tickets","description":"Del más reciente al más antiguo por fecha de venta.","parameters":[{"name":"limit","in":"query","description":"Cuántos por página, de 1 a 100. Por omisión 10.","schema":{"type":"integer","minimum":1,"maximum":100,"default":10}},{"name":"starting_after","in":"query","description":"El id del último de la página anterior, para la siguiente.","schema":{"type":"string"}},{"name":"issuer","in":"query","description":"El emisor (iss_…). Puede omitirse si la llave o la cuenta tienen uno solo.","schema":{"type":"string"}},{"name":"status","in":"query","description":"pending, invoiced, global o cancelled.","schema":{"type":"string","enum":["pending","invoiced","global","cancelled"]}},{"name":"sold_at_gte","in":"query","description":"Vendidos desde (ISO 8601 o AAAA-MM-DD).","schema":{"type":"string"}},{"name":"sold_at_lte","in":"query","description":"Vendidos hasta (ISO 8601 o AAAA-MM-DD, el día completo).","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketList"},"example":{"object":"list","data":[{"id":"tkt_OufpKqnrvx9p6hW1yQbT3mZr8sKdLx0VeN","object":"ticket","livemode":false,"issuer":"iss_OufpKqnrvx9p","folio":"A1042","code":"A1042-K7QX","status":"pending","url":"https://fiscalisto.com/autofactura/Tx8mQ2vLp9WnR4c?c=A1042-K7QX","total":580,"tip":0,"payment_form":"04","description":"Consumo de alimentos","product_key":"90101501","sold_at":"2026-10-24T14:32:00-06:00","invoiceable_until":"2026-10-31","invoice":null,"global_invoice":null,"customer":null,"created_at":"2026-10-24T14:32:05-06:00"}],"has_more":false,"url":"/v1/tickets"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/tickets/{id}":{"get":{"operationId":"getTicket","tags":["Autofactura"],"security":[{"bearerAuth":[]}],"summary":"Ver un ticket","description":"Un ticket de autofactura: si ya se facturó (invoice) o entró en la factura global (global_invoice).","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ticket"},"example":{"id":"tkt_OufpKqnrvx9p6hW1yQbT3mZr8sKdLx0VeN","object":"ticket","livemode":false,"issuer":"iss_OufpKqnrvx9p","folio":"A1042","code":"A1042-K7QX","status":"pending","url":"https://fiscalisto.com/autofactura/Tx8mQ2vLp9WnR4c?c=A1042-K7QX","total":580,"tip":0,"payment_form":"04","description":"Consumo de alimentos","product_key":"90101501","sold_at":"2026-10-24T14:32:00-06:00","invoiceable_until":"2026-10-31","invoice":null,"global_invoice":null,"customer":null,"created_at":"2026-10-24T14:32:05-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"delete":{"operationId":"cancelTicket","tags":["Autofactura"],"security":[{"bearerAuth":[]}],"summary":"Cancelar un ticket","description":"Una venta que no se hizo (devolución, error): ya no se puede facturar ni entra en la factura global. Solo mientras esté pendiente.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Ticket"},"example":{"id":"tkt_OufpKqnrvx9p6hW1yQbT3mZr8sKdLx0VeN","object":"ticket","livemode":false,"issuer":"iss_OufpKqnrvx9p","folio":"A1042","code":"A1042-K7QX","status":"pending","url":"https://fiscalisto.com/autofactura/Tx8mQ2vLp9WnR4c?c=A1042-K7QX","total":580,"tip":0,"payment_form":"04","description":"Consumo de alimentos","product_key":"90101501","sold_at":"2026-10-24T14:32:00-06:00","invoiceable_until":"2026-10-31","invoice":null,"global_invoice":null,"customer":null,"created_at":"2026-10-24T14:32:05-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/issuers/{id}/self_invoicing":{"get":{"operationId":"getSelfInvoicing","tags":["Autofactura"],"security":[{"bearerAuth":[]}],"summary":"Ver el portal de autofactura de un emisor","description":"El portal de autofactura del emisor: su dirección, hasta cuándo se puede facturar un ticket y cómo se arma la factura global.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SelfInvoicing"},"example":{"object":"self_invoicing","livemode":false,"issuer":"iss_OufpKqnrvx9p","portal_url":"https://fiscalisto.com/autofactura/Tx8mQ2vLp9WnR4c","window":"month","window_days":7,"global_periodicity":"04"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"post":{"operationId":"updateSelfInvoicing","tags":["Autofactura"],"security":[{"bearerAuth":[]}],"summary":"Cambiar las reglas de autofactura","description":"Hasta cuándo se puede facturar un ticket y cada cuánto se timbra la factura global.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"window":{"description":"Hasta cuándo se puede facturar un ticket: `month`, hasta el fin del mes de la venta (lo usual ante el SAT); `days`, `window_days` días después.","type":"string","enum":["month","days"]},"window_days":{"description":"Días para facturar con `window: days`.","type":"integer","minimum":1,"maximum":365},"global_periodicity":{"description":"c_Periodicidad de la factura global con los tickets que nadie facturó: 01 diaria, 02 semanal, 03 quincenal, 04 mensual.","type":"string","enum":["01","02","03","04"]}},"additionalProperties":false},"example":{"window":"month","global_periodicity":"04"}}}},"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SelfInvoicing"},"example":{"object":"self_invoicing","livemode":false,"issuer":"iss_OufpKqnrvx9p","portal_url":"https://fiscalisto.com/autofactura/Tx8mQ2vLp9WnR4c","window":"month","window_days":7,"global_periodicity":"04"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/accounting/journal_entries":{"get":{"operationId":"listJournalEntries","tags":["Contabilidad"],"security":[{"bearerAuth":[]}],"summary":"Listar las pólizas de un mes","description":"Las pólizas de diario del mes, con sus cuentas y código agrupador del SAT: una por cada CFDI de ingreso o egreso vigente, emitido o recibido (los recibidos con la categoría de su gasto); una por cada pago de un complemento; una por cada recibo de nómina, y una con la depreciación de los activos fijos. Un PUE se registra cobrado o pagado según su forma de pago. En pesos; un CFDI en otra moneda sin tipo de cambio no se registra. No incluye movimientos de banco sin CFDI ni provisiones.","parameters":[{"name":"month","in":"query","required":true,"description":"El mes (AAAA-MM).","schema":{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$"},"example":"2026-10"},{"name":"limit","in":"query","description":"Cuántas por página, de 1 a 1,000. Por omisión 100.","schema":{"type":"integer","minimum":1,"maximum":1000,"default":100}},{"name":"starting_after","in":"query","description":"El id de la última póliza de la página anterior.","schema":{"type":"string"}},{"name":"issuer","in":"query","description":"El emisor (iss_…). Puede omitirse si la llave o la cuenta tienen uno solo.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JournalEntryList"},"example":{"object":"list","data":[{"id":"D-202610-00001","object":"journal_entry","livemode":false,"issuer":"iss_OufpKqnrvx9p","type":"invoice","date":"2026-10-02","description":"Factura A1042 INMOBILIARIA CVA","invoice":"inv_OufpKqnrvx9p6hW1yQbT3mZr8sKdLx0VeN","uuid":"5F3C1B2A-9D8E-4F7A-B6C5-1D2E3F4A5B6C","tax_id":"ICV060329BY0","total":5800,"currency":"MXN","exchange_rate":null,"lines":[{"account":"105-01","account_name":"Clientes nacionales","grouping_code":"105.01","debit":5800,"credit":0},{"account":"401-01","account_name":"Ventas y/o servicios gravados a la tasa general","grouping_code":"401.01","debit":0,"credit":5000},{"account":"208-01","account_name":"IVA trasladado cobrado","grouping_code":"208.01","debit":0,"credit":800}]}],"has_more":false,"url":"/v1/accounting/journal_entries"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/accounting/trial_balance":{"get":{"operationId":"getTrialBalance","tags":["Contabilidad"],"security":[{"bearerAuth":[]}],"summary":"Ver la balanza de comprobación","description":"Saldo inicial, cargos, abonos y saldo final de cada cuenta en el mes. Los saldos iniciales se acumulan desde el primer CFDI, o desde los saldos iniciales capturados en la app (las de resultados, desde enero), y los resultados de cada año anterior se cierran a capital.","parameters":[{"name":"month","in":"query","required":true,"description":"El mes (AAAA-MM).","schema":{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$"},"example":"2026-10"},{"name":"issuer","in":"query","description":"El emisor (iss_…). Puede omitirse si la llave o la cuenta tienen uno solo.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrialBalance"},"example":{"object":"trial_balance","livemode":false,"issuer":"iss_OufpKqnrvx9p","month":"2026-10","journal_entries":1,"accounts":[{"object":"ledger_account","number":"105-01","name":"Clientes nacionales","grouping_code":"105.01","nature":"debit","opening_balance":0,"debit":5800,"credit":0,"closing_balance":5800},{"object":"ledger_account","number":"208-01","name":"IVA trasladado cobrado","grouping_code":"208.01","nature":"credit","opening_balance":0,"debit":0,"credit":800,"closing_balance":800},{"object":"ledger_account","number":"401-01","name":"Ventas y/o servicios gravados a la tasa general","grouping_code":"401.01","nature":"credit","opening_balance":0,"debit":0,"credit":5000,"closing_balance":5000}],"totals":{"debit":5800,"credit":5800}}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/accounting/financial_statements":{"get":{"operationId":"getFinancialStatements","tags":["Contabilidad"],"security":[{"bearerAuth":[]}],"summary":"Ver los estados financieros","description":"El estado de resultados (del mes y del año hasta ese mes) y el balance general al cierre del mes, leídos de la misma balanza, así que siempre suman las mismas pólizas.","parameters":[{"name":"month","in":"query","required":true,"description":"El mes (AAAA-MM).","schema":{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$"},"example":"2026-10"},{"name":"issuer","in":"query","description":"El emisor (iss_…). Puede omitirse si la llave o la cuenta tienen uno solo.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinancialStatements"},"example":{"object":"financial_statements","livemode":false,"issuer":"iss_OufpKqnrvx9p","month":"2026-10","income_statement":{"month":{"sections":[{"key":"ingresos","name":"Ingresos","total":5000,"groups":[{"grouping_code":"401","name":"Ingresos","amount":5000,"accounts":[{"number":"401-01","name":"Ventas y/o servicios gravados a la tasa general","amount":5000}]}]},{"key":"costos","name":"Costo de ventas","total":0,"groups":[]},{"key":"gastos","name":"Gastos de operación","total":0,"groups":[]},{"key":"financiamiento","name":"Resultado integral de financiamiento","total":0,"groups":[]},{"key":"otros","name":"Otros ingresos y gastos","total":0,"groups":[]}],"net_income":5000},"year_to_date":{"sections":[{"key":"ingresos","name":"Ingresos","total":5000,"groups":[{"grouping_code":"401","name":"Ingresos","amount":5000,"accounts":[{"number":"401-01","name":"Ventas y/o servicios gravados a la tasa general","amount":5000}]}]},{"key":"costos","name":"Costo de ventas","total":0,"groups":[]},{"key":"gastos","name":"Gastos de operación","total":0,"groups":[]},{"key":"financiamiento","name":"Resultado integral de financiamiento","total":0,"groups":[]},{"key":"otros","name":"Otros ingresos y gastos","total":0,"groups":[]}],"net_income":5000}},"balance_sheet":{"assets":{"total":5800,"groups":[{"grouping_code":"105","name":"Clientes","amount":5800,"accounts":[{"number":"105-01","name":"Clientes nacionales","amount":5800}]}]},"liabilities":{"total":800,"groups":[{"grouping_code":"208","name":"IVA trasladado cobrado","amount":800,"accounts":[{"number":"208-01","name":"IVA trasladado cobrado","amount":800}]}]},"equity":{"total":0,"groups":[]},"net_income_year_to_date":5000,"liabilities_and_equity":5800,"difference":0},"journal_entries":1,"opening_balances_date":null,"missing_invoices":0}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/accounting/cross_checks":{"get":{"operationId":"getCrossChecks","tags":["Contabilidad"],"security":[{"bearerAuth":[]}],"summary":"Cruzar lo declarado con lo facturado","description":"Cada mes ya vencido del año: el IVA trasladado, acreditable y retenido y los ingresos para ISR que el emisor declaró (de GET /v1/sat_declarations, después de POST /v1/sat_declarations/refresh) contra lo que dicen sus CFDI. Hasta $2 de diferencia es redondeo (las declaraciones van en pesos enteros). Una cifra que la declaración no trae en un renglón reconocible es unreadable con declared null, nunca 0. También el IVA a favor y el régimen con que factura. Gratis: no consulta al SAT.","parameters":[{"name":"year","in":"query","description":"El ejercicio. Por omisión, el actual.","schema":{"type":"integer"},"example":"2026"},{"name":"issuer","in":"query","description":"El emisor (iss_…). Puede omitirse si la llave o la cuenta tienen uno solo.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrossChecks"},"example":{"object":"cross_checks","livemode":false,"issuer":"iss_OufpKqnrvx9p","year":2026,"months":[{"month":"2026-09","status":"differs","checks":[{"key":"vat_charged","status":"differs","declared":16000,"declared_without_cfdi":0,"invoiced":17600,"difference":-1600,"operation_number":"260930001234"},{"key":"vat_creditable","status":"matches","declared":4800,"declared_without_cfdi":0,"invoiced":4800.4,"difference":-0.4,"operation_number":"260930001234"},{"key":"vat_withheld","status":"matches","declared":0,"declared_without_cfdi":0,"invoiced":0,"difference":0,"operation_number":"260930001234"},{"key":"isr_income","status":"unreadable","declared":null,"declared_without_cfdi":0,"invoiced":110000,"difference":null,"operation_number":"260930001234"},{"key":"isr_withheld_salaries","status":"matches","declared":8450,"declared_without_cfdi":0,"invoiced":8449.6,"difference":0.4,"operation_number":"260930001234"}]}],"vat_balance_in_favor":{"periods":[{"month":"2026-02","amount":3000,"operation_number":"260317004567"}],"total":3000,"credited":1200,"remaining":1800},"tax_regimes":{"registered":["601"],"invoiced":[{"tax_regime":"601","invoices":214,"first_date":"2026-01-03","last_date":"2026-10-24","registered":true}]}}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/accounting/cross_checks/cfdi":{"get":{"operationId":"getCrossCheckCfdi","tags":["Contabilidad"],"security":[{"bearerAuth":[]}],"summary":"Ver los CFDI de una cifra del cruce","description":"Los CFDI que forman lo facturado (invoiced) de una cifra del cruce de un mes, con los mismos cálculos de Impuestos: cada factura PUE o nota de crédito en su mes y cada factura PPD por lo que se pagó en el mes, con lo que aporta. La suma de cfdi más adjustment es invoiced. Sirve para ver por qué una cifra differs. Gratis: no consulta al SAT.","parameters":[{"name":"month","in":"query","required":true,"description":"El mes (AAAA-MM), cuya declaración ya venció.","schema":{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$"},"example":"2026-09"},{"name":"key","in":"query","required":true,"description":"La cifra: vat_charged, vat_creditable, vat_withheld, isr_income, isr_withheld_salaries, isr_withheld_suppliers o vat_withheld_suppliers.","schema":{"type":"string","enum":["vat_charged","vat_creditable","vat_withheld","isr_income","isr_withheld_salaries","isr_withheld_suppliers","vat_withheld_suppliers"]},"example":"vat_creditable"},{"name":"issuer","in":"query","description":"El emisor (iss_…). Puede omitirse si la llave o la cuenta tienen uno solo.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrossCheckCfdi"},"example":{"object":"cross_check_cfdi","livemode":false,"issuer":"iss_OufpKqnrvx9p","month":"2026-09","key":"vat_creditable","status":"differs","declared":0,"declared_without_cfdi":0,"invoiced":152.98,"difference":-152.98,"operation_number":"261150269496","cfdi":[{"uuid":"5E2D6C1A-9B3F-4C7E-8A21-3F6B9D0C4E57","type":"invoice","date":"2026-09-12","tax_id":"CNM980114PI2","name":"CADENA COMERCIAL OXXO","amount":96.55},{"uuid":"A1F4C2B9-7D3E-4E8A-9C05-1B2D3E4F5A6B","type":"payment","date":"2026-09-25","tax_id":"TME840315KT6","name":"TELEFONOS DE MEXICO","amount":56.43}],"adjustment":0}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/accounting/accounts":{"get":{"operationId":"listLedgerAccounts","tags":["Contabilidad"],"security":[{"bearerAuth":[]}],"summary":"Ver el catálogo de cuentas","description":"Las cuentas que usan las pólizas, con su código agrupador del SAT.","parameters":[{"name":"issuer","in":"query","description":"El emisor (iss_…). Puede omitirse si la llave o la cuenta tienen uno solo.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LedgerAccountList"},"example":{"object":"list","data":[{"object":"ledger_account","number":"105-01","name":"Clientes nacionales","grouping_code":"105.01","nature":"debit"}],"has_more":false,"url":"/v1/accounting/accounts"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/accounting/electronic_accounting":{"get":{"operationId":"getElectronicAccounting","tags":["Contabilidad"],"security":[{"bearerAuth":[]}],"summary":"Descargar la contabilidad electrónica","description":"El ZIP del mes para el Buzón Tributario: el catálogo (CT) y la balanza (BN, o BC si es complementaria), cada uno en su ZIP con el nombre que espera el SAT, en el formato 1.3 del Anexo 24. Con journal_request, también las pólizas (PL), que se entregan cuando el SAT las pide.","parameters":[{"name":"month","in":"query","required":true,"description":"El mes (AAAA-MM).","schema":{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$"},"example":"2026-10"},{"name":"type","in":"query","description":"normal (BN, por omisión) o complementary (BC, con modified_on).","schema":{"type":"string","enum":["normal","complementary"]}},{"name":"modified_on","in":"query","description":"complementary: el día en que se modificó (AAAA-MM-DD).","schema":{"type":"string"}},{"name":"journal_request","in":"query","description":"Para incluir las pólizas: AF acto de fiscalización, FC fiscalización compulsa (con order_number), DE devolución o CO compensación (con procedure_number).","schema":{"type":"string","enum":["AF","FC","DE","CO"]}},{"name":"order_number","in":"query","description":"AF y FC: el número de orden (ABC1234567/26).","schema":{"type":"string"}},{"name":"procedure_number","in":"query","description":"DE y CO: el número de trámite (AB123456789012).","schema":{"type":"string"}},{"name":"issuer","in":"query","description":"El emisor (iss_…). Puede omitirse si la llave o la cuenta tienen uno solo.","schema":{"type":"string"}}],"responses":{"200":{"description":"El archivo.","content":{"application/zip":{"schema":{"type":"string","format":"binary"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/accounting/diot":{"get":{"operationId":"getDiot","tags":["Contabilidad"],"security":[{"bearerAuth":[]}],"summary":"Ver la DIOT de un mes","description":"Lo efectivamente pagado a cada proveedor en el mes (facturas PUE y complementos de pago recibidos), con sus notas de crédito como devoluciones, por tipo de operación. Sale de las facturas recibidas que trajo de las descargas del SAT. Desde enero de 2025 (formato 2025).","parameters":[{"name":"month","in":"query","required":true,"description":"El mes (AAAA-MM).","schema":{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$"},"example":"2026-10"},{"name":"issuer","in":"query","description":"El emisor (iss_…). Puede omitirse si la llave o la cuenta tienen uno solo.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Diot"},"example":{"object":"diot","livemode":false,"issuer":"iss_OufpKqnrvx9p","month":"2026-09","proportion":1,"lines":[{"tax_id":"CACX7605101P8","name":"XOCHILT CASAS CHAVEZ","third_party_type":"04","operation_type":"03","paid":{"base_16":12000,"base_8":0,"base_0":0,"exempt":0,"not_taxable":0,"vat":1920},"returns":{"base_16":0,"base_8":0,"base_0":0,"exempt":0,"not_taxable":0,"vat":0},"blacklisted":false}],"warnings":[]}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/accounting/diot/file":{"get":{"operationId":"getDiotFile","tags":["Contabilidad"],"security":[{"bearerAuth":[]}],"summary":"Descargar la DIOT para el SAT","description":"El TXT de carga masiva de la DIOT 2025: 54 campos separados por |, pesos enteros. Con group_small_suppliers=true junta en una línea global a los proveedores chicos (regla 4.5.2 RMF). Un mes sin pagos a proveedores responde diot_empty: esa se presenta sin operaciones en el portal del SAT.","parameters":[{"name":"month","in":"query","required":true,"description":"El mes (AAAA-MM).","schema":{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$"},"example":"2026-10"},{"name":"group_small_suppliers","in":"query","description":"true para agrupar proveedores de hasta $50,000 en el mes (regla 4.5.2).","schema":{"type":"boolean"}},{"name":"issuer","in":"query","description":"El emisor (iss_…). Puede omitirse si la llave o la cuenta tienen uno solo.","schema":{"type":"string"}}],"responses":{"200":{"description":"El archivo.","content":{"text/plain":{"schema":{"type":"string","format":"binary"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/store_connections":{"post":{"operationId":"createStoreConnection","tags":["Tiendas en línea"],"security":[{"bearerAuth":[]}],"summary":"Conectar una tienda","description":"Shopify: con el dominio y las llaves de la app de la tienda (Dev Dashboard, permisos read_orders y write_orders) registra los webhooks y queda active. Mercado Libre: queda pending hasta que el vendedor autorice en authorize_url. Desde entonces cada pedido pagado es un ticket (folio SHOP-1001 o ML-…), que su comprador factura en el portal o entra en la factura global; un pedido cancelado o reembolsado completo cancela su ticket.","parameters":[{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"issuer":{"description":"El emisor (iss_…) dueño de la tienda. Por omisión, su único emisor.","type":"string"},"platform":{"type":"string","enum":["shopify","mercadolibre"],"description":"shopify o mercadolibre."},"shop":{"description":"Shopify: el dominio de la tienda (mi-tienda.myshopify.com).","type":"string"},"client_id":{"description":"Shopify: el Client ID de la app de la tienda (Dev Dashboard).","type":"string","minLength":1,"maxLength":200},"client_secret":{"description":"Shopify: el Client secret de esa app; con él se firman los webhooks. Se guarda cifrado y nunca se muestra.","type":"string","minLength":1,"maxLength":200},"access_token":{"description":"Shopify, solo apps personalizadas antiguas: su token de la Admin API (shpat_…); client_secret es entonces su API secret key.","type":"string","pattern":"^shpat_[A-Za-z0-9]+$"},"return_url":{"description":"Mercado Libre: a dónde volver después de autorizar (se agregan store_connection y status).","type":"string","maxLength":500,"format":"uri"},"settings":{"description":"Cómo se vuelve ticket cada pedido.","type":"object","properties":{"product_key":{"description":"c_ClaveProdServ de lo que vende (8 dígitos).","type":"string","pattern":"^\\d{8}$"},"unit_key":{"description":"c_ClaveUnidad. Por omisión, la de la clave del producto.","type":"string","pattern":"^[A-Z0-9]{1,3}$"},"iva":{"description":"Tasa de IVA incluida en los precios. Por omisión 0.16.","type":"string","enum":["0","0.16","0.08","exento"]},"description":{"description":"El concepto de cada ticket. Por omisión, el pedido y sus artículos («Pedido 1001: Playera (2), Gorra»).","type":"string","minLength":1,"maxLength":200},"folio_prefix":{"description":"Lo que va antes del número del pedido en el folio del ticket. Por omisión SHOP- o ML-.","type":"string","pattern":"^[A-Za-z0-9._/-]{0,10}$"},"payment_form":{"description":"c_FormaPago cuando la forma de pago del pedido no está en payment_forms. Por omisión 04 (Shopify) o 31 (Mercado Libre).","type":"string","pattern":"^\\d{2}$"},"payment_forms":{"description":"c_FormaPago por pasarela de Shopify (shopify_payments, paypal, manual…) o tipo de pago de Mercado Libre (credit_card, debit_card, account_money, ticket, bank_transfer).","type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":60},"additionalProperties":{"type":"string","pattern":"^\\d{2}$"}},"auto_invoice":{"description":"Mercado Libre: timbrar en cuanto se paga si el comprador dejó sus datos fiscales completos. Por omisión true.","type":"boolean"}},"additionalProperties":false}},"required":["platform"],"additionalProperties":false},"example":{"platform":"shopify","shop":"mi-tienda.myshopify.com","client_id":"8c1f0e7a2b3d4e5f6a7b8c9d0e1f2a3b","client_secret":"shpss_0123456789abcdef0123456789abcdef","settings":{"product_key":"53101600","payment_forms":{"paypal":"31"}}}}}},"responses":{"201":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreConnection"},"example":{"id":"stc_OufpKqnrvx9p3Kd8sLm2XyT5uBcW8sKdLx","object":"store_connection","livemode":false,"issuer":"iss_OufpKqnrvx9p","platform":"shopify","shop":"mi-tienda.myshopify.com","status":"active","authorize_url":null,"settings":{"product_key":"53101600","unit_key":null,"iva":"0.16","description":null,"folio_prefix":"SHOP-","payment_form":null,"payment_forms":{"paypal":"31"},"auto_invoice":null},"orders_count":128,"last_order_at":"2026-10-25T10:12:44-06:00","last_error":null,"created_at":"2026-10-01T09:00:00-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"get":{"operationId":"listStoreConnections","tags":["Tiendas en línea"],"security":[{"bearerAuth":[]}],"summary":"Listar tiendas","description":"Las más recientes primero, también las desconectadas.","parameters":[{"name":"limit","in":"query","description":"Cuántos por página, de 1 a 100. Por omisión 10.","schema":{"type":"integer","minimum":1,"maximum":100,"default":10}},{"name":"starting_after","in":"query","description":"El id del último de la página anterior, para la siguiente.","schema":{"type":"string"}},{"name":"issuer","in":"query","description":"El emisor (iss_…). Puede omitirse si la llave o la cuenta tienen uno solo.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreConnectionList"},"example":{"object":"list","data":[{"id":"stc_OufpKqnrvx9p3Kd8sLm2XyT5uBcW8sKdLx","object":"store_connection","livemode":false,"issuer":"iss_OufpKqnrvx9p","platform":"shopify","shop":"mi-tienda.myshopify.com","status":"active","authorize_url":null,"settings":{"product_key":"53101600","unit_key":null,"iva":"0.16","description":null,"folio_prefix":"SHOP-","payment_form":null,"payment_forms":{"paypal":"31"},"auto_invoice":null},"orders_count":128,"last_order_at":"2026-10-25T10:12:44-06:00","last_error":null,"created_at":"2026-10-01T09:00:00-06:00"}],"has_more":false,"url":"/v1/store_connections"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/store_connections/{id}":{"get":{"operationId":"getStoreConnection","tags":["Tiendas en línea"],"security":[{"bearerAuth":[]}],"summary":"Ver una tienda","description":"Una tienda conectada (Shopify, Mercado Libre o WooCommerce), su estado y lo último que importó.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreConnection"},"example":{"id":"stc_OufpKqnrvx9p3Kd8sLm2XyT5uBcW8sKdLx","object":"store_connection","livemode":false,"issuer":"iss_OufpKqnrvx9p","platform":"shopify","shop":"mi-tienda.myshopify.com","status":"active","authorize_url":null,"settings":{"product_key":"53101600","unit_key":null,"iva":"0.16","description":null,"folio_prefix":"SHOP-","payment_form":null,"payment_forms":{"paypal":"31"},"auto_invoice":null},"orders_count":128,"last_order_at":"2026-10-25T10:12:44-06:00","last_error":null,"created_at":"2026-10-01T09:00:00-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"post":{"operationId":"updateStoreConnection","tags":["Tiendas en línea"],"security":[{"bearerAuth":[]}],"summary":"Cambiar cómo se vuelven tickets sus pedidos","description":"Cuenta para los pedidos que lleguen; los tickets ya hechos no cambian.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"settings":{"type":"object","properties":{"product_key":{"description":"c_ClaveProdServ de lo que vende (8 dígitos).","type":"string","pattern":"^\\d{8}$"},"unit_key":{"description":"c_ClaveUnidad. Por omisión, la de la clave del producto.","type":"string","pattern":"^[A-Z0-9]{1,3}$"},"iva":{"description":"Tasa de IVA incluida en los precios. Por omisión 0.16.","type":"string","enum":["0","0.16","0.08","exento"]},"description":{"description":"El concepto de cada ticket. Por omisión, el pedido y sus artículos («Pedido 1001: Playera (2), Gorra»).","type":"string","minLength":1,"maxLength":200},"folio_prefix":{"description":"Lo que va antes del número del pedido en el folio del ticket. Por omisión SHOP- o ML-.","type":"string","pattern":"^[A-Za-z0-9._/-]{0,10}$"},"payment_form":{"description":"c_FormaPago cuando la forma de pago del pedido no está en payment_forms. Por omisión 04 (Shopify) o 31 (Mercado Libre).","type":"string","pattern":"^\\d{2}$"},"payment_forms":{"description":"c_FormaPago por pasarela de Shopify (shopify_payments, paypal, manual…) o tipo de pago de Mercado Libre (credit_card, debit_card, account_money, ticket, bank_transfer).","type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":60},"additionalProperties":{"type":"string","pattern":"^\\d{2}$"}},"auto_invoice":{"description":"Mercado Libre: timbrar en cuanto se paga si el comprador dejó sus datos fiscales completos. Por omisión true.","type":"boolean"}},"additionalProperties":false,"description":"Lo que cambia; lo demás queda."}},"required":["settings"],"additionalProperties":false},"example":{"settings":{"folio_prefix":"WEB-","iva":"0.16"}}}}},"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreConnection"},"example":{"id":"stc_OufpKqnrvx9p3Kd8sLm2XyT5uBcW8sKdLx","object":"store_connection","livemode":false,"issuer":"iss_OufpKqnrvx9p","platform":"shopify","shop":"mi-tienda.myshopify.com","status":"active","authorize_url":null,"settings":{"product_key":"53101600","unit_key":null,"iva":"0.16","description":null,"folio_prefix":"SHOP-","payment_form":null,"payment_forms":{"paypal":"31"},"auto_invoice":null},"orders_count":128,"last_order_at":"2026-10-25T10:12:44-06:00","last_error":null,"created_at":"2026-10-01T09:00:00-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"delete":{"operationId":"deleteStoreConnection","tags":["Tiendas en línea"],"security":[{"bearerAuth":[]}],"summary":"Desconectar una tienda","description":"Sus pedidos dejan de llegar y se borran sus llaves y webhooks. Los tickets que ya hizo siguen.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreConnection"},"example":{"id":"stc_OufpKqnrvx9p3Kd8sLm2XyT5uBcW8sKdLx","object":"store_connection","livemode":false,"issuer":"iss_OufpKqnrvx9p","platform":"shopify","shop":"mi-tienda.myshopify.com","status":"active","authorize_url":null,"settings":{"product_key":"53101600","unit_key":null,"iva":"0.16","description":null,"folio_prefix":"SHOP-","payment_form":null,"payment_forms":{"paypal":"31"},"auto_invoice":null},"orders_count":128,"last_order_at":"2026-10-25T10:12:44-06:00","last_error":null,"created_at":"2026-10-01T09:00:00-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/store_connections/{id}/import_orders":{"post":{"operationId":"importStoreOrders","tags":["Tiendas en línea"],"security":[{"bearerAuth":[]}],"summary":"Traer pedidos pagados","description":"Los pedidos pagados desde una fecha (hasta 31 días, 200 a la vez) que no llegaron por webhook: la tienda se conectó después o estuvo caída. Un pedido que ya es ticket no se repite.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"since":{"description":"Desde qué día (AAAA-MM-DD, hasta 31 días atrás). Por omisión, hace 7 días.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"additionalProperties":false},"example":{"since":"2026-10-18"}}}},"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoreImport"},"example":{"object":"store_import","livemode":false,"store_connection":"stc_OufpKqnrvx9p3Kd8sLm2XyT5uBcW8sKdLx","since":"2026-10-18","tickets":14,"invoiced":0,"skipped":[{"order":"1042","reason":"está en USD; solo se registran pedidos en pesos."}]}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/recurring_invoices":{"post":{"operationId":"createRecurringInvoice","tags":["Facturas recurrentes"],"security":[{"bearerAuth":[]}],"summary":"Crear una factura recurrente","description":"Una factura que el emisor timbra solo en cada fecha (cada interval meses en day_of_month, o cada interval semanas o días), a la hora que elija, con los timbres de su cuenta, y la manda al cliente si send_email. Cada una es una factura normal (invoice.stamped, con recurring_invoice) y nunca se timbra dos veces el mismo periodo. invoice es el cuerpo de POST /v1/invoices: se revisa ahora, con las mismas reglas.","parameters":[{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"issuer":{"description":"El emisor (iss_…). Puede omitirse si la llave o la cuenta tienen uno solo.","type":"string"},"name":{"type":"string","minLength":1,"maxLength":80,"description":"Para reconocerla: «Renta oficina 3», «Plan Pro de ACME»."},"schedule":{"type":"object","properties":{"frequency":{"type":"string","enum":["monthly","weekly","daily"],"description":"monthly: cada interval meses en day_of_month. weekly o daily: cada interval semanas o días desde start_date."},"interval":{"description":"Cada cuántos meses, semanas o días. Por omisión 1. Hasta 24 meses, 52 semanas o 365 días.","type":"integer","minimum":1,"maximum":365},"day_of_month":{"description":"Con monthly: el día, del 1 al 28, o \"last\" (el último del mes). Por omisión el día de start_date, o el de hoy.","anyOf":[{"type":"integer","minimum":1,"maximum":28},{"type":"string","const":"last"}]},"start_date":{"description":"La primera factura, AAAA-MM-DD (hoy o después). Por omisión: con monthly, el próximo day_of_month; con weekly o daily, hoy.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"hour":{"description":"La hora (0 a 23) en que se timbra, en time_zone. Por omisión 7.","type":"integer","minimum":0,"maximum":23},"time_zone":{"description":"La zona de esa hora. Por omisión America/Mexico_City.","type":"string","enum":["America/Mexico_City","America/Cancun","America/Mazatlan","America/Hermosillo","America/Tijuana","America/Ciudad_Juarez"]}},"required":["frequency"],"additionalProperties":false,"description":"Cada cuánto y a qué hora se timbra."},"invoice":{"description":"La factura que se repite: el cuerpo de POST /v1/invoices, sin issuer, folio, date, global ni metadata. En description puede usar {mes}, {mes anterior}, {mes siguiente}, {año}, {año anterior}, {año siguiente} y {periodo}: cada factura los llena con su fecha.","allOf":[{"$ref":"#/components/schemas/InvoiceCreate"}]},"send_email":{"description":"Mandar cada factura al correo del cliente (customer.email o el del catálogo). Por omisión true.","type":"boolean"},"catch_up":{"description":"Si quedaron periodos sin timbrar (sin timbres, en pausa con su fecha pasada): all los timbra todos, cada uno con su mes; latest solo el más reciente. Por omisión all.","type":"string","enum":["all","latest"]}},"required":["name","schedule","invoice"],"additionalProperties":false},"example":{"name":"Renta oficina 3","schedule":{"frequency":"monthly","day_of_month":1,"hour":7},"invoice":{"customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826","email":"pagos@cva.example"},"payment_form":"03","items":[{"description":"Renta de oficina de {mes} {año}","product_key":"80131500","unit_price":15000}]}}}}},"responses":{"201":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecurringInvoice"},"example":{"id":"rin_OufpKqnrvx9p7Hq2mZr1XyT5uBcW8sKdLx","object":"recurring_invoice","livemode":false,"issuer":"iss_OufpKqnrvx9p","name":"Renta oficina 3","status":"active","schedule":{"frequency":"monthly","interval":1,"day_of_month":1,"hour":7,"time_zone":"America/Mexico_City"},"next_invoice_on":"2026-11-01","last_invoiced_on":"2026-10-01","last_invoice":"inv_OufpKqnrvx9p6hW1yQbT3mZr8sKdLx0VeN","last_error":null,"send_email":true,"catch_up":"all","customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA"},"currency":"MXN","items":[{"description":"Renta de oficina de {mes} {año}","product_key":"80131500","quantity":1,"unit_key":"E48","unit_price":15000}],"total":17400,"created_at":"2026-09-28T11:02:14-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"get":{"operationId":"listRecurringInvoices","tags":["Facturas recurrentes"],"security":[{"bearerAuth":[]}],"summary":"Listar facturas recurrentes","description":"Las más recientes primero.","parameters":[{"name":"limit","in":"query","description":"Cuántos por página, de 1 a 100. Por omisión 10.","schema":{"type":"integer","minimum":1,"maximum":100,"default":10}},{"name":"starting_after","in":"query","description":"El id del último de la página anterior, para la siguiente.","schema":{"type":"string"}},{"name":"issuer","in":"query","description":"El emisor (iss_…). Puede omitirse si la llave o la cuenta tienen uno solo.","schema":{"type":"string"}},{"name":"status","in":"query","description":"active o paused.","schema":{"type":"string","enum":["active","paused"]}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecurringInvoiceList"},"example":{"object":"list","data":[{"id":"rin_OufpKqnrvx9p7Hq2mZr1XyT5uBcW8sKdLx","object":"recurring_invoice","livemode":false,"issuer":"iss_OufpKqnrvx9p","name":"Renta oficina 3","status":"active","schedule":{"frequency":"monthly","interval":1,"day_of_month":1,"hour":7,"time_zone":"America/Mexico_City"},"next_invoice_on":"2026-11-01","last_invoiced_on":"2026-10-01","last_invoice":"inv_OufpKqnrvx9p6hW1yQbT3mZr8sKdLx0VeN","last_error":null,"send_email":true,"catch_up":"all","customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA"},"currency":"MXN","items":[{"description":"Renta de oficina de {mes} {año}","product_key":"80131500","quantity":1,"unit_key":"E48","unit_price":15000}],"total":17400,"created_at":"2026-09-28T11:02:14-06:00"}],"has_more":false,"url":"/v1/recurring_invoices"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/recurring_invoices/{id}":{"get":{"operationId":"getRecurringInvoice","tags":["Facturas recurrentes"],"security":[{"bearerAuth":[]}],"summary":"Ver una factura recurrente","description":"Una factura recurrente: su calendario, la próxima fecha, la última factura que timbró y, si falló, por qué en last_error.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecurringInvoice"},"example":{"id":"rin_OufpKqnrvx9p7Hq2mZr1XyT5uBcW8sKdLx","object":"recurring_invoice","livemode":false,"issuer":"iss_OufpKqnrvx9p","name":"Renta oficina 3","status":"active","schedule":{"frequency":"monthly","interval":1,"day_of_month":1,"hour":7,"time_zone":"America/Mexico_City"},"next_invoice_on":"2026-11-01","last_invoiced_on":"2026-10-01","last_invoice":"inv_OufpKqnrvx9p6hW1yQbT3mZr8sKdLx0VeN","last_error":null,"send_email":true,"catch_up":"all","customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA"},"currency":"MXN","items":[{"description":"Renta de oficina de {mes} {año}","product_key":"80131500","quantity":1,"unit_key":"E48","unit_price":15000}],"total":17400,"created_at":"2026-09-28T11:02:14-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"post":{"operationId":"updateRecurringInvoice","tags":["Facturas recurrentes"],"security":[{"bearerAuth":[]}],"summary":"Cambiar o pausar una factura recurrente","description":"Solo lo que mande cambia. invoice reemplaza la factura completa desde la siguiente vez. active: false la pausa; active: true la reanuda desde hoy, sin timbrar las fechas que pasaron en pausa. schedule.start_date mueve la siguiente fecha.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80,"description":"Nombre."},"schedule":{"type":"object","properties":{"frequency":{"type":"string","enum":["monthly","weekly","daily"],"description":"monthly: cada interval meses en day_of_month. weekly o daily: cada interval semanas o días desde start_date."},"interval":{"description":"Cada cuántos meses, semanas o días. Por omisión 1. Hasta 24 meses, 52 semanas o 365 días.","type":"integer","minimum":1,"maximum":365},"day_of_month":{"description":"Con monthly: el día, del 1 al 28, o \"last\" (el último del mes). Por omisión el día de start_date, o el de hoy.","anyOf":[{"type":"integer","minimum":1,"maximum":28},{"type":"string","const":"last"}]},"start_date":{"description":"La primera factura, AAAA-MM-DD (hoy o después). Por omisión: con monthly, el próximo day_of_month; con weekly o daily, hoy.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"hour":{"description":"La hora (0 a 23) en que se timbra, en time_zone. Por omisión 7.","type":"integer","minimum":0,"maximum":23},"time_zone":{"description":"La zona de esa hora. Por omisión America/Mexico_City.","type":"string","enum":["America/Mexico_City","America/Cancun","America/Mazatlan","America/Hermosillo","America/Tijuana","America/Ciudad_Juarez"]}},"additionalProperties":false,"description":"Cada cuánto y a qué hora se timbra."},"invoice":{"description":"La factura completa que se repite desde la siguiente vez (reemplaza la anterior).","allOf":[{"$ref":"#/components/schemas/InvoiceCreate"}]},"send_email":{"type":"boolean","description":"true para mandar el PDF y el XML por correo al timbrar, con el diseño de Fiscalisto. Por omisión no se envía."},"catch_up":{"type":"string","enum":["all","latest"],"description":"Si quedaron periodos sin timbrar: all los timbra todos, cada uno con su mes; latest solo el más reciente."},"active":{"description":"false la pausa; true la reanuda desde hoy, sin timbrar las fechas que pasaron en pausa.","type":"boolean"}},"additionalProperties":false},"example":{"active":false}}}},"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecurringInvoice"},"example":{"id":"rin_OufpKqnrvx9p7Hq2mZr1XyT5uBcW8sKdLx","object":"recurring_invoice","livemode":false,"issuer":"iss_OufpKqnrvx9p","name":"Renta oficina 3","status":"active","schedule":{"frequency":"monthly","interval":1,"day_of_month":1,"hour":7,"time_zone":"America/Mexico_City"},"next_invoice_on":"2026-11-01","last_invoiced_on":"2026-10-01","last_invoice":"inv_OufpKqnrvx9p6hW1yQbT3mZr8sKdLx0VeN","last_error":null,"send_email":true,"catch_up":"all","customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA"},"currency":"MXN","items":[{"description":"Renta de oficina de {mes} {año}","product_key":"80131500","quantity":1,"unit_key":"E48","unit_price":15000}],"total":17400,"created_at":"2026-09-28T11:02:14-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"delete":{"operationId":"deleteRecurringInvoice","tags":["Facturas recurrentes"],"security":[{"bearerAuth":[]}],"summary":"Borrar una factura recurrente","description":"Ya no timbra más; las facturas que timbró se quedan.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Deleted"},"example":{"id":"prd_OufpKqnrvx9p1","object":"product","deleted":true}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/recurring_invoices/{id}/skip":{"post":{"operationId":"skipRecurringInvoice","tags":["Facturas recurrentes"],"security":[{"bearerAuth":[]}],"summary":"Saltar la siguiente factura","description":"La siguiente fecha pasa a la que sigue, sin timbrar nada.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecurringInvoice"},"example":{"id":"rin_OufpKqnrvx9p7Hq2mZr1XyT5uBcW8sKdLx","object":"recurring_invoice","livemode":false,"issuer":"iss_OufpKqnrvx9p","name":"Renta oficina 3","status":"active","schedule":{"frequency":"monthly","interval":1,"day_of_month":1,"hour":7,"time_zone":"America/Mexico_City"},"next_invoice_on":"2026-11-01","last_invoiced_on":"2026-10-01","last_invoice":"inv_OufpKqnrvx9p6hW1yQbT3mZr8sKdLx0VeN","last_error":null,"send_email":true,"catch_up":"all","customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA"},"currency":"MXN","items":[{"description":"Renta de oficina de {mes} {año}","product_key":"80131500","quantity":1,"unit_key":"E48","unit_price":15000}],"total":17400,"created_at":"2026-09-28T11:02:14-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/recurring_invoices/{id}/run":{"post":{"operationId":"runRecurringInvoice","tags":["Facturas recurrentes"],"security":[{"bearerAuth":[]}],"summary":"Timbrar ahora la que toca","description":"Timbra el periodo que ya toca (next_invoice_on es hoy o antes) sin esperar su hora. Si no toca aún, 409 recurring_not_due. Si la hora llega mientras tanto, no se timbra dos veces: es el mismo periodo.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"responses":{"201":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Invoice"},"example":{"id":"inv_OufpKqnrvx9p0Nfbydl9jG4UNGeTYcvdrg","object":"invoice","livemode":false,"issuer":"iss_OufpKqnrvx9p","branch":null,"type":"I","status":"valid","uuid":"5F1E8C2A-3B7D-4C9E-A1B2-C3D4E5F60718","series":null,"folio":"1","date":"2026-10-24T10:15:42","customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826"},"use":"I04","payment_form":"03","payment_method":"PUE","currency":"MXN","exchange_rate":null,"items":[{"description":"Mensualidad","product_key":"86121700","unit_key":"E48","unit_name":"Unidad de servicio","sku":"MEN-1","quantity":2,"unit_price":2500,"taxability":"02","iva":"0.16"}],"subtotal":5000,"discount":0,"taxes":{"iva":800,"ieps":0,"iva_withheld":0,"isr_withheld":0,"local_transferred":0,"local_withheld":0},"total":5800,"payment_status":"paid","amount_due":0,"amount_paid":5800,"related":null,"cancellation":null,"email":null,"error":null,"recurring_invoice":null,"created_at":"2026-10-24T10:15:42-06:00","metadata":{}}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/quotes":{"post":{"operationId":"createQuote","tags":["Cotizaciones"],"security":[{"bearerAuth":[]}],"summary":"Crear una cotización","description":"Una cotización en borrador, con los conceptos y las condiciones de pago de una factura (se revisan con las mismas reglas, así que siempre se puede facturar). customer es un cliente de su catálogo, uno con sus datos fiscales (se agrega a sus clientes) o solo name y email si aún no los tiene. Se manda con POST /v1/quotes/{id}/send.","parameters":[{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"issuer":{"type":"string","description":"Emisor (iss_…). Si la llave tiene un solo emisor o la cuenta tiene uno solo, puede omitirse."},"customer":{"description":"Un cliente de su catálogo (cus_…), uno con sus datos fiscales (como en POST /v1/invoices: se agrega a sus clientes) o solo name y email si aún no los tiene.","oneOf":[{"type":"string","pattern":"^cus_"},{"type":"object","properties":{"tax_id":{"type":"string","pattern":"^[A-ZÑ&]{3,4}\\d{6}[A-Z0-9]{3}$","description":"RFC (Rfc), 12 caracteres una persona moral y 13 una física."},"legal_name":{"type":"string","minLength":1,"maxLength":300,"description":"Nombre o razón social tal como está en la constancia de situación fiscal, sin el régimen de capital (sin «S.A. de C.V.»)."},"tax_system":{"type":"string","pattern":"^6\\d\\d$","description":"Régimen fiscal (RegimenFiscal), clave de c_RegimenFiscal: 601, 612, 626…"},"zip":{"type":"string","pattern":"^\\d{5}$","description":"Código postal del domicilio fiscal del cliente (DomicilioFiscalReceptor), 5 dígitos."},"email":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"description":"Correo a donde se envía (varios separados por comas). Solo se usa si se pide enviarlo."},"foreign":{"type":"object","properties":{"country":{"type":"string","minLength":3,"maxLength":3,"description":"País de residencia fiscal, clave de 3 letras de c_Pais (USA, CAN…)."},"tax_id":{"type":"string","minLength":1,"maxLength":40,"description":"Número de registro de identidad fiscal en su país (NumRegIdTrib)."}},"required":["country","tax_id"],"description":"Si es extranjero: su país de residencia (ResidenciaFiscal, c_Pais) y su número de registro tributario (NumRegIdTrib), con el RFC genérico XEXX010101000."},"ieps_taxpayer":{"type":"boolean","description":"true si el cliente es contribuyente de IEPS: el IEPS va desglosado en vez de sumado al precio."}},"required":["tax_id","legal_name","tax_system","zip"]},{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200,"description":"A quién va dirigida."},"email":{"description":"Su correo (hasta 5, separados por comas).","type":"string","maxLength":500}},"required":["name"],"additionalProperties":false}]},"items":{"minItems":1,"maxItems":200,"type":"array","items":{"type":"object","properties":{"product":{"type":"string","pattern":"^prd_","description":"Un producto de su catálogo (prd_…): toma su clave, unidad, precio e impuestos."},"description":{"type":"string","minLength":1,"maxLength":1000,"description":"Descripción del concepto (Descripcion), hasta 1,000 caracteres."},"product_key":{"type":"string","pattern":"^\\d{8}$","description":"Clave del producto o servicio (ClaveProdServ), 8 dígitos de c_ClaveProdServ. Búsquela con GET /v1/sat_catalogs/product_keys?q=…"},"unit_key":{"type":"string","minLength":1,"maxLength":5,"description":"Clave de unidad (ClaveUnidad) de c_ClaveUnidad: E48 unidad de servicio (por omisión), H87 pieza, ACT actividad…"},"unit_name":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"description":"Nombre de la unidad (Unidad), hasta 20 caracteres."},"sku":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"description":"Número de identificación o SKU (NoIdentificacion)."},"quantity":{"type":"number","exclusiveMinimum":0,"maximum":1000000000,"description":"Cantidad (Cantidad). Por omisión 1."},"unit_price":{"type":"number","minimum":0,"maximum":1000000000000,"description":"Precio unitario antes de impuestos (ValorUnitario)."},"discount":{"type":"number","minimum":0,"maximum":1000000000000,"description":"Descuento (Descuento)."},"taxability":{"type":"string","enum":["01","02","03","04","05","06","07","08"],"description":"Objeto de impuesto (ObjetoImp), c_ObjetoImp: 01 no objeto, 02 sí objeto (por omisión), 03 sin desglose, 04 no causa…"},"iva":{"type":"string","enum":["0","0.16","0.08","exento"],"description":"Tasa de IVA trasladado: 0.16 (por omisión), 0.08 (región fronteriza), 0 o exento."},"ieps":{"type":"number","minimum":0,"maximum":72.1605,"description":"IEPS trasladado: tasa (0.265…) o cuota en pesos por unidad, según ieps_factor."},"ieps_factor":{"type":"string","enum":["Tasa","Cuota"],"description":"Tasa o Cuota (TipoFactor del IEPS)."},"ieps_units":{"type":"number","exclusiveMinimum":0,"maximum":1000000000,"description":"Unidades de IEPS a cuota (litros, cigarros…), si no son la cantidad."},"iva_retention":{"type":"number","minimum":0,"maximum":0.16,"description":"Tasa de IVA retenido (por ejemplo 0.106667, dos terceras partes del 16%)."},"isr_retention":{"type":"number","minimum":0,"maximum":0.35,"description":"Tasa de ISR retenido (por ejemplo 0.10 honorarios, 0.0125 RESICO)."},"predial":{"maxItems":10,"type":"array","items":{"type":"string","pattern":"^[0-9a-zA-Z]{1,150}$"},"description":"Números de cuenta predial (CuentaPredial) en arrendamiento."},"pedimentos":{"maxItems":50,"type":"array","items":{"type":"string","pattern":"^\\d{2} {2}\\d{2} {2}\\d{4} {2}\\d{7}$"},"description":"Números de pedimento (InformacionAduanera) de mercancía importada."},"third_party":{"type":"object","properties":{"tax_id":{"type":"string","minLength":12,"maxLength":13,"description":"RFC de a cuenta de quién (RfcACuentaTerceros)."},"name":{"type":"string","minLength":1,"maxLength":300,"description":"Nombre (NombreACuentaTerceros)."},"tax_system":{"type":"string","pattern":"^6\\d\\d$","description":"Régimen fiscal (RegimenFiscalACuentaTerceros), c_RegimenFiscal."},"zip":{"type":"string","pattern":"^\\d{5}$","description":"Código postal de su domicilio fiscal (DomicilioFiscalACuentaTerceros)."}},"required":["tax_id","name","tax_system","zip"],"description":"A cuenta de terceros (ACuentaTerceros): RFC, nombre, régimen y código postal."},"iedu":{"type":"object","properties":{"student_name":{"type":"string","minLength":1,"maxLength":300,"description":"Nombre del alumno (nombreAlumno)."},"curp":{"type":"string","minLength":18,"maxLength":18,"description":"CURP, 18 caracteres."},"level":{"type":"string","enum":["Preescolar","Primaria","Secundaria","Profesional técnico","Bachillerato o su equivalente"],"description":"Nivel educativo (nivelEducativo)."},"rvoe":{"type":"string","minLength":1,"maxLength":30,"description":"Reconocimiento de validez oficial de estudios (autRVOE)."},"payer_tax_id":{"anyOf":[{"type":"string","maxLength":13},{"type":"null"}],"description":"RFC de quien paga, si no es el receptor (rfcPago)."}},"required":["student_name","curp","level","rvoe"],"description":"Complemento de instituciones educativas privadas (IEDU): alumno, CURP, nivel y RVOE."},"used_vehicle":{"type":"object","properties":{"purchase_amount":{"type":"number","exclusiveMinimum":0,"maximum":1000000000000,"description":"Monto de adquisición (montoAdquisicion)."},"sale_amount":{"type":"number","exclusiveMinimum":0,"maximum":1000000000000,"description":"Monto de enajenación (montoEnajenacion)."},"vehicle_key":{"type":"string","minLength":1,"maxLength":7,"description":"Clave vehicular (claveVehicular)."},"make":{"type":"string","minLength":1,"maxLength":50,"description":"Marca (marca)."},"type":{"type":"string","minLength":1,"maxLength":50,"description":"Tipo o versión (tipo)."},"model":{"type":"string","pattern":"^\\d{4}$","description":"Año del modelo (modelo), 4 dígitos."},"engine_number":{"type":"string","maxLength":17,"description":"Número de motor (numeroMotor)."},"serial_number":{"type":"string","maxLength":17,"description":"Número de serie (numeroSerie)."},"niv":{"type":"string","maxLength":17,"description":"Número de identificación vehicular (NIV)."},"guide_value":{"type":"number","exclusiveMinimum":0,"maximum":1000000000000,"description":"Valor según la guía EBC o Libro Azul (valor)."},"customs":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"number":{"type":"string","minLength":1,"maxLength":100,"description":"Número del documento de importación (numero)."},"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Fecha del documento (fecha), AAAA-MM-DD."},"office":{"type":"string","maxLength":100,"description":"Aduana (aduana)."}},"required":["number","date"]},"description":"Información aduanera de la importación del vehículo (InformacionAduanera)."}},"required":["purchase_amount","sale_amount","vehicle_key","make","type","model","guide_value"],"description":"Complemento de vehículo usado."},"addenda":{"type":"object","propertyNames":{"type":"string","maxLength":40},"additionalProperties":{"type":"string","maxLength":200},"description":"Addenda del receptor (Walmart, Soriana…), con sus propios campos."}},"required":[],"description":"Un concepto. description, product_key y unit_price son obligatorios, salvo que mande product (prd_…): entonces vienen de su catálogo y lo que mande encima gana."},"description":"Los conceptos, como en POST /v1/invoices."},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"Moneda, clave ISO 4217 de c_Moneda (MXN, USD, EUR…). Por omisión MXN."},"exchange_rate":{"type":"number","exclusiveMinimum":0,"maximum":1000000,"description":"Tipo de cambio a pesos (TipoCambio). Obligatorio si la moneda no es MXN; use el del DOF del día anterior."},"payment_form":{"type":"string","pattern":"^\\d{2}$","description":"Forma de pago (FormaPago), clave de c_FormaPago: 01 efectivo, 03 transferencia, 04 tarjeta de crédito, 28 débito, 99 por definir… Obligatoria con PUE; con PPD es 99."},"payment_method":{"type":"string","enum":["PUE","PPD"],"description":"Método de pago (MetodoPago): PUE (una sola exhibición, por omisión) o PPD (en parcialidades o diferido, se cobra con complementos de pago)."},"use":{"type":"string","pattern":"^[A-Z]{1,2}\\d{2}$","description":"Uso del CFDI (UsoCFDI), clave de c_UsoCFDI. Por omisión G03, o S01 con régimen 616."},"notes":{"type":"string","maxLength":1000,"description":"Observaciones que aparecen en el PDF (no van en el XML)."},"valid_until":{"description":"Hasta cuándo es válida (AAAA-MM-DD, hasta un año). Por omisión, en 15 días.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"terms":{"description":"Condiciones: tiempo de entrega, anticipo, garantía…","type":"string","maxLength":2000},"auto_invoice":{"description":"Al aceptarla, timbrar la factura sola (con los datos fiscales del cliente; si no los tiene, la página se los pide primero). Por omisión false: la factura se timbra con POST /v1/quotes/{id}/invoice.","type":"boolean"}},"required":["customer","items"],"additionalProperties":false},"example":{"customer":"cus_OufpKqnrvx9p42","payment_form":"03","items":[{"description":"Desarrollo del sitio web","product_key":"81112103","unit_price":45000}],"terms":"50% de anticipo, entrega en 4 semanas.","auto_invoice":true}}}},"responses":{"201":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Quote"},"example":{"id":"quo_OufpKqnrvx9p3Kd8wQm2XyT5uBcW8sKdLx","object":"quote","livemode":false,"issuer":"iss_OufpKqnrvx9p","number":"COT-12","version":1,"status":"sent","url":"https://fiscalisto.com/cotizacion/7Hq2mZr1XyT5uBcW8sKdLx0VeNOufpKq","customer":{"tax_id":"ICV060329BY0","name":"INMOBILIARIA CVA","email":"compras@cva.example","catalog_id":"cus_OufpKqnrvx9p42"},"currency":"MXN","items":[{"description":"Desarrollo del sitio web","product_key":"81112103","quantity":1,"unit_key":"E48","unit_price":45000}],"total":52200,"valid_until":"2026-11-09","terms":"50% de anticipo, entrega en 4 semanas.","notes":null,"auto_invoice":true,"customer_comment":null,"sent_at":"2026-10-25T10:12:00-06:00","viewed_at":null,"decided_at":null,"decided_by":null,"invoice":null,"created_at":"2026-10-25T10:05:00-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"get":{"operationId":"listQuotes","tags":["Cotizaciones"],"security":[{"bearerAuth":[]}],"summary":"Listar cotizaciones","description":"Las más recientes primero, cada una en su última versión.","parameters":[{"name":"limit","in":"query","description":"Cuántos por página, de 1 a 100. Por omisión 10.","schema":{"type":"integer","minimum":1,"maximum":100,"default":10}},{"name":"starting_after","in":"query","description":"El id del último de la página anterior, para la siguiente.","schema":{"type":"string"}},{"name":"issuer","in":"query","description":"El emisor (iss_…). Puede omitirse si la llave o la cuenta tienen uno solo.","schema":{"type":"string"}},{"name":"status","in":"query","description":"Solo las que estén en este estado.","schema":{"type":"string","enum":["draft","sent","viewed","accepted","rejected","expired","invoiced"]}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuoteList"},"example":{"object":"list","data":[{"id":"quo_OufpKqnrvx9p3Kd8wQm2XyT5uBcW8sKdLx","object":"quote","livemode":false,"issuer":"iss_OufpKqnrvx9p","number":"COT-12","version":1,"status":"sent","url":"https://fiscalisto.com/cotizacion/7Hq2mZr1XyT5uBcW8sKdLx0VeNOufpKq","customer":{"tax_id":"ICV060329BY0","name":"INMOBILIARIA CVA","email":"compras@cva.example","catalog_id":"cus_OufpKqnrvx9p42"},"currency":"MXN","items":[{"description":"Desarrollo del sitio web","product_key":"81112103","quantity":1,"unit_key":"E48","unit_price":45000}],"total":52200,"valid_until":"2026-11-09","terms":"50% de anticipo, entrega en 4 semanas.","notes":null,"auto_invoice":true,"customer_comment":null,"sent_at":"2026-10-25T10:12:00-06:00","viewed_at":null,"decided_at":null,"decided_by":null,"invoice":null,"created_at":"2026-10-25T10:05:00-06:00"}],"has_more":false,"url":"/v1/quotes"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/quotes/{id}":{"get":{"operationId":"getQuote","tags":["Cotizaciones"],"security":[{"bearerAuth":[]}],"summary":"Ver una cotización","description":"Su última versión.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Quote"},"example":{"id":"quo_OufpKqnrvx9p3Kd8wQm2XyT5uBcW8sKdLx","object":"quote","livemode":false,"issuer":"iss_OufpKqnrvx9p","number":"COT-12","version":1,"status":"sent","url":"https://fiscalisto.com/cotizacion/7Hq2mZr1XyT5uBcW8sKdLx0VeNOufpKq","customer":{"tax_id":"ICV060329BY0","name":"INMOBILIARIA CVA","email":"compras@cva.example","catalog_id":"cus_OufpKqnrvx9p42"},"currency":"MXN","items":[{"description":"Desarrollo del sitio web","product_key":"81112103","quantity":1,"unit_key":"E48","unit_price":45000}],"total":52200,"valid_until":"2026-11-09","terms":"50% de anticipo, entrega en 4 semanas.","notes":null,"auto_invoice":true,"customer_comment":null,"sent_at":"2026-10-25T10:12:00-06:00","viewed_at":null,"decided_at":null,"decided_by":null,"invoice":null,"created_at":"2026-10-25T10:05:00-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"post":{"operationId":"updateQuote","tags":["Cotizaciones"],"security":[{"bearerAuth":[]}],"summary":"Cambiar una cotización","description":"Solo lo que mande cambia. Un borrador cambia ahí mismo; una que ya se envió se vuelve una versión nueva en borrador (mismo número, version + 1) que el cliente ve al mandarla; mientras, su liga muestra la anterior. Una aceptada, rechazada o facturada ya no cambia.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"customer":{"description":"Un cliente de su catálogo (cus_…), uno con sus datos fiscales (como en POST /v1/invoices: se agrega a sus clientes) o solo name y email si aún no los tiene.","oneOf":[{"type":"string","pattern":"^cus_"},{"type":"object","properties":{"tax_id":{"type":"string","pattern":"^[A-ZÑ&]{3,4}\\d{6}[A-Z0-9]{3}$","description":"RFC (Rfc), 12 caracteres una persona moral y 13 una física."},"legal_name":{"type":"string","minLength":1,"maxLength":300,"description":"Nombre o razón social tal como está en la constancia de situación fiscal, sin el régimen de capital (sin «S.A. de C.V.»)."},"tax_system":{"type":"string","pattern":"^6\\d\\d$","description":"Régimen fiscal (RegimenFiscal), clave de c_RegimenFiscal: 601, 612, 626…"},"zip":{"type":"string","pattern":"^\\d{5}$","description":"Código postal del domicilio fiscal del cliente (DomicilioFiscalReceptor), 5 dígitos."},"email":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"description":"Correo a donde se envía (varios separados por comas). Solo se usa si se pide enviarlo."},"foreign":{"type":"object","properties":{"country":{"type":"string","minLength":3,"maxLength":3,"description":"País de residencia fiscal, clave de 3 letras de c_Pais (USA, CAN…)."},"tax_id":{"type":"string","minLength":1,"maxLength":40,"description":"Número de registro de identidad fiscal en su país (NumRegIdTrib)."}},"required":["country","tax_id"],"description":"Si es extranjero: su país de residencia (ResidenciaFiscal, c_Pais) y su número de registro tributario (NumRegIdTrib), con el RFC genérico XEXX010101000."},"ieps_taxpayer":{"type":"boolean","description":"true si el cliente es contribuyente de IEPS: el IEPS va desglosado en vez de sumado al precio."}},"required":["tax_id","legal_name","tax_system","zip"]},{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200,"description":"A quién va dirigida."},"email":{"description":"Su correo (hasta 5, separados por comas).","type":"string","maxLength":500}},"required":["name"],"additionalProperties":false}]},"items":{"minItems":1,"maxItems":200,"type":"array","items":{"type":"object","properties":{"product":{"type":"string","pattern":"^prd_","description":"Un producto de su catálogo (prd_…): toma su clave, unidad, precio e impuestos."},"description":{"type":"string","minLength":1,"maxLength":1000,"description":"Descripción del concepto (Descripcion), hasta 1,000 caracteres."},"product_key":{"type":"string","pattern":"^\\d{8}$","description":"Clave del producto o servicio (ClaveProdServ), 8 dígitos de c_ClaveProdServ. Búsquela con GET /v1/sat_catalogs/product_keys?q=…"},"unit_key":{"type":"string","minLength":1,"maxLength":5,"description":"Clave de unidad (ClaveUnidad) de c_ClaveUnidad: E48 unidad de servicio (por omisión), H87 pieza, ACT actividad…"},"unit_name":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"description":"Nombre de la unidad (Unidad), hasta 20 caracteres."},"sku":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"description":"Número de identificación o SKU (NoIdentificacion)."},"quantity":{"type":"number","exclusiveMinimum":0,"maximum":1000000000,"description":"Cantidad (Cantidad). Por omisión 1."},"unit_price":{"type":"number","minimum":0,"maximum":1000000000000,"description":"Precio unitario antes de impuestos (ValorUnitario)."},"discount":{"type":"number","minimum":0,"maximum":1000000000000,"description":"Descuento (Descuento)."},"taxability":{"type":"string","enum":["01","02","03","04","05","06","07","08"],"description":"Objeto de impuesto (ObjetoImp), c_ObjetoImp: 01 no objeto, 02 sí objeto (por omisión), 03 sin desglose, 04 no causa…"},"iva":{"type":"string","enum":["0","0.16","0.08","exento"],"description":"Tasa de IVA trasladado: 0.16 (por omisión), 0.08 (región fronteriza), 0 o exento."},"ieps":{"type":"number","minimum":0,"maximum":72.1605,"description":"IEPS trasladado: tasa (0.265…) o cuota en pesos por unidad, según ieps_factor."},"ieps_factor":{"type":"string","enum":["Tasa","Cuota"],"description":"Tasa o Cuota (TipoFactor del IEPS)."},"ieps_units":{"type":"number","exclusiveMinimum":0,"maximum":1000000000,"description":"Unidades de IEPS a cuota (litros, cigarros…), si no son la cantidad."},"iva_retention":{"type":"number","minimum":0,"maximum":0.16,"description":"Tasa de IVA retenido (por ejemplo 0.106667, dos terceras partes del 16%)."},"isr_retention":{"type":"number","minimum":0,"maximum":0.35,"description":"Tasa de ISR retenido (por ejemplo 0.10 honorarios, 0.0125 RESICO)."},"predial":{"maxItems":10,"type":"array","items":{"type":"string","pattern":"^[0-9a-zA-Z]{1,150}$"},"description":"Números de cuenta predial (CuentaPredial) en arrendamiento."},"pedimentos":{"maxItems":50,"type":"array","items":{"type":"string","pattern":"^\\d{2} {2}\\d{2} {2}\\d{4} {2}\\d{7}$"},"description":"Números de pedimento (InformacionAduanera) de mercancía importada."},"third_party":{"type":"object","properties":{"tax_id":{"type":"string","minLength":12,"maxLength":13,"description":"RFC de a cuenta de quién (RfcACuentaTerceros)."},"name":{"type":"string","minLength":1,"maxLength":300,"description":"Nombre (NombreACuentaTerceros)."},"tax_system":{"type":"string","pattern":"^6\\d\\d$","description":"Régimen fiscal (RegimenFiscalACuentaTerceros), c_RegimenFiscal."},"zip":{"type":"string","pattern":"^\\d{5}$","description":"Código postal de su domicilio fiscal (DomicilioFiscalACuentaTerceros)."}},"required":["tax_id","name","tax_system","zip"],"description":"A cuenta de terceros (ACuentaTerceros): RFC, nombre, régimen y código postal."},"iedu":{"type":"object","properties":{"student_name":{"type":"string","minLength":1,"maxLength":300,"description":"Nombre del alumno (nombreAlumno)."},"curp":{"type":"string","minLength":18,"maxLength":18,"description":"CURP, 18 caracteres."},"level":{"type":"string","enum":["Preescolar","Primaria","Secundaria","Profesional técnico","Bachillerato o su equivalente"],"description":"Nivel educativo (nivelEducativo)."},"rvoe":{"type":"string","minLength":1,"maxLength":30,"description":"Reconocimiento de validez oficial de estudios (autRVOE)."},"payer_tax_id":{"anyOf":[{"type":"string","maxLength":13},{"type":"null"}],"description":"RFC de quien paga, si no es el receptor (rfcPago)."}},"required":["student_name","curp","level","rvoe"],"description":"Complemento de instituciones educativas privadas (IEDU): alumno, CURP, nivel y RVOE."},"used_vehicle":{"type":"object","properties":{"purchase_amount":{"type":"number","exclusiveMinimum":0,"maximum":1000000000000,"description":"Monto de adquisición (montoAdquisicion)."},"sale_amount":{"type":"number","exclusiveMinimum":0,"maximum":1000000000000,"description":"Monto de enajenación (montoEnajenacion)."},"vehicle_key":{"type":"string","minLength":1,"maxLength":7,"description":"Clave vehicular (claveVehicular)."},"make":{"type":"string","minLength":1,"maxLength":50,"description":"Marca (marca)."},"type":{"type":"string","minLength":1,"maxLength":50,"description":"Tipo o versión (tipo)."},"model":{"type":"string","pattern":"^\\d{4}$","description":"Año del modelo (modelo), 4 dígitos."},"engine_number":{"type":"string","maxLength":17,"description":"Número de motor (numeroMotor)."},"serial_number":{"type":"string","maxLength":17,"description":"Número de serie (numeroSerie)."},"niv":{"type":"string","maxLength":17,"description":"Número de identificación vehicular (NIV)."},"guide_value":{"type":"number","exclusiveMinimum":0,"maximum":1000000000000,"description":"Valor según la guía EBC o Libro Azul (valor)."},"customs":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"number":{"type":"string","minLength":1,"maxLength":100,"description":"Número del documento de importación (numero)."},"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Fecha del documento (fecha), AAAA-MM-DD."},"office":{"type":"string","maxLength":100,"description":"Aduana (aduana)."}},"required":["number","date"]},"description":"Información aduanera de la importación del vehículo (InformacionAduanera)."}},"required":["purchase_amount","sale_amount","vehicle_key","make","type","model","guide_value"],"description":"Complemento de vehículo usado."},"addenda":{"type":"object","propertyNames":{"type":"string","maxLength":40},"additionalProperties":{"type":"string","maxLength":200},"description":"Addenda del receptor (Walmart, Soriana…), con sus propios campos."}},"required":[],"description":"Un concepto. description, product_key y unit_price son obligatorios, salvo que mande product (prd_…): entonces vienen de su catálogo y lo que mande encima gana."},"description":"Los conceptos, como en POST /v1/invoices."},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"Moneda, clave ISO 4217 de c_Moneda (MXN, USD, EUR…). Por omisión MXN."},"exchange_rate":{"type":"number","exclusiveMinimum":0,"maximum":1000000,"description":"Tipo de cambio a pesos (TipoCambio). Obligatorio si la moneda no es MXN; use el del DOF del día anterior."},"payment_form":{"type":"string","pattern":"^\\d{2}$","description":"Forma de pago (FormaPago), clave de c_FormaPago: 01 efectivo, 03 transferencia, 04 tarjeta de crédito, 28 débito, 99 por definir… Obligatoria con PUE; con PPD es 99."},"payment_method":{"type":"string","enum":["PUE","PPD"],"description":"Método de pago (MetodoPago): PUE (una sola exhibición, por omisión) o PPD (en parcialidades o diferido, se cobra con complementos de pago)."},"use":{"type":"string","pattern":"^[A-Z]{1,2}\\d{2}$","description":"Uso del CFDI (UsoCFDI), clave de c_UsoCFDI. Por omisión G03, o S01 con régimen 616."},"notes":{"type":"string","maxLength":1000,"description":"Observaciones que aparecen en el PDF (no van en el XML)."},"valid_until":{"description":"Hasta cuándo es válida (AAAA-MM-DD, hasta un año). Por omisión, en 15 días.","type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"terms":{"description":"Condiciones: tiempo de entrega, anticipo, garantía…","type":"string","maxLength":2000}},"additionalProperties":false},"example":{"valid_until":"2026-11-30"}}}},"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Quote"},"example":{"id":"quo_OufpKqnrvx9p3Kd8wQm2XyT5uBcW8sKdLx","object":"quote","livemode":false,"issuer":"iss_OufpKqnrvx9p","number":"COT-12","version":1,"status":"sent","url":"https://fiscalisto.com/cotizacion/7Hq2mZr1XyT5uBcW8sKdLx0VeNOufpKq","customer":{"tax_id":"ICV060329BY0","name":"INMOBILIARIA CVA","email":"compras@cva.example","catalog_id":"cus_OufpKqnrvx9p42"},"currency":"MXN","items":[{"description":"Desarrollo del sitio web","product_key":"81112103","quantity":1,"unit_key":"E48","unit_price":45000}],"total":52200,"valid_until":"2026-11-09","terms":"50% de anticipo, entrega en 4 semanas.","notes":null,"auto_invoice":true,"customer_comment":null,"sent_at":"2026-10-25T10:12:00-06:00","viewed_at":null,"decided_at":null,"decided_by":null,"invoice":null,"created_at":"2026-10-25T10:05:00-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"delete":{"operationId":"deleteQuote","tags":["Cotizaciones"],"security":[{"bearerAuth":[]}],"summary":"Borrar una cotización","description":"Solo una que nunca se envió; si no, 400 quote_not_draft.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Deleted"},"example":{"id":"prd_OufpKqnrvx9p1","object":"product","deleted":true}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/quotes/{id}/send":{"post":{"operationId":"sendQuote","tags":["Cotizaciones"],"security":[{"bearerAuth":[]}],"summary":"Mandar una cotización","description":"La manda por correo con su PDF y la liga donde el cliente la ve, la acepta, pide cambios o la rechaza. Con send_email: false solo se marca enviada y contesta url, para que usted la mande por WhatsApp o su propio correo.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"send_email":{"description":"Mandarla por correo, con su PDF y la liga (por omisión true). Con false solo se marca enviada y contesta url, para que usted la mande.","type":"boolean"},"to":{"description":"A quién (hasta 5 correos). Por omisión, el correo del cliente.","type":"string","maxLength":500},"message":{"description":"Un mensaje en el correo.","type":"string","maxLength":2000},"auto_invoice":{"description":"Al aceptarla, timbrar la factura sola (con los datos fiscales del cliente; si no los tiene, la página se los pide primero). Por omisión false: la factura se timbra con POST /v1/quotes/{id}/invoice.","type":"boolean"}},"additionalProperties":false},"example":{"to":"compras@cva.example","message":"Le comparto la cotización del sitio."}}}},"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Quote"},"example":{"id":"quo_OufpKqnrvx9p3Kd8wQm2XyT5uBcW8sKdLx","object":"quote","livemode":false,"issuer":"iss_OufpKqnrvx9p","number":"COT-12","version":1,"status":"sent","url":"https://fiscalisto.com/cotizacion/7Hq2mZr1XyT5uBcW8sKdLx0VeNOufpKq","customer":{"tax_id":"ICV060329BY0","name":"INMOBILIARIA CVA","email":"compras@cva.example","catalog_id":"cus_OufpKqnrvx9p42"},"currency":"MXN","items":[{"description":"Desarrollo del sitio web","product_key":"81112103","quantity":1,"unit_key":"E48","unit_price":45000}],"total":52200,"valid_until":"2026-11-09","terms":"50% de anticipo, entrega en 4 semanas.","notes":null,"auto_invoice":true,"customer_comment":null,"sent_at":"2026-10-25T10:12:00-06:00","viewed_at":null,"decided_at":null,"decided_by":null,"invoice":null,"created_at":"2026-10-25T10:05:00-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/quotes/{id}/accept":{"post":{"operationId":"acceptQuote","tags":["Cotizaciones"],"security":[{"bearerAuth":[]}],"summary":"Marcar aceptada","description":"El cliente le dijo que sí por teléfono, en persona… Llega quote.accepted. No timbra: para eso, POST /v1/quotes/{id}/invoice.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Quote"},"example":{"id":"quo_OufpKqnrvx9p3Kd8wQm2XyT5uBcW8sKdLx","object":"quote","livemode":false,"issuer":"iss_OufpKqnrvx9p","number":"COT-12","version":1,"status":"sent","url":"https://fiscalisto.com/cotizacion/7Hq2mZr1XyT5uBcW8sKdLx0VeNOufpKq","customer":{"tax_id":"ICV060329BY0","name":"INMOBILIARIA CVA","email":"compras@cva.example","catalog_id":"cus_OufpKqnrvx9p42"},"currency":"MXN","items":[{"description":"Desarrollo del sitio web","product_key":"81112103","quantity":1,"unit_key":"E48","unit_price":45000}],"total":52200,"valid_until":"2026-11-09","terms":"50% de anticipo, entrega en 4 semanas.","notes":null,"auto_invoice":true,"customer_comment":null,"sent_at":"2026-10-25T10:12:00-06:00","viewed_at":null,"decided_at":null,"decided_by":null,"invoice":null,"created_at":"2026-10-25T10:05:00-06:00"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/quotes/{id}/invoice":{"post":{"operationId":"invoiceQuote","tags":["Cotizaciones"],"security":[{"bearerAuth":[]}],"summary":"Facturar una cotización","description":"Timbra la factura con los conceptos de la cotización y los datos fiscales del cliente, y la deja facturada (invoice). Si no estaba aceptada, la marca aceptada. Una en otra moneda va al tipo de cambio de hoy. Sin los datos fiscales del cliente, 400 quote_customer_missing; rechazada o vencida, 400 quote_not_invoiceable. Si ya se facturó, contesta esa factura.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"$ref":"#/components/parameters/IdempotencyKey"}],"responses":{"201":{"description":"Correcto. Repetir la solicitud con la misma Idempotency-Key contesta lo mismo, con el mismo status y el encabezado idempotent-replayed: true.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"},"idempotent-replayed":{"$ref":"#/components/headers/IdempotentReplayed"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Invoice"},"example":{"id":"inv_OufpKqnrvx9p0Nfbydl9jG4UNGeTYcvdrg","object":"invoice","livemode":false,"issuer":"iss_OufpKqnrvx9p","branch":null,"type":"I","status":"valid","uuid":"5F1E8C2A-3B7D-4C9E-A1B2-C3D4E5F60718","series":null,"folio":"1","date":"2026-10-24T10:15:42","customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826"},"use":"I04","payment_form":"03","payment_method":"PUE","currency":"MXN","exchange_rate":null,"items":[{"description":"Mensualidad","product_key":"86121700","unit_key":"E48","unit_name":"Unidad de servicio","sku":"MEN-1","quantity":2,"unit_price":2500,"taxability":"02","iva":"0.16"}],"subtotal":5000,"discount":0,"taxes":{"iva":800,"ieps":0,"iva_withheld":0,"isr_withheld":0,"local_transferred":0,"local_withheld":0},"total":5800,"payment_status":"paid","amount_due":0,"amount_paid":5800,"related":null,"cancellation":null,"email":null,"error":null,"recurring_invoice":null,"created_at":"2026-10-24T10:15:42-06:00","metadata":{}}}}},"202":{"description":"El PAC no contestó a tiempo: el comprobante queda en processing y se timbra solo en unos momentos. Escuche el evento *.stamped o consúltelo con GET; repetir la solicitud con la misma Idempotency-Key contesta su estado sin timbrar otra vez.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"},"idempotent-replayed":{"$ref":"#/components/headers/IdempotentReplayed"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Invoice"},"example":{"id":"inv_OufpKqnrvx9p0Nfbydl9jG4UNGeTYcvdrg","object":"invoice","livemode":false,"issuer":"iss_OufpKqnrvx9p","branch":null,"type":"I","status":"valid","uuid":"5F1E8C2A-3B7D-4C9E-A1B2-C3D4E5F60718","series":null,"folio":"1","date":"2026-10-24T10:15:42","customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826"},"use":"I04","payment_form":"03","payment_method":"PUE","currency":"MXN","exchange_rate":null,"items":[{"description":"Mensualidad","product_key":"86121700","unit_key":"E48","unit_name":"Unidad de servicio","sku":"MEN-1","quantity":2,"unit_price":2500,"taxability":"02","iva":"0.16"}],"subtotal":5000,"discount":0,"taxes":{"iva":800,"ieps":0,"iva_withheld":0,"isr_withheld":0,"local_transferred":0,"local_withheld":0},"total":5800,"payment_status":"paid","amount_due":0,"amount_paid":5800,"related":null,"cancellation":null,"email":null,"error":null,"recurring_invoice":null,"created_at":"2026-10-24T10:15:42-06:00","metadata":{}}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"402":{"$ref":"#/components/responses/Error402"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"409":{"$ref":"#/components/responses/Error409"},"422":{"$ref":"#/components/responses/Error422"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/quotes/{id}/pdf":{"get":{"operationId":"getQuotePdf","tags":["Cotizaciones"],"security":[{"bearerAuth":[]}],"summary":"Descargar el PDF","description":"El PDF de su última versión, con el diseño de PDF del emisor.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"El archivo.","content":{"application/pdf":{"schema":{"type":"string","format":"binary"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/webhook_endpoints":{"post":{"operationId":"createWebhookEndpoint","tags":["Webhooks"],"security":[{"bearerAuth":[]}],"summary":"Crear un webhook","description":"La respuesta trae el secreto de firma (secret) una sola vez.","parameters":[{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","minLength":1,"maxLength":2048,"description":"Dirección https de su servidor que recibe los avisos."},"events":{"anyOf":[{"maxItems":27,"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Eventos que quiere recibir, o [\"*\"] para todos (por omisión). La lista con cuándo llega cada uno: [Tipos de evento](https://fiscalisto.com/docs/api/webhooks#tipos-de-evento)."},"description":{"description":"Para qué es, para usted (no se manda en los eventos).","anyOf":[{"type":"string","maxLength":200},{"type":"null"}]},"api_version":{"description":"La versión de la API en que llegan sus eventos (por ejemplo 2026-10-24); null o sin mandar: la de la cuenta. Así actualiza un endpoint a la vez.","type":["string","null"]}},"required":["url"],"additionalProperties":false},"example":{"url":"https://mi-plataforma.mx/webhooks/fiscalisto","events":["invoice.stamped","invoice.failed","invoice.canceled"]}}}},"responses":{"201":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEndpoint"},"example":{"id":"whe_0q1Vmmw52sbDpmtsKD1E","object":"webhook_endpoint","livemode":false,"sandbox":null,"url":"https://mi-plataforma.mx/webhooks/fiscalisto","description":null,"events":["invoice.stamped"],"status":"enabled","disabled_reason":null,"failing_since":null,"previous_secret_expires_at":null,"api_version":null,"created_at":"2026-10-24T10:15:42-06:00","secret":"whsec_MfKQ9r7Cq1ZzR0nN3xY2bW8eT5uV6sA4"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"get":{"operationId":"listWebhookEndpoints","tags":["Webhooks"],"security":[{"bearerAuth":[]}],"summary":"Listar webhooks","description":"Los webhooks del modo de la llave. Hasta 16 por modo.","parameters":[{"name":"limit","in":"query","description":"Cuántos por página, de 1 a 100. Por omisión 10.","schema":{"type":"integer","minimum":1,"maximum":100,"default":10}},{"name":"starting_after","in":"query","description":"El id del último de la página anterior, para la siguiente.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEndpointList"},"example":{"object":"list","data":[{"id":"whe_0q1Vmmw52sbDpmtsKD1E","object":"webhook_endpoint","livemode":false,"sandbox":null,"url":"https://mi-plataforma.mx/webhooks/fiscalisto","description":null,"events":["invoice.stamped"],"status":"enabled","disabled_reason":null,"failing_since":null,"previous_secret_expires_at":null,"api_version":null,"created_at":"2026-10-24T10:15:42-06:00","secret":"whsec_MfKQ9r7Cq1ZzR0nN3xY2bW8eT5uV6sA4"}],"has_more":false,"url":"/v1/webhook_endpoints"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/webhook_endpoints/{id}":{"get":{"operationId":"getWebhookEndpoint","tags":["Webhooks"],"security":[{"bearerAuth":[]}],"summary":"Ver un webhook","description":"Un webhook: su dirección, los eventos que recibe y si sus entregas fallan. El secreto solo viene al crearlo.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEndpoint"},"example":{"id":"whe_0q1Vmmw52sbDpmtsKD1E","object":"webhook_endpoint","livemode":false,"sandbox":null,"url":"https://mi-plataforma.mx/webhooks/fiscalisto","description":null,"events":["invoice.stamped"],"status":"enabled","disabled_reason":null,"failing_since":null,"previous_secret_expires_at":null,"api_version":null,"created_at":"2026-10-24T10:15:42-06:00","secret":"whsec_MfKQ9r7Cq1ZzR0nN3xY2bW8eT5uV6sA4"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"post":{"operationId":"updateWebhookEndpoint","tags":["Webhooks"],"security":[{"bearerAuth":[]}],"summary":"Actualizar un webhook","description":"Cambia su dirección, sus eventos, su descripción o su versión de la API; con disabled: false vuelve a encender uno que se apagó.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","minLength":1,"maxLength":2048,"description":"Dirección https de su servidor que recibe los avisos."},"events":{"anyOf":[{"maxItems":27,"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Eventos que quiere recibir, o [\"*\"] para todos (por omisión). La lista con cuándo llega cada uno: [Tipos de evento](https://fiscalisto.com/docs/api/webhooks#tipos-de-evento)."},"description":{"description":"Para qué es, para usted (no se manda en los eventos).","anyOf":[{"type":"string","maxLength":200},{"type":"null"}]},"disabled":{"type":"boolean","description":"true para apagarlo sin borrarlo."},"api_version":{"description":"La versión de la API en que llegan sus eventos (por ejemplo 2026-10-24); null o sin mandar: la de la cuenta. Así actualiza un endpoint a la vez.","type":["string","null"]}},"additionalProperties":false},"example":{"events":["*"]}}}},"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEndpoint"},"example":{"id":"whe_0q1Vmmw52sbDpmtsKD1E","object":"webhook_endpoint","livemode":false,"sandbox":null,"url":"https://mi-plataforma.mx/webhooks/fiscalisto","description":null,"events":["invoice.stamped"],"status":"enabled","disabled_reason":null,"failing_since":null,"previous_secret_expires_at":null,"api_version":null,"created_at":"2026-10-24T10:15:42-06:00","secret":"whsec_MfKQ9r7Cq1ZzR0nN3xY2bW8eT5uV6sA4"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}},"delete":{"operationId":"deleteWebhookEndpoint","tags":["Webhooks"],"security":[{"bearerAuth":[]}],"summary":"Borrar un webhook","description":"Deja de mandar eventos a esa dirección. Los eventos siguen en GET /v1/events.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Deleted"},"example":{"id":"prd_OufpKqnrvx9p1","object":"product","deleted":true}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/webhook_endpoints/{id}/roll_secret":{"post":{"operationId":"rollWebhookSecret","tags":["Webhooks"],"security":[{"bearerAuth":[]}],"summary":"Cambiar el secreto","description":"Un secreto nuevo, que la respuesta trae una sola vez. El anterior sigue firmando (una segunda firma en webhook-signature) el tiempo que elija, 24 horas por omisión, para que cambie su servidor sin rechazar eventos. Si se filtró, mande previous_secret_expires_in: 0.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"previous_secret_expires_in":{"type":"integer","minimum":0,"maximum":86400,"description":"Segundos que el secreto anterior sigue firmando, de 0 (deja de firmar ya: úselo si se filtró) a 86400. Por omisión 86400 (24 horas)."}},"additionalProperties":false},"example":{"previous_secret_expires_in":3600}}}},"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEndpoint"},"example":{"id":"whe_0q1Vmmw52sbDpmtsKD1E","object":"webhook_endpoint","livemode":false,"sandbox":null,"url":"https://mi-plataforma.mx/webhooks/fiscalisto","description":null,"events":["invoice.stamped"],"status":"enabled","disabled_reason":null,"failing_since":null,"previous_secret_expires_at":null,"api_version":null,"created_at":"2026-10-24T10:15:42-06:00","secret":"whsec_MfKQ9r7Cq1ZzR0nN3xY2bW8eT5uV6sA4"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/webhook_endpoints/{id}/test":{"post":{"operationId":"testWebhookEndpoint","tags":["Webhooks"],"security":[{"bearerAuth":[]}],"summary":"Mandar un evento de prueba","description":"Manda ahora, una sola vez y sin reintentos, un evento del tipo que elija con un objeto de ejemplo (sus id no existen), firmado como los reales, aunque el webhook no escuche ese tipo. La respuesta trae lo que contestó su servidor. El evento no sale en GET /v1/events, pero sí en las entregas del webhook.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}},{"$ref":"#/components/parameters/IdempotencyKeyOptional"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"type":{"default":"invoice.stamped","description":"El evento a mandar. Por omisión invoice.stamped.","type":"string","enum":["invoice.stamped","invoice.failed","invoice.canceled","invoice.cancellation_pending","invoice.cancellation_rejected","invoice.paid","invoice.partially_paid","retention.stamped","retention.failed","retention.canceled","invoice_batch.completed","customer_data_request.completed","sat_download.completed","sat_download.failed","sat_declaration.created","sat_declaration.updated","ticket.invoiced","ticket.included_in_global","recurring_invoice.failed","quote.viewed","quote.accepted","quote.changes_requested","quote.rejected","issuer.ready","balance.low","test_clock.ready"]}},"additionalProperties":false},"example":{"type":"invoice.failed"}}}},"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookTest"},"example":{"object":"webhook_test","event":{"id":"evt_0PKhIdhYuAGwzmMQYfkc","object":"event","type":"invoice.stamped","api_version":"2026-10-24","livemode":false,"created_at":"2026-10-24T10:15:42-06:00","data":{"object":{"id":"inv_OufpKqnrvx9p28SINJVjjWKYRhojBTJb8P","object":"invoice","livemode":false,"issuer":"iss_OufpKqnrvx9p","branch":null,"type":"I","status":"valid","uuid":"5F1E8C2A-3B7D-4C9E-A1B2-C3D4E5F60718","series":null,"folio":"1","date":"2026-10-24T10:15:42","customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826"},"use":"G03","payment_form":"03","payment_method":"PUE","currency":"MXN","exchange_rate":null,"items":[{"description":"Consultoría","product_key":"80101500","unit_key":"E48","unit_name":"Unidad de servicio","quantity":1,"unit_price":1000,"taxability":"02","iva":"0.16"}],"subtotal":1000,"discount":0,"taxes":{"iva":160,"ieps":0,"iva_withheld":0,"isr_withheld":0,"local_transferred":0,"local_withheld":0},"total":1160,"payment_status":"paid","amount_due":0,"amount_paid":1160,"related":null,"cancellation":null,"email":null,"error":null,"recurring_invoice":null,"created_at":"2026-10-24T10:15:42-06:00","metadata":{}}}},"delivery":{"ok":true,"status":200,"error":null,"response_body":"{\"received\":true}","duration_ms":182}}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/events":{"get":{"operationId":"listEvents","tags":["Eventos"],"security":[{"bearerAuth":[]}],"summary":"Listar eventos","description":"Los de los últimos 30 días, los más recientes primero.","parameters":[{"name":"limit","in":"query","description":"Cuántos por página, de 1 a 100. Por omisión 10.","schema":{"type":"integer","minimum":1,"maximum":100,"default":10}},{"name":"starting_after","in":"query","description":"El id del último de la página anterior, para la siguiente.","schema":{"type":"string"}},{"name":"type","in":"query","description":"Solo de este tipo (invoice.stamped), o todos los de un recurso con un comodín (invoice.*).","schema":{"type":"string","enum":["invoice.stamped","invoice.failed","invoice.canceled","invoice.cancellation_pending","invoice.cancellation_rejected","invoice.paid","invoice.partially_paid","retention.stamped","retention.failed","retention.canceled","invoice_batch.completed","customer_data_request.completed","sat_download.completed","sat_download.failed","sat_declaration.created","sat_declaration.updated","ticket.invoiced","ticket.included_in_global","recurring_invoice.failed","quote.viewed","quote.accepted","quote.changes_requested","quote.rejected","issuer.ready","balance.low","test_clock.ready","invoice.*","invoice_batch.*","recurring_invoice.*","quote.*","ticket.*","retention.*","customer_data_request.*","sat_download.*","sat_declaration.*","issuer.*","balance.*","test_clock.*"]},"example":"invoice.*"},{"name":"object","in":"query","description":"Solo los de este objeto (inv_…, ret_…, bat_…).","schema":{"type":"string"}},{"name":"delivery_success","in":"query","description":"false: los que algún webhook no recibió (su último intento falló). true: los que recibieron todos los webhooks a los que se mandaron.","schema":{"type":"boolean"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventList"},"example":{"object":"list","data":[{"id":"evt_0PKhIdhYuAGwzmMQYfkc","object":"event","type":"invoice.stamped","api_version":"2026-10-24","livemode":false,"created_at":"2026-10-24T10:15:42-06:00","data":{"object":{"id":"inv_OufpKqnrvx9p28SINJVjjWKYRhojBTJb8P","object":"invoice","livemode":false,"issuer":"iss_OufpKqnrvx9p","branch":null,"type":"I","status":"valid","uuid":"5F1E8C2A-3B7D-4C9E-A1B2-C3D4E5F60718","series":null,"folio":"1","date":"2026-10-24T10:15:42","customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826"},"use":"G03","payment_form":"03","payment_method":"PUE","currency":"MXN","exchange_rate":null,"items":[{"description":"Consultoría","product_key":"80101500","unit_key":"E48","unit_name":"Unidad de servicio","quantity":1,"unit_price":1000,"taxability":"02","iva":"0.16"}],"subtotal":1000,"discount":0,"taxes":{"iva":160,"ieps":0,"iva_withheld":0,"isr_withheld":0,"local_transferred":0,"local_withheld":0},"total":1160,"payment_status":"paid","amount_due":0,"amount_paid":1160,"related":null,"cancellation":null,"email":null,"error":null,"recurring_invoice":null,"created_at":"2026-10-24T10:15:42-06:00","metadata":{}}}}],"has_more":false,"url":"/v1/events"}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}},"/v1/events/{id}":{"get":{"operationId":"getEvent","tags":["Eventos"],"security":[{"bearerAuth":[]}],"summary":"Ver un evento","description":"Un evento de los últimos 30 días, con el objeto como estaba cuando pasó.","parameters":[{"name":"id","in":"path","required":true,"description":"El id del objeto.","schema":{"type":"string"}}],"responses":{"200":{"description":"Correcto.","headers":{"request-id":{"$ref":"#/components/headers/RequestId"},"ratelimit-policy":{"$ref":"#/components/headers/RateLimitPolicy"},"fiscalisto-version":{"$ref":"#/components/headers/FiscalistoVersion"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"},"example":{"id":"evt_0PKhIdhYuAGwzmMQYfkc","object":"event","type":"invoice.stamped","api_version":"2026-10-24","livemode":false,"created_at":"2026-10-24T10:15:42-06:00","data":{"object":{"id":"inv_OufpKqnrvx9p28SINJVjjWKYRhojBTJb8P","object":"invoice","livemode":false,"issuer":"iss_OufpKqnrvx9p","branch":null,"type":"I","status":"valid","uuid":"5F1E8C2A-3B7D-4C9E-A1B2-C3D4E5F60718","series":null,"folio":"1","date":"2026-10-24T10:15:42","customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826"},"use":"G03","payment_form":"03","payment_method":"PUE","currency":"MXN","exchange_rate":null,"items":[{"description":"Consultoría","product_key":"80101500","unit_key":"E48","unit_name":"Unidad de servicio","quantity":1,"unit_price":1000,"taxability":"02","iva":"0.16"}],"subtotal":1000,"discount":0,"taxes":{"iva":160,"ieps":0,"iva_withheld":0,"isr_withheld":0,"local_transferred":0,"local_withheld":0},"total":1160,"payment_status":"paid","amount_due":0,"amount_paid":1160,"related":null,"cancellation":null,"email":null,"error":null,"recurring_invoice":null,"created_at":"2026-10-24T10:15:42-06:00","metadata":{}}}}}}},"400":{"$ref":"#/components/responses/Error400"},"401":{"$ref":"#/components/responses/Error401"},"403":{"$ref":"#/components/responses/Error403"},"404":{"$ref":"#/components/responses/Error404"},"429":{"$ref":"#/components/responses/Error429"},"500":{"$ref":"#/components/responses/Error500"}}}}},"webhooks":{"invoice.stamped":{"post":{"operationId":"event.invoice.stamped","tags":["Eventos"],"summary":"invoice.stamped","description":"Se timbró una factura, complemento de pago, nota de crédito, anticipo o recibo de nómina, en la misma solicitud o después de processing. data.object es el comprobante. Llega a sus webhooks como POST firmado con Standard Webhooks (encabezados webhook-id, webhook-timestamp y webhook-signature).","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"},"example":{"id":"evt_0PKhIdhYuAGwzmMQYfkc","object":"event","type":"invoice.stamped","api_version":"2026-10-24","livemode":false,"created_at":"2026-10-24T10:15:42-06:00","data":{"object":{"id":"inv_OufpKqnrvx9p0Nfbydl9jG4UNGeTYcvdrg","object":"invoice","livemode":false,"issuer":"iss_OufpKqnrvx9p","branch":null,"type":"I","status":"valid","uuid":"5F1E8C2A-3B7D-4C9E-A1B2-C3D4E5F60718","series":null,"folio":"1","date":"2026-10-24T10:15:42","customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826"},"use":"I04","payment_form":"03","payment_method":"PUE","currency":"MXN","exchange_rate":null,"items":[{"description":"Mensualidad","product_key":"86121700","unit_key":"E48","unit_name":"Unidad de servicio","sku":"MEN-1","quantity":2,"unit_price":2500,"taxability":"02","iva":"0.16"}],"subtotal":5000,"discount":0,"taxes":{"iva":800,"ieps":0,"iva_withheld":0,"isr_withheld":0,"local_transferred":0,"local_withheld":0},"total":5800,"payment_status":"unpaid","amount_due":5800,"amount_paid":0,"related":null,"cancellation":null,"email":null,"error":null,"recurring_invoice":null,"created_at":"2026-10-24T10:15:42-06:00","metadata":{}}}}}}},"responses":{"200":{"description":"Conteste 2xx en menos de 15 segundos; si no, se reintenta durante un día."}}}},"invoice.failed":{"post":{"operationId":"event.invoice.failed","tags":["Eventos"],"summary":"invoice.failed","description":"El SAT o el PAC rechazaron un comprobante. data.object trae status rejected y el motivo en error. Llega a sus webhooks como POST firmado con Standard Webhooks (encabezados webhook-id, webhook-timestamp y webhook-signature).","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"},"example":{"id":"evt_0PKhIdhYuAGwzmMQYfkc","object":"event","type":"invoice.failed","api_version":"2026-10-24","livemode":false,"created_at":"2026-10-24T10:15:42-06:00","data":{"object":{"id":"inv_OufpKqnrvx9p0Nfbydl9jG4UNGeTYcvdrg","object":"invoice","livemode":false,"issuer":"iss_OufpKqnrvx9p","branch":null,"type":"I","status":"rejected","uuid":null,"series":null,"folio":"1","date":"2026-10-24T10:15:42","customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826"},"use":"I04","payment_form":"03","payment_method":"PUE","currency":"MXN","exchange_rate":null,"items":[{"description":"Mensualidad","product_key":"86121700","unit_key":"E48","unit_name":"Unidad de servicio","sku":"MEN-1","quantity":2,"unit_price":2500,"taxability":"02","iva":"0.16"}],"subtotal":5000,"discount":0,"taxes":{"iva":800,"ieps":0,"iva_withheld":0,"isr_withheld":0,"local_transferred":0,"local_withheld":0},"total":5800,"payment_status":"paid","amount_due":0,"amount_paid":5800,"related":null,"cancellation":null,"email":null,"error":{"message":"El SAT no reconoce el nombre del cliente.","sat_code":"CFDI40145","raw":"CFDI40145 - El campo Nombre del receptor no corresponde con el RFC."},"recurring_invoice":null,"created_at":"2026-10-24T10:15:42-06:00","metadata":{}}}}}}},"responses":{"200":{"description":"Conteste 2xx en menos de 15 segundos; si no, se reintenta durante un día."}}}},"invoice.canceled":{"post":{"operationId":"event.invoice.canceled","tags":["Eventos"],"summary":"invoice.canceled","description":"Se canceló un comprobante: de inmediato o porque el cliente aceptó la cancelación (o no respondió en el plazo). Llega a sus webhooks como POST firmado con Standard Webhooks (encabezados webhook-id, webhook-timestamp y webhook-signature).","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"},"example":{"id":"evt_0PKhIdhYuAGwzmMQYfkc","object":"event","type":"invoice.canceled","api_version":"2026-10-24","livemode":false,"created_at":"2026-10-24T10:15:42-06:00","data":{"object":{"id":"inv_OufpKqnrvx9p0Nfbydl9jG4UNGeTYcvdrg","object":"invoice","livemode":false,"issuer":"iss_OufpKqnrvx9p","branch":null,"type":"I","status":"canceled","uuid":"5F1E8C2A-3B7D-4C9E-A1B2-C3D4E5F60718","series":null,"folio":"1","date":"2026-10-24T10:15:42","customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826"},"use":"I04","payment_form":"03","payment_method":"PUE","currency":"MXN","exchange_rate":null,"items":[{"description":"Mensualidad","product_key":"86121700","unit_key":"E48","unit_name":"Unidad de servicio","sku":"MEN-1","quantity":2,"unit_price":2500,"taxability":"02","iva":"0.16"}],"subtotal":5000,"discount":0,"taxes":{"iva":800,"ieps":0,"iva_withheld":0,"isr_withheld":0,"local_transferred":0,"local_withheld":0},"total":5800,"payment_status":"paid","amount_due":0,"amount_paid":5800,"related":null,"cancellation":{"status":"accepted","motive":"02","substitution":null,"canceled_at":"2026-10-24T10:15:42-06:00"},"email":null,"error":null,"recurring_invoice":null,"created_at":"2026-10-24T10:15:42-06:00","metadata":{}}}}}}},"responses":{"200":{"description":"Conteste 2xx en menos de 15 segundos; si no, se reintenta durante un día."}}}},"invoice.cancellation_pending":{"post":{"operationId":"event.invoice.cancellation_pending","tags":["Eventos"],"summary":"invoice.cancellation_pending","description":"Se pidió la cancelación y espera la respuesta del cliente en su buzón tributario. Llega a sus webhooks como POST firmado con Standard Webhooks (encabezados webhook-id, webhook-timestamp y webhook-signature).","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"},"example":{"id":"evt_0PKhIdhYuAGwzmMQYfkc","object":"event","type":"invoice.cancellation_pending","api_version":"2026-10-24","livemode":false,"created_at":"2026-10-24T10:15:42-06:00","data":{"object":{"id":"inv_OufpKqnrvx9p0Nfbydl9jG4UNGeTYcvdrg","object":"invoice","livemode":false,"issuer":"iss_OufpKqnrvx9p","branch":null,"type":"I","status":"pending","uuid":"5F1E8C2A-3B7D-4C9E-A1B2-C3D4E5F60718","series":null,"folio":"1","date":"2026-10-24T10:15:42","customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826"},"use":"I04","payment_form":"03","payment_method":"PUE","currency":"MXN","exchange_rate":null,"items":[{"description":"Mensualidad","product_key":"86121700","unit_key":"E48","unit_name":"Unidad de servicio","sku":"MEN-1","quantity":2,"unit_price":2500,"taxability":"02","iva":"0.16"}],"subtotal":5000,"discount":0,"taxes":{"iva":800,"ieps":0,"iva_withheld":0,"isr_withheld":0,"local_transferred":0,"local_withheld":0},"total":5800,"payment_status":"paid","amount_due":0,"amount_paid":5800,"related":null,"cancellation":{"status":"pending","motive":"02","substitution":null,"canceled_at":null},"email":null,"error":null,"recurring_invoice":null,"created_at":"2026-10-24T10:15:42-06:00","metadata":{}}}}}}},"responses":{"200":{"description":"Conteste 2xx en menos de 15 segundos; si no, se reintenta durante un día."}}}},"invoice.cancellation_rejected":{"post":{"operationId":"event.invoice.cancellation_rejected","tags":["Eventos"],"summary":"invoice.cancellation_rejected","description":"El cliente rechazó la cancelación o la solicitud venció. Puede pedirla otra vez. Llega a sus webhooks como POST firmado con Standard Webhooks (encabezados webhook-id, webhook-timestamp y webhook-signature).","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"},"example":{"id":"evt_0PKhIdhYuAGwzmMQYfkc","object":"event","type":"invoice.cancellation_rejected","api_version":"2026-10-24","livemode":false,"created_at":"2026-10-24T10:15:42-06:00","data":{"object":{"id":"inv_OufpKqnrvx9p0Nfbydl9jG4UNGeTYcvdrg","object":"invoice","livemode":false,"issuer":"iss_OufpKqnrvx9p","branch":null,"type":"I","status":"valid","uuid":"5F1E8C2A-3B7D-4C9E-A1B2-C3D4E5F60718","series":null,"folio":"1","date":"2026-10-24T10:15:42","customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826"},"use":"I04","payment_form":"03","payment_method":"PUE","currency":"MXN","exchange_rate":null,"items":[{"description":"Mensualidad","product_key":"86121700","unit_key":"E48","unit_name":"Unidad de servicio","sku":"MEN-1","quantity":2,"unit_price":2500,"taxability":"02","iva":"0.16"}],"subtotal":5000,"discount":0,"taxes":{"iva":800,"ieps":0,"iva_withheld":0,"isr_withheld":0,"local_transferred":0,"local_withheld":0},"total":5800,"payment_status":"paid","amount_due":0,"amount_paid":5800,"related":null,"cancellation":{"status":"rejected","motive":"02","substitution":null,"canceled_at":null},"email":null,"error":null,"recurring_invoice":null,"created_at":"2026-10-24T10:15:42-06:00","metadata":{}}}}}}},"responses":{"200":{"description":"Conteste 2xx en menos de 15 segundos; si no, se reintenta durante un día."}}}},"invoice.paid":{"post":{"operationId":"event.invoice.paid","tags":["Eventos"],"summary":"invoice.paid","description":"Una factura de ingreso quedó pagada: su último complemento de pago, una nota de crédito, un depósito conciliado o POST /v1/invoices/{id}/mark_paid. data.object es la factura, con payment_status paid y amount_due 0. Llega a sus webhooks como POST firmado con Standard Webhooks (encabezados webhook-id, webhook-timestamp y webhook-signature).","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"},"example":{"id":"evt_0PKhIdhYuAGwzmMQYfkc","object":"event","type":"invoice.paid","api_version":"2026-10-24","livemode":false,"created_at":"2026-10-24T10:15:42-06:00","data":{"object":{"id":"inv_OufpKqnrvx9p0Nfbydl9jG4UNGeTYcvdrg","object":"invoice","livemode":false,"issuer":"iss_OufpKqnrvx9p","branch":null,"type":"I","status":"valid","uuid":"5F1E8C2A-3B7D-4C9E-A1B2-C3D4E5F60718","series":null,"folio":"1","date":"2026-10-24T10:15:42","customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826"},"use":"I04","payment_form":"03","payment_method":"PUE","currency":"MXN","exchange_rate":null,"items":[{"description":"Mensualidad","product_key":"86121700","unit_key":"E48","unit_name":"Unidad de servicio","sku":"MEN-1","quantity":2,"unit_price":2500,"taxability":"02","iva":"0.16"}],"subtotal":5000,"discount":0,"taxes":{"iva":800,"ieps":0,"iva_withheld":0,"isr_withheld":0,"local_transferred":0,"local_withheld":0},"total":5800,"payment_status":"paid","amount_due":0,"amount_paid":5800,"related":null,"cancellation":null,"email":null,"error":null,"recurring_invoice":null,"created_at":"2026-10-24T10:15:42-06:00","metadata":{}}}}}}},"responses":{"200":{"description":"Conteste 2xx en menos de 15 segundos; si no, se reintenta durante un día."}}}},"invoice.partially_paid":{"post":{"operationId":"event.invoice.partially_paid","tags":["Eventos"],"summary":"invoice.partially_paid","description":"Llegó un pago por una parte de una factura PPD (un complemento de pago o una nota de crédito). data.object es la factura, con lo que falta en amount_due. Llega a sus webhooks como POST firmado con Standard Webhooks (encabezados webhook-id, webhook-timestamp y webhook-signature).","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"},"example":{"id":"evt_0PKhIdhYuAGwzmMQYfkc","object":"event","type":"invoice.partially_paid","api_version":"2026-10-24","livemode":false,"created_at":"2026-10-24T10:15:42-06:00","data":{"object":{"id":"inv_OufpKqnrvx9p0Nfbydl9jG4UNGeTYcvdrg","object":"invoice","livemode":false,"issuer":"iss_OufpKqnrvx9p","branch":null,"type":"I","status":"valid","uuid":"5F1E8C2A-3B7D-4C9E-A1B2-C3D4E5F60718","series":null,"folio":"1","date":"2026-10-24T10:15:42","customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826"},"use":"I04","payment_form":"99","payment_method":"PPD","currency":"MXN","exchange_rate":null,"items":[{"description":"Mensualidad","product_key":"86121700","unit_key":"E48","unit_name":"Unidad de servicio","sku":"MEN-1","quantity":2,"unit_price":2500,"taxability":"02","iva":"0.16"}],"subtotal":5000,"discount":0,"taxes":{"iva":800,"ieps":0,"iva_withheld":0,"isr_withheld":0,"local_transferred":0,"local_withheld":0},"total":5800,"payment_status":"partial","amount_due":2900,"amount_paid":2900,"related":null,"cancellation":null,"email":null,"error":null,"recurring_invoice":null,"created_at":"2026-10-24T10:15:42-06:00","metadata":{}}}}}}},"responses":{"200":{"description":"Conteste 2xx en menos de 15 segundos; si no, se reintenta durante un día."}}}},"retention.stamped":{"post":{"operationId":"event.retention.stamped","tags":["Eventos"],"summary":"retention.stamped","description":"Se timbró una constancia de retenciones. data.object es la constancia. Llega a sus webhooks como POST firmado con Standard Webhooks (encabezados webhook-id, webhook-timestamp y webhook-signature).","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"},"example":{"id":"evt_0PKhIdhYuAGwzmMQYfkc","object":"event","type":"retention.stamped","api_version":"2026-10-24","livemode":false,"created_at":"2026-10-24T10:15:42-06:00","data":{"object":{"id":"ret_OufpKqnrvx9p5tENFcmUXpXJ58XxnF67kv","object":"retention","livemode":false,"issuer":"iss_OufpKqnrvx9p","status":"valid","uuid":"9A6F6BF3-6786-4747-800A-C9964E6509AE","folio":1,"internal_folio":"RET1","date":"2026-10-24T10:15:42","code":"01","description":null,"recipient":{"foreign":false,"tax_id":"PEPJ800101AB1","legal_name":"JUAN PEREZ PEREZ","zip":"33826","curp":null},"period":{"year":2026,"from_month":9,"to_month":9},"totals":{"operation":10000,"taxed":10000,"exempt":0,"withheld":2066.67},"taxes":[{"tax":"isr","base":10000,"amount":1000,"payment_type":"04"},{"tax":"iva","base":10000,"amount":1066.67,"payment_type":"01"}],"cancellation":null,"email":null,"error":null,"created_at":"2026-10-24T10:15:42-06:00","metadata":{"proveedor":"42"}}}}}}},"responses":{"200":{"description":"Conteste 2xx en menos de 15 segundos; si no, se reintenta durante un día."}}}},"retention.failed":{"post":{"operationId":"event.retention.failed","tags":["Eventos"],"summary":"retention.failed","description":"El SAT o el PAC rechazaron una constancia de retenciones. Llega a sus webhooks como POST firmado con Standard Webhooks (encabezados webhook-id, webhook-timestamp y webhook-signature).","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"},"example":{"id":"evt_0PKhIdhYuAGwzmMQYfkc","object":"event","type":"retention.failed","api_version":"2026-10-24","livemode":false,"created_at":"2026-10-24T10:15:42-06:00","data":{"object":{"id":"ret_OufpKqnrvx9p5tENFcmUXpXJ58XxnF67kv","object":"retention","livemode":false,"issuer":"iss_OufpKqnrvx9p","status":"rejected","uuid":null,"folio":1,"internal_folio":"RET1","date":"2026-10-24T10:15:42","code":"01","description":null,"recipient":{"foreign":false,"tax_id":"PEPJ800101AB1","legal_name":"JUAN PEREZ PEREZ","zip":"33826","curp":null},"period":{"year":2026,"from_month":9,"to_month":9},"totals":{"operation":10000,"taxed":10000,"exempt":0,"withheld":2066.67},"taxes":[{"tax":"isr","base":10000,"amount":1000,"payment_type":"04"},{"tax":"iva","base":10000,"amount":1066.67,"payment_type":"01"}],"cancellation":null,"email":null,"error":{"message":"El SAT no reconoce el nombre del cliente.","sat_code":"CFDI40145","raw":"CFDI40145 - El campo Nombre del receptor no corresponde con el RFC."},"created_at":"2026-10-24T10:15:42-06:00","metadata":{"proveedor":"42"}}}}}}},"responses":{"200":{"description":"Conteste 2xx en menos de 15 segundos; si no, se reintenta durante un día."}}}},"retention.canceled":{"post":{"operationId":"event.retention.canceled","tags":["Eventos"],"summary":"retention.canceled","description":"Se canceló una constancia de retenciones. Llega a sus webhooks como POST firmado con Standard Webhooks (encabezados webhook-id, webhook-timestamp y webhook-signature).","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"},"example":{"id":"evt_0PKhIdhYuAGwzmMQYfkc","object":"event","type":"retention.canceled","api_version":"2026-10-24","livemode":false,"created_at":"2026-10-24T10:15:42-06:00","data":{"object":{"id":"ret_OufpKqnrvx9p5tENFcmUXpXJ58XxnF67kv","object":"retention","livemode":false,"issuer":"iss_OufpKqnrvx9p","status":"canceled","uuid":"9A6F6BF3-6786-4747-800A-C9964E6509AE","folio":1,"internal_folio":"RET1","date":"2026-10-24T10:15:42","code":"01","description":null,"recipient":{"foreign":false,"tax_id":"PEPJ800101AB1","legal_name":"JUAN PEREZ PEREZ","zip":"33826","curp":null},"period":{"year":2026,"from_month":9,"to_month":9},"totals":{"operation":10000,"taxed":10000,"exempt":0,"withheld":2066.67},"taxes":[{"tax":"isr","base":10000,"amount":1000,"payment_type":"04"},{"tax":"iva","base":10000,"amount":1066.67,"payment_type":"01"}],"cancellation":{"status":"canceled","motive":"02","canceled_at":"2026-10-24T10:15:42-06:00"},"email":null,"error":null,"created_at":"2026-10-24T10:15:42-06:00","metadata":{"proveedor":"42"}}}}}}},"responses":{"200":{"description":"Conteste 2xx en menos de 15 segundos; si no, se reintenta durante un día."}}}},"invoice_batch.completed":{"post":{"operationId":"event.invoice_batch.completed","tags":["Eventos"],"summary":"invoice_batch.completed","description":"Ya no queda ninguna factura del lote por timbrar. data.object es el lote, con cuántas se timbraron y cuántas no. Llega a sus webhooks como POST firmado con Standard Webhooks (encabezados webhook-id, webhook-timestamp y webhook-signature).","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"},"example":{"id":"evt_0PKhIdhYuAGwzmMQYfkc","object":"event","type":"invoice_batch.completed","api_version":"2026-10-24","livemode":false,"created_at":"2026-10-24T10:15:42-06:00","data":{"object":{"id":"bat_OufpKqnrvx9p4hMdcoapAo5aaGJEme7mXj","object":"invoice_batch","livemode":false,"issuer":"iss_OufpKqnrvx9p","name":"Cuotas de octubre","status":"completed","total":2,"stamped":1,"failed":1,"created_at":"2026-10-24T10:15:42-06:00","completed_at":"2026-10-24T10:15:42-06:00"}}}}}},"responses":{"200":{"description":"Conteste 2xx en menos de 15 segundos; si no, se reintenta durante un día."}}}},"customer_data_request.completed":{"post":{"operationId":"event.customer_data_request.completed","tags":["Eventos"],"summary":"customer_data_request.completed","description":"Un cliente mandó sus datos fiscales por la liga de una solicitud. data.object es la solicitud, con lo que mandó en submission. Llega a sus webhooks como POST firmado con Standard Webhooks (encabezados webhook-id, webhook-timestamp y webhook-signature).","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"},"example":{"id":"evt_0PKhIdhYuAGwzmMQYfkc","object":"event","type":"customer_data_request.completed","api_version":"2026-10-24","livemode":false,"created_at":"2026-10-24T10:15:42-06:00","data":{"object":{"id":"cdr_0q1Vmmw52sbD4cHPqLfBvX0AkFg3hX2Ys","object":"customer_data_request","livemode":false,"issuer":"iss_0q1Vmmw52sbD","status":"completed","url":null,"reference":"cliente-8812","description":"Para facturar su suscripción de octubre.","expires_at":"2026-12-23T10:15:00-06:00","created_at":"2026-10-24T10:15:00-06:00","submission":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA","tax_system":"601","zip":"33826","use":"G03","email":"facturas@inmobiliariacva.mx","source":"constancia","customer":"cus_0q1Vmmw52sbD1","applied":true,"submitted_at":"2026-10-24T11:02:41-06:00"}}}}}}},"responses":{"200":{"description":"Conteste 2xx en menos de 15 segundos; si no, se reintenta durante un día."}}}},"sat_download.completed":{"post":{"operationId":"event.sat_download.completed","tags":["Eventos"],"summary":"sat_download.completed","description":"Terminó una descarga del SAT: sus facturas ya están en GET /v1/sat_invoices. data.object es la descarga, con cuántas nuevas trajo. Llega a sus webhooks como POST firmado con Standard Webhooks (encabezados webhook-id, webhook-timestamp y webhook-signature).","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"},"example":{"id":"evt_0PKhIdhYuAGwzmMQYfkc","object":"event","type":"sat_download.completed","api_version":"2026-10-24","livemode":false,"created_at":"2026-10-24T10:15:42-06:00","data":{"object":{"id":"sdl_OufpKqnrvx9p3n8vQd2LkW7mZr1XyT5uBc","object":"sat_download","livemode":false,"issuer":"iss_OufpKqnrvx9p","direction":"received","from":"2026-09-01","to":"2026-09-30","type":null,"counterparty_tax_id":null,"uuid":null,"status":"completed","new_invoices":8,"error":null,"created_at":"2026-10-24T10:20:00-06:00","completed_at":"2026-10-24T10:27:41-06:00"}}}}}},"responses":{"200":{"description":"Conteste 2xx en menos de 15 segundos; si no, se reintenta durante un día."}}}},"sat_download.failed":{"post":{"operationId":"event.sat_download.failed","tags":["Eventos"],"summary":"sat_download.failed","description":"El SAT no pudo terminar una descarga (por ejemplo, la e.firma venció o el SAT la rechazó). data.object es la descarga, con el motivo en error. Llega a sus webhooks como POST firmado con Standard Webhooks (encabezados webhook-id, webhook-timestamp y webhook-signature).","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"},"example":{"id":"evt_0PKhIdhYuAGwzmMQYfkc","object":"event","type":"sat_download.failed","api_version":"2026-10-24","livemode":false,"created_at":"2026-10-24T10:15:42-06:00","data":{"object":{"id":"sdl_OufpKqnrvx9p3n8vQd2LkW7mZr1XyT5uBc","object":"sat_download","livemode":false,"issuer":"iss_OufpKqnrvx9p","direction":"received","from":"2026-09-01","to":"2026-09-30","type":null,"counterparty_tax_id":null,"uuid":null,"status":"failed","new_invoices":0,"error":"La e.firma del emisor venció: suba una vigente para descargar del SAT.","created_at":"2026-10-24T10:20:00-06:00","completed_at":"2026-10-24T10:27:41-06:00"}}}}}},"responses":{"200":{"description":"Conteste 2xx en menos de 15 segundos; si no, se reintenta durante un día."}}}},"sat_declaration.created":{"post":{"operationId":"event.sat_declaration.created","tags":["Eventos"],"summary":"sat_declaration.created","description":"Una consulta encontró una declaración nueva del emisor en el SAT. data.object es la declaración; sus archivos y cifras pueden llegar después (sat_declaration.updated). Llega a sus webhooks como POST firmado con Standard Webhooks (encabezados webhook-id, webhook-timestamp y webhook-signature).","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"},"example":{"id":"evt_0PKhIdhYuAGwzmMQYfkc","object":"event","type":"sat_declaration.created","api_version":"2026-10-24","livemode":false,"created_at":"2026-10-24T10:15:42-06:00","data":{"object":{"id":"dcl_OufpKqnrvx9p1F","object":"sat_declaration","livemode":false,"issuer":"iss_OufpKqnrvx9p","source":"monthly","year":2026,"month":9,"period":"Septiembre","type":"normal","complementary_type":null,"operation_number":"92026090000001","payment_line":"0426TEST2026090001","filed_on":"2026-10-15","profit_coefficient":0.0219,"isr_due":7718.53,"vat_due":16520,"total_due":24238.53,"sections":[{"tax":"ISR personas morales","fields":[{"label":"INGRESOS NOMINALES DEL PERIODO","value":292500},{"label":"COEFICIENTE DE UTILIDAD","value":0.0219},{"label":"IMPUESTO A CARGO","value":7718.53}]}],"receipt":{"concepts":[{"concept":"ISR personas morales","due":7718.53,"amount_due":7718.53,"amount_to_pay":7718.53},{"concept":"IVA personas morales","due":16520,"amount_due":16520,"amount_to_pay":16520}],"total":24238.53,"payment_line":"0426TEST2026090001","valid_until":null},"summary":{"obligations":[{"obligation":"isr","name":"ISR personas morales","read":true,"amount_due":7718.53,"amount_to_pay":7718.53,"figures":{"income":292500,"invoiced_income":292500,"income_ytd":2632500,"deductions":null,"profit_coefficient":0.0219,"taxable_profit":57651.75,"losses_applied":0,"tax_base":57651.75,"tax_caused":17295.53,"prior_payments":9577,"withheld":0,"surcharges":null,"inflation":null,"paid_before":null,"due":7718.53,"in_favor":null,"to_pay":7718.53}},{"obligation":"vat","name":"IVA personas morales","read":false,"amount_due":16520,"amount_to_pay":16520,"figures":{"taxable_16":null,"taxable_0":null,"exempt":null,"charged":null,"paid_16":null,"creditable":null,"withheld":null,"balance_applied":null,"surcharges":null,"inflation":null,"paid_before":null,"due":null,"in_favor":null,"to_pay":null}}],"total_to_pay":24238.53},"files":{"pdf":true,"receipt":true,"financial_statements":false},"files_error":null,"created_at":"2026-10-26T09:12:00-06:00","updated_at":"2026-10-26T09:12:04-06:00"}}}}}},"responses":{"200":{"description":"Conteste 2xx en menos de 15 segundos; si no, se reintenta durante un día."}}}},"sat_declaration.updated":{"post":{"operationId":"event.sat_declaration.updated","tags":["Eventos"],"summary":"sat_declaration.updated","description":"Llegó el PDF, el acuse, los estados financieros o las cifras de una declaración. data.object es la declaración como queda. Llega a sus webhooks como POST firmado con Standard Webhooks (encabezados webhook-id, webhook-timestamp y webhook-signature).","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"},"example":{"id":"evt_0PKhIdhYuAGwzmMQYfkc","object":"event","type":"sat_declaration.updated","api_version":"2026-10-24","livemode":false,"created_at":"2026-10-24T10:15:42-06:00","data":{"object":{"id":"dcl_OufpKqnrvx9p1F","object":"sat_declaration","livemode":false,"issuer":"iss_OufpKqnrvx9p","source":"monthly","year":2026,"month":9,"period":"Septiembre","type":"normal","complementary_type":null,"operation_number":"92026090000001","payment_line":"0426TEST2026090001","filed_on":"2026-10-15","profit_coefficient":0.0219,"isr_due":7718.53,"vat_due":16520,"total_due":24238.53,"sections":[{"tax":"ISR personas morales","fields":[{"label":"INGRESOS NOMINALES DEL PERIODO","value":292500},{"label":"COEFICIENTE DE UTILIDAD","value":0.0219},{"label":"IMPUESTO A CARGO","value":7718.53}]}],"receipt":{"concepts":[{"concept":"ISR personas morales","due":7718.53,"amount_due":7718.53,"amount_to_pay":7718.53},{"concept":"IVA personas morales","due":16520,"amount_due":16520,"amount_to_pay":16520}],"total":24238.53,"payment_line":"0426TEST2026090001","valid_until":null},"summary":{"obligations":[{"obligation":"isr","name":"ISR personas morales","read":true,"amount_due":7718.53,"amount_to_pay":7718.53,"figures":{"income":292500,"invoiced_income":292500,"income_ytd":2632500,"deductions":null,"profit_coefficient":0.0219,"taxable_profit":57651.75,"losses_applied":0,"tax_base":57651.75,"tax_caused":17295.53,"prior_payments":9577,"withheld":0,"surcharges":null,"inflation":null,"paid_before":null,"due":7718.53,"in_favor":null,"to_pay":7718.53}},{"obligation":"vat","name":"IVA personas morales","read":false,"amount_due":16520,"amount_to_pay":16520,"figures":{"taxable_16":null,"taxable_0":null,"exempt":null,"charged":null,"paid_16":null,"creditable":null,"withheld":null,"balance_applied":null,"surcharges":null,"inflation":null,"paid_before":null,"due":null,"in_favor":null,"to_pay":null}}],"total_to_pay":24238.53},"files":{"pdf":true,"receipt":true,"financial_statements":false},"files_error":null,"created_at":"2026-10-26T09:12:00-06:00","updated_at":"2026-10-26T09:12:04-06:00"}}}}}},"responses":{"200":{"description":"Conteste 2xx en menos de 15 segundos; si no, se reintenta durante un día."}}}},"ticket.invoiced":{"post":{"operationId":"event.ticket.invoiced","tags":["Eventos"],"summary":"ticket.invoiced","description":"Su comprador facturó un ticket en el portal. data.object es el ticket, con la factura en invoice (también llega invoice.stamped). Llega a sus webhooks como POST firmado con Standard Webhooks (encabezados webhook-id, webhook-timestamp y webhook-signature).","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"},"example":{"id":"evt_0PKhIdhYuAGwzmMQYfkc","object":"event","type":"ticket.invoiced","api_version":"2026-10-24","livemode":false,"created_at":"2026-10-24T10:15:42-06:00","data":{"object":{"id":"tkt_OufpKqnrvx9p6hW1yQbT3mZr8sKdLx0VeN","object":"ticket","livemode":false,"issuer":"iss_OufpKqnrvx9p","folio":"A1042","code":"A1042-K7QX","status":"invoiced","url":"https://fiscalisto.com/autofactura/Tx8mQ2vLp9WnR4c?c=A1042-K7QX","total":580,"tip":0,"payment_form":"04","description":"Consumo de alimentos","product_key":"90101501","sold_at":"2026-10-24T14:32:00-06:00","invoiceable_until":"2026-10-31","invoice":"inv_OufpKqnrvx9p0Nfbydl9jG4UNGeTYcvdrg","global_invoice":null,"customer":null,"created_at":"2026-10-24T14:32:05-06:00"}}}}}},"responses":{"200":{"description":"Conteste 2xx en menos de 15 segundos; si no, se reintenta durante un día."}}}},"ticket.included_in_global":{"post":{"operationId":"event.ticket.included_in_global","tags":["Eventos"],"summary":"ticket.included_in_global","description":"Un ticket que nadie facturó entró en la factura global del periodo. data.object es el ticket, con la factura global en global_invoice. Llega a sus webhooks como POST firmado con Standard Webhooks (encabezados webhook-id, webhook-timestamp y webhook-signature).","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"},"example":{"id":"evt_0PKhIdhYuAGwzmMQYfkc","object":"event","type":"ticket.included_in_global","api_version":"2026-10-24","livemode":false,"created_at":"2026-10-24T10:15:42-06:00","data":{"object":{"id":"tkt_OufpKqnrvx9p6hW1yQbT3mZr8sKdLx0VeN","object":"ticket","livemode":false,"issuer":"iss_OufpKqnrvx9p","folio":"A1042","code":"A1042-K7QX","status":"global","url":"https://fiscalisto.com/autofactura/Tx8mQ2vLp9WnR4c?c=A1042-K7QX","total":580,"tip":0,"payment_form":"04","description":"Consumo de alimentos","product_key":"90101501","sold_at":"2026-10-24T14:32:00-06:00","invoiceable_until":"2026-10-31","invoice":null,"global_invoice":"inv_OufpKqnrvx9p9Gl0bAlQ2mZr8sKdLx0VeN","customer":null,"created_at":"2026-10-24T14:32:05-06:00"}}}}}},"responses":{"200":{"description":"Conteste 2xx en menos de 15 segundos; si no, se reintenta durante un día."}}}},"recurring_invoice.failed":{"post":{"operationId":"event.recurring_invoice.failed","tags":["Eventos"],"summary":"recurring_invoice.failed","description":"Una factura recurrente no pudo timbrar su periodo (sin timbres, el cliente se borró del catálogo, el SAT la rechazó…). data.object es la factura recurrente, con el motivo en last_error. Se intenta de nuevo cada día a su hora; llega una vez hasta que vuelva a timbrar. Llega a sus webhooks como POST firmado con Standard Webhooks (encabezados webhook-id, webhook-timestamp y webhook-signature).","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"},"example":{"id":"evt_0PKhIdhYuAGwzmMQYfkc","object":"event","type":"recurring_invoice.failed","api_version":"2026-10-24","livemode":false,"created_at":"2026-10-24T10:15:42-06:00","data":{"object":{"id":"rin_OufpKqnrvx9p7Hq2mZr1XyT5uBcW8sKdLx","object":"recurring_invoice","livemode":false,"issuer":"iss_OufpKqnrvx9p","name":"Renta oficina 3","status":"active","schedule":{"frequency":"monthly","interval":1,"day_of_month":1,"hour":7,"time_zone":"America/Mexico_City"},"next_invoice_on":"2026-11-01","last_invoiced_on":"2026-10-01","last_invoice":"inv_OufpKqnrvx9p6hW1yQbT3mZr8sKdLx0VeN","last_error":{"message":"La cuenta no tiene timbres de producción. Compre un paquete y se intentará de nuevo mañana."},"send_email":true,"catch_up":"all","customer":{"tax_id":"ICV060329BY0","legal_name":"INMOBILIARIA CVA"},"currency":"MXN","items":[{"description":"Renta de oficina de {mes} {año}","product_key":"80131500","quantity":1,"unit_key":"E48","unit_price":15000}],"total":17400,"created_at":"2026-09-28T11:02:14-06:00"}}}}}},"responses":{"200":{"description":"Conteste 2xx en menos de 15 segundos; si no, se reintenta durante un día."}}}},"quote.viewed":{"post":{"operationId":"event.quote.viewed","tags":["Eventos"],"summary":"quote.viewed","description":"El cliente abrió por primera vez la liga de una cotización enviada. data.object es la cotización. Llega a sus webhooks como POST firmado con Standard Webhooks (encabezados webhook-id, webhook-timestamp y webhook-signature).","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"},"example":{"id":"evt_0PKhIdhYuAGwzmMQYfkc","object":"event","type":"quote.viewed","api_version":"2026-10-24","livemode":false,"created_at":"2026-10-24T10:15:42-06:00","data":{"object":{"id":"quo_OufpKqnrvx9p3Kd8wQm2XyT5uBcW8sKdLx","object":"quote","livemode":false,"issuer":"iss_OufpKqnrvx9p","number":"COT-12","version":1,"status":"viewed","url":"https://fiscalisto.com/cotizacion/7Hq2mZr1XyT5uBcW8sKdLx0VeNOufpKq","customer":{"tax_id":"ICV060329BY0","name":"INMOBILIARIA CVA","email":"compras@cva.example","catalog_id":"cus_OufpKqnrvx9p42"},"currency":"MXN","items":[{"description":"Desarrollo del sitio web","product_key":"81112103","quantity":1,"unit_key":"E48","unit_price":45000}],"total":52200,"valid_until":"2026-11-09","terms":"50% de anticipo, entrega en 4 semanas.","notes":null,"auto_invoice":true,"customer_comment":null,"sent_at":"2026-10-25T10:12:00-06:00","viewed_at":"2026-10-24T10:15:42-06:00","decided_at":null,"decided_by":null,"invoice":null,"created_at":"2026-10-25T10:05:00-06:00"}}}}}},"responses":{"200":{"description":"Conteste 2xx en menos de 15 segundos; si no, se reintenta durante un día."}}}},"quote.accepted":{"post":{"operationId":"event.quote.accepted","tags":["Eventos"],"summary":"quote.accepted","description":"Se aceptó una cotización: el cliente en su liga (decided_by customer) o usted (user). Con auto_invoice y los datos fiscales del cliente, también llega invoice.stamped. Llega a sus webhooks como POST firmado con Standard Webhooks (encabezados webhook-id, webhook-timestamp y webhook-signature).","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"},"example":{"id":"evt_0PKhIdhYuAGwzmMQYfkc","object":"event","type":"quote.accepted","api_version":"2026-10-24","livemode":false,"created_at":"2026-10-24T10:15:42-06:00","data":{"object":{"id":"quo_OufpKqnrvx9p3Kd8wQm2XyT5uBcW8sKdLx","object":"quote","livemode":false,"issuer":"iss_OufpKqnrvx9p","number":"COT-12","version":1,"status":"accepted","url":"https://fiscalisto.com/cotizacion/7Hq2mZr1XyT5uBcW8sKdLx0VeNOufpKq","customer":{"tax_id":"ICV060329BY0","name":"INMOBILIARIA CVA","email":"compras@cva.example","catalog_id":"cus_OufpKqnrvx9p42"},"currency":"MXN","items":[{"description":"Desarrollo del sitio web","product_key":"81112103","quantity":1,"unit_key":"E48","unit_price":45000}],"total":52200,"valid_until":"2026-11-09","terms":"50% de anticipo, entrega en 4 semanas.","notes":null,"auto_invoice":true,"customer_comment":null,"sent_at":"2026-10-25T10:12:00-06:00","viewed_at":"2026-10-24T10:15:42-06:00","decided_at":"2026-10-24T10:15:42-06:00","decided_by":"customer","invoice":null,"created_at":"2026-10-25T10:05:00-06:00"}}}}}},"responses":{"200":{"description":"Conteste 2xx en menos de 15 segundos; si no, se reintenta durante un día."}}}},"quote.changes_requested":{"post":{"operationId":"event.quote.changes_requested","tags":["Eventos"],"summary":"quote.changes_requested","description":"El cliente pidió cambios en la liga de una cotización; lo que escribió viene en customer_comment. A lo más una vez cada 10 minutos. Llega a sus webhooks como POST firmado con Standard Webhooks (encabezados webhook-id, webhook-timestamp y webhook-signature).","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"},"example":{"id":"evt_0PKhIdhYuAGwzmMQYfkc","object":"event","type":"quote.changes_requested","api_version":"2026-10-24","livemode":false,"created_at":"2026-10-24T10:15:42-06:00","data":{"object":{"id":"quo_OufpKqnrvx9p3Kd8wQm2XyT5uBcW8sKdLx","object":"quote","livemode":false,"issuer":"iss_OufpKqnrvx9p","number":"COT-12","version":1,"status":"viewed","url":"https://fiscalisto.com/cotizacion/7Hq2mZr1XyT5uBcW8sKdLx0VeNOufpKq","customer":{"tax_id":"ICV060329BY0","name":"INMOBILIARIA CVA","email":"compras@cva.example","catalog_id":"cus_OufpKqnrvx9p42"},"currency":"MXN","items":[{"description":"Desarrollo del sitio web","product_key":"81112103","quantity":1,"unit_key":"E48","unit_price":45000}],"total":52200,"valid_until":"2026-11-09","terms":"50% de anticipo, entrega en 4 semanas.","notes":null,"auto_invoice":true,"customer_comment":"¿Pueden separar el diseño del desarrollo en dos conceptos?","sent_at":"2026-10-25T10:12:00-06:00","viewed_at":"2026-10-24T10:15:42-06:00","decided_at":null,"decided_by":null,"invoice":null,"created_at":"2026-10-25T10:05:00-06:00"}}}}}},"responses":{"200":{"description":"Conteste 2xx en menos de 15 segundos; si no, se reintenta durante un día."}}}},"quote.rejected":{"post":{"operationId":"event.quote.rejected","tags":["Eventos"],"summary":"quote.rejected","description":"El cliente rechazó una cotización en su liga; su motivo, si lo dio, viene en customer_comment. Llega a sus webhooks como POST firmado con Standard Webhooks (encabezados webhook-id, webhook-timestamp y webhook-signature).","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"},"example":{"id":"evt_0PKhIdhYuAGwzmMQYfkc","object":"event","type":"quote.rejected","api_version":"2026-10-24","livemode":false,"created_at":"2026-10-24T10:15:42-06:00","data":{"object":{"id":"quo_OufpKqnrvx9p3Kd8wQm2XyT5uBcW8sKdLx","object":"quote","livemode":false,"issuer":"iss_OufpKqnrvx9p","number":"COT-12","version":1,"status":"rejected","url":"https://fiscalisto.com/cotizacion/7Hq2mZr1XyT5uBcW8sKdLx0VeNOufpKq","customer":{"tax_id":"ICV060329BY0","name":"INMOBILIARIA CVA","email":"compras@cva.example","catalog_id":"cus_OufpKqnrvx9p42"},"currency":"MXN","items":[{"description":"Desarrollo del sitio web","product_key":"81112103","quantity":1,"unit_key":"E48","unit_price":45000}],"total":52200,"valid_until":"2026-11-09","terms":"50% de anticipo, entrega en 4 semanas.","notes":null,"auto_invoice":true,"customer_comment":"Elegimos otro proveedor.","sent_at":"2026-10-25T10:12:00-06:00","viewed_at":"2026-10-24T10:15:42-06:00","decided_at":"2026-10-24T10:15:42-06:00","decided_by":"customer","invoice":null,"created_at":"2026-10-25T10:05:00-06:00"}}}}}},"responses":{"200":{"description":"Conteste 2xx en menos de 15 segundos; si no, se reintenta durante un día."}}}},"issuer.ready":{"post":{"operationId":"event.issuer.ready","tags":["Eventos"],"summary":"issuer.ready","description":"El emisor ya puede timbrar en producción: tiene su CSD y firmó el contrato con el PAC (por la API, el panel o una liga de alta). data.object es el emisor. En pruebas llega al terminar una liga de alta. Llega a sus webhooks como POST firmado con Standard Webhooks (encabezados webhook-id, webhook-timestamp y webhook-signature).","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"},"example":{"id":"evt_0PKhIdhYuAGwzmMQYfkc","object":"event","type":"issuer.ready","api_version":"2026-10-24","livemode":false,"created_at":"2026-10-24T10:15:42-06:00","data":{"object":{"id":"iss_OufpKqnrvx9p","object":"issuer","livemode":false,"tax_id":"TOL190312KT4","legal_name":"TOLPI","tax_system":"601","zip":"64000","status":"active","requirement":null,"certificate":{"serial_number":"30001000000500003416","expires_at":"2027-05-18T05:43:51-06:00"},"sat_downloads":{"available":true,"efirma_expires_at":null},"employer_registration":null,"curp":null,"stamps_as":"EKU9003173C9","sandbox":null,"test_clock":null,"created_at":"2026-10-24T10:15:42-06:00","archived_at":null,"metadata":{"cliente":"42"}}}}}}},"responses":{"200":{"description":"Conteste 2xx en menos de 15 segundos; si no, se reintenta durante un día."}}}},"balance.low":{"post":{"operationId":"event.balance.low","tags":["Eventos"],"summary":"balance.low","description":"A la cuenta le quedan pocos timbres de producción: llega al bajar a low_balance_at (se elige en Desarrolladores › Timbres) y otra vez cuando se acaban, una vez cada uno hasta que vuelva a tener más. data.object es el saldo, como lo da GET /v1/balance. Siempre en producción. Llega a sus webhooks como POST firmado con Standard Webhooks (encabezados webhook-id, webhook-timestamp y webhook-signature).","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"},"example":{"id":"evt_0PKhIdhYuAGwzmMQYfkc","object":"event","type":"balance.low","api_version":"2026-10-24","livemode":true,"created_at":"2026-10-24T10:15:42-06:00","data":{"object":{"object":"balance","livemode":true,"available":87,"unlimited":false,"low_balance_at":100,"auto_recharge":null,"packs":[{"timbres":20,"remaining":20,"purchased_at":"2026-10-24T10:15:42-06:00","expires_at":null}]}}}}}},"responses":{"200":{"description":"Conteste 2xx en menos de 15 segundos; si no, se reintenta durante un día."}}}},"test_clock.ready":{"post":{"operationId":"event.test_clock.ready","tags":["Eventos"],"summary":"test_clock.ready","description":"Un reloj de prueba terminó de adelantarse (POST /v1/issuers/{id}/test_clock/advance): ya llegaron los eventos de lo que hizo en el camino. data.object es el reloj. Solo en pruebas. Llega a sus webhooks como POST firmado con Standard Webhooks (encabezados webhook-id, webhook-timestamp y webhook-signature).","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"},"example":{"id":"evt_0PKhIdhYuAGwzmMQYfkc","object":"event","type":"test_clock.ready","api_version":"2026-10-24","livemode":false,"created_at":"2026-10-24T10:15:42-06:00","data":{"object":{"id":"clk_0q1Vmmw52sbD","object":"test_clock","livemode":false,"issuer":"iss_0q1Vmmw52sbD","frozen_time":"2026-12-01T09:00:00-06:00","status":"ready","created_at":"2026-10-25T09:40:00-06:00","advanced":{"recurring_invoices":2,"quotes_expired":1,"global_invoices":1}}}}}}},"responses":{"200":{"description":"Conteste 2xx en menos de 15 segundos; si no, se reintenta durante un día."}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Su llave secreta: fk_test_… en pruebas, fk_live_… en producción. Desarrolladores › Llaves."}},"parameters":{"IdempotencyKey":{"name":"Idempotency-Key","in":"header","required":true,"description":"Uno nuevo por comprobante (8 a 255 caracteres; su id de pedido sirve). Si la respuesta se pierde, repita la solicitud con el mismo valor: contesta lo mismo y nunca se timbra dos veces.","schema":{"type":"string","minLength":8,"maxLength":255},"example":"pedido-A-1042"},"IdempotencyKeyOptional":{"name":"Idempotency-Key","in":"header","required":false,"description":"Opcional (los SDK la mandan solos). Si la respuesta se pierde, repita la solicitud con el mismo valor durante 24 horas: contesta lo mismo, con idempotent-replayed: true, y no lo hace dos veces (ni crea, ni manda correos, ni cobra).","schema":{"type":"string","minLength":1,"maxLength":255},"example":"8f14e45f-ceea-467a-9575-6a1b0e5f3c21"}},"headers":{"RequestId":{"description":"Identificador de la solicitud (req_…). Inclúyalo si nos escribe.","schema":{"type":"string"}},"RateLimitPolicy":{"description":"Cuántas solicitudes acepta su cuenta en este modo y en cuántos segundos: 100;w=10, en producción y en pruebas. Al pasarse responde 429 con Retry-After.","schema":{"type":"string","example":"100;w=10"}},"FiscalistoVersion":{"description":"La versión de la API en que está escrita la respuesta: la del encabezado Fiscalisto-Version de la solicitud, o la de su cuenta.","schema":{"type":"string","example":"2026-10-24"}},"IdempotentReplayed":{"description":"true si es la respuesta guardada de una solicitud anterior con la misma Idempotency-Key.","schema":{"type":"string","enum":["true"]}}},"responses":{"Error400":{"description":"`parameter_missing`: Falta un campo obligatorio. `param` dice cuál.\n\n`parameter_invalid`: Un campo tiene un valor que no se acepta (formato, catálogo del SAT, rango). `param` dice cuál y `message` cómo corregirlo.\n\n`parameter_unknown`: Mandó un campo o un parámetro de la URL que no existe (casi siempre un nombre mal escrito, como legalName en vez de legal_name, o ?statuss= en vez de ?status=). Nunca se ignora en silencio.\n\n`data_request_completed`: El cliente ya mandó sus datos con esa liga: una solicitud completada no se cancela.\n\n`invalid_json`: El cuerpo no es un objeto JSON válido.\n\n`unsupported_content_type`: Mande el cuerpo con Content-Type: application/json.\n\n`browser_not_supported`: La API se llama desde su servidor, nunca desde el navegador: la llave secreta quedaría expuesta.\n\n`livemode_mismatch`: El objeto es del otro modo: una llave fk_test_ solo ve lo de pruebas y una fk_live_ lo de producción.\n\n`issuer_required`: La cuenta tiene varios emisores y la solicitud no dice cuál: mande `issuer` (iss_…).\n\n`issuer_exists`: Ese RFC ya es un emisor de la cuenta en este modo.\n\n`issuer_archived`: El emisor está archivado: ya no timbra. Sus comprobantes se pueden consultar y cancelar.\n\n`certificate_invalid`: El CSD no sirve: no es un certificado de sello (es una e.firma), está vencido, el .key no corresponde o la contraseña no abre la llave.\n\n`certificate_required`: Suba primero el CSD del emisor; después firme el contrato con su e.firma.\n\n`efirma_invalid`: La e.firma no sirve: no es una e.firma (es un CSD), es de otro RFC, está vencida o la contraseña no abre la llave.\n\n`efirma_required`: Para pedirle al SAT las facturas de un emisor en producción, guarde antes su e.firma: POST /v1/issuers/{id}/efirma con keep_for_downloads: true. También si la guardada venció.\n\n`test_mode_only`: Esto solo existe en pruebas (como reiniciar los datos de prueba): use su llave fk_test_.\n\n`sat_request_rejected`: El SAT rechazó la solicitud de descarga. El mensaje trae su motivo, por ejemplo que ya se pidió el mismo periodo con los mismos filtros demasiadas veces (el SAT pone un límite de por vida).\n\n`ticket_invalid`: El ticket no se pudo registrar: el folio trae caracteres no válidos, la fecha de venta está en el futuro o es de hace más de un año, el producto ya no está en el catálogo… El mensaje dice cuál.\n\n`ticket_folio_taken`: Ese folio ya está registrado para el emisor con otro total o con otra propina (409). Con el mismo total se contesta el ticket que ya existe.\n\n`ticket_not_pending`: El ticket ya se facturó o entró en una factura global: no se puede cancelar.\n\n`recurring_invalid`: La factura recurrente no se pudo guardar: el día, la hora, la zona o la factura no son válidos. El mensaje dice cuál.\n\n`recurring_limit`: El emisor ya tiene el máximo de facturas recurrentes activas (25 en pruebas, 5,000 en producción). Pause o borre las que ya no use.\n\n`recurring_paused`: La factura recurrente está en pausa: reanúdela con active: true para timbrarla.\n\n`recurring_not_due`: Aún no toca timbrar la factura recurrente (409): su next_invoice_on es después de hoy. Para una factura antes de tiempo, use POST /v1/invoices.\n\n`invoice_not_markable`: Solo una factura de ingreso PUE vigente se marca pagada o por cobrar; una PPD se paga con su complemento de pago (type P).\n\n`bank_transaction_invalid`: El depósito no se puede conciliar, clasificar o reabrir así (ya está conciliado, las facturas son de otro cliente o una está cancelada…). El mensaje dice por qué.\n\n`diot_empty`: El mes no tiene pagos a proveedores: esa DIOT se presenta sin operaciones desde el portal del SAT.\n\n`store_connection_failed`: La tienda no aceptó la conexión o no respondió como se esperaba (llaves equivocadas, permisos read_orders/write_orders que faltan, una tienda que no vende en pesos). El mensaje dice qué contestó.\n\n`store_platform_unavailable`: Esa plataforma aún no está disponible en Fiscalisto.\n\n`sandbox_invalid`: No se pudo crear el entorno de prueba: falta su nombre o la cuenta ya tiene 25 (borre uno que ya no use).\n\n`api_version_invalid`: No existe esa versión de la API (en Fiscalisto-Version o api_version). El mensaje dice cuáles hay; vea Versiones.\n\n`expand_invalid`: Un campo de expand[] no existe en la respuesta, no es el id de otro objeto, o se pidieron demasiados (hasta 10 campos, 4 niveles). Vea Expandir objetos.\n\n`test_clock_unsupported`: Los relojes de prueba son de emisores de prueba: use su llave fk_test_ y un emisor de pruebas.\n\n`test_clock_invalid`: frozen_time no sirve: no es una fecha y hora ISO 8601, es anterior a la hora del reloj (solo avanza) o va más de dos años adelante de la hora real.\n\n`store_already_connected`: Esa tienda ya está conectada a este emisor.\n\n`store_not_authorized`: El vendedor aún no autoriza la conexión en authorize_url.\n\n`store_disconnected`: La tienda se desconectó: conéctela otra vez con POST /v1/store_connections.\n\n`quote_invalid`: La cotización no se pudo guardar o ya no cambia (aceptada, rechazada o facturada), o no se puede mandar así. El mensaje dice por qué.\n\n`quote_not_draft`: Solo se borra una cotización que nunca se envió.\n\n`quote_not_invoiceable`: La cotización se rechazó o venció: no se factura. Si venció, cámbiele valid_until (es una versión nueva).\n\n`quote_customer_missing`: La cotización no tiene los datos fiscales del cliente: agrégueselos con POST /v1/quotes/{id} (customer) o mándela con auto_invoice para que los dé al aceptarla.\n\n`idempotency_key_missing`: Lo que timbra exige el encabezado Idempotency-Key (8 a 255 caracteres, uno nuevo por comprobante). Así un reintento nunca timbra dos veces.\n\n`idempotency_key_invalid`: Idempotency-Key es de 1 a 255 caracteres ASCII, sin acentos ni ñ: el id de su pedido o un UUID.\n\n`invoice_not_stamped`: La acción es para facturas timbradas (enviar, cancelar, sustituir).\n\n`substitution_unsupported`: Los complementos de pago y las notas de crédito no se sustituyen: se cancelan y se emite otro.\n\n`retention_not_stamped`: La acción es para constancias timbradas.\n\n`customer_exists`: Ya hay un cliente con ese RFC en el catálogo del emisor (o un producto con ese SKU).\n\n`branch_exists`: El emisor ya tiene una sucursal con ese código postal (cada una lleva el suyo); el mensaje dice cuál. Si está archivada, restáurela con archived: false.\n\n`branch_has_invoices`: La sucursal ya facturó, así que no se borra: archívela con archived: true y sus facturas la siguen nombrando.\n\n`inventory_refused`: Inventario no lo permite: el mensaje dice por qué (un lote que no es de ese producto, otro ajuste del mismo almacén en curso).\n\n`email_failed`: No se pudo mandar el correo; el comprobante sí está timbrado.\n\n`endpoint_exists`: Ya hay un webhook con esa dirección en este modo; el mensaje dice cuál. Cámbielo en vez de crear otro.\n\n`endpoint_limit`: La cuenta llegó al máximo de webhooks en este modo.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Error401":{"description":"`missing_api_key`: Falta el encabezado Authorization: Bearer fk_test_… o fk_live_….\n\n`invalid_api_key`: La llave no existe, se revocó o expiró. Cree otra en Desarrolladores › Llaves.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Error402":{"description":"`insufficient_balance`: La cuenta no tiene timbres de producción: para timbrar, revisar RFC en las listas, consultar constancias o pedir descargas al SAT. Compre un paquete en Desarrolladores › Timbres. En pruebas nunca pasa. Para enterarse antes, escuche balance.low o active la recarga automática.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Error403":{"description":"`key_restricted`: La llave está limitada a algunos emisores y la solicitud toca otro (o crea uno nuevo, o usa algo de toda la cuenta como webhooks).\n\n`key_in_sandbox`: La llave es de un entorno de prueba y la solicitud es de toda la cuenta (como crear o borrar entornos): use una llave de pruebas de la cuenta.\n\n`issuer_not_allowed`: La llave no puede usar ese emisor.\n\n`key_read_only`: La llave es de solo lectura: puede hacer GET, validar RFC, revisar listas del SAT y calcular recibos de nómina, pero nada que timbre, cancele, envíe o cambie datos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Error404":{"description":"`route_not_found`: No existe esa ruta. Revise la dirección y la versión (/v1).\n\n`issuer_missing`: No existe ese emisor en la cuenta (o es del otro modo).\n\n`test_clock_missing`: El emisor no tiene reloj de prueba: créelo con POST /v1/issuers/{id}/test_clock.\n\n`resource_missing`: No existe un objeto con ese id (o es de otro emisor o del otro modo).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Error405":{"description":"`method_not_allowed`: La ruta existe pero no con ese método (por ejemplo, PUT: la API usa POST para actualizar).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Error409":{"description":"`test_clock_exists`: El emisor ya tiene un reloj de prueba: adelántelo, o bórrelo para volver a la hora real.\n\n`test_clock_advancing`: El reloj se está adelantando en otra solicitud (409, con Retry-After). Espere a test_clock.ready y repita.\n\n`idempotency_key_reused`: Esa Idempotency-Key ya se usó en las últimas 24 horas con otra solicitud (otra ruta u otro cuerpo). Use una nueva para cada operación distinta.\n\n`request_in_progress`: Otra solicitud con la misma Idempotency-Key sigue en proceso, o otra solicitud está cambiando el mismo objeto (dos actualizaciones del mismo cliente a la vez esperan su turno hasta 15 segundos) (409, con Retry-After). Repítala en un momento con la misma llave: contestará lo mismo.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Error422":{"description":"`invoice_invalid`: La factura no cumple una regla del SAT que Fiscalisto revisa antes de mandarla al PAC (uso contra régimen, totales, complementos…). No se usó ningún timbre.\n\n`invoice_rejected`: El PAC o el SAT no la aceptaron. `sat_code` trae su código (CFDI40xxx) y `message` qué corregir. La factura queda como rejected; no se usó ningún timbre.\n\n`cancellation_failed`: El SAT no aceptó la solicitud de cancelación; `message` dice por qué.\n\n`payroll_invalid`: El recibo de nómina no se puede calcular o timbrar con esos datos (periodo, días, registro patronal del emisor…).\n\n`retention_invalid`: La constancia de retenciones no cumple una regla del SAT. No se usó ningún timbre.\n\n`retention_rejected`: El PAC o el SAT no aceptaron la constancia; `sat_code` trae su código.\n\n`batch_invalid`: Una factura del lote no pasa la revisión; `param` dice cuál (invoices.3.items.0.unit_price). Ninguna del lote se timbró.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":{"type":"invoice_error","code":"invoice_rejected","message":"El SAT no reconoce el nombre del cliente. Escríbalo exactamente como en su constancia de situación fiscal, en mayúsculas y sin «S.A. de C.V.» ni otro régimen de capital.","param":"customer","sat_code":"CFDI40145","invoice":"inv_roVZuc6krJsw08oPyaiBiYX4fWH2pyEN1x","doc_url":"https://fiscalisto.com/docs/api/errores#invoice_rejected","request_id":"req_FfCT3zz9ktKinNLSGMqu"}}}}},"Error429":{"description":"`issuer_creation_limit`: Se crearon 500 emisores en 24 horas. Escríbanos si necesita más.\n\n`sat_refresh_too_soon`: Las declaraciones de ese emisor se consultaron en el SAT hace menos de 10 minutos (cada consulta entra al SAT con su e.firma). Retry-After dice cuántos segundos faltan; lo que ya trajo está en GET /v1/sat_declarations.\n\n`stamp_rate_limit`: Demasiados timbres seguidos del mismo emisor. Espere lo que dice Retry-After; para muchas facturas use POST /v1/invoice_batches.\n\n`daily_limit`: Llegó al tope del día de algo que no se paga con timbres: comprobantes en pruebas (1,000), RFC revisados en las listas del SAT o constancias consultadas. Retry-After dice cuántos segundos faltan para la medianoche de la Ciudad de México.\n\n`rate_limit`: Demasiadas solicitudes con la llave. Espere lo que dice Retry-After y reintente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Error500":{"description":"`internal_error`: Algo falló de nuestro lado. Repita la solicitud con la misma Idempotency-Key: nunca se timbra dos veces. Si sigue, escríbanos con el request_id.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Error503":{"description":"`catalog_unavailable`: El catálogo del SAT no respondió (503). Reintente en unos segundos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"schemas":{"Account":{"type":"object","properties":{"id":{"type":"string","description":"Identificador del objeto, con su prefijo (iss_, inv_, ret_, cus_, prd_, emp_, bat_, brn_, whs_, stm_, adj_, evt_, whe_)."},"livemode":{"type":"boolean","description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"object":{"type":"string","const":"account","description":"Qué tipo de objeto es («invoice», «customer»…)."},"name":{"type":"string","description":"El nombre de la cuenta API."},"api_version":{"type":"string","description":"La versión de la API de la cuenta (la de sus solicitudes sin Fiscalisto-Version). Ver Versiones."},"latest_api_version":{"type":"string","description":"La versión más reciente de la API."},"key":{"type":"object","properties":{"id":{"type":"string","description":"Id de la llave."},"name":{"type":"string","description":"Nombre de la llave."},"issuers":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Emisores a los que se limita la llave; null si puede usar todos."},"read_only":{"type":"boolean","description":"true si la llave solo consulta (key_read_only en lo demás)."},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo deja de funcionar: la vigencia elegida al crearla, o el fin del traslape al cambiarla. null si no vence."},"sandbox":{"description":"El entorno de prueba (sbx_…) de la llave: solo ve sus emisores, webhooks y eventos. null si es de la cuenta.","type":["string","null"]}},"required":["id","name","issuers","read_only","expires_at","sandbox"],"description":"La llave con que se hizo la solicitud: id, nombre y emisores a los que se limita."}},"required":["id","livemode","object","name","api_version","latest_api_version","key"],"description":"La cuenta API de la llave que hizo la solicitud."},"Balance":{"type":"object","properties":{"object":{"type":"string","const":"balance","description":"Qué tipo de objeto es («invoice», «customer»…)."},"livemode":{"type":"boolean","description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"available":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Timbres disponibles en total."},"unlimited":{"type":"boolean","description":"true si la cuenta timbra sin usar timbres."},"low_balance_at":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Con esta cantidad o menos llega balance.low (y otra vez al acabarse). Se elige en Desarrolladores › Timbres."},"auto_recharge":{"anyOf":[{"type":"object","properties":{"timbres":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Timbres del paquete que se compra."},"at":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Se compra con esta cantidad o menos."},"max_per_month":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Como máximo tantas compras al mes."}},"required":["timbres","at","max_per_month"]},{"type":"null"}],"description":"La recarga automática con la tarjeta guardada, o null si está apagada."},"packs":{"type":"array","items":{"type":"object","properties":{"timbres":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Timbres del paquete."},"remaining":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Los que le quedan."},"purchased_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo se compró."},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo vencen; null si no vencen."}},"required":["timbres","remaining","purchased_at","expires_at"]},"description":"Los paquetes con timbres, el que vence antes primero (en ese orden se usan)."}},"required":["object","livemode","available","unlimited","low_balance_at","auto_recharge","packs"],"description":"Timbres de producción de la cuenta, por paquete, el que vence antes primero."},"Issuer":{"type":"object","properties":{"id":{"type":"string","description":"Identificador del objeto, con su prefijo (iss_, inv_, ret_, cus_, prd_, emp_, bat_, brn_, whs_, stm_, adj_, evt_, whe_)."},"livemode":{"type":"boolean","description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"object":{"type":"string","const":"issuer","description":"Qué tipo de objeto es («invoice», «customer»…)."},"tax_id":{"type":"string","description":"RFC (Rfc), 12 caracteres una persona moral y 13 una física."},"legal_name":{"type":["string","null"],"description":"Nombre o razón social tal como está en la constancia de situación fiscal, sin el régimen de capital (sin «S.A. de C.V.»)."},"tax_system":{"type":["string","null"],"description":"Régimen fiscal (RegimenFiscal), clave de c_RegimenFiscal: 601, 612, 626…"},"zip":{"type":["string","null"],"description":"Código postal del domicilio fiscal, 5 dígitos, como en la constancia de situación fiscal. El de un emisor es el lugar de expedición (LugarExpedicion) de sus comprobantes."},"status":{"type":"string","enum":["active","needs_certificate","certificate_expired","needs_efirma","archived"],"description":"active: puede timbrar. needs_certificate: falta su CSD. needs_efirma: falta firmar una vez el contrato con el PAC con su e.firma (solo en producción). certificate_expired: su CSD venció. archived: archivado."},"requirement":{"type":["string","null"],"description":"Qué le falta al emisor para timbrar, y cómo dárselo."},"certificate":{"anyOf":[{"type":"object","properties":{"serial_number":{"type":["string","null"],"description":"Número de serie (NoCertificado)."},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo vence."}},"required":["serial_number","expires_at"]},{"type":"null"}],"description":"El sello digital (CSD) cargado: número de serie y vencimiento."},"sat_downloads":{"type":"object","properties":{"available":{"type":"boolean","description":"true si puede pedir descargas al SAT ahora: siempre en pruebas; en producción con su e.firma guardada y vigente."},"efirma_expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo vence la e.firma guardada para las descargas, o null si no hay una."}},"required":["available","efirma_expires_at"],"description":"Si puede pedirle al SAT sus facturas (POST /v1/sat_downloads): available es true en pruebas, y en producción mientras su e.firma guardada esté vigente (efirma_expires_at)."},"employer_registration":{"type":["string","null"],"description":"Registro patronal ante el IMSS (RegistroPatronal), 11 caracteres. Necesario para timbrar nómina."},"curp":{"type":["string","null"],"description":"CURP, 18 caracteres."},"stamps_as":{"type":"string","description":"RFC con el que se timbra: el del emisor en producción y el de pruebas del SAT (EKU9003173C9) en pruebas."},"sandbox":{"description":"El entorno de prueba (sbx_…) al que pertenece, o null si es de la cuenta. Vea /v1/sandboxes.","type":["string","null"]},"test_clock":{"anyOf":[{"type":"object","properties":{"frozen_time":{"type":"string","format":"date-time","description":"La hora del reloj."}},"required":["frozen_time"]},{"type":"null"}],"description":"Su reloj de prueba (solo emisores de prueba): la hora que es «hoy» para él, o null si va con la hora real. Vea POST /v1/issuers/{id}/test_clock."},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo se creó, ISO 8601 con la hora de la Ciudad de México (-06:00)."},"archived_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo se archivó (ya no timbra), o null."},"metadata":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"},"description":"Sus propios datos: hasta 50 llaves de 40 caracteres con valores de texto de hasta 500. No van al CFDI; vuelven en el objeto y en los webhooks."}},"required":["id","livemode","object","tax_id","legal_name","tax_system","zip","status","requirement","certificate","sat_downloads","employer_registration","curp","stamps_as","sandbox","test_clock","created_at","archived_at","metadata"],"description":"Un emisor: un RFC que timbra desde su cuenta API."},"InvoiceItem":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Un concepto, con los mismos campos con que se mandó."},"Invoice":{"type":"object","properties":{"id":{"type":"string","description":"Identificador del objeto, con su prefijo (iss_, inv_, ret_, cus_, prd_, emp_, bat_, brn_, whs_, stm_, adj_, evt_, whe_)."},"livemode":{"type":"boolean","description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"object":{"type":"string","const":"invoice","description":"Qué tipo de objeto es («invoice», «customer»…)."},"issuer":{"type":"string","description":"El emisor (iss_…)."},"branch":{"type":["string","null"],"description":"La sucursal (brn_…) desde donde se timbró, o null (el domicilio fiscal del emisor). Sus pagos y notas de crédito la siguen."},"type":{"type":"string","enum":["I","E","P","T","N"],"description":"Tipo de comprobante (TipoDeComprobante): I ingreso, E egreso, P pago, T traslado, N nómina."},"status":{"type":"string","enum":["processing","pending","valid","rejected","canceled"],"description":"processing: el PAC no ha contestado (se resuelve sola; escuche invoice.stamped). valid: timbrada. pending: timbrada con una cancelación en espera del cliente. rejected: el SAT o el PAC no la aceptaron (ver error). canceled: cancelada."},"uuid":{"type":["string","null"],"description":"Folio fiscal que asigna el SAT (UUID del Timbre Fiscal Digital), en mayúsculas."},"series":{"type":["string","null"],"description":"Serie (Serie), hasta 25 caracteres. Cada serie lleva sus propios folios."},"folio":{"type":["string","null"],"description":"Folio (Folio). Fiscalisto asigna el siguiente de la serie; mande uno solo si debe ser ese."},"date":{"type":["string","null"],"description":"Fecha de emisión (Fecha), hora de la Ciudad de México."},"customer":{"type":"object","properties":{"tax_id":{"type":["string","null"],"description":"RFC (Rfc), 12 caracteres una persona moral y 13 una física."},"legal_name":{"type":["string","null"],"description":"Nombre o razón social tal como está en la constancia de situación fiscal, sin el régimen de capital (sin «S.A. de C.V.»)."},"tax_system":{"type":"string","description":"Régimen fiscal (RegimenFiscal), clave de c_RegimenFiscal: 601, 612, 626…"},"zip":{"type":"string","description":"Código postal del domicilio fiscal del cliente (DomicilioFiscalReceptor), 5 dígitos."},"foreign":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Si es extranjero: su país de residencia (ResidenciaFiscal, c_Pais) y su número de registro tributario (NumRegIdTrib), con el RFC genérico XEXX010101000."}},"required":["tax_id","legal_name"],"description":"Cliente (Receptor): el id de uno de su catálogo (cus_…) o sus datos en un objeto."},"use":{"type":["string","null"],"description":"Uso del CFDI (UsoCFDI), clave de c_UsoCFDI. Por omisión G03, o S01 con régimen 616."},"payment_form":{"type":["string","null"],"description":"Forma de pago (FormaPago), clave de c_FormaPago: 01 efectivo, 03 transferencia, 04 tarjeta de crédito, 28 débito, 99 por definir… Obligatoria con PUE; con PPD es 99."},"payment_method":{"type":["string","null"],"description":"Método de pago (MetodoPago): PUE (una sola exhibición, por omisión) o PPD (en parcialidades o diferido, se cobra con complementos de pago)."},"currency":{"type":"string","description":"Moneda, clave ISO 4217 de c_Moneda (MXN, USD, EUR…). Por omisión MXN."},"exchange_rate":{"type":["number","null"],"description":"Tipo de cambio a pesos (TipoCambio). Obligatorio si la moneda no es MXN; use el del DOF del día anterior."},"items":{"type":"array","items":{"$ref":"#/components/schemas/InvoiceItem"},"description":"Conceptos (Conceptos), al menos uno."},"subtotal":{"type":["number","null"],"description":"Suma de los importes antes de impuestos y descuentos (SubTotal)."},"discount":{"type":["number","null"],"description":"Descuento (Descuento)."},"taxes":{"anyOf":[{"type":"object","properties":{"iva":{"type":["number","null"],"description":"IVA trasladado."},"ieps":{"type":["number","null"],"description":"IEPS trasladado."},"iva_withheld":{"type":["number","null"],"description":"IVA retenido."},"isr_withheld":{"type":["number","null"],"description":"ISR retenido."},"local_transferred":{"type":["number","null"],"description":"Impuestos locales trasladados."},"local_withheld":{"type":["number","null"],"description":"Impuestos locales retenidos."}},"required":["iva","ieps","iva_withheld","isr_withheld","local_transferred","local_withheld"]},{"type":"null"}],"description":"Impuestos del comprobante, por tipo."},"total":{"type":["number","null"],"description":"Total en la moneda del comprobante (Total)."},"payment_status":{"anyOf":[{"type":"string","enum":["paid","partial","unpaid"]},{"type":"null"}],"description":"Si ya se cobró (Cuentas por cobrar): paid, partial (complementos de pago o notas de crédito por una parte) o unpaid. Una PUE está paid, salvo con paid_later hasta POST /v1/invoices/{id}/mark_paid. null si no es de ingreso o no está vigente."},"amount_due":{"type":["number","null"],"description":"Lo que falta por cobrar, en su moneda, o null."},"amount_paid":{"type":["number","null"],"description":"Lo cobrado: complementos de pago y notas de crédito vigentes, o todo si es PUE pagada. null si no aplica."},"related":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}],"description":"CFDI relacionados (CfdiRelacionados): tipo de relación de c_TipoRelacion y los UUID."},"payment":{"description":"Solo en un complemento de pago (type P).","anyOf":[{"type":"object","properties":{"date":{"type":["string","null"],"description":"Fecha del pago (FechaPago)."},"payment_form":{"type":["string","null"],"description":"Forma de pago (FormaPago), clave de c_FormaPago: 01 efectivo, 03 transferencia, 04 tarjeta de crédito, 28 débito, 99 por definir… Obligatoria con PUE; con PPD es 99."},"currency":{"type":"string","description":"Moneda del pago (MonedaP)."},"exchange_rate":{"type":["number","null"],"description":"Tipo de cambio a pesos (TipoCambio). Obligatorio si la moneda no es MXN; use el del DOF del día anterior."},"amount":{"type":"number","description":"Monto del pago (Monto)."},"operation_number":{"type":["string","null"],"description":"Número de operación del pago (NumOperacion), como el rastreo SPEI."},"documents":{"type":"array","items":{"type":"object","properties":{"uuid":{"type":"string","description":"Folio fiscal que asigna el SAT (UUID del Timbre Fiscal Digital), en mayúsculas."},"series":{"type":["string","null"],"description":"Serie de la factura pagada."},"folio":{"type":["string","null"],"description":"Folio de la factura pagada."},"currency":{"type":"string","description":"Moneda de la factura pagada (MonedaDR)."},"partiality":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Número de parcialidad (NumParcialidad)."},"previous_balance":{"type":"number","description":"Saldo anterior de la factura (ImpSaldoAnt)."},"amount":{"type":"number","description":"Lo que se paga de esa factura (ImpPagado), en la moneda de la factura."},"remaining":{"type":"number","description":"Saldo insoluto después de este pago (ImpSaldoInsoluto)."}},"required":["uuid","series","folio","currency","partiality","previous_balance","amount","remaining"]},"description":"Las facturas que paga (DoctoRelacionado)."}},"required":["date","payment_form","currency","exchange_rate","amount","operation_number","documents"]},{"type":"null"}]},"payroll":{"description":"Solo en un recibo de nómina (type N).","type":"object","properties":{"periodicity":{"type":"string","description":"Periodicidad del pago (PeriodicidadPago): 02 semanal, 03 catorcenal, 04 quincenal (por omisión), 05 mensual."},"period":{"type":"object","properties":{"start":{"type":"string","description":"Primer día del periodo (FechaInicialPago), AAAA-MM-DD."},"end":{"type":"string","description":"Último día del periodo (FechaFinalPago), AAAA-MM-DD."},"payment_date":{"type":"string","description":"Fecha de pago (FechaPago), AAAA-MM-DD. Por omisión el último día del periodo."}},"required":["start","end","payment_date"],"description":"Periodo (Periodo): mes inicial, mes final y año."},"days":{"type":"number","description":"Días pagados (NumDiasPagados). Por omisión, todos los del periodo que le tocan."},"employer":{"type":"object","properties":{"employer_registration":{"type":["string","null"],"description":"Registro patronal ante el IMSS (RegistroPatronal), 11 caracteres. Necesario para timbrar nómina."},"curp":{"type":["string","null"],"description":"CURP, 18 caracteres."}},"required":["employer_registration","curp"],"description":"El patrón (Emisor del complemento): registro patronal y CURP si es persona física."},"employee":{"type":"object","properties":{"id":{"type":["string","null"],"description":"Identificador del objeto, con su prefijo (iss_, inv_, ret_, cus_, prd_, emp_, bat_, brn_, whs_, stm_, adj_, evt_, whe_)."},"number":{"type":"string","description":"Número de empleado (NumEmpleado)."},"curp":{"type":"string","description":"CURP, 18 caracteres."},"social_security_number":{"type":["string","null"],"description":"Número de seguridad social (NumSeguridadSocial), 11 dígitos."},"start_date":{"type":"string","description":"Fecha de inicio de la relación laboral (FechaInicioRelLaboral), AAAA-MM-DD."},"contract_type":{"type":"string","description":"Tipo de contrato (TipoContrato), c_TipoContrato. Por omisión 01, por tiempo indeterminado."},"unionized":{"type":"boolean","description":"true si es sindicalizado (Sindicalizado)."},"workday_type":{"type":"string","description":"Tipo de jornada (TipoJornada), c_TipoJornada. Por omisión 01, diurna."},"regime_type":{"type":"string","description":"Tipo de régimen (TipoRegimen): 02 sueldos y salarios."},"department":{"type":["string","null"],"description":"Departamento (Departamento)."},"position":{"type":["string","null"],"description":"Puesto (Puesto)."},"risk_class":{"type":["string","null"],"description":"Clase de riesgo del puesto ante el IMSS (RiesgoPuesto), 1 a 5. Por omisión 1."},"contribution_base_salary":{"type":["number","null"],"description":"Salario base de cotización (SalarioBaseCotApor)."},"integrated_daily_salary":{"type":["number","null"],"description":"Salario diario integrado (SalarioDiarioIntegrado): no menor al salario diario."},"state":{"type":"string","description":"Entidad federativa donde trabaja (ClaveEntFed): JAL, CMX, NLE…"}},"required":["id","number","curp","social_security_number","start_date","contract_type","unionized","workday_type","regime_type","risk_class","contribution_base_salary","integrated_daily_salary","state"],"description":"El empleado (emp_…)."},"perceptions":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"Tipo de percepción (TipoPercepcion), c_TipoPercepcion: 001 sueldos…"},"key":{"type":"string","description":"Clave del patrón (Clave)."},"concept":{"type":"string","description":"Concepto (Concepto)."},"taxed":{"type":"number","description":"Importe gravado (ImporteGravado)."},"exempt":{"type":"number","description":"Importe exento (ImporteExento)."}},"required":["type","key","concept","taxed","exempt"]},"description":"Percepciones (Percepcion): sueldo y demás, gravado y exento."},"deductions":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"Tipo de deducción (TipoDeduccion), c_TipoDeduccion: 001 IMSS, 002 ISR…"},"key":{"type":"string","description":"Clave del patrón (Clave)."},"concept":{"type":"string","description":"Concepto (Concepto)."},"amount":{"type":"number","description":"Importe (Importe)."}},"required":["type","key","concept","amount"]},"description":"Deducciones (Deduccion): ISR, cuotas IMSS y demás."},"other_payments":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"Tipo de otro pago (TipoOtroPago), c_TipoOtroPago: 002 subsidio para el empleo."},"key":{"type":"string","description":"Clave del patrón (Clave)."},"concept":{"type":"string","description":"Concepto (Concepto)."},"amount":{"type":"number","description":"Importe pagado (Importe)."},"subsidy_caused":{"description":"Subsidio causado (SubsidioCausado).","type":"number"},"subsidy_applied":{"description":"Del subsidio causado, el ISR que evitó (no va en el XML).","type":"number"}},"required":["type","key","concept","amount"]},"description":"Otros pagos (OtroPago): subsidio para el empleo."}},"required":["periodicity","period","days","employer","employee","perceptions","deductions","other_payments"]},"global":{"description":"Solo en una factura global.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"cancellation":{"anyOf":[{"type":"object","properties":{"status":{"type":["string","null"],"description":"pending (espera la respuesta del cliente), accepted (cancelada), rejected (el cliente la rechazó) o lapsed (venció; puede pedirla otra vez)."},"motive":{"type":["string","null"],"description":"Motivo de cancelación (c_MotivoCancelacion): 01 con errores con relación (lleva substitution), 02 con errores sin relación (por omisión), 03 no se llevó a cabo, 04 solo en una factura global, cuando una venta incluida se facturó a nombre del cliente."},"substitution":{"type":["string","null"],"description":"El comprobante que sustituye a este (su id o su UUID), con el motivo 01."},"canceled_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo se canceló."}},"required":["status","motive","substitution","canceled_at"]},{"type":"null"}],"description":"La cancelación, si se pidió: estado, motivo, sustituto y cuándo."},"email":{"anyOf":[{"type":"object","properties":{"to":{"type":["string","null"],"description":"A quién (correos separados por comas)."},"cc":{"type":["string","null"],"description":"Con copia (correos separados por comas)."},"sent_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo se envió."}},"required":["to","cc","sent_at"]},{"type":"null"}],"description":"El envío por correo: a quién, con copia a quién y cuándo (null si no se ha enviado)."},"error":{"anyOf":[{"type":"object","properties":{"message":{"type":"string","description":"Qué pasó y cómo corregirlo, para una persona."},"sat_code":{"type":["string","null"],"description":"Código del SAT o del PAC (CFDI40xxx)."},"raw":{"type":"string","description":"El texto original del PAC."}},"required":["message","sat_code","raw"]},{"type":"null"}],"description":"Por qué el SAT o el PAC no lo aceptaron: mensaje, código del SAT y texto original."},"recurring_invoice":{"type":["string","null"],"description":"La factura recurrente (rin_…) que la timbró sola, o null si se timbró con una llamada."},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo se creó, ISO 8601 con la hora de la Ciudad de México (-06:00)."},"metadata":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"},"description":"Sus propios datos: hasta 50 llaves de 40 caracteres con valores de texto de hasta 500. No van al CFDI; vuelven en el objeto y en los webhooks."},"warnings":{"type":"array","items":{"type":"string"},"description":"Avisos que no impidieron timbrar (por ejemplo, el XML se guardará después)."},"email_error":{"type":"string","description":"Por qué no se pudo mandar el correo; el comprobante sí se timbró."},"substitutes":{"type":"object","properties":{"invoice":{"type":"string","description":"La factura sustituida (inv_…)."},"canceled":{"type":"boolean","description":"true si la sustituida ya quedó cancelada."},"cancel_error":{"type":"string","description":"Por qué no se pudo cancelar la sustituida (cancélela con POST /v1/invoices/{id}/cancel)."}},"required":["invoice","canceled"],"description":"La factura que esta sustituyó y si quedó cancelada."},"advance_application":{"type":"object","properties":{"advance":{"type":["string","null"],"description":"El anticipo, como factura (inv_…)."},"advance_uuid":{"type":"string","description":"El folio fiscal del anticipo."},"method":{"type":"string","enum":["egreso","remanente"],"description":"egreso (la factura completa y después una nota de crédito por el anticipo, opción A) o remanente (la factura solo por lo que falta, opción B)."},"status":{"type":"string","enum":["done","credit_note_pending"],"description":"done (listo) o credit_note_pending (falta timbrar la nota de aplicación: repita la solicitud con la misma Idempotency-Key)."},"credit_note":{"type":["string","null"],"description":"La nota de aplicación del anticipo (inv_…), con method egreso."},"credit_note_error":{"type":"string","description":"Por qué no se timbró la nota de aplicación (repita con la misma Idempotency-Key)."}},"required":["advance","advance_uuid","method","status","credit_note"],"description":"La aplicación del anticipo: método, nota de aplicación y su estado."}},"required":["id","livemode","object","issuer","branch","type","status","uuid","series","folio","date","customer","use","payment_form","payment_method","currency","exchange_rate","items","subtotal","discount","taxes","total","payment_status","amount_due","amount_paid","related","cancellation","email","error","recurring_invoice","created_at","metadata"],"description":"Un CFDI 4.0 emitido: factura de ingreso o global, traslado, nota de crédito (E), complemento de pago (P) o recibo de nómina (N)."},"Retention":{"type":"object","properties":{"id":{"type":"string","description":"Identificador del objeto, con su prefijo (iss_, inv_, ret_, cus_, prd_, emp_, bat_, brn_, whs_, stm_, adj_, evt_, whe_)."},"livemode":{"type":"boolean","description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"object":{"type":"string","const":"retention","description":"Qué tipo de objeto es («invoice», «customer»…)."},"issuer":{"type":"string","description":"El emisor (iss_…)."},"status":{"type":"string","enum":["processing","valid","rejected","canceled"],"description":"processing: el PAC no ha contestado. valid: timbrada. rejected: el SAT o el PAC no la aceptaron (ver error). canceled: cancelada."},"uuid":{"type":["string","null"],"description":"Folio fiscal que asigna el SAT (UUID del Timbre Fiscal Digital), en mayúsculas."},"folio":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Folio (Folio). Fiscalisto asigna el siguiente de la serie; mande uno solo si debe ser ese."},"internal_folio":{"type":["string","null"],"description":"Folio interno (FolioInt): RET1, RET2…"},"date":{"type":["string","null"],"description":"Fecha de emisión (Fecha), hora de la Ciudad de México."},"code":{"type":"string","description":"Clave de la retención (CveRetenc), c_CveRetenc: 01 servicios profesionales, 05 arrendamiento, 14 dividendos, 16 intereses, 18 pagos al extranjero… Las claves 14, 16, 17 y 18 a 24 llevan su complemento (dividends, interest, trust_lease, foreign_payment, share_sale, prize, trust, retirement_plan, mortgage_interest, financial_derivatives); la 26 (plataformas tecnológicas) aún no se puede emitir."},"description":{"type":["string","null"],"description":"Descripción de la retención (DescRetenc)."},"recipient":{"type":"object","properties":{"foreign":{"type":"boolean","description":"true si el receptor es extranjero (sin RFC)."},"tax_id":{"type":["string","null"],"description":"RFC (Rfc), 12 caracteres una persona moral y 13 una física."},"legal_name":{"type":["string","null"],"description":"Nombre o razón social tal como está en la constancia de situación fiscal, sin el régimen de capital (sin «S.A. de C.V.»)."},"zip":{"type":"string","description":"Código postal del domicilio fiscal, 5 dígitos, como en la constancia de situación fiscal. El de un emisor es el lugar de expedición (LugarExpedicion) de sus comprobantes."},"curp":{"type":["string","null"],"description":"CURP, 18 caracteres."}},"required":["foreign","tax_id","legal_name"],"description":"Receptor de la constancia (Receptor): nacional con RFC y código postal, o extranjero."},"period":{"type":"object","properties":{"year":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Año (Ejercicio)."},"from_month":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Mes inicial (MesIni), 1 a 12."},"to_month":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Mes final (MesFin), 1 a 12, del mismo año."}},"required":["year","from_month","to_month"],"description":"Periodo (Periodo): mes inicial, mes final y año."},"totals":{"type":"object","properties":{"operation":{"type":["number","null"],"description":"Monto total de la operación (MontoTotOperacion)."},"taxed":{"type":["number","null"],"description":"Monto gravado (MontoTotGrav). Por omisión, operation menos exempt."},"exempt":{"type":["number","null"],"description":"Monto exento (MontoTotExent). Por omisión 0."},"withheld":{"type":["number","null"],"description":"Total retenido (MontoTotRet)."}},"required":["operation","taxed","exempt","withheld"],"description":"Totales (Totales)."},"taxes":{"type":"array","items":{"type":"object","properties":{"tax":{"type":"string","description":"Impuesto: isr, iva o ieps (ImpuestoRet 001, 002, 003)."},"base":{"type":"number","description":"Base del impuesto retenido (BaseRet)."},"amount":{"type":"number","description":"Monto retenido (MontoRet)."},"payment_type":{"type":"string","description":"Tipo de pago de la retención (TipoPagoRet): 01 definitivo IVA, 02 definitivo IEPS, 03 definitivo ISR, 04 provisional ISR. Por omisión el usual de cada impuesto."}},"required":["tax","base","amount","payment_type"]},"description":"Impuestos del comprobante, por tipo."},"dividends":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Complemento de dividendos."},"interest":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Complemento de intereses."},"foreign_payment":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Complemento de pagos a extranjeros."},"trust_lease":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Complemento de arrendamiento en fideicomiso (Arrendamientoenfideicomiso 1.0), obligatorio con code 17."},"share_sale":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Complemento de enajenación de acciones u operaciones de valores (EnajenaciondeAcciones 1.0), obligatorio con code 19."},"prize":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Complemento de premios (Premios 1.0), obligatorio con code 20. Sus montos son los de totals."},"trust":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Complemento de fideicomisos que no realizan actividades empresariales (Fideicomisonoempresarial 1.0), obligatorio con code 21."},"retirement_plan":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Complemento de planes personales de retiro (Planesderetiro 1.1), obligatorio con code 22: lo del año anterior."},"mortgage_interest":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Complemento de intereses reales deducibles por créditos hipotecarios (Intereseshipotecarios 1.0), obligatorio con code 23."},"financial_derivatives":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Complemento de operaciones financieras derivadas de capital (Operacionesconderivados 1.0), obligatorio con code 24."},"cancellation":{"anyOf":[{"type":"object","properties":{"status":{"type":"string","description":"pending (espera la respuesta del cliente), accepted (cancelada), rejected (el cliente la rechazó) o lapsed (venció; puede pedirla otra vez)."},"motive":{"type":["string","null"],"description":"Motivo de cancelación (c_MotivoCancelacion): 01 con errores con relación (lleva substitution), 02 con errores sin relación (por omisión), 03 no se llevó a cabo, 04 solo en una factura global, cuando una venta incluida se facturó a nombre del cliente."},"canceled_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo se canceló."}},"required":["status","motive","canceled_at"]},{"type":"null"}],"description":"La cancelación, si se pidió: estado, motivo, sustituto y cuándo."},"email":{"anyOf":[{"type":"object","properties":{"to":{"type":["string","null"],"description":"A quién (correos separados por comas)."},"sent_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo se envió."}},"required":["to","sent_at"]},{"type":"null"}],"description":"El envío por correo: a quién, con copia a quién y cuándo (null si no se ha enviado)."},"error":{"anyOf":[{"type":"object","properties":{"message":{"type":"string","description":"Qué pasó y cómo corregirlo, para una persona."},"sat_code":{"type":["string","null"],"description":"Código del SAT o del PAC (CFDI40xxx)."},"raw":{"type":"string","description":"El texto original del PAC."}},"required":["message","sat_code","raw"]},{"type":"null"}],"description":"Por qué el SAT o el PAC no lo aceptaron: mensaje, código del SAT y texto original."},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo se creó, ISO 8601 con la hora de la Ciudad de México (-06:00)."},"metadata":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"},"description":"Sus propios datos: hasta 50 llaves de 40 caracteres con valores de texto de hasta 500. No van al CFDI; vuelven en el objeto y en los webhooks."},"warnings":{"type":"array","items":{"type":"string"},"description":"Avisos que no impidieron timbrar (por ejemplo, el XML se guardará después)."},"email_error":{"type":"string","description":"Por qué no se pudo mandar el correo; el comprobante sí se timbró."}},"required":["id","livemode","object","issuer","status","uuid","folio","internal_folio","date","code","description","recipient","period","totals","taxes","cancellation","email","error","created_at","metadata"],"description":"Una constancia de retenciones e información de pagos (CFDI de retenciones 2.0)."},"Customer":{"type":"object","properties":{"id":{"type":"string","description":"Identificador del objeto, con su prefijo (iss_, inv_, ret_, cus_, prd_, emp_, bat_, brn_, whs_, stm_, adj_, evt_, whe_)."},"livemode":{"type":"boolean","description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"object":{"type":"string","const":"customer","description":"Qué tipo de objeto es («invoice», «customer»…)."},"issuer":{"type":"string","description":"El emisor (iss_…)."},"tax_id":{"type":"string","description":"RFC (Rfc), 12 caracteres una persona moral y 13 una física."},"legal_name":{"type":"string","description":"Nombre o razón social tal como está en la constancia de situación fiscal, sin el régimen de capital (sin «S.A. de C.V.»)."},"tax_system":{"type":"string","description":"Régimen fiscal (RegimenFiscal), clave de c_RegimenFiscal: 601, 612, 626…"},"zip":{"type":"string","description":"Código postal del domicilio fiscal, 5 dígitos, como en la constancia de situación fiscal. El de un emisor es el lugar de expedición (LugarExpedicion) de sus comprobantes."},"email":{"type":["string","null"],"description":"Correo del cliente (varios separados por comas), a donde van sus facturas."},"use":{"type":["string","null"],"description":"Uso del CFDI (UsoCFDI), clave de c_UsoCFDI. Por omisión G03, o S01 con régimen 616."},"foreign":{"anyOf":[{"type":"object","properties":{"country":{"type":"string","description":"País de residencia fiscal, clave de 3 letras de c_Pais (USA, CAN…)."},"tax_id":{"type":["string","null"],"description":"Número de registro de identidad fiscal en su país (NumRegIdTrib)."}},"required":["country","tax_id"]},{"type":"null"}],"description":"Si es extranjero: su país de residencia (ResidenciaFiscal, c_Pais) y su número de registro tributario (NumRegIdTrib), con el RFC genérico XEXX010101000."},"ieps_taxpayer":{"type":"boolean","description":"true si el cliente es contribuyente de IEPS: el IEPS va desglosado en vez de sumado al precio."},"created_at":{"type":"string","format":"date-time","description":"Cuándo se creó, ISO 8601 con la hora de la Ciudad de México (-06:00)."},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo cambió por última vez, ISO 8601 (-06:00)."}},"required":["id","livemode","object","issuer","tax_id","legal_name","tax_system","zip","email","use","foreign","ieps_taxpayer","created_at","updated_at"],"description":"Un cliente del catálogo de un emisor."},"Product":{"type":"object","properties":{"id":{"type":"string","description":"Identificador del objeto, con su prefijo (iss_, inv_, ret_, cus_, prd_, emp_, bat_, brn_, whs_, stm_, adj_, evt_, whe_)."},"livemode":{"type":"boolean","description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"object":{"type":"string","const":"product","description":"Qué tipo de objeto es («invoice», «customer»…)."},"issuer":{"type":"string","description":"El emisor (iss_…)."},"name":{"type":["string","null"],"description":"Nombre corto para encontrarlo, solo para usted."},"description":{"type":"string","description":"Descripción que va en el CFDI (Descripcion)."},"product_key":{"type":"string","description":"Clave del producto o servicio (ClaveProdServ), 8 dígitos de c_ClaveProdServ. Búsquela con GET /v1/sat_catalogs/product_keys?q=…"},"unit_key":{"type":"string","description":"Clave de unidad (ClaveUnidad) de c_ClaveUnidad: E48 unidad de servicio (por omisión), H87 pieza, ACT actividad…"},"unit_name":{"type":["string","null"],"description":"Nombre de la unidad (Unidad), hasta 20 caracteres."},"sku":{"type":["string","null"],"description":"Número de identificación o SKU (NoIdentificacion)."},"unit_price":{"type":"number","description":"Precio unitario antes de impuestos (ValorUnitario)."},"open_price":{"type":"boolean","description":"Precio abierto: el producto no tiene precio fijo y cada concepto con él manda su unit_price."},"taxability":{"type":"string","description":"Objeto de impuesto (ObjetoImp), c_ObjetoImp: 01 no objeto, 02 sí objeto (por omisión), 03 sin desglose, 04 no causa…"},"iva":{"type":"string","description":"Tasa de IVA trasladado: 0.16 (por omisión), 0.08 (región fronteriza), 0 o exento."},"ieps":{"type":["number","null"],"description":"IEPS trasladado: tasa (0.265…) o cuota en pesos por unidad, según ieps_factor."},"ieps_factor":{"type":["string","null"],"description":"Tasa o Cuota (TipoFactor del IEPS)."},"iva_retention":{"type":"number","description":"Tasa de IVA retenido (por ejemplo 0.106667, dos terceras partes del 16%)."},"isr_retention":{"type":"number","description":"Tasa de ISR retenido (por ejemplo 0.10 honorarios, 0.0125 RESICO)."},"local_taxes":{"type":"array","items":{"type":"object","properties":{"retention":{"type":"boolean","description":"true si es una retención local; false si es un traslado."},"name":{"type":"string","description":"Nombre del impuesto local (ImpLocTrasladado o ImpLocRetenido), como ISH."},"rate":{"type":"number","description":"Tasa en por ciento (TasadeTraslado o TasadeRetencion)."}},"required":["retention","name","rate"]},"description":"Impuestos locales (complemento implocal): traslados y retenciones estatales."},"track_stock":{"type":"boolean","description":"true si lleva existencias (Inventario)."},"cost":{"type":["number","null"],"description":"Su costo por unidad en pesos sin IVA, o null."},"barcode":{"type":["string","null"],"description":"Su código de barras, o null."},"min_stock":{"type":["number","null"],"description":"Su existencia mínima, o null."},"created_at":{"type":"string","format":"date-time","description":"Cuándo se creó, ISO 8601 con la hora de la Ciudad de México (-06:00)."},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo cambió por última vez, ISO 8601 (-06:00)."}},"required":["id","livemode","object","issuer","name","description","product_key","unit_key","unit_name","sku","unit_price","open_price","taxability","iva","ieps","ieps_factor","iva_retention","isr_retention","local_taxes","track_stock","cost","barcode","min_stock","created_at","updated_at"],"description":"Un producto o servicio del catálogo de un emisor."},"Employee":{"type":"object","properties":{"id":{"type":"string","description":"Identificador del objeto, con su prefijo (iss_, inv_, ret_, cus_, prd_, emp_, bat_, brn_, whs_, stm_, adj_, evt_, whe_)."},"livemode":{"type":"boolean","description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"object":{"type":"string","const":"employee","description":"Qué tipo de objeto es («invoice», «customer»…)."},"issuer":{"type":"string","description":"El emisor (iss_…)."},"number":{"type":"string","description":"Número de empleado (NumEmpleado)."},"name":{"type":"string","description":"Nombre completo del empleado."},"tax_id":{"type":"string","description":"RFC (Rfc), 12 caracteres una persona moral y 13 una física."},"curp":{"type":"string","description":"CURP, 18 caracteres."},"social_security_number":{"type":"string","description":"Número de seguridad social (NumSeguridadSocial), 11 dígitos."},"zip":{"type":"string","description":"Código postal del domicilio fiscal, 5 dígitos, como en la constancia de situación fiscal. El de un emisor es el lugar de expedición (LugarExpedicion) de sus comprobantes."},"email":{"type":["string","null"],"description":"Correo del empleado, a donde van sus recibos."},"start_date":{"type":"string","description":"Fecha de inicio de la relación laboral (FechaInicioRelLaboral), AAAA-MM-DD."},"end_date":{"type":["string","null"],"description":"Último día trabajado si ya no trabaja ahí, AAAA-MM-DD."},"daily_salary":{"type":"number","description":"Salario diario."},"integrated_daily_salary":{"type":"number","description":"Salario diario integrado (SalarioDiarioIntegrado): no menor al salario diario."},"contract_type":{"type":"string","description":"Tipo de contrato (TipoContrato), c_TipoContrato. Por omisión 01, por tiempo indeterminado."},"workday_type":{"type":"string","description":"Tipo de jornada (TipoJornada), c_TipoJornada. Por omisión 01, diurna."},"regime_type":{"type":"string","description":"Tipo de régimen (TipoRegimen): 02 sueldos y salarios."},"periodicity":{"type":"string","description":"Periodicidad del pago (PeriodicidadPago): 02 semanal, 03 catorcenal, 04 quincenal (por omisión), 05 mensual."},"risk_class":{"type":"string","description":"Clase de riesgo del puesto ante el IMSS (RiesgoPuesto), 1 a 5. Por omisión 1."},"state":{"type":"string","description":"Entidad federativa donde trabaja (ClaveEntFed): JAL, CMX, NLE…"},"border_zone":{"type":"boolean","description":"true si trabaja en la zona libre de la frontera norte (salario mínimo de frontera)."},"unionized":{"type":"boolean","description":"true si es sindicalizado (Sindicalizado)."},"department":{"type":["string","null"],"description":"Departamento (Departamento)."},"position":{"type":["string","null"],"description":"Puesto (Puesto)."},"warnings":{"type":"array","items":{"type":"string"},"description":"Lo que el SAT podría observar de sus datos, antes de timbrar."},"created_at":{"type":"string","format":"date-time","description":"Cuándo se creó, ISO 8601 con la hora de la Ciudad de México (-06:00)."}},"required":["id","livemode","object","issuer","number","name","tax_id","curp","social_security_number","zip","email","start_date","end_date","daily_salary","integrated_daily_salary","contract_type","workday_type","regime_type","periodicity","risk_class","state","border_zone","unionized","department","position","warnings","created_at"],"description":"Un empleado de un emisor, para sus recibos de nómina."},"PayrollReceiptPreview":{"type":"object","properties":{"object":{"type":"string","const":"payroll_receipt_preview","description":"Qué tipo de objeto es («invoice», «customer»…)."},"employee":{"type":"string","description":"El empleado (emp_…)."},"periodicity":{"type":"string","description":"Periodicidad del pago (PeriodicidadPago): 02 semanal, 03 catorcenal, 04 quincenal (por omisión), 05 mensual."},"period":{"type":"object","properties":{"start":{"type":"string","description":"Primer día del periodo (FechaInicialPago), AAAA-MM-DD."},"end":{"type":"string","description":"Último día del periodo (FechaFinalPago), AAAA-MM-DD."},"payment_date":{"type":"string","description":"Fecha de pago (FechaPago), AAAA-MM-DD. Por omisión el último día del periodo."}},"required":["start","end","payment_date"],"description":"Periodo (Periodo): mes inicial, mes final y año."},"days":{"type":"number","description":"Días pagados (NumDiasPagados). Por omisión, todos los del periodo que le tocan."},"contribution_base_salary":{"type":"number","description":"Salario base de cotización (SalarioBaseCotApor)."},"perceptions":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"Tipo de percepción (TipoPercepcion), c_TipoPercepcion: 001 sueldos…"},"key":{"type":"string","description":"Clave del patrón (Clave)."},"concept":{"type":"string","description":"Concepto (Concepto)."},"taxed":{"type":"number","description":"Importe gravado (ImporteGravado)."},"exempt":{"type":"number","description":"Importe exento (ImporteExento)."}},"required":["type","key","concept","taxed","exempt"]},"description":"Percepciones (Percepcion): sueldo y demás, gravado y exento."},"deductions":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"Tipo de deducción (TipoDeduccion), c_TipoDeduccion: 001 IMSS, 002 ISR…"},"key":{"type":"string","description":"Clave del patrón (Clave)."},"concept":{"type":"string","description":"Concepto (Concepto)."},"amount":{"type":"number","description":"Importe (Importe)."}},"required":["type","key","concept","amount"]},"description":"Deducciones (Deduccion): ISR, cuotas IMSS y demás."},"other_payments":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"Tipo de otro pago (TipoOtroPago), c_TipoOtroPago: 002 subsidio para el empleo."},"key":{"type":"string","description":"Clave del patrón (Clave)."},"concept":{"type":"string","description":"Concepto (Concepto)."},"amount":{"type":"number","description":"Importe pagado (Importe)."},"subsidy_caused":{"description":"Subsidio causado (SubsidioCausado).","type":"number"},"subsidy_applied":{"description":"Del subsidio causado, el ISR que evitó (no va en el XML).","type":"number"}},"required":["type","key","concept","amount"]},"description":"Otros pagos (OtroPago): subsidio para el empleo."},"isr":{"type":"object","properties":{"tariff":{"type":"number","description":"ISR según la tarifa del periodo."},"subsidy":{"type":"number","description":"Subsidio para el empleo causado."},"withheld":{"type":"number","description":"ISR retenido (tarifa menos subsidio, no menos de 0)."},"exempt_minimum":{"type":"boolean","description":"true si gana el salario mínimo: no se le retiene ISR."},"adjustment":{"description":"El ajuste de fin de mes: subsidio revertido y el ISR que retiene.","type":"object","properties":{"reversed":{"type":"number","description":"Subsidio causado antes en el mes que se revierte."},"isr":{"type":"number","description":"El cálculo del ISR del periodo: base, tarifa, subsidio y resultado."}},"required":["reversed","isr"]}},"required":["tariff","subsidy","withheld","exempt_minimum"],"description":"El cálculo del ISR del periodo: base, tarifa, subsidio y resultado."},"totals":{"type":"object","properties":{"salaries":{"type":"number","description":"Total de sueldos, salarios y asimilados (TotalSueldos)."},"taxed":{"type":"number","description":"Total gravado (TotalGravado)."},"exempt":{"type":"number","description":"Total exento (TotalExento)."},"perceptions":{"type":"number","description":"Total de percepciones (TotalPercepciones)."},"other_deductions":{"type":"number","description":"Otras deducciones (TotalOtrasDeducciones)."},"taxes_withheld":{"type":"number","description":"Impuestos retenidos (TotalImpuestosRetenidos)."},"deductions":{"type":"number","description":"Total de deducciones (TotalDeducciones)."},"other_payments":{"type":"number","description":"Total de otros pagos (TotalOtrosPagos)."},"subtotal":{"type":"number","description":"Subtotal del comprobante: percepciones más otros pagos."},"net":{"type":"number","description":"Neto a pagar al empleado."}},"required":["salaries","taxed","exempt","perceptions","other_deductions","taxes_withheld","deductions","other_payments","subtotal","net"],"description":"Totales: percepciones, deducciones, otros pagos y el neto a pagar."}},"required":["object","employee","periodicity","period","days","contribution_base_salary","perceptions","deductions","other_payments","isr","totals"],"description":"El recibo como se timbraría: percepciones, deducciones (ISR, IMSS), otros pagos (subsidio) y el neto."},"Advance":{"type":"object","properties":{"object":{"type":"string","const":"advance","description":"Qué tipo de objeto es («invoice», «customer»…)."},"uuid":{"type":"string","description":"Folio fiscal que asigna el SAT (UUID del Timbre Fiscal Digital), en mayúsculas."},"date":{"type":"string","description":"Fecha de emisión (Fecha), hora de la Ciudad de México."},"series":{"type":["string","null"],"description":"Serie (Serie), hasta 25 caracteres. Cada serie lleva sus propios folios."},"folio":{"type":["string","null"],"description":"Folio (Folio). Fiscalisto asigna el siguiente de la serie; mande uno solo si debe ser ese."},"customer":{"type":"object","properties":{"tax_id":{"type":"string","description":"RFC (Rfc), 12 caracteres una persona moral y 13 una física."},"legal_name":{"type":["string","null"],"description":"Nombre o razón social tal como está en la constancia de situación fiscal, sin el régimen de capital (sin «S.A. de C.V.»)."}},"required":["tax_id","legal_name"],"description":"Cliente (Receptor): el id de uno de su catálogo (cus_…) o sus datos en un objeto."},"amount":{"type":"number","description":"El anticipo antes de impuestos."},"total":{"type":"number","description":"Total en la moneda del comprobante (Total)."},"iva":{"type":"string","description":"Tasa de IVA trasladado: 0.16 (por omisión), 0.08 (región fronteriza), 0 o exento."},"currency":{"type":"string","description":"Moneda, clave ISO 4217 de c_Moneda (MXN, USD, EUR…). Por omisión MXN."}},"required":["object","uuid","date","series","folio","customer","amount","total","iva","currency"],"description":"Un anticipo timbrado que aún no se aplica."},"InvoiceBatch":{"type":"object","properties":{"id":{"type":"string","description":"Identificador del objeto, con su prefijo (iss_, inv_, ret_, cus_, prd_, emp_, bat_, brn_, whs_, stm_, adj_, evt_, whe_)."},"livemode":{"type":"boolean","description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"object":{"type":"string","const":"invoice_batch","description":"Qué tipo de objeto es («invoice», «customer»…)."},"issuer":{"type":"string","description":"El emisor (iss_…)."},"name":{"type":"string","description":"Nombre del lote, para usted."},"status":{"type":"string","enum":["processing","completed"],"description":"processing: timbrando. completed: ya no queda ninguna por timbrar."},"total":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Cuántas facturas tiene el lote."},"stamped":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Cuántas se timbraron."},"failed":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Cuántas no se timbraron (quedan con su motivo)."},"processing":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Cuántas siguen en proceso."},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo se creó, ISO 8601 con la hora de la Ciudad de México (-06:00)."},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo terminó."},"invoices":{"description":"Cada factura del lote (no viene en listas ni en eventos).","type":"array","items":{"type":"object","properties":{"index":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Su posición en invoices, desde 0."},"reference":{"type":["string","null"],"description":"Su identificador de esta factura (su número de pedido), hasta 100 caracteres."},"status":{"type":"string","enum":["processing","valid","failed"],"description":"processing, valid (timbrada) o failed (no se timbró; ver error)."},"invoice":{"description":"La factura timbrada (inv_…).","type":["string","null"]},"uuid":{"type":["string","null"],"description":"Folio fiscal que asigna el SAT (UUID del Timbre Fiscal Digital), en mayúsculas."},"total":{"type":"number","description":"Total en la moneda del comprobante (Total)."},"error":{"type":["string","null"],"description":"Por qué no se timbró."}},"required":["index","reference","status","invoice","uuid","total","error"]}}},"required":["id","livemode","object","issuer","name","status","total","stamped","failed","created_at","completed_at"],"description":"Un lote de hasta 1,000 facturas timbradas en segundo plano."},"SatCatalogEntry":{"type":"object","properties":{"code":{"type":"string","description":"La clave en el catálogo del SAT."},"description":{"type":"string","description":"Su descripción en el catálogo."}},"required":["code","description"],"additionalProperties":{},"description":"Una clave de un catálogo del SAT."},"SatListCheck":{"type":"object","properties":{"object":{"type":"string","const":"sat_list_check","description":"Qué tipo de objeto es («invoice», «customer»…)."},"tax_id":{"type":"string","description":"El RFC revisado."},"name":{"type":["string","null"],"description":"El nombre con que aparece en las listas del SAT (null si no aparece)."},"listed":{"type":"boolean","description":"true si el RFC aparece en alguna lista, aunque haya desvirtuado."},"risk":{"type":"string","enum":["high","medium","none"],"description":"high: 69-B o 69-B Bis como presunto o definitivo (el SAT dice que simula operaciones; sus facturas no se pueden deducir). medium: una lista del art. 69 (no localizado, créditos firmes o exigibles, cancelados, sentencias, CSD sin efectos). none: no aparece, o ya desvirtuó o tiene sentencia favorable."},"lists":{"type":"array","items":{"type":"object","properties":{"list":{"type":"string","enum":["69","69b","69b_bis"],"description":"69b: art. 69-B (operaciones simuladas). 69b_bis: art. 69-B Bis (pérdidas fiscales). 69: art. 69 (no localizados, adeudos, cancelados)."},"source":{"type":"string","description":"El archivo del SAT de donde viene (clave)."},"source_name":{"type":"string","description":"El nombre del archivo del SAT, para mostrarlo."},"situation":{"type":["string","null"],"description":"Su situación según el SAT: Presunto, Definitivo, Desvirtuado, Sentencia favorable; en el art. 69, el supuesto (null si el archivo no la trae)."},"published_on":{"type":["string","null"],"description":"Fecha de publicación en el SAT o en el DOF (null si no la trae)."},"details":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},{"type":"null"}],"description":"Lo demás que publica el SAT para ese RFC (oficios, fechas, montos), tal cual; null si nada."}},"required":["list","source","source_name","situation","published_on","details"]},"description":"Cada lista en que aparece; vacía si no aparece en ninguna."},"lists_updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo se actualizaron las listas por última vez (cada día a las 00:00 de la Ciudad de México)."}},"required":["object","tax_id","name","listed","risk","lists","lists_updated_at"],"description":"Si un RFC aparece en las listas del SAT (69-B, 69-B Bis y art. 69)."},"TaxIdValidation":{"type":"object","properties":{"object":{"type":"string","const":"tax_id_validation","description":"Qué tipo de objeto es («invoice», «customer»…)."},"tax_id":{"type":"string","description":"El RFC revisado."},"kind":{"type":"string","enum":["company","person","generic"],"description":"company (persona moral, 12 caracteres), person (persona física, 13) o generic (XAXX010101000, XEXX010101000)."},"valid":{"type":"boolean","description":"true si no hay errores: con lo que mandó, el SAT no debería rechazar la factura por los datos del cliente."},"checked_with_sat":{"type":"boolean","description":"true si se comparó con el registro del SAT (mandó cif_id y el SAT contestó)."},"errors":{"type":"array","items":{"type":"object","properties":{"param":{"type":"string","description":"El campo: tax_id, legal_name, tax_system, zip, use o cif_id."},"code":{"type":"string","description":"Qué falló, para su código: tax_id_format, tax_id_date, legal_name_capital_regime, legal_name_mismatch, tax_system_person, tax_system_mismatch, zip_unknown, zip_mismatch, use_tax_system, cif_id_not_found…"},"message":{"type":"string","description":"La explicación, para mostrarla a su usuario."},"suggestion":{"type":["string","null"],"description":"El valor correcto cuando se sabe (el del SAT con cif_id, o el nombre sin régimen de capital); null si no."}},"required":["param","code","message","suggestion"]},"description":"Lo que haría que el SAT rechace la factura. Cada uno con el campo (param), un código, la explicación y, si se puede, el valor correcto (suggestion)."},"warnings":{"type":"array","items":{"type":"object","properties":{"param":{"type":"string","description":"El campo."},"code":{"type":"string","description":"tax_id_check_digit, legal_name_format, tax_id_listed_69b o tax_id_listed_69."},"message":{"type":"string","description":"La explicación."},"suggestion":{"type":["string","null"],"description":"El valor sugerido, o null."}},"required":["param","code","message","suggestion"]},"description":"Lo que no impide timbrar pero conviene revisar: el dígito verificador, mayúsculas, si el RFC está en las listas del SAT."},"sat_record":{"anyOf":[{"type":"object","properties":{"legal_name":{"type":["string","null"],"description":"El nombre o razón social, como lo tiene el SAT."},"zip":{"type":["string","null"],"description":"El código postal de su domicilio fiscal."},"tax_systems":{"type":"array","items":{"type":"string"},"description":"Sus regímenes vigentes (c_RegimenFiscal)."}},"required":["legal_name","zip","tax_systems"]},{"type":"null"}],"description":"Lo que tiene el SAT en la constancia (con cif_id): nombre, código postal y regímenes vigentes. null sin cif_id."},"sat_error":{"type":["string","null"],"description":"Si el SAT no contestó a tiempo (con cif_id): reintente en unos minutos. null si contestó o no se consultó."},"sat_lists":{"anyOf":[{"$ref":"#/components/schemas/SatListCheck"},{"type":"null"}],"description":"Si el RFC aparece en las listas del SAT. null con un RFC genérico o mal escrito."}},"required":["object","tax_id","kind","valid","checked_with_sat","errors","warnings","sat_record","sat_error","sat_lists"],"description":"Si los datos fiscales de un cliente van a pasar el SAT."},"CustomerDataRequest":{"type":"object","properties":{"id":{"type":"string","description":"Identificador del objeto, con su prefijo (iss_, inv_, ret_, cus_, prd_, emp_, bat_, brn_, whs_, stm_, adj_, evt_, whe_)."},"livemode":{"type":"boolean","description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"object":{"type":"string","const":"customer_data_request","description":"Qué tipo de objeto es («invoice», «customer»…)."},"issuer":{"type":"string","description":"El emisor que le va a facturar."},"status":{"type":"string","enum":["open","completed","expired","canceled"],"description":"open (la liga espera), completed (el cliente mandó sus datos), expired (venció) o canceled."},"url":{"type":["string","null"],"description":"La liga para su cliente, en fiscalisto.com. null cuando ya no está abierta."},"reference":{"type":["string","null"],"description":"Su id para este cliente o pedido."},"description":{"type":["string","null"],"description":"Lo que el cliente ve arriba del formulario."},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo deja de servir la liga."},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo se creó."},"submission":{"anyOf":[{"type":"object","properties":{"tax_id":{"type":"string","description":"Su RFC."},"legal_name":{"type":"string","description":"Su nombre o razón social, como en su constancia."},"tax_system":{"type":"string","description":"Su régimen fiscal (c_RegimenFiscal)."},"zip":{"type":"string","description":"El código postal de su domicilio fiscal."},"use":{"type":"string","description":"El uso del CFDI que eligió (c_UsoCFDI)."},"email":{"type":["string","null"],"description":"Su correo para recibir facturas, si lo dio."},"source":{"type":"string","enum":["constancia","manual"],"description":"constancia (leído de su constancia o del SAT con su idCIF) o manual (escrito)."},"customer":{"type":["string","null"],"description":"El cliente (cus_…) en el catálogo del emisor: el nuevo, o el que ya existía con ese RFC."},"applied":{"type":"boolean","description":"true si quedó en el catálogo. false si el cliente ya existía con otros datos: aplíquelos con POST /v1/customers/{id} si son correctos."},"submitted_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo los mandó."}},"required":["tax_id","legal_name","tax_system","zip","use","email","source","customer","applied","submitted_at"]},{"type":"null"}],"description":"Lo que mandó el cliente (el último envío: puede corregirlo en las 24 horas siguientes). null mientras no conteste."}},"required":["id","livemode","object","issuer","status","url","reference","description","expires_at","created_at","submission"],"description":"Una liga para que un cliente dé sus datos fiscales."},"TestDataReset":{"type":"object","properties":{"object":{"type":"string","const":"test_data_reset","description":"Qué tipo de objeto es («invoice», «customer»…)."},"livemode":{"type":"boolean","const":false,"description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"issuers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Cuántos emisores de pruebas se vaciaron (archivados incluidos)."},"deleted_rows":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Cuántos registros se borraron: facturas, clientes, productos, lotes, ligas, descargas…"},"deleted_events":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Cuántos eventos de pruebas se borraron (con sus entregas)."},"customers_created":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Clientes de ejemplo creados (con seed)."},"products_created":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Productos de ejemplo creados (con seed)."}},"required":["object","livemode","issuers","deleted_rows","deleted_events","customers_created","products_created"],"description":"Lo que se borró (y se creó) al reiniciar los datos de prueba."},"Sandbox":{"type":"object","properties":{"id":{"type":"string","description":"Identificador del objeto, con su prefijo (iss_, inv_, ret_, cus_, prd_, emp_, bat_, brn_, whs_, stm_, adj_, evt_, whe_)."},"object":{"type":"string","const":"sandbox","description":"Qué tipo de objeto es («invoice», «customer»…)."},"livemode":{"type":"boolean","const":false,"description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"name":{"type":"string","description":"Nombre."},"issuers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Emisores activos en el entorno."},"issuer":{"description":"El emisor de pruebas del SAT con que nace (solo al crearlo).","anyOf":[{"$ref":"#/components/schemas/Issuer"},{"type":"null"}]},"key":{"description":"Solo al crearlo.","type":"object","properties":{"id":{"type":"string","description":"Id de la llave."},"secret":{"type":"string","description":"La llave fk_test_… del entorno. Solo se ve esta vez: guárdela."}},"required":["id","secret"]},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo se creó, ISO 8601 con la hora de la Ciudad de México (-06:00)."},"deleted":{"type":"boolean","description":"Siempre true."}},"required":["id","object","livemode","name","issuers","created_at"],"description":"Un entorno de prueba: el modo de pruebas propio de una persona, con su emisor, llaves, webhooks y eventos aparte."},"TestClock":{"type":"object","properties":{"id":{"type":"string","description":"clk_ y la clave del emisor."},"object":{"type":"string","const":"test_clock","description":"Qué tipo de objeto es («invoice», «customer»…)."},"livemode":{"type":"boolean","const":false,"description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"issuer":{"type":"string","description":"El emisor de pruebas que vive en esta hora."},"frozen_time":{"type":"string","format":"date-time","description":"La hora del reloj: el «hoy» del emisor para sus facturas recurrentes, cotizaciones, cuentas por cobrar y tickets."},"status":{"type":"string","enum":["ready","advancing"],"description":"advancing mientras una solicitud lo adelanta; ready en cualquier otro momento."},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo se creó, ISO 8601 con la hora de la Ciudad de México (-06:00)."},"advanced":{"description":"Al adelantarlo: lo que se hizo en el camino.","type":"object","properties":{"recurring_invoices":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Facturas recurrentes timbradas en el camino."},"quotes_expired":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Cotizaciones que vencieron en el camino."},"global_invoices":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Facturas globales de tickets timbradas en el camino."}},"required":["recurring_invoices","quotes_expired","global_invoices"]},"stopped_early":{"description":"true si se detuvo antes de requested_time porque ya timbró 25 comprobantes en esta solicitud: adelántelo otra vez para seguir.","type":"boolean"},"requested_time":{"description":"A dónde se pidió adelantarlo (con stopped_early).","type":"string","format":"date-time"},"deleted":{"type":"boolean","description":"Siempre true."}},"required":["id","object","livemode","issuer","frozen_time","status","created_at"],"description":"El reloj de prueba de un emisor de pruebas: su «hoy», que solo avanza cuando usted lo adelanta, haciendo día por día lo que toca."},"SatDownload":{"type":"object","properties":{"id":{"type":"string","description":"Identificador del objeto, con su prefijo (iss_, inv_, ret_, cus_, prd_, emp_, bat_, brn_, whs_, stm_, adj_, evt_, whe_)."},"livemode":{"type":"boolean","description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"object":{"type":"string","const":"sat_download","description":"Qué tipo de objeto es («invoice», «customer»…)."},"issuer":{"type":"string","description":"El emisor cuyas facturas se piden."},"direction":{"type":"string","enum":["received","issued"],"description":"received (las que le hicieron) o issued (las que emitió)."},"from":{"type":["string","null"],"description":"Desde qué día (incluido)."},"to":{"type":["string","null"],"description":"Hasta qué día (incluido)."},"type":{"anyOf":[{"type":"string","enum":["I","E","P","T","N"]},{"type":"null"}],"description":"El tipo de comprobante pedido, o null si todos."},"counterparty_tax_id":{"type":["string","null"],"description":"El RFC de la contraparte pedido, o null."},"uuid":{"type":["string","null"],"description":"El folio fiscal pedido, o null."},"status":{"type":"string","enum":["processing","completed","failed"],"description":"processing (el SAT la está preparando: de minutos a horas), completed (las facturas ya están en GET /v1/sat_invoices) o failed (el motivo en error)."},"new_invoices":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Cuántas facturas nuevas trajo (las que ya tenía no cuentan). null mientras no termine."},"error":{"type":["string","null"],"description":"Por qué falló, como lo dijo el SAT. null si no falló."},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo se pidió."},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo terminó, o null."}},"required":["id","livemode","object","issuer","direction","from","to","type","counterparty_tax_id","uuid","status","new_invoices","error","created_at","completed_at"],"description":"Una solicitud al SAT de las facturas emitidas o recibidas de un emisor en un periodo."},"SatInvoice":{"type":"object","properties":{"id":{"type":"string","description":"Identificador del objeto, con su prefijo (iss_, inv_, ret_, cus_, prd_, emp_, bat_, brn_, whs_, stm_, adj_, evt_, whe_)."},"livemode":{"type":"boolean","description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"object":{"type":"string","const":"sat_invoice","description":"Qué tipo de objeto es («invoice», «customer»…)."},"issuer":{"type":"string","description":"El emisor de su cuenta (iss_…) a quien pertenece esta factura."},"uuid":{"type":"string","description":"El folio fiscal (UUID del timbre)."},"direction":{"type":"string","enum":["received","issued"],"description":"received (se la hicieron al emisor) o issued (la emitió)."},"type":{"anyOf":[{"type":"string","enum":["I","E","P","T","N"]},{"type":"null"}],"description":"Tipo de comprobante (TipoDeComprobante): I ingreso, E egreso, P pago, T traslado, N nómina."},"date":{"type":"string","description":"La fecha del comprobante (Fecha), en la hora local con que se emitió."},"series":{"type":["string","null"],"description":"Serie (Serie), o null."},"folio":{"type":["string","null"],"description":"Folio (Folio), o null."},"issued_by":{"type":"object","properties":{"tax_id":{"type":"string","description":"RFC (Rfc), 12 caracteres una persona moral y 13 una física."},"legal_name":{"type":["string","null"],"description":"Nombre o razón social tal como está en la constancia de situación fiscal, sin el régimen de capital (sin «S.A. de C.V.»)."}},"required":["tax_id","legal_name"],"description":"Quien la emitió (Emisor)."},"issued_to":{"type":"object","properties":{"tax_id":{"type":"string","description":"RFC (Rfc), 12 caracteres una persona moral y 13 una física."},"legal_name":{"type":["string","null"],"description":"Nombre o razón social tal como está en la constancia de situación fiscal, sin el régimen de capital (sin «S.A. de C.V.»)."}},"required":["tax_id","legal_name"],"description":"A quien se la emitieron (Receptor)."},"currency":{"type":["string","null"],"description":"Moneda (Moneda): MXN, USD…"},"exchange_rate":{"type":["number","null"],"description":"Tipo de cambio (TipoCambio), o null en pesos."},"payment_method":{"type":["string","null"],"description":"Método de pago (MetodoPago): PUE o PPD."},"payment_form":{"type":["string","null"],"description":"Forma de pago (FormaPago), clave de c_FormaPago."},"use":{"type":["string","null"],"description":"Uso del CFDI (UsoCFDI)."},"subtotal":{"type":["number","null"],"description":"Subtotal (SubTotal)."},"total":{"type":["number","null"],"description":"Total (Total)."},"taxes":{"type":"object","properties":{"iva":{"type":"number","description":"IVA trasladado."},"ieps":{"type":"number","description":"IEPS trasladado."},"iva_withheld":{"type":"number","description":"IVA retenido."},"isr_withheld":{"type":"number","description":"ISR retenido."},"ieps_withheld":{"type":"number","description":"IEPS retenido."},"local_transferred":{"type":"number","description":"Impuestos locales trasladados (ISH y similares)."},"local_withheld":{"type":"number","description":"Impuestos locales retenidos."}},"required":["iva","ieps","iva_withheld","isr_withheld","ieps_withheld","local_transferred","local_withheld"],"description":"Impuestos del comprobante: trasladados (iva, ieps), retenidos (iva_withheld, isr_withheld, ieps_withheld) y locales."},"sat_status":{"anyOf":[{"type":"string","enum":["active","canceled"]},{"type":"null"}],"description":"Su estado en el SAT cuando se revisó: active (vigente) o canceled. null si aún no se revisa."},"sat_download":{"type":["string","null"],"description":"La descarga (sdl_…) que la trajo, o null."},"downloaded_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo llegó."}},"required":["id","livemode","object","issuer","uuid","direction","type","date","series","folio","issued_by","issued_to","currency","exchange_rate","payment_method","payment_form","use","subtotal","total","taxes","sat_status","sat_download","downloaded_at"],"description":"Una factura que el SAT tiene del emisor, emitida o recibida, traída con una descarga."},"SatDeclaration":{"type":"object","properties":{"id":{"type":"string","description":"Identificador del objeto, con su prefijo (iss_, inv_, ret_, cus_, prd_, emp_, bat_, brn_, whs_, stm_, adj_, evt_, whe_)."},"livemode":{"type":"boolean","description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"object":{"type":"string","const":"sat_declaration","description":"Qué tipo de objeto es («invoice», «customer»…)."},"issuer":{"type":"string","description":"El emisor que la presentó."},"source":{"type":"string","enum":["monthly","annual","dyp"],"description":"monthly (provisional o definitiva, desde 2022), annual (la anual de persona moral) o dyp (el servicio anterior Declaraciones y pagos, 2021 y antes)."},"year":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"El ejercicio."},"month":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"El mes (1 a 12), o null en la anual y otros periodos."},"period":{"type":"string","description":"El periodo como lo nombra el SAT: «Enero», «Del Ejercicio»…"},"type":{"type":"string","enum":["normal","complementary"],"description":"normal o complementary (complementaria)."},"complementary_type":{"type":["string","null"],"description":"El tipo de complementaria como lo dice el SAT («Modificación de obligaciones»…), o null."},"operation_number":{"type":"string","description":"El número de operación que le dio el SAT."},"payment_line":{"type":["string","null"],"description":"La línea de captura, si hubo algo a pagar."},"filed_on":{"type":["string","null"],"description":"Cuándo se presentó (AAAA-MM-DD)."},"profit_coefficient":{"type":["number","null"],"description":"El coeficiente de utilidad que aplicó (ISR de personas morales), o null."},"isr_due":{"type":["number","null"],"description":"El ISR a cargo, según el acuse."},"vat_due":{"type":["number","null"],"description":"El IVA a cargo, según el acuse."},"total_due":{"type":["number","null"],"description":"El total a pagar, según el acuse."},"sections":{"type":"array","items":{"type":"object","properties":{"tax":{"type":"string","description":"Impuesto: isr, iva o ieps (ImpuestoRet 001, 002, 003)."},"fields":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","description":"El renglón como lo imprime el SAT."},"value":{"type":["number","string"],"description":"Valor de la mercancía (ValorMercancia); obligatorio en transporte aéreo."}},"required":["label","value"]},"description":"Los renglones del impuesto, en el orden del PDF."}},"required":["tax","fields"]},"description":"Las cifras de la declaración por impuesto (tax), cada una con su texto como lo imprime el SAT (label) y su valor. Vacío en las de Declaraciones y pagos (su PDF trae dos columnas que no se leen con certeza) o si el PDF aún no llega."},"receipt":{"anyOf":[{"type":"object","properties":{"concepts":{"type":"array","items":{"type":"object","properties":{"concept":{"type":"string","description":"Concepto del pago (ConceptoPago), c_TipoContribuyenteSujetoRetencion."},"due":{"type":["number","null"],"description":"Lo que resultó a cargo."},"amount_due":{"type":["number","null"],"description":"La cantidad a cargo."},"amount_to_pay":{"type":["number","null"],"description":"La cantidad a pagar."}},"required":["concept","due","amount_due","amount_to_pay"]},"description":"Cada impuesto del acuse."},"total":{"type":["number","null"],"description":"Total en la moneda del comprobante (Total)."},"payment_line":{"type":["string","null"],"description":"La línea de captura del acuse."},"valid_until":{"type":["string","null"],"description":"Hasta cuándo sirve la línea de captura (AAAA-MM-DD)."}},"required":["concepts","total","payment_line","valid_until"]},{"type":"null"}],"description":"Lo que dice el acuse: cada concepto con su cantidad a cargo y a pagar, el total, la línea de captura y su vigencia. null si el acuse aún no llega."},"summary":{"type":"object","properties":{"obligations":{"type":"array","items":{"type":"object","properties":{"obligation":{"type":"string","enum":["isr","vat","ieps","isr_salaries","isr_assimilated_salaries","isr_professional_services","isr_rent","vat_withholdings","other"],"description":"Qué obligación es."},"name":{"type":"string","description":"Su nombre como lo imprime el SAT."},"read":{"type":"boolean","description":"true si sus cifras se leyeron de la declaración; false si solo vienen del acuse."},"amount_due":{"type":["number","null"],"description":"La cantidad a cargo."},"amount_to_pay":{"type":["number","null"],"description":"La cantidad a pagar."},"figures":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":["number","null"]},"description":"Sus cifras con nombres fijos. ISR: income, invoiced_income, income_ytd, deductions, profit_coefficient, taxable_profit, losses_applied, tax_base, tax_caused, prior_payments, withheld. IVA: taxable_16, taxable_0, exempt, charged, paid_16, creditable, withheld, balance_applied. Salarios: workers, payments, exempt, withheld. Todas: surcharges, inflation, paid_before, due, in_favor, to_pay. null si no viene o no se pudo leer."}},"required":["obligation","name","read","amount_due","amount_to_pay","figures"]},"description":"Cada obligación de la declaración: isr, vat, ieps, isr_salaries, isr_assimilated_salaries, isr_professional_services, isr_rent, vat_withholdings u other."},"total_to_pay":{"type":["number","null"],"description":"El total a pagar del acuse; si no hay acuse, la suma de las obligaciones cuando todas se conocen."}},"required":["obligations","total_to_pay"],"description":"Las mismas cifras con nombres fijos, por obligación (ISR, IVA, cada retención), para leerlas igual cada mes sin conocer el formato del SAT. Una cifra que no viene en la declaración o no se pudo leer es null, nunca 0. En Declaraciones y pagos solo trae lo del acuse."},"files":{"type":"object","properties":{"pdf":{"type":"boolean","description":"Si ya tiene la declaración en PDF (GET …/pdf)."},"receipt":{"type":"boolean","description":"Si ya tiene el acuse (GET …/receipt)."},"financial_statements":{"type":"boolean","description":"Si ya tiene el Excel de estados financieros (GET …/financial_statements), solo en la anual de persona moral."}},"required":["pdf","receipt","financial_statements"],"description":"Qué archivos ya tiene: pdf (GET …/pdf), receipt (GET …/receipt) y financial_statements (GET …/financial_statements, solo en la anual de persona moral)."},"files_error":{"type":["string","null"],"description":"Por qué falta un archivo, como lo dijo el SAT (por ejemplo «No se puede generar el archivo»). Se vuelve a pedir en la siguiente consulta."},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo se trajo por primera vez."},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo cambió por última vez."}},"required":["id","livemode","object","issuer","source","year","month","period","type","complementary_type","operation_number","payment_line","filed_on","profit_coefficient","isr_due","vat_due","total_due","sections","receipt","summary","files","files_error","created_at","updated_at"],"description":"Una declaración que el emisor presentó ante el SAT (provisional o definitiva, anual o del servicio anterior Declaraciones y pagos), con sus cifras y sus archivos."},"SatDeclarationsRefresh":{"type":"object","properties":{"object":{"type":"string","const":"sat_declarations_refresh","description":"Qué tipo de objeto es («invoice», «customer»…)."},"livemode":{"type":"boolean","description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"issuer":{"type":"string","description":"El emisor consultado."},"status":{"type":"string","enum":["completed","processing"],"description":"completed (ya bajó todo) o processing (queda algo por bajar: sigue solo en la siguiente hora, sin otro timbre)."},"found":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Cuántas declaraciones listó el SAT en los años consultados."},"downloaded":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Cuántos archivos bajó en esta consulta."},"pending":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Cuántas declaraciones quedan con archivos por bajar."},"warning":{"type":["string","null"],"description":"Si una parte del SAT falló (por ejemplo, la anual), lo que dijo; lo demás sí se trajo. null si todo salió."},"refreshed_at":{"type":"string","format":"date-time","description":"Cuándo se consultó."},"next_refresh_at":{"type":"string","format":"date-time","description":"Desde cuándo se puede volver a consultar este emisor (10 minutos después)."}},"required":["object","livemode","issuer","status","found","downloaded","pending","warning","refreshed_at","next_refresh_at"],"description":"Lo que trajo una consulta de las declaraciones del emisor en el SAT."},"SatDeclarationCalendar":{"type":"object","properties":{"object":{"type":"string","const":"sat_declaration_calendar","description":"Qué tipo de objeto es («invoice», «customer»…)."},"livemode":{"type":"boolean","description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"issuer":{"type":"string","description":"El emisor."},"year":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"El ejercicio."},"missing":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Cuántas obligaciones ya vencidas no encontramos presentadas en el SAT."},"months":{"type":"array","items":{"type":"object","properties":{"month":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"El mes (1 a 12), o null para la anual."},"due_on":{"type":"string","description":"El último día para presentarla (AAAA-MM-DD)."},"obligations":{"type":"array","items":{"type":"object","properties":{"obligation":{"anyOf":[{"type":"string","enum":["isr","vat","ieps","isr_salaries","isr_assimilated_salaries","isr_professional_services","isr_rent","vat_withholdings","other"]},{"type":"string","const":"annual_return"}],"description":"Qué obligación es (las de summary.obligations), o annual_return para la anual."},"status":{"type":"string","enum":["filed","missing","due"],"description":"filed (presentada), missing (venció y no la encontramos) o due (aún no vence)."},"declarations":{"type":"array","items":{"type":"string"},"description":"Las declaraciones (dcl_…) que la presentaron, la normal y sus complementarias."}},"required":["obligation","status","declarations"]},"description":"Las obligaciones del mes."}},"required":["month","due_on","obligations"]},"description":"Los 12 meses y, en persona moral, la anual (month null). Las obligaciones se deducen de lo que el emisor presenta: ISR e IVA cada mes desde el primero que presentó; una retención si la presentó en 2 de los 3 meses anteriores o antes y después. La opinión de cumplimiento del SAT es la que manda."}},"required":["object","livemode","issuer","year","missing","months"],"description":"El ejercicio del emisor mes por mes: qué obligaciones presentó, cuáles parecen faltar y cuáles aún no vencen."},"Branch":{"type":"object","properties":{"id":{"type":"string","description":"Identificador del objeto, con su prefijo (iss_, inv_, ret_, cus_, prd_, emp_, bat_, brn_, whs_, stm_, adj_, evt_, whe_)."},"livemode":{"type":"boolean","description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"object":{"type":"string","const":"branch","description":"Qué tipo de objeto es («invoice», «customer»…)."},"issuer":{"type":"string","description":"El emisor de la sucursal."},"name":{"type":"string","description":"Cómo la llama su equipo; va en el PDF."},"zip":{"type":"string","description":"Su código postal: el LugarExpedicion de sus CFDI."},"address":{"type":"object","properties":{"street":{"type":["string","null"],"description":"Calle (Calle)."},"exterior":{"type":["string","null"],"description":"Número exterior (NumeroExterior)."},"interior":{"type":["string","null"],"description":"Número interior (NumeroInterior)."},"neighborhood":{"type":["string","null"],"description":"Colonia."},"city":{"type":["string","null"],"description":"Municipio o alcaldía."},"state":{"type":["string","null"],"description":"Estado (Estado): en el extranjero c_Estado para USA y CAN, o texto."}},"required":["street","exterior","interior","neighborhood","city","state"],"description":"Su dirección, en el PDF de sus facturas."},"phone":{"type":["string","null"],"description":"Teléfono, en el PDF, o null."},"email":{"type":["string","null"],"description":"Correo, en el PDF, o null."},"series":{"type":"object","properties":{"invoice":{"type":["string","null"],"description":"Serie de sus facturas (tipo I); null, la del emisor."},"credit_note":{"type":["string","null"],"description":"Serie de sus notas de crédito (tipo E); null, la del emisor."},"payment":{"type":["string","null"],"description":"Serie de sus complementos de pago (tipo P); null, la del emisor."},"transfer":{"type":["string","null"],"description":"Serie de sus traslados (tipo T); null, la del emisor."}},"required":["invoice","credit_note","payment","transfer"],"description":"La serie de cada tipo de CFDI que se timbra desde ella; null usa la del emisor."},"archived":{"type":"boolean","description":"true si está archivada: ya no se factura desde ella."},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo se creó."},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo cambió por última vez."}},"required":["id","livemode","object","issuer","name","zip","address","phone","email","series","archived","created_at","updated_at"],"description":"Una sucursal del emisor: otro lugar desde donde factura, con su código postal (LugarExpedicion), su dirección en el PDF y sus series."},"Warehouse":{"type":"object","properties":{"id":{"type":"string","description":"Identificador del objeto, con su prefijo (iss_, inv_, ret_, cus_, prd_, emp_, bat_, brn_, whs_, stm_, adj_, evt_, whe_)."},"livemode":{"type":"boolean","description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"object":{"type":"string","const":"warehouse","description":"Qué tipo de objeto es («invoice», «customer»…)."},"issuer":{"type":"string","description":"El emisor del almacén."},"name":{"type":"string","description":"Su nombre («Matriz», el de su sucursal, o el que le dieron en la app)."},"code":{"type":["string","null"],"description":"Su clave corta, o null."},"type":{"type":"string","enum":["warehouse","consignment"],"description":"warehouse (almacén propio) o consignment (mercancía en consignación con un cliente, todavía suya)."},"branch":{"type":["string","null"],"description":"Su sucursal (brn_…), o null si es de la Matriz."},"default":{"type":"boolean","description":"true si es el almacén del que vende y recibe su sucursal."},"archived":{"type":"boolean","description":"true si está archivado."},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo se creó."}},"required":["id","livemode","object","issuer","name","code","type","branch","default","archived","created_at"],"description":"Un almacén del emisor: el de la Matriz y uno por sucursal se crean solos; cada factura saca existencias del de su sucursal."},"StockLevel":{"type":"object","properties":{"id":{"type":"string","description":"Su id (stl_…): el producto en ese almacén. Sirve como starting_after."},"livemode":{"type":"boolean","description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"object":{"type":"string","const":"stock_level","description":"Qué tipo de objeto es («invoice», «customer»…)."},"product":{"type":"string","description":"El producto (prd_…)."},"warehouse":{"type":"string","description":"El almacén (whs_…)."},"on_hand":{"type":"number","description":"Lo que hay, en la unidad del producto (todos sus lotes)."},"reserved":{"type":"number","description":"Lo apartado por cotizaciones aceptadas que no se han facturado."},"available":{"type":"number","description":"on_hand menos reserved: lo que se puede vender."},"value":{"type":"number","description":"Lo que valen esas existencias a su costo, en pesos sin IVA."},"average_cost":{"type":["number","null"],"description":"value / on_hand: el costo por unidad, o null sin existencias."}},"required":["id","livemode","object","product","warehouse","on_hand","reserved","available","value","average_cost"],"description":"Lo que hay de un producto en un almacén, y lo que vale."},"StockMovement":{"type":"object","properties":{"id":{"type":"string","description":"Identificador del objeto, con su prefijo (iss_, inv_, ret_, cus_, prd_, emp_, bat_, brn_, whs_, stm_, adj_, evt_, whe_)."},"livemode":{"type":"boolean","description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"object":{"type":"string","const":"stock_movement","description":"Qué tipo de objeto es («invoice», «customer»…)."},"issuer":{"type":"string","description":"El emisor."},"product":{"type":"string","description":"El producto (prd_…)."},"warehouse":{"type":"string","description":"El almacén (whs_…)."},"type":{"type":"string","enum":["sale","purchase","customer_return","supplier_return","adjustment","count","transfer_out","transfer_in","initial","cost","reversal"],"description":"sale (una factura), purchase (una compra), customer_return, supplier_return, adjustment, count (conteo físico), transfer_out, transfer_in, initial, cost (un ajuste de costo) o reversal (deshace otro, como una factura cancelada)."},"quantity":{"type":"number","description":"Cuánto entró (positivo) o salió (negativo)."},"unit_cost":{"type":"number","description":"El costo por unidad con que entró o salió, en pesos sin IVA."},"value":{"type":"number","description":"quantity × unit_cost: lo que cambió el valor del inventario."},"lot":{"type":["string","null"],"description":"El lote o número de serie, o null."},"source":{"type":"object","properties":{"type":{"type":"string","description":"Tipo de comprobante (TipoDeComprobante): I ingreso, E egreso, P pago, T traslado, N nómina."},"id":{"type":"string","description":"Identificador del objeto, con su prefijo (iss_, inv_, ret_, cus_, prd_, emp_, bat_, brn_, whs_, stm_, adj_, evt_, whe_)."}},"required":["type","id"],"description":"Lo que lo causó: type invoice (id es el UUID del CFDI), adjustment (adj_…), receipt, transfer, count o ticket."},"reason":{"type":["string","null"],"description":"El motivo de un ajuste, o null."},"date":{"type":["string","null"],"description":"Cuándo pasó, hora de la Ciudad de México (la Fecha del CFDI en una venta)."},"reversed":{"type":"boolean","description":"true si un movimiento posterior lo deshizo."},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo se registró."}},"required":["id","livemode","object","issuer","product","warehouse","type","quantity","unit_cost","value","lot","source","reason","date","reversed","created_at"],"description":"Una entrada o salida de existencias (el kárdex): una venta, una compra, un ajuste, un traspaso…"},"StockAdjustment":{"type":"object","properties":{"id":{"type":"string","description":"Identificador del objeto, con su prefijo (iss_, inv_, ret_, cus_, prd_, emp_, bat_, brn_, whs_, stm_, adj_, evt_, whe_)."},"livemode":{"type":"boolean","description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"object":{"type":"string","const":"stock_adjustment","description":"Qué tipo de objeto es («invoice», «customer»…)."},"issuer":{"type":"string","description":"El emisor."},"warehouse":{"type":"string","description":"El almacén (whs_…)."},"reason":{"type":"string","enum":["shrinkage","theft","damage","expiration","internal_use","gift","initial","surplus","count","other"],"description":"El motivo (ver POST /v1/stock_adjustments)."},"note":{"type":["string","null"],"description":"Su nota, o null."},"status":{"type":"string","enum":["applied","pending","rejected","reversed"],"description":"applied (ya movió existencias), pending (espera aprobación en la app), rejected o reversed (se deshizo)."},"value":{"type":"number","description":"Lo que vale lo que movió, en pesos sin IVA."},"lines":{"type":"array","items":{"type":"object","properties":{"product":{"type":"string","description":"Un producto de su catálogo (prd_…): toma su clave, unidad, precio e impuestos."},"quantity":{"type":"number","description":"Cantidad (Cantidad). Por omisión 1."},"unit_cost":{"type":["number","null"],"description":"El costo por unidad que se dio al ajuste, en pesos sin IVA, o null (el costo promedio)."},"lot":{"type":["string","null"],"description":"Lote del medicamento (LoteMedicamento)."}},"required":["product","quantity","unit_cost","lot"]},"description":"Lo que entró o salió de cada producto."},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo se hizo."}},"required":["id","livemode","object","issuer","warehouse","reason","note","status","value","lines","created_at"],"description":"Un ajuste de existencias: lo que entró o salió de un almacén por inventario inicial, merma, robo, conteo…"},"ComplianceOpinion":{"type":"object","properties":{"object":{"type":"string","const":"compliance_opinion","description":"Qué tipo de objeto es («invoice», «customer»…)."},"livemode":{"type":"boolean","description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"issuer":{"type":"string","description":"El emisor."},"result":{"anyOf":[{"type":"string","enum":["positive","negative","no_obligations","suspended"]},{"type":"null"}],"description":"positive, negative, no_obligations (inscrito sin obligaciones) o suspended (en suspensión de actividades); null si no se ha consultado."},"date":{"type":["string","null"],"description":"El día que la emitió el SAT (AAAA-MM-DD), o null."},"folio":{"type":["string","null"],"description":"Su folio, o null."},"reasons":{"type":"array","items":{"type":"string"},"description":"Si es negativa, lo que el SAT marca como pendiente."},"pdf":{"type":"boolean","description":"true si su PDF está en GET /v1/issuers/{id}/compliance_opinion/pdf."},"checked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo se consultó por última vez, o null."},"last_error":{"type":["string","null"],"description":"Por qué falló la última consulta, o null."}},"required":["object","livemode","issuer","result","date","folio","reasons","pdf","checked_at","last_error"],"description":"La opinión de cumplimiento de obligaciones fiscales (32-D) más reciente del emisor, como la dio el SAT."},"TaxStatusCertificate":{"type":"object","properties":{"object":{"type":"string","const":"tax_status_certificate","description":"Qué tipo de objeto es («invoice», «customer»…)."},"livemode":{"type":"boolean","description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"issuer":{"type":"string","description":"El emisor."},"issued_on":{"type":["string","null"],"description":"El día que la emitió el SAT (AAAA-MM-DD), o null."},"id_cif":{"type":["string","null"],"description":"Su idCIF, o null."},"tax_id":{"type":"string","description":"El RFC."},"legal_name":{"type":["string","null"],"description":"Nombre o razón social como la tiene el SAT, o null."},"tax_systems":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"Clave del régimen fiscal (c_RegimenFiscal): 601, 612, 626…"},"name":{"type":"string","description":"Nombre del régimen fiscal, como lo escribe el SAT."}},"required":["code","name"]},"description":"Sus regímenes fiscales (clave de c_RegimenFiscal y nombre)."},"zip":{"type":["string","null"],"description":"El código postal de su domicilio fiscal, o null."},"status":{"type":["string","null"],"description":"Estatus en el padrón (ACTIVO, SUSPENDIDO…), o null."},"pdf":{"type":"boolean","description":"true si su PDF está en GET /v1/issuers/{id}/tax_status_certificate/pdf."},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo se generó."}},"required":["object","livemode","issuer","issued_on","id_cif","tax_id","legal_name","tax_systems","zip","status","pdf","created_at"],"description":"La constancia de situación fiscal más reciente del emisor, generada en el SAT con su e.firma."},"SatMailboxMessage":{"type":"object","properties":{"id":{"type":"string","description":"Identificador del objeto, con su prefijo (iss_, inv_, ret_, cus_, prd_, emp_, bat_, brn_, whs_, stm_, adj_, evt_, whe_)."},"livemode":{"type":"boolean","description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"object":{"type":"string","const":"sat_mailbox_message","description":"Qué tipo de objeto es («invoice», «customer»…)."},"issuer":{"type":"string","description":"El emisor."},"subject":{"type":"string","description":"Su asunto."},"summary":{"type":["string","null"],"description":"Su texto, resumido, o null."},"source":{"type":"string","enum":["mailbox","email"],"description":"mailbox (el buzón del portal) o email (un aviso que el SAT mandó por correo)."},"unread":{"type":"boolean","description":"true si no se ha leído en el SAT."},"urgency":{"type":"string","enum":["urgent","attention","informational"],"description":"urgent (un requerimiento, un plazo), attention o informational."},"kind":{"type":"string","description":"Qué es: requerimiento, carta invitación, informativo…"},"action_required":{"type":"boolean","description":"true si pide hacer algo."},"received_at":{"type":["string","null"],"description":"Cuándo llegó, como lo dice el SAT."},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo lo trajo Fiscalisto."}},"required":["id","livemode","object","issuer","subject","summary","source","unread","urgency","kind","action_required","received_at","created_at"],"description":"Un aviso del buzón tributario del SAT del emisor."},"SatRefresh":{"type":"object","properties":{"object":{"type":"string","const":"sat_refresh","description":"Qué tipo de objeto es («invoice», «customer»…)."},"livemode":{"type":"boolean","description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"issuer":{"type":"string","description":"El emisor."},"document":{"type":"string","enum":["compliance_opinion","tax_status_certificate","sat_mailbox"],"description":"Qué se consultó."},"status":{"type":"string","enum":["completed","processing"],"description":"completed (ya está en url) o processing (el SAT tarda; llega a url en unos minutos)."},"refreshed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo se pidió."},"next_refresh_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Desde cuándo se puede pedir otra vez."},"url":{"type":"string","description":"Dónde leer lo que trajo."}},"required":["object","livemode","issuer","document","status","refreshed_at","next_refresh_at","url"],"description":"Una consulta al SAT de un documento del emisor: si ya terminó y dónde leerlo."},"SatFinding":{"type":"object","properties":{"id":{"type":"string","description":"El código del hallazgo (el mismo que code)."},"livemode":{"type":"boolean","description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"object":{"type":"string","const":"sat_finding","description":"Qué tipo de objeto es («invoice», «customer»…)."},"issuer":{"type":"string","description":"El emisor."},"code":{"type":"string","description":"El código del hallazgo, estable (por ejemplo efos_definitivo)."},"severity":{"type":"string","enum":["critical","warning","info"],"description":"critical (grave), warning (revisar) o info."},"title":{"type":"string","description":"Qué es, en palabras."},"explanation":{"type":["string","null"],"description":"Por qué importa y qué hacer, o null."},"invoices":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Cuántos CFDI lo tienen, sin revisar."},"amount":{"type":"number","description":"La suma de sus totales."}},"required":["id","livemode","object","issuer","code","severity","title","explanation","invoices","amount"],"description":"Un tipo de hallazgo en los CFDI del emisor (un proveedor en la lista 69-B, un CFDI cancelado, un pago en efectivo de más de $2,000…), con cuántos CFDI lo tienen."},"Ticket":{"type":"object","properties":{"id":{"type":"string","description":"Identificador del objeto, con su prefijo (iss_, inv_, ret_, cus_, prd_, emp_, bat_, brn_, whs_, stm_, adj_, evt_, whe_)."},"livemode":{"type":"boolean","description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"object":{"type":"string","const":"ticket","description":"Qué tipo de objeto es («invoice», «customer»…)."},"issuer":{"type":"string","description":"El emisor que vendió."},"folio":{"type":"string","description":"El folio de la venta en su sistema."},"code":{"type":"string","description":"Lo que su comprador escribe en el portal junto con el total: el folio y 4 caracteres al azar (A123-K7QX). Imprímalo en el ticket o mándelo con la compra."},"status":{"type":"string","enum":["pending","invoiced","global","cancelled"],"description":"pending (se puede facturar), invoiced (su comprador lo facturó: la factura en invoice), global (entró en la factura global del periodo) o cancelled."},"url":{"type":["string","null"],"description":"La página del portal con el código ya escrito: el comprador pone el total y sus datos. Puede incrustarla con fiscalisto.js. null si ya no está pendiente."},"total":{"type":"number","description":"Lo que se cobró, impuestos incluidos y sin propina."},"tip":{"type":"number","description":"La propina (no va en la factura)."},"payment_form":{"type":"string","description":"c_FormaPago de la venta."},"description":{"type":"string","description":"El concepto de la factura."},"product_key":{"type":"string","description":"c_ClaveProdServ del concepto."},"sold_at":{"type":"string","format":"date-time","description":"Cuándo se vendió."},"invoiceable_until":{"type":"string","description":"El último día (AAAA-MM-DD) en que el comprador puede facturarlo; después entra en la factura global."},"invoice":{"type":["string","null"],"description":"La factura (inv_…) que hizo su comprador, o null."},"global_invoice":{"type":["string","null"],"description":"La factura global (inv_…) en que entró, o null."},"customer":{"anyOf":[{"type":"object","properties":{"tax_id":{"type":"string","description":"RFC (Rfc), 12 caracteres una persona moral y 13 una física."},"legal_name":{"type":["string","null"],"description":"Nombre o razón social tal como está en la constancia de situación fiscal, sin el régimen de capital (sin «S.A. de C.V.»)."}},"required":["tax_id","legal_name"]},{"type":"null"}],"description":"A quién se facturó, o null."},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo se registró."}},"required":["id","livemode","object","issuer","folio","code","status","url","total","tip","payment_form","description","product_key","sold_at","invoiceable_until","invoice","global_invoice","customer","created_at"],"description":"Una venta que su comprador puede facturar él mismo en el portal del emisor (autofactura)."},"SelfInvoicing":{"type":"object","properties":{"object":{"type":"string","const":"self_invoicing","description":"Qué tipo de objeto es («invoice», «customer»…)."},"livemode":{"type":"boolean","description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"issuer":{"type":"string","description":"El emisor."},"portal_url":{"type":"string","description":"El portal permanente del emisor: ahí cualquier comprador factura con su código y su total."},"window":{"type":"string","enum":["month","days"],"description":"month: se factura hasta el fin del mes de la venta. days: hasta window_days días después."},"window_days":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Días para facturar con window: days."},"global_periodicity":{"type":"string","enum":["01","02","03","04"],"description":"Cada cuánto se timbra sola la factura global con lo que nadie facturó: 01 diaria, 02 semanal, 03 quincenal, 04 mensual."}},"required":["object","livemode","issuer","portal_url","window","window_days","global_periodicity"],"description":"El portal de autofactura de un emisor y sus reglas."},"RecurringInvoice":{"type":"object","properties":{"id":{"type":"string","description":"Identificador del objeto, con su prefijo (iss_, inv_, ret_, cus_, prd_, emp_, bat_, brn_, whs_, stm_, adj_, evt_, whe_)."},"livemode":{"type":"boolean","description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"object":{"type":"string","const":"recurring_invoice","description":"Qué tipo de objeto es («invoice», «customer»…)."},"issuer":{"type":"string","description":"El emisor (iss_…)."},"name":{"type":"string","description":"Para reconocerla."},"status":{"type":"string","enum":["active","paused"],"description":"active (timbra en cada fecha) o paused."},"schedule":{"type":"object","properties":{"frequency":{"type":"string","enum":["monthly","weekly","daily"],"description":"monthly: cada interval meses en day_of_month. weekly o daily: cada interval semanas o días."},"interval":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Cada cuántos meses, semanas o días."},"day_of_month":{"anyOf":[{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"string","const":"last"}]},{"type":"null"}],"description":"Con monthly: el día del mes, del 1 al 28, o \"last\" (el último). null con weekly o daily."},"hour":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"La hora (0 a 23) en que se timbra, en time_zone."},"time_zone":{"type":"string","description":"La zona de esa hora (America/Mexico_City, America/Cancun…)."}},"required":["frequency","interval","day_of_month","hour","time_zone"],"description":"Cada cuánto: frequency (monthly, weekly o daily), interval, day_of_month (con monthly; \"last\" es el último del mes), y la hora (hour, en time_zone) en que se timbra."},"next_invoice_on":{"type":"string","description":"La fecha (AAAA-MM-DD) de la siguiente factura."},"last_invoiced_on":{"type":["string","null"],"description":"La fecha del último periodo que timbró, o null si aún no timbra ninguna."},"last_invoice":{"type":["string","null"],"description":"La última factura (inv_…) que timbró, o null."},"last_error":{"anyOf":[{"type":"object","properties":{"message":{"type":["string","null"],"description":"Qué pasó."}},"required":["message"]},{"type":"null"}],"description":"Por qué no se pudo timbrar la última vez (sin timbres, el cliente borrado, el SAT la rechazó…), o null. Se vuelve a intentar a la siguiente hora del día siguiente; también llega recurring_invoice.failed."},"send_email":{"type":"boolean","description":"Si cada factura se manda al correo del cliente."},"catch_up":{"type":"string","enum":["all","latest"],"description":"Si quedaron periodos sin timbrar: all los timbra todos, latest solo el más reciente."},"customer":{"type":"object","properties":{"tax_id":{"type":"string","description":"RFC (Rfc), 12 caracteres una persona moral y 13 una física."},"legal_name":{"type":["string","null"],"description":"Nombre o razón social tal como está en la constancia de situación fiscal, sin el régimen de capital (sin «S.A. de C.V.»)."}},"required":["tax_id","legal_name"],"description":"A quién se factura."},"currency":{"type":"string","description":"La moneda de la factura."},"items":{"type":"array","items":{"type":"object","properties":{"description":{"type":"string","description":"Descripción del concepto (Descripcion), hasta 1,000 caracteres."},"product_key":{"type":"string","description":"Clave del producto o servicio (ClaveProdServ), 8 dígitos de c_ClaveProdServ. Búsquela con GET /v1/sat_catalogs/product_keys?q=…"},"quantity":{"type":"number","description":"Cantidad (Cantidad). Por omisión 1."},"unit_key":{"type":"string","description":"Clave de unidad (ClaveUnidad) de c_ClaveUnidad: E48 unidad de servicio (por omisión), H87 pieza, ACT actividad…"},"unit_price":{"type":"number","description":"Precio unitario antes de impuestos (ValorUnitario)."}},"required":["description","product_key","unit_price"]},"description":"Los conceptos, con description tal como se guardó ({mes}, {año}… se llenan en cada factura)."},"total":{"type":["number","null"],"description":"El total de cada factura con los precios de hoy."},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo se creó."}},"required":["id","livemode","object","issuer","name","status","schedule","next_invoice_on","last_invoiced_on","last_invoice","last_error","send_email","catch_up","customer","currency","items","total","created_at"],"description":"Una factura que el emisor timbra solo, cada mes, semana o día."},"JournalEntry":{"type":"object","properties":{"id":{"type":"string","description":"El número de la póliza: D-AAAAMM-NNNNN, en orden de fecha dentro del mes."},"livemode":{"type":"boolean","description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"object":{"type":"string","const":"journal_entry","description":"Qué tipo de objeto es («invoice», «customer»…)."},"issuer":{"type":"string","description":"El emisor."},"type":{"type":"string","enum":["invoice","payment_received","payment_made","payroll","depreciation"],"description":"De qué es: invoice (un CFDI de ingreso o egreso), payment_received o payment_made (un pago de un complemento), payroll (un recibo de nómina) o depreciation (la depreciación del mes de los activos fijos)."},"date":{"type":"string","description":"La fecha del CFDI o del pago; en la depreciación, el último día del mes."},"description":{"type":"string","description":"El documento, su folio y la contraparte."},"invoice":{"type":["string","null"],"description":"La factura (inv_…) si es la póliza de un CFDI que timbró este emisor; null en los demás casos."},"uuid":{"type":["string","null"],"description":"El folio fiscal del CFDI (o del complemento de pago); null en la depreciación."},"tax_id":{"type":["string","null"],"description":"El RFC de la contraparte (cliente, proveedor o empleado); null en la depreciación."},"total":{"type":"number","description":"El total del documento, en su moneda."},"currency":{"type":"string","description":"La moneda del documento."},"exchange_rate":{"type":["number","null"],"description":"El tipo de cambio, si no es en pesos; null si es en pesos."},"lines":{"type":"array","items":{"type":"object","properties":{"account":{"type":"string","description":"El número de cuenta."},"account_name":{"type":"string","description":"El nombre de la cuenta."},"grouping_code":{"type":"string","description":"Su código agrupador del SAT."},"debit":{"type":"number","description":"El cargo, en pesos."},"credit":{"type":"number","description":"El abono, en pesos."}},"required":["account","account_name","grouping_code","debit","credit"]},"description":"Los movimientos, en pesos: el cargo (debit) o abono (credit) a cada cuenta."}},"required":["id","livemode","object","issuer","type","date","description","invoice","uuid","tax_id","total","currency","exchange_rate","lines"],"description":"Una póliza de diario (de un CFDI, un pago, un recibo de nómina o la depreciación del mes): sus cargos y abonos, que siempre cuadran."},"LedgerAccount":{"type":"object","properties":{"object":{"type":"string","const":"ledger_account","description":"Qué tipo de objeto es («invoice», «customer»…)."},"number":{"type":"string","description":"El número de cuenta (NumCta)."},"name":{"type":"string","description":"Su nombre."},"grouping_code":{"type":"string","description":"El código agrupador del SAT (Anexo 24)."},"nature":{"type":"string","enum":["debit","credit"],"description":"debit (deudora) o credit (acreedora)."}},"required":["object","number","name","grouping_code","nature"],"description":"Una cuenta del catálogo, con su código agrupador del SAT."},"TrialBalance":{"type":"object","properties":{"object":{"type":"string","const":"trial_balance","description":"Qué tipo de objeto es («invoice», «customer»…)."},"livemode":{"type":"boolean","description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"issuer":{"type":"string","description":"El emisor."},"month":{"type":"string","description":"El mes (AAAA-MM)."},"journal_entries":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Cuántas pólizas tuvo el mes."},"accounts":{"type":"array","items":{"type":"object","properties":{"object":{"type":"string","const":"ledger_account","description":"Qué tipo de objeto es («invoice», «customer»…)."},"number":{"type":"string","description":"Número de empleado (NumEmpleado)."},"name":{"type":"string","description":"Nombre."},"grouping_code":{"type":"string","description":"El código agrupador del SAT."},"nature":{"type":"string","enum":["debit","credit"],"description":"debit (deudora) o credit (acreedora)."},"opening_balance":{"type":"number","description":"El saldo al empezar el mes."},"debit":{"type":"number","description":"Los cargos del mes."},"credit":{"type":"number","description":"Los abonos del mes."},"closing_balance":{"type":"number","description":"El saldo al terminar el mes."}},"required":["object","number","name","grouping_code","nature","opening_balance","debit","credit","closing_balance"]},"description":"Cada cuenta con movimiento o saldo: saldo inicial, cargos, abonos y saldo final."},"totals":{"type":"object","properties":{"debit":{"type":"number","description":"Todos los cargos del mes."},"credit":{"type":"number","description":"Todos los abonos del mes."}},"required":["debit","credit"],"description":"Cargos y abonos del mes: siempre iguales."}},"required":["object","livemode","issuer","month","journal_entries","accounts","totals"],"description":"La balanza de comprobación de un mes."},"FinancialStatements":{"type":"object","properties":{"object":{"type":"string","const":"financial_statements","description":"Qué tipo de objeto es («invoice», «customer»…)."},"livemode":{"type":"boolean","description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"issuer":{"type":"string","description":"El emisor."},"month":{"type":"string","description":"El mes (AAAA-MM)."},"income_statement":{"type":"object","properties":{"month":{"type":"object","properties":{"sections":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","enum":["ingresos","costos","gastos","financiamiento","otros"],"description":"El archivo .key en base64 (puede traer el prefijo data:)."},"name":{"type":"string","description":"Nombre."},"total":{"type":"number","description":"Total en la moneda del comprobante (Total)."},"groups":{"type":"array","items":{"type":"object","properties":{"grouping_code":{"type":"string","description":"El primer nivel del código agrupador (401, 601…)."},"name":{"type":"string","description":"Nombre."},"amount":{"type":"number","description":"Importe."},"accounts":{"type":"array","items":{"type":"object","properties":{"number":{"type":"string","description":"Número de empleado (NumEmpleado)."},"name":{"type":"string","description":"Nombre."},"amount":{"type":"number","description":"Importe."}},"required":["number","name","amount"]},"description":"Las cuentas del grupo con su monto."}},"required":["grouping_code","name","amount","accounts"]},"description":"Su monto por el primer nivel del código agrupador."}},"required":["key","name","total","groups"]},"description":"Ingresos, costos, gastos, financiamiento y otros, cada uno con su total."},"net_income":{"type":"number","description":"La utilidad (o pérdida, negativa) antes de impuestos del mes."}},"required":["sections","net_income"],"description":"El estado de resultados del mes."},"year_to_date":{"type":"object","properties":{"sections":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","enum":["ingresos","costos","gastos","financiamiento","otros"],"description":"El archivo .key en base64 (puede traer el prefijo data:)."},"name":{"type":"string","description":"Nombre."},"total":{"type":"number","description":"Total en la moneda del comprobante (Total)."},"groups":{"type":"array","items":{"type":"object","properties":{"grouping_code":{"type":"string","description":"El primer nivel del código agrupador (401, 601…)."},"name":{"type":"string","description":"Nombre."},"amount":{"type":"number","description":"Importe."},"accounts":{"type":"array","items":{"type":"object","properties":{"number":{"type":"string","description":"Número de empleado (NumEmpleado)."},"name":{"type":"string","description":"Nombre."},"amount":{"type":"number","description":"Importe."}},"required":["number","name","amount"]},"description":"Las cuentas del grupo con su monto."}},"required":["grouping_code","name","amount","accounts"]},"description":"Su monto por el primer nivel del código agrupador."}},"required":["key","name","total","groups"]},"description":"Ingresos, costos, gastos, financiamiento y otros, cada uno con su total."},"net_income":{"type":"number","description":"La utilidad (o pérdida, negativa) antes de impuestos de enero al mes."}},"required":["sections","net_income"],"description":"El estado de resultados de enero al mes."}},"required":["month","year_to_date"],"description":"El estado de resultados del mes (month) y del año hasta ese mes (year_to_date). Cada sección suma en positivo lo que aumenta la utilidad (ingresos) y en negativo lo que la reduce (costos y gastos)."},"balance_sheet":{"type":"object","properties":{"assets":{"type":"object","properties":{"total":{"type":"number","description":"Total en la moneda del comprobante (Total)."},"groups":{"type":"array","items":{"type":"object","properties":{"grouping_code":{"type":"string","description":"El primer nivel del código agrupador (401, 601…)."},"name":{"type":"string","description":"Nombre."},"amount":{"type":"number","description":"Importe."},"accounts":{"type":"array","items":{"type":"object","properties":{"number":{"type":"string","description":"Número de empleado (NumEmpleado)."},"name":{"type":"string","description":"Nombre."},"amount":{"type":"number","description":"Importe."}},"required":["number","name","amount"]},"description":"Las cuentas del grupo con su monto."}},"required":["grouping_code","name","amount","accounts"]},"description":"Su monto por el primer nivel del código agrupador."}},"required":["total","groups"],"description":"El activo: su total y sus grupos."},"liabilities":{"type":"object","properties":{"total":{"type":"number","description":"Total en la moneda del comprobante (Total)."},"groups":{"type":"array","items":{"type":"object","properties":{"grouping_code":{"type":"string","description":"El primer nivel del código agrupador (401, 601…)."},"name":{"type":"string","description":"Nombre."},"amount":{"type":"number","description":"Importe."},"accounts":{"type":"array","items":{"type":"object","properties":{"number":{"type":"string","description":"Número de empleado (NumEmpleado)."},"name":{"type":"string","description":"Nombre."},"amount":{"type":"number","description":"Importe."}},"required":["number","name","amount"]},"description":"Las cuentas del grupo con su monto."}},"required":["grouping_code","name","amount","accounts"]},"description":"Su monto por el primer nivel del código agrupador."}},"required":["total","groups"],"description":"El pasivo: su total y sus grupos."},"equity":{"type":"object","properties":{"total":{"type":"number","description":"Total en la moneda del comprobante (Total)."},"groups":{"type":"array","items":{"type":"object","properties":{"grouping_code":{"type":"string","description":"El primer nivel del código agrupador (401, 601…)."},"name":{"type":"string","description":"Nombre."},"amount":{"type":"number","description":"Importe."},"accounts":{"type":"array","items":{"type":"object","properties":{"number":{"type":"string","description":"Número de empleado (NumEmpleado)."},"name":{"type":"string","description":"Nombre."},"amount":{"type":"number","description":"Importe."}},"required":["number","name","amount"]},"description":"Las cuentas del grupo con su monto."}},"required":["grouping_code","name","amount","accounts"]},"description":"Su monto por el primer nivel del código agrupador."}},"required":["total","groups"],"description":"El capital contable sin el resultado del ejercicio: su total y sus grupos."},"net_income_year_to_date":{"type":"number","description":"El resultado del ejercicio hasta el mes, parte del capital."},"liabilities_and_equity":{"type":"number","description":"Pasivo más capital más el resultado del ejercicio."},"difference":{"type":"number","description":"Activo menos pasivo y capital: 0 cuando los libros cuadran."}},"required":["assets","liabilities","equity","net_income_year_to_date","liabilities_and_equity","difference"],"description":"El balance general al cierre del mes, agrupado por el primer nivel del código agrupador. difference es activo menos pasivo y capital: 0 cuando los libros cuadran."},"journal_entries":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Cuántas pólizas tuvo el mes."},"opening_balances_date":{"type":["string","null"],"description":"Desde qué fecha cuentan los saldos iniciales capturados en la app; null si no hay."},"missing_invoices":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Pagos que se refieren a facturas que no están en Fiscalisto y no se registraron."}},"required":["object","livemode","issuer","month","income_statement","balance_sheet","journal_entries","opening_balances_date","missing_invoices"],"description":"El estado de resultados y el balance general de un mes, leídos de su balanza."},"CrossChecks":{"type":"object","properties":{"object":{"type":"string","const":"cross_checks","description":"Qué tipo de objeto es («invoice», «customer»…)."},"livemode":{"type":"boolean","description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"issuer":{"type":"string","description":"El emisor."},"year":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"El ejercicio."},"months":{"type":"array","items":{"type":"object","properties":{"month":{"type":"string","description":"El mes (AAAA-MM)."},"status":{"type":"string","enum":["matches","differs","not_filed","unreadable"],"description":"El peor de sus cruces: differs (no coincide), unreadable (una cifra no se pudo leer), not_filed (sin declaración mensual) o matches."},"checks":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","enum":["vat_charged","vat_creditable","vat_withheld","isr_income","isr_withheld_salaries","isr_withheld_suppliers","vat_withheld_suppliers"],"description":"Qué cifra: vat_charged (IVA trasladado), vat_creditable (IVA acreditable), vat_withheld (IVA que le retuvieron), isr_income (ingresos para ISR: nominales en persona moral, cobrados en los demás) y, solo en los meses en que retuvo, isr_withheld_salaries (ISR retenido por salarios y asimilados, contra sus recibos de nómina), isr_withheld_suppliers (ISR retenido por honorarios y arrendamiento, contra las facturas recibidas que pagó) o vat_withheld_suppliers (IVA retenido a proveedores)."},"status":{"type":"string","enum":["matches","differs","not_filed","unreadable"],"description":"matches (hasta $2 de diferencia), differs, not_filed (no hay declaración del mes, o en una retención ninguna declaración del mes la trae) o unreadable (la declaración no trae la cifra en un renglón reconocible)."},"declared":{"type":["number","null"],"description":"Lo declarado, en pesos; null si no hay declaración o no se pudo leer."},"declared_without_cfdi":{"type":"number","description":"De declared, lo que la propia declaración dice que no salió de facturas: en isr_income los ingresos nominales adicionales (cobrado sin factura, intereses) y en vat_charged el IVA al 16% por encima de la precarga del SAT. Se compara aparte; 0 si no hay."},"invoiced":{"type":"number","description":"Lo que dicen los CFDI del mes, con los mismos cálculos de Impuestos."},"difference":{"type":["number","null"],"description":"declared menos declared_without_cfdi menos invoiced; null si declared es null."},"operation_number":{"type":["string","null"],"description":"El número de operación de la declaración de donde salió la cifra."}},"required":["key","status","declared","declared_without_cfdi","invoiced","difference","operation_number"]},"description":"Un cruce por cifra."}},"required":["month","status","checks"]},"description":"Cada mes cuya declaración mensual ya venció (el día 17 del mes siguiente), con sus cruces. Un mes con complementaria toma, por impuesto, la más reciente que lo trae."},"vat_balance_in_favor":{"type":"object","properties":{"periods":{"type":"array","items":{"type":"object","properties":{"month":{"type":"string","description":"El mes cuya declaración muestra el IVA a favor."},"amount":{"type":"number","description":"El IVA a favor de ese mes."},"operation_number":{"type":"string","description":"El número de operación de esa declaración."}},"required":["month","amount","operation_number"]},"description":"Cada mes con IVA a favor."},"total":{"type":"number","description":"La suma del IVA a favor del año."},"credited":{"type":"number","description":"Lo que las declaraciones del año acreditaron de saldos a favor de periodos anteriores."},"remaining":{"type":"number","description":"total menos credited, nunca menos de 0: lo que quedaría por acreditar o pedir en devolución."}},"required":["periods","total","credited","remaining"],"description":"El IVA a favor que muestran las declaraciones del año y lo que meses posteriores acreditaron. Una estimación con las declaraciones leídas, no la cuenta del SAT."},"tax_regimes":{"type":"object","properties":{"registered":{"type":"array","items":{"type":"string"},"description":"Los regímenes de su constancia (c_RegimenFiscal), capturados en la app."},"invoiced":{"type":"array","items":{"type":"object","properties":{"tax_regime":{"type":"string","description":"El régimen (c_RegimenFiscal)."},"invoices":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Cuántos CFDI lo llevan (ingreso, egreso y pago, sin cancelados)."},"first_date":{"type":"string","description":"La fecha del primero (AAAA-MM-DD)."},"last_date":{"type":"string","description":"La fecha del último (AAAA-MM-DD)."},"registered":{"type":["boolean","null"],"description":"Si el régimen está en su constancia; null si no se capturaron los regímenes de la constancia."}},"required":["tax_regime","invoices","first_date","last_date","registered"]},"description":"Cada régimen con que facturó en el año (RegimenFiscal del emisor)."}},"required":["registered","invoiced"],"description":"Los regímenes del emisor (registered, de su constancia) y con cuáles facturó en el año."}},"required":["object","livemode","issuer","year","months","vat_balance_in_favor","tax_regimes"],"description":"Lo que el emisor declaró cada mes contra lo que dicen sus CFDI, el IVA a favor y el régimen con que factura."},"CrossCheckCfdi":{"type":"object","properties":{"object":{"type":"string","const":"cross_check_cfdi","description":"Qué tipo de objeto es («invoice», «customer»…)."},"livemode":{"type":"boolean","description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"issuer":{"type":"string","description":"El emisor."},"month":{"type":"string","description":"El mes (AAAA-MM)."},"key":{"type":"string","enum":["vat_charged","vat_creditable","vat_withheld","isr_income","isr_withheld_salaries","isr_withheld_suppliers","vat_withheld_suppliers"],"description":"La cifra: vat_charged (IVA trasladado), vat_creditable (IVA acreditable), vat_withheld (IVA que le retuvieron), isr_income (ingresos para ISR), isr_withheld_salaries (ISR retenido en sus recibos de nómina), isr_withheld_suppliers o vat_withheld_suppliers (ISR o IVA que retuvo a proveedores)."},"status":{"type":"string","enum":["matches","differs","not_filed","unreadable"],"description":"El cruce de esa cifra, como en GET /v1/accounting/cross_checks: matches, differs, not_filed o unreadable."},"declared":{"type":["number","null"],"description":"Lo declarado, en pesos; null si no hay declaración o no se pudo leer."},"declared_without_cfdi":{"type":"number","description":"De declared, lo que la propia declaración dice que no salió de facturas (ingresos nominales adicionales en isr_income, IVA al 16% sobre la precarga del SAT en vat_charged); 0 si no hay."},"invoiced":{"type":"number","description":"Lo que dicen los CFDI del mes: la suma de cfdi más adjustment."},"difference":{"type":["number","null"],"description":"declared menos declared_without_cfdi menos invoiced; null si declared es null."},"operation_number":{"type":["string","null"],"description":"El número de operación de la declaración de donde salió la cifra."},"cfdi":{"type":"array","items":{"type":"object","properties":{"uuid":{"type":["string","null"],"description":"El folio fiscal (UUID) del CFDI; el de la factura PPD en un pago."},"type":{"type":"string","enum":["invoice","credit_note","payment","withholding_certificate"],"description":"invoice (factura de ingreso, PUE), credit_note (nota de crédito: resta) o payment (lo pagado en el mes de una factura PPD)."},"date":{"type":["string","null"],"description":"La fecha del CFDI, o la del pago (AAAA-MM-DD)."},"tax_id":{"type":["string","null"],"description":"El RFC de la contraparte: el cliente en lo emitido, el proveedor en lo recibido."},"name":{"type":["string","null"],"description":"El nombre de la contraparte, como viene en el CFDI."},"amount":{"type":"number","description":"Lo que aporta a la cifra, en pesos; negativo en una nota de crédito."}},"required":["uuid","type","date","tax_id","name","amount"]},"description":"Cada CFDI que suma en el mes, de mayor a menor: los PUE y las notas de crédito en su mes, las facturas PPD por lo que se pagó en el mes."},"adjustment":{"type":"number","description":"Lo que Impuestos agrega sobre los CFDI: en vat_creditable, la proporción de gastos comunes, el IVA retenido enterado del mes anterior y las importaciones; 0 en las demás."}},"required":["object","livemode","issuer","month","key","status","declared","declared_without_cfdi","invoiced","difference","operation_number","cfdi","adjustment"],"description":"Los CFDI que forman una cifra del cruce de un mes (invoiced): cada uno con lo que aporta, y el ajuste que Impuestos agrega encima."},"Diot":{"type":"object","properties":{"object":{"type":"string","const":"diot","description":"Qué tipo de objeto es («invoice», «customer»…)."},"livemode":{"type":"boolean","description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"issuer":{"type":"string","description":"El emisor."},"month":{"type":"string","description":"El mes (AAAA-MM)."},"proportion":{"type":"number","description":"La proporción de IVA acreditable del mes para gastos comunes (1 si no la aplica)."},"lines":{"type":"array","items":{"type":"object","properties":{"tax_id":{"type":"string","description":"RFC (Rfc), 12 caracteres una persona moral y 13 una física."},"name":{"type":["string","null"],"description":"Nombre."},"third_party_type":{"type":"string","enum":["15","04","05"],"description":"Tipo de tercero: 04 nacional, 05 extranjero, 15 global."},"operation_type":{"type":"string","enum":["85","87","02","03","06","07"],"description":"Tipo de operación: 02 enajenación de bienes, 03 servicios profesionales, 06 uso o goce temporal, 07 importación, 85 otros, 87 operaciones globales."},"paid":{"type":"object","properties":{"base_16":{"type":"number","description":"Valor de los actos al 16 %."},"base_8":{"type":"number","description":"Valor de los actos al 8 % (región fronteriza)."},"base_0":{"type":"number","description":"Valor de los actos al 0 %."},"exempt":{"type":"number","description":"Valor de los actos exentos."},"not_taxable":{"type":"number","description":"Valor de los actos no objeto de IVA."},"vat":{"type":"number","description":"El IVA de esos actos."}},"required":["base_16","base_8","base_0","exempt","not_taxable","vat"],"description":"Lo pagado en el mes por tasa, en pesos, con su IVA."},"returns":{"type":"object","properties":{"base_16":{"type":"number","description":"Valor de los actos al 16 %."},"base_8":{"type":"number","description":"Valor de los actos al 8 % (región fronteriza)."},"base_0":{"type":"number","description":"Valor de los actos al 0 %."},"exempt":{"type":"number","description":"Valor de las devoluciones exentas."},"not_taxable":{"type":"number","description":"Valor de los actos no objeto de IVA."},"vat":{"type":"number","description":"El IVA de esos actos."}},"required":["base_16","base_8","base_0","exempt","not_taxable","vat"],"description":"Las devoluciones (notas de crédito) del mes, por tasa."},"blacklisted":{"type":"boolean","description":"El proveedor está en la lista 69-B definitiva: revise si deduce sus CFDI."}},"required":["tax_id","name","third_party_type","operation_type","paid","returns","blacklisted"]},"description":"Una línea por proveedor y tipo de operación, con lo pagado en el mes."},"warnings":{"type":"array","items":{"type":"string"},"description":"Lo que conviene revisar antes de presentarla."}},"required":["object","livemode","issuer","month","proportion","lines","warnings"],"description":"La DIOT de un mes: lo pagado a cada proveedor, por tipo de operación."},"StoreConnection":{"type":"object","properties":{"id":{"type":"string","description":"Identificador del objeto, con su prefijo (iss_, inv_, ret_, cus_, prd_, emp_, bat_, brn_, whs_, stm_, adj_, evt_, whe_)."},"livemode":{"type":"boolean","description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"object":{"type":"string","const":"store_connection","description":"Qué tipo de objeto es («invoice», «customer»…)."},"issuer":{"type":"string","description":"El emisor dueño de la tienda."},"platform":{"type":"string","enum":["shopify","mercadolibre"],"description":"shopify o mercadolibre."},"shop":{"type":["string","null"],"description":"El dominio de la tienda de Shopify, o el id del vendedor en Mercado Libre (al autorizar)."},"status":{"type":"string","enum":["pending","active","disconnected"],"description":"pending (Mercado Libre espera que el vendedor autorice en authorize_url), active o disconnected."},"authorize_url":{"type":["string","null"],"description":"Si está pending: la página de Mercado Libre donde el vendedor autoriza (vale un día; cada consulta da una nueva). Si no, null."},"settings":{"type":"object","properties":{"product_key":{"type":["string","null"],"description":"c_ClaveProdServ de lo que vende, o null."},"unit_key":{"type":["string","null"],"description":"c_ClaveUnidad, o null (la de la clave del producto)."},"iva":{"type":"string","enum":["0","0.16","0.08","exento"],"description":"Tasa de IVA incluida en los precios."},"description":{"type":["string","null"],"description":"El concepto fijo de cada ticket, o null (el pedido y sus artículos)."},"folio_prefix":{"type":"string","description":"Lo que va antes del número del pedido en el folio."},"payment_form":{"type":["string","null"],"description":"c_FormaPago cuando la del pedido no está en payment_forms, o null."},"payment_forms":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"},"description":"c_FormaPago por pasarela o tipo de pago."},"auto_invoice":{"type":["boolean","null"],"description":"Mercado Libre: si se timbra al momento con los datos fiscales del comprador; null en Shopify."}},"required":["product_key","unit_key","iva","description","folio_prefix","payment_form","payment_forms","auto_invoice"],"description":"Cómo se vuelve ticket cada pedido."},"orders_count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Cuántos pedidos se han vuelto tickets."},"last_order_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo llegó el último, o null."},"last_error":{"anyOf":[{"type":"object","properties":{"message":{"type":"string","description":"Qué pasó."},"at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo."}},"required":["message","at"]},{"type":"null"}],"description":"El último problema (un pedido en dólares, un ticket que ya se facturó cuando se canceló el pedido…), o null."},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo se conectó."}},"required":["id","livemode","object","issuer","platform","shop","status","authorize_url","settings","orders_count","last_order_at","last_error","created_at"],"description":"Una tienda de Shopify o Mercado Libre cuyos pedidos pagados se vuelven tickets de autofactura del emisor."},"StoreImport":{"type":"object","properties":{"object":{"type":"string","const":"store_import","description":"Qué tipo de objeto es («invoice», «customer»…)."},"livemode":{"type":"boolean","description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"store_connection":{"type":"string","description":"La conexión (stc_…)."},"since":{"type":"string","description":"Desde qué día se buscaron pedidos."},"tickets":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Pedidos que son tickets (los que ya lo eran cuentan otra vez)."},"invoiced":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"De ellos, los que se facturaron al momento con los datos del comprador."},"skipped":{"type":"array","items":{"type":"object","properties":{"order":{"type":"string","description":"El pedido."},"reason":{"type":"string","description":"Por qué no se volvió ticket."}},"required":["order","reason"]},"description":"Los que no se volvieron ticket, con el motivo."}},"required":["object","livemode","store_connection","since","tickets","invoiced","skipped"],"description":"Los pedidos pagados que se trajeron."},"Quote":{"type":"object","properties":{"id":{"type":"string","description":"Identificador del objeto, con su prefijo (iss_, inv_, ret_, cus_, prd_, emp_, bat_, brn_, whs_, stm_, adj_, evt_, whe_)."},"livemode":{"type":"boolean","description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"object":{"type":"string","const":"quote","description":"Qué tipo de objeto es («invoice», «customer»…)."},"issuer":{"type":"string","description":"El emisor (iss_…)."},"number":{"type":"string","description":"Su serie y folio, como lo ve el cliente (COT-12)."},"version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Cambiar una ya enviada hace una versión nueva con el mismo número; el id contesta siempre la última."},"status":{"type":"string","enum":["draft","sent","viewed","accepted","rejected","expired","invoiced"],"description":"draft, sent, viewed (el cliente abrió la liga), accepted, rejected, expired (pasó valid_until) o invoiced."},"url":{"type":["string","null"],"description":"La liga donde el cliente la ve, descarga su PDF, la acepta, pide cambios o la rechaza; null mientras sea borrador."},"customer":{"type":"object","properties":{"tax_id":{"type":["string","null"],"description":"RFC (Rfc), 12 caracteres una persona moral y 13 una física."},"name":{"type":["string","null"],"description":"Nombre."},"email":{"type":["string","null"],"description":"Correo a donde se envía (varios separados por comas). Solo se usa si se pide enviarlo."},"catalog_id":{"type":["string","null"],"description":"El cliente (cus_…) en su catálogo, o null si no está en él."}},"required":["tax_id","name","email","catalog_id"],"description":"A quién va: tax_id null si aún no tiene sus datos fiscales; catalog_id es su cliente (cus_…) en su catálogo, o null."},"currency":{"type":"string","description":"La moneda."},"items":{"type":"array","items":{"type":"object","properties":{"description":{"type":"string","description":"Descripción del concepto (Descripcion), hasta 1,000 caracteres."},"product_key":{"type":"string","description":"Clave del producto o servicio (ClaveProdServ), 8 dígitos de c_ClaveProdServ. Búsquela con GET /v1/sat_catalogs/product_keys?q=…"},"quantity":{"type":"number","description":"Cantidad (Cantidad). Por omisión 1."},"unit_key":{"type":"string","description":"Clave de unidad (ClaveUnidad) de c_ClaveUnidad: E48 unidad de servicio (por omisión), H87 pieza, ACT actividad…"},"unit_price":{"type":"number","description":"Precio unitario antes de impuestos (ValorUnitario)."}},"required":["description","product_key","unit_price"]},"description":"Los conceptos, como los de una factura."},"total":{"type":["number","null"],"description":"El total con impuestos."},"valid_until":{"type":"string","description":"Su último día de validez (AAAA-MM-DD)."},"terms":{"type":["string","null"],"description":"Las condiciones impresas: entrega, anticipo, garantía…"},"notes":{"type":["string","null"],"description":"Las notas, como las de una factura."},"auto_invoice":{"type":"boolean","description":"Si al aceptarla se timbra la factura sola."},"customer_comment":{"type":["string","null"],"description":"Lo que escribió el cliente al pedir cambios o al rechazarla, o null."},"sent_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo se envió."},"viewed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo el cliente abrió la liga por primera vez."},"decided_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo se aceptó o rechazó."},"decided_by":{"anyOf":[{"type":"string","enum":["customer","user"]},{"type":"null"}],"description":"customer (en su liga) o user (usted, con POST /v1/quotes/{id}/accept o desde la app)."},"invoice":{"type":["string","null"],"description":"La factura (inv_…) que se timbró de ella, o null."},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo se creó."}},"required":["id","livemode","object","issuer","number","version","status","url","customer","currency","items","total","valid_until","terms","notes","auto_invoice","customer_comment","sent_at","viewed_at","decided_at","decided_by","invoice","created_at"],"description":"Una cotización: su cliente la ve en una liga, la acepta, pide cambios o la rechaza, y se factura."},"Receivable":{"type":"object","properties":{"id":{"type":"string","description":"El RFC y la moneda (RFC:MXN): para starting_after."},"object":{"type":"string","const":"receivable","description":"Qué tipo de objeto es («invoice», «customer»…)."},"livemode":{"type":"boolean","description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"issuer":{"type":"string","description":"El emisor."},"customer":{"type":"object","properties":{"tax_id":{"type":"string","description":"RFC (Rfc), 12 caracteres una persona moral y 13 una física."},"legal_name":{"type":["string","null"],"description":"Nombre o razón social tal como está en la constancia de situación fiscal, sin el régimen de capital (sin «S.A. de C.V.»)."}},"required":["tax_id","legal_name"],"description":"El cliente que debe."},"currency":{"type":"string","description":"La moneda de esas facturas."},"amount_due":{"type":"number","description":"Lo que debe en total, en esa moneda."},"open_invoices":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Cuántas facturas tiene abiertas."},"oldest_invoice_date":{"type":"string","description":"La fecha (AAAA-MM-DD) de su factura abierta más antigua."}},"required":["id","object","livemode","issuer","customer","currency","amount_due","open_invoices","oldest_invoice_date"],"description":"Lo que un cliente le debe a un emisor en una moneda, de sus facturas abiertas."},"BankTransaction":{"type":"object","properties":{"id":{"type":"string","description":"Identificador del objeto, con su prefijo (iss_, inv_, ret_, cus_, prd_, emp_, bat_, brn_, whs_, stm_, adj_, evt_, whe_)."},"livemode":{"type":"boolean","description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"object":{"type":"string","const":"bank_transaction","description":"Qué tipo de objeto es («invoice», «customer»…)."},"issuer":{"type":"string","description":"El emisor."},"date":{"type":"string","description":"El día del depósito (AAAA-MM-DD)."},"amount":{"type":"number","description":"Lo depositado, en pesos."},"description":{"type":"string","description":"El concepto del banco."},"reference":{"type":["string","null"],"description":"La referencia o clave de rastreo, o null."},"account":{"type":["string","null"],"description":"Los últimos 4 dígitos de la cuenta, o null."},"payer_tax_id":{"type":["string","null"],"description":"El RFC de quien depositó, si se sabe."},"status":{"type":"string","enum":["open","matched","classified"],"description":"open (sin conciliar), matched (pagó facturas) o classified (no es de una factura)."},"classification":{"anyOf":[{"type":"string","enum":["venta","prestamo","traspaso","devolucion"]},{"type":"null"}],"description":"classified: venta (aún sin facturar), prestamo, traspaso o devolucion; si no, null."},"note":{"type":["string","null"],"description":"Una nota al clasificarlo, o null."},"invoices":{"type":"array","items":{"type":"string"},"description":"Las facturas (inv_…) que pagó, si está conciliado."},"payment":{"type":["string","null"],"description":"El complemento de pago (inv_…) timbrado con él, o null."},"suggested_match":{"anyOf":[{"type":"object","properties":{"invoices":{"type":"array","items":{"type":"string"},"description":"Las facturas, como el cuerpo de POST /v1/invoices, con reference opcional."},"amounts":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"number"},"description":"Lo que el depósito pagaría de cada factura (por inv_…)."},"method":{"type":"string","enum":["PPD","PUE"],"description":"egreso (la factura completa y después una nota de crédito por el anticipo, opción A) o remanente (la factura solo por lo que falta, opción B)."},"confidence":{"type":"string","enum":["high","medium"],"description":"high (el monto y además el RFC, el nombre o el folio coinciden) o medium (revíselo antes)."},"reasons":{"type":"array","items":{"type":"string"},"description":"Por qué se sugiere, en palabras."}},"required":["invoices","amounts","method","confidence","reasons"]},{"type":"null"}],"description":"Si está abierto, las facturas que parece pagar (por monto, RFC, folio en el concepto y fecha): invoices, lo que toca a cada una (amounts), method, confidence (high o medium) y por qué (reasons). null si ninguna encaja."},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo se mandó."}},"required":["id","livemode","object","issuer","date","amount","description","reference","account","payer_tax_id","status","classification","note","invoices","payment","suggested_match","created_at"],"description":"Un depósito de la cuenta del emisor, y las facturas que pagó."},"BankImport":{"type":"object","properties":{"object":{"type":"string","const":"bank_import","description":"Qué tipo de objeto es («invoice», «customer»…)."},"livemode":{"type":"boolean","description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"issuer":{"type":"string","description":"El emisor."},"added":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Cuántos depósitos se agregaron."},"duplicates":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Cuántos ya estaban (se omitieron)."},"data":{"type":"array","items":{"$ref":"#/components/schemas/BankTransaction"},"description":"Los depósitos agregados."}},"required":["object","livemode","issuer","added","duplicates","data"],"description":"Los depósitos que se agregaron."},"IssuerOnboardingLink":{"type":"object","properties":{"object":{"type":"string","const":"issuer_onboarding_link","description":"Qué tipo de objeto es («invoice», «customer»…)."},"livemode":{"type":"boolean","description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"issuer":{"type":"string","description":"El emisor que se da de alta."},"url":{"type":"string","description":"La página para el dueño del emisor, en fiscalisto.com. Ábrala en el navegador de su cliente; no la incruste en un iframe."},"return_url":{"type":["string","null"],"description":"A dónde regresa al terminar."},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo deja de servir la liga. Pida otra cuando quiera."},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo se creó."}},"required":["object","livemode","issuer","url","return_url","expires_at","created_at"],"description":"Una liga para que el dueño de un emisor suba su CSD y firme con su e.firma."},"WebhookEndpoint":{"type":"object","properties":{"id":{"type":"string","description":"Identificador del objeto, con su prefijo (iss_, inv_, ret_, cus_, prd_, emp_, bat_, brn_, whs_, stm_, adj_, evt_, whe_)."},"livemode":{"type":"boolean","description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"object":{"type":"string","const":"webhook_endpoint","description":"Qué tipo de objeto es («invoice», «customer»…)."},"sandbox":{"description":"El entorno de prueba (sbx_…) al que pertenece, o null si es de la cuenta. Vea /v1/sandboxes.","type":["string","null"]},"url":{"type":"string","description":"Dirección https de su servidor que recibe los avisos."},"description":{"type":["string","null"],"description":"Para qué es, para usted."},"events":{"type":"array","items":{"type":"string"},"description":"Eventos que quiere recibir, o [\"*\"] para todos (por omisión). La lista con cuándo llega cada uno: [Tipos de evento](https://fiscalisto.com/docs/api/webhooks#tipos-de-evento)."},"status":{"type":"string","enum":["enabled","failing","disabled"],"description":"enabled: entregando. failing: sus entregas fallan (se apaga tras 5 días así). disabled: apagado."},"disabled_reason":{"type":["string","null"],"description":"Por qué se apagó (sus entregas fallaron 5 días seguidos, o usted lo apagó)."},"failing_since":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Desde cuándo fallan las entregas, o null."},"previous_secret_expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Hasta cuándo el secreto anterior también firma (después de cambiarlo), o null."},"api_version":{"description":"La versión de la API de sus eventos; null: la de la cuenta.","type":["string","null"]},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Cuándo se creó, ISO 8601 con la hora de la Ciudad de México (-06:00)."},"secret":{"type":"string","description":"Secreto de firma (whsec_…). Solo viene al crearlo o al cambiarlo: guárdelo para verificar las firmas."}},"required":["id","livemode","object","sandbox","url","description","events","status","previous_secret_expires_at","api_version","created_at"],"description":"Una dirección de su servidor que recibe eventos."},"WebhookTest":{"type":"object","properties":{"object":{"type":"string","const":"webhook_test","description":"Qué tipo de objeto es («invoice», «customer»…)."},"event":{"$ref":"#/components/schemas/Event","description":"El evento que se mandó, como lo recibió su servidor."},"delivery":{"type":"object","properties":{"ok":{"type":"boolean","description":"true si su servidor contestó 2xx."},"status":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"El código HTTP que contestó; null si no se pudo conectar."},"error":{"type":["string","null"],"description":"Qué falló (sin respuesta, no se pudo conectar, otro código), o null."},"response_body":{"type":["string","null"],"description":"El inicio de lo que contestó su servidor (hasta 2,000 caracteres)."},"duration_ms":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Cuánto tardó su servidor, en milisegundos."}},"required":["ok","status","error","response_body","duration_ms"],"description":"Cómo le fue: ok si contestó 2xx, el código, el error y el inicio de su respuesta."}},"required":["object","event","delivery"],"description":"Un evento de prueba que se mandó a su webhook, y lo que respondió su servidor."},"Event":{"type":"object","properties":{"id":{"type":"string","description":"Identificador del objeto, con su prefijo (iss_, inv_, ret_, cus_, prd_, emp_, bat_, brn_, whs_, stm_, adj_, evt_, whe_)."},"object":{"type":"string","const":"event","description":"Qué tipo de objeto es («invoice», «customer»…)."},"type":{"type":"string","description":"Qué pasó: invoice.stamped, invoice.failed, invoice.canceled, invoice.cancellation_pending, invoice.cancellation_rejected, invoice.paid, invoice.partially_paid, retention.stamped, retention.failed, retention.canceled, invoice_batch.completed, customer_data_request.completed, sat_download.completed, sat_download.failed, sat_declaration.created, sat_declaration.updated, ticket.invoiced, ticket.included_in_global, recurring_invoice.failed, quote.viewed, quote.accepted, quote.changes_requested, quote.rejected, issuer.ready, balance.low o test_clock.ready."},"api_version":{"type":"string","description":"Versión de la API con que se armó el objeto."},"livemode":{"type":"boolean","description":"true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT."},"created_at":{"type":"string","format":"date-time","description":"Cuándo se creó, ISO 8601 con la hora de la Ciudad de México (-06:00)."},"data":{"type":"object","properties":{"object":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"El objeto como quedó: una factura, una constancia o un lote."}},"required":["object"],"description":"Lo que cambió, en data.object: el comprobante (o el lote) completo, como lo contesta su GET."}},"required":["id","object","type","api_version","livemode","created_at","data"],"description":"Algo que pasó en su cuenta: el objeto completo como quedó. Se manda a sus webhooks firmado (Standard Webhooks)."},"Deleted":{"type":"object","properties":{"id":{"type":"string","description":"Identificador del objeto, con su prefijo (iss_, inv_, ret_, cus_, prd_, emp_, bat_, brn_, whs_, stm_, adj_, evt_, whe_)."},"object":{"type":"string","description":"Qué tipo de objeto es («invoice», «customer»…)."},"deleted":{"type":"boolean","const":true,"description":"Siempre true."}},"required":["id","object","deleted"],"description":"Confirmación de que se borró."},"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["invalid_request_error","authentication_error","permission_error","not_found_error","idempotency_error","rate_limit_error","invoice_error","balance_error","api_error"],"description":"La familia del error: invalid_request_error, authentication_error, permission_error, not_found_error, idempotency_error, rate_limit_error, invoice_error, balance_error o api_error."},"code":{"type":"string","description":"La razón precisa, estable (ver Errores)."},"message":{"type":"string","description":"Qué pasó y cómo corregirlo, para una persona."},"param":{"description":"El campo con el problema (items.0.unit_price).","type":"string"},"sat_code":{"type":"string","description":"Código del SAT o del PAC (CFDI40xxx)."},"message_es":{"description":"Con Accept-Language: en, el mensaje original en español cuando message solo dice en inglés qué significa el código.","type":"string"},"doc_url":{"type":"string","description":"La explicación de este código en la documentación."},"request_id":{"type":"string","description":"El id de la solicitud (req_…). Inclúyalo si nos escribe."}},"required":["type","code","message","doc_url","request_id"],"additionalProperties":{},"description":"Por qué el SAT o el PAC no lo aceptaron: mensaje, código del SAT y texto original."}},"required":["error"],"description":"Todos los errores tienen esta forma."},"SandboxList":{"type":"object","properties":{"object":{"type":"string","const":"list","description":"Qué tipo de objeto es («invoice», «customer»…)."},"data":{"type":"array","items":{"$ref":"#/components/schemas/Sandbox"},"description":"Los objetos de esta página."},"has_more":{"type":"boolean","description":"true si hay más: pida la siguiente con starting_after igual al id del último."},"url":{"type":"string","description":"La ruta de esta lista."}},"required":["object","data","has_more","url"]},"IssuerList":{"type":"object","properties":{"object":{"type":"string","const":"list","description":"Qué tipo de objeto es («invoice», «customer»…)."},"data":{"type":"array","items":{"$ref":"#/components/schemas/Issuer"},"description":"Los objetos de esta página."},"has_more":{"type":"boolean","description":"true si hay más: pida la siguiente con starting_after igual al id del último."},"url":{"type":"string","description":"La ruta de esta lista."}},"required":["object","data","has_more","url"]},"InvoiceList":{"type":"object","properties":{"object":{"type":"string","const":"list","description":"Qué tipo de objeto es («invoice», «customer»…)."},"data":{"type":"array","items":{"$ref":"#/components/schemas/Invoice"},"description":"Los objetos de esta página."},"has_more":{"type":"boolean","description":"true si hay más: pida la siguiente con starting_after igual al id del último."},"url":{"type":"string","description":"La ruta de esta lista."}},"required":["object","data","has_more","url"]},"ReceivableList":{"type":"object","properties":{"object":{"type":"string","const":"list","description":"Qué tipo de objeto es («invoice», «customer»…)."},"data":{"type":"array","items":{"$ref":"#/components/schemas/Receivable"},"description":"Los objetos de esta página."},"has_more":{"type":"boolean","description":"true si hay más: pida la siguiente con starting_after igual al id del último."},"url":{"type":"string","description":"La ruta de esta lista."}},"required":["object","data","has_more","url"]},"BankTransactionList":{"type":"object","properties":{"object":{"type":"string","const":"list","description":"Qué tipo de objeto es («invoice», «customer»…)."},"data":{"type":"array","items":{"$ref":"#/components/schemas/BankTransaction"},"description":"Los objetos de esta página."},"has_more":{"type":"boolean","description":"true si hay más: pida la siguiente con starting_after igual al id del último."},"url":{"type":"string","description":"La ruta de esta lista."}},"required":["object","data","has_more","url"]},"AdvanceList":{"type":"object","properties":{"object":{"type":"string","const":"list","description":"Qué tipo de objeto es («invoice», «customer»…)."},"data":{"type":"array","items":{"$ref":"#/components/schemas/Advance"},"description":"Los objetos de esta página."},"has_more":{"type":"boolean","description":"true si hay más: pida la siguiente con starting_after igual al id del último."},"url":{"type":"string","description":"La ruta de esta lista."}},"required":["object","data","has_more","url"]},"RetentionList":{"type":"object","properties":{"object":{"type":"string","const":"list","description":"Qué tipo de objeto es («invoice», «customer»…)."},"data":{"type":"array","items":{"$ref":"#/components/schemas/Retention"},"description":"Los objetos de esta página."},"has_more":{"type":"boolean","description":"true si hay más: pida la siguiente con starting_after igual al id del último."},"url":{"type":"string","description":"La ruta de esta lista."}},"required":["object","data","has_more","url"]},"EmployeeList":{"type":"object","properties":{"object":{"type":"string","const":"list","description":"Qué tipo de objeto es («invoice», «customer»…)."},"data":{"type":"array","items":{"$ref":"#/components/schemas/Employee"},"description":"Los objetos de esta página."},"has_more":{"type":"boolean","description":"true si hay más: pida la siguiente con starting_after igual al id del último."},"url":{"type":"string","description":"La ruta de esta lista."}},"required":["object","data","has_more","url"]},"InvoiceBatchList":{"type":"object","properties":{"object":{"type":"string","const":"list","description":"Qué tipo de objeto es («invoice», «customer»…)."},"data":{"type":"array","items":{"$ref":"#/components/schemas/InvoiceBatch"},"description":"Los objetos de esta página."},"has_more":{"type":"boolean","description":"true si hay más: pida la siguiente con starting_after igual al id del último."},"url":{"type":"string","description":"La ruta de esta lista."}},"required":["object","data","has_more","url"]},"BranchList":{"type":"object","properties":{"object":{"type":"string","const":"list","description":"Qué tipo de objeto es («invoice», «customer»…)."},"data":{"type":"array","items":{"$ref":"#/components/schemas/Branch"},"description":"Los objetos de esta página."},"has_more":{"type":"boolean","description":"true si hay más: pida la siguiente con starting_after igual al id del último."},"url":{"type":"string","description":"La ruta de esta lista."}},"required":["object","data","has_more","url"]},"CustomerList":{"type":"object","properties":{"object":{"type":"string","const":"list","description":"Qué tipo de objeto es («invoice», «customer»…)."},"data":{"type":"array","items":{"$ref":"#/components/schemas/Customer"},"description":"Los objetos de esta página."},"has_more":{"type":"boolean","description":"true si hay más: pida la siguiente con starting_after igual al id del último."},"url":{"type":"string","description":"La ruta de esta lista."}},"required":["object","data","has_more","url"]},"CustomerDataRequestList":{"type":"object","properties":{"object":{"type":"string","const":"list","description":"Qué tipo de objeto es («invoice», «customer»…)."},"data":{"type":"array","items":{"$ref":"#/components/schemas/CustomerDataRequest"},"description":"Los objetos de esta página."},"has_more":{"type":"boolean","description":"true si hay más: pida la siguiente con starting_after igual al id del último."},"url":{"type":"string","description":"La ruta de esta lista."}},"required":["object","data","has_more","url"]},"ProductList":{"type":"object","properties":{"object":{"type":"string","const":"list","description":"Qué tipo de objeto es («invoice», «customer»…)."},"data":{"type":"array","items":{"$ref":"#/components/schemas/Product"},"description":"Los objetos de esta página."},"has_more":{"type":"boolean","description":"true si hay más: pida la siguiente con starting_after igual al id del último."},"url":{"type":"string","description":"La ruta de esta lista."}},"required":["object","data","has_more","url"]},"SatMailboxMessageList":{"type":"object","properties":{"object":{"type":"string","const":"list","description":"Qué tipo de objeto es («invoice», «customer»…)."},"data":{"type":"array","items":{"$ref":"#/components/schemas/SatMailboxMessage"},"description":"Los objetos de esta página."},"has_more":{"type":"boolean","description":"true si hay más: pida la siguiente con starting_after igual al id del último."},"url":{"type":"string","description":"La ruta de esta lista."}},"required":["object","data","has_more","url"]},"SatFindingList":{"type":"object","properties":{"object":{"type":"string","const":"list","description":"Qué tipo de objeto es («invoice», «customer»…)."},"data":{"type":"array","items":{"$ref":"#/components/schemas/SatFinding"},"description":"Los objetos de esta página."},"has_more":{"type":"boolean","description":"true si hay más: pida la siguiente con starting_after igual al id del último."},"url":{"type":"string","description":"La ruta de esta lista."}},"required":["object","data","has_more","url"]},"WarehouseList":{"type":"object","properties":{"object":{"type":"string","const":"list","description":"Qué tipo de objeto es («invoice», «customer»…)."},"data":{"type":"array","items":{"$ref":"#/components/schemas/Warehouse"},"description":"Los objetos de esta página."},"has_more":{"type":"boolean","description":"true si hay más: pida la siguiente con starting_after igual al id del último."},"url":{"type":"string","description":"La ruta de esta lista."}},"required":["object","data","has_more","url"]},"StockLevelList":{"type":"object","properties":{"object":{"type":"string","const":"list","description":"Qué tipo de objeto es («invoice», «customer»…)."},"data":{"type":"array","items":{"$ref":"#/components/schemas/StockLevel"},"description":"Los objetos de esta página."},"has_more":{"type":"boolean","description":"true si hay más: pida la siguiente con starting_after igual al id del último."},"url":{"type":"string","description":"La ruta de esta lista."}},"required":["object","data","has_more","url"]},"StockMovementList":{"type":"object","properties":{"object":{"type":"string","const":"list","description":"Qué tipo de objeto es («invoice», «customer»…)."},"data":{"type":"array","items":{"$ref":"#/components/schemas/StockMovement"},"description":"Los objetos de esta página."},"has_more":{"type":"boolean","description":"true si hay más: pida la siguiente con starting_after igual al id del último."},"url":{"type":"string","description":"La ruta de esta lista."}},"required":["object","data","has_more","url"]},"StockAdjustmentList":{"type":"object","properties":{"object":{"type":"string","const":"list","description":"Qué tipo de objeto es («invoice», «customer»…)."},"data":{"type":"array","items":{"$ref":"#/components/schemas/StockAdjustment"},"description":"Los objetos de esta página."},"has_more":{"type":"boolean","description":"true si hay más: pida la siguiente con starting_after igual al id del último."},"url":{"type":"string","description":"La ruta de esta lista."}},"required":["object","data","has_more","url"]},"SatCatalogEntryList":{"type":"object","properties":{"object":{"type":"string","const":"list","description":"Qué tipo de objeto es («invoice», «customer»…)."},"data":{"type":"array","items":{"$ref":"#/components/schemas/SatCatalogEntry"},"description":"Los objetos de esta página."},"has_more":{"type":"boolean","description":"true si hay más: pida la siguiente con starting_after igual al id del último."},"url":{"type":"string","description":"La ruta de esta lista."}},"required":["object","data","has_more","url"]},"SatListCheckList":{"type":"object","properties":{"object":{"type":"string","const":"list","description":"Qué tipo de objeto es («invoice», «customer»…)."},"data":{"type":"array","items":{"$ref":"#/components/schemas/SatListCheck"},"description":"Los objetos de esta página."},"has_more":{"type":"boolean","description":"true si hay más: pida la siguiente con starting_after igual al id del último."},"url":{"type":"string","description":"La ruta de esta lista."}},"required":["object","data","has_more","url"]},"SatDownloadList":{"type":"object","properties":{"object":{"type":"string","const":"list","description":"Qué tipo de objeto es («invoice», «customer»…)."},"data":{"type":"array","items":{"$ref":"#/components/schemas/SatDownload"},"description":"Los objetos de esta página."},"has_more":{"type":"boolean","description":"true si hay más: pida la siguiente con starting_after igual al id del último."},"url":{"type":"string","description":"La ruta de esta lista."}},"required":["object","data","has_more","url"]},"SatInvoiceList":{"type":"object","properties":{"object":{"type":"string","const":"list","description":"Qué tipo de objeto es («invoice», «customer»…)."},"data":{"type":"array","items":{"$ref":"#/components/schemas/SatInvoice"},"description":"Los objetos de esta página."},"has_more":{"type":"boolean","description":"true si hay más: pida la siguiente con starting_after igual al id del último."},"url":{"type":"string","description":"La ruta de esta lista."}},"required":["object","data","has_more","url"]},"SatDeclarationList":{"type":"object","properties":{"object":{"type":"string","const":"list","description":"Qué tipo de objeto es («invoice», «customer»…)."},"data":{"type":"array","items":{"$ref":"#/components/schemas/SatDeclaration"},"description":"Los objetos de esta página."},"has_more":{"type":"boolean","description":"true si hay más: pida la siguiente con starting_after igual al id del último."},"url":{"type":"string","description":"La ruta de esta lista."}},"required":["object","data","has_more","url"]},"TicketList":{"type":"object","properties":{"object":{"type":"string","const":"list","description":"Qué tipo de objeto es («invoice», «customer»…)."},"data":{"type":"array","items":{"$ref":"#/components/schemas/Ticket"},"description":"Los objetos de esta página."},"has_more":{"type":"boolean","description":"true si hay más: pida la siguiente con starting_after igual al id del último."},"url":{"type":"string","description":"La ruta de esta lista."}},"required":["object","data","has_more","url"]},"JournalEntryList":{"type":"object","properties":{"object":{"type":"string","const":"list","description":"Qué tipo de objeto es («invoice», «customer»…)."},"data":{"type":"array","items":{"$ref":"#/components/schemas/JournalEntry"},"description":"Los objetos de esta página."},"has_more":{"type":"boolean","description":"true si hay más: pida la siguiente con starting_after igual al id del último."},"url":{"type":"string","description":"La ruta de esta lista."}},"required":["object","data","has_more","url"]},"LedgerAccountList":{"type":"object","properties":{"object":{"type":"string","const":"list","description":"Qué tipo de objeto es («invoice», «customer»…)."},"data":{"type":"array","items":{"$ref":"#/components/schemas/LedgerAccount"},"description":"Los objetos de esta página."},"has_more":{"type":"boolean","description":"true si hay más: pida la siguiente con starting_after igual al id del último."},"url":{"type":"string","description":"La ruta de esta lista."}},"required":["object","data","has_more","url"]},"StoreConnectionList":{"type":"object","properties":{"object":{"type":"string","const":"list","description":"Qué tipo de objeto es («invoice», «customer»…)."},"data":{"type":"array","items":{"$ref":"#/components/schemas/StoreConnection"},"description":"Los objetos de esta página."},"has_more":{"type":"boolean","description":"true si hay más: pida la siguiente con starting_after igual al id del último."},"url":{"type":"string","description":"La ruta de esta lista."}},"required":["object","data","has_more","url"]},"RecurringInvoiceList":{"type":"object","properties":{"object":{"type":"string","const":"list","description":"Qué tipo de objeto es («invoice», «customer»…)."},"data":{"type":"array","items":{"$ref":"#/components/schemas/RecurringInvoice"},"description":"Los objetos de esta página."},"has_more":{"type":"boolean","description":"true si hay más: pida la siguiente con starting_after igual al id del último."},"url":{"type":"string","description":"La ruta de esta lista."}},"required":["object","data","has_more","url"]},"QuoteList":{"type":"object","properties":{"object":{"type":"string","const":"list","description":"Qué tipo de objeto es («invoice», «customer»…)."},"data":{"type":"array","items":{"$ref":"#/components/schemas/Quote"},"description":"Los objetos de esta página."},"has_more":{"type":"boolean","description":"true si hay más: pida la siguiente con starting_after igual al id del último."},"url":{"type":"string","description":"La ruta de esta lista."}},"required":["object","data","has_more","url"]},"WebhookEndpointList":{"type":"object","properties":{"object":{"type":"string","const":"list","description":"Qué tipo de objeto es («invoice», «customer»…)."},"data":{"type":"array","items":{"$ref":"#/components/schemas/WebhookEndpoint"},"description":"Los objetos de esta página."},"has_more":{"type":"boolean","description":"true si hay más: pida la siguiente con starting_after igual al id del último."},"url":{"type":"string","description":"La ruta de esta lista."}},"required":["object","data","has_more","url"]},"EventList":{"type":"object","properties":{"object":{"type":"string","const":"list","description":"Qué tipo de objeto es («invoice», «customer»…)."},"data":{"type":"array","items":{"$ref":"#/components/schemas/Event"},"description":"Los objetos de esta página."},"has_more":{"type":"boolean","description":"true si hay más: pida la siguiente con starting_after igual al id del último."},"url":{"type":"string","description":"La ruta de esta lista."}},"required":["object","data","has_more","url"]},"InvoiceCreate":{"type":"object","properties":{"issuer":{"type":"string","pattern":"^iss_","description":"Emisor (iss_…). Si la llave tiene un solo emisor o la cuenta tiene uno solo, puede omitirse."},"branch":{"type":"string","pattern":"^brn_","description":"Sucursal (brn_…) desde donde se factura: su código postal va en LugarExpedicion, su dirección en el PDF y, si las tiene, sus series. Sin ella, el domicilio fiscal del emisor (la Matriz)."},"warehouse":{"type":"string","pattern":"^whs_","description":"Almacén (whs_…) de donde salen sus productos con track_stock. Por omisión, el de su sucursal (o el de la Matriz)."},"customer":{"oneOf":[{"type":"string","pattern":"^cus_"},{"type":"object","properties":{"tax_id":{"type":"string","pattern":"^[A-ZÑ&]{3,4}\\d{6}[A-Z0-9]{3}$","description":"RFC (Rfc), 12 caracteres una persona moral y 13 una física."},"legal_name":{"type":"string","minLength":1,"maxLength":300,"description":"Nombre o razón social tal como está en la constancia de situación fiscal, sin el régimen de capital (sin «S.A. de C.V.»)."},"tax_system":{"type":"string","pattern":"^6\\d\\d$","description":"Régimen fiscal (RegimenFiscal), clave de c_RegimenFiscal: 601, 612, 626…"},"zip":{"type":"string","pattern":"^\\d{5}$","description":"Código postal del domicilio fiscal del cliente (DomicilioFiscalReceptor), 5 dígitos."},"email":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"description":"Correo a donde se envía (varios separados por comas). Solo se usa si se pide enviarlo."},"foreign":{"type":"object","properties":{"country":{"type":"string","minLength":3,"maxLength":3,"description":"País de residencia fiscal, clave de 3 letras de c_Pais (USA, CAN…)."},"tax_id":{"type":"string","minLength":1,"maxLength":40,"description":"Número de registro de identidad fiscal en su país (NumRegIdTrib)."}},"required":["country","tax_id"],"description":"Si es extranjero: su país de residencia (ResidenciaFiscal, c_Pais) y su número de registro tributario (NumRegIdTrib), con el RFC genérico XEXX010101000."},"ieps_taxpayer":{"type":"boolean","description":"true si el cliente es contribuyente de IEPS: el IEPS va desglosado en vez de sumado al precio."}},"required":["tax_id","legal_name","tax_system","zip"]}],"description":"Cliente (Receptor): el id de uno de su catálogo (cus_…) o sus datos en un objeto."},"items":{"minItems":1,"maxItems":200,"type":"array","items":{"type":"object","properties":{"product":{"type":"string","pattern":"^prd_","description":"Un producto de su catálogo (prd_…): toma su clave, unidad, precio e impuestos."},"description":{"type":"string","minLength":1,"maxLength":1000,"description":"Descripción del concepto (Descripcion), hasta 1,000 caracteres."},"product_key":{"type":"string","pattern":"^\\d{8}$","description":"Clave del producto o servicio (ClaveProdServ), 8 dígitos de c_ClaveProdServ. Búsquela con GET /v1/sat_catalogs/product_keys?q=…"},"unit_key":{"type":"string","minLength":1,"maxLength":5,"description":"Clave de unidad (ClaveUnidad) de c_ClaveUnidad: E48 unidad de servicio (por omisión), H87 pieza, ACT actividad…"},"unit_name":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"description":"Nombre de la unidad (Unidad), hasta 20 caracteres."},"sku":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"description":"Número de identificación o SKU (NoIdentificacion)."},"quantity":{"type":"number","exclusiveMinimum":0,"maximum":1000000000,"description":"Cantidad (Cantidad). Por omisión 1."},"unit_price":{"type":"number","minimum":0,"maximum":1000000000000,"description":"Precio unitario antes de impuestos (ValorUnitario)."},"discount":{"type":"number","minimum":0,"maximum":1000000000000,"description":"Descuento (Descuento)."},"taxability":{"type":"string","enum":["01","02","03","04","05","06","07","08"],"description":"Objeto de impuesto (ObjetoImp), c_ObjetoImp: 01 no objeto, 02 sí objeto (por omisión), 03 sin desglose, 04 no causa…"},"iva":{"type":"string","enum":["0","0.16","0.08","exento"],"description":"Tasa de IVA trasladado: 0.16 (por omisión), 0.08 (región fronteriza), 0 o exento."},"ieps":{"type":"number","minimum":0,"maximum":72.1605,"description":"IEPS trasladado: tasa (0.265…) o cuota en pesos por unidad, según ieps_factor."},"ieps_factor":{"type":"string","enum":["Tasa","Cuota"],"description":"Tasa o Cuota (TipoFactor del IEPS)."},"ieps_units":{"type":"number","exclusiveMinimum":0,"maximum":1000000000,"description":"Unidades de IEPS a cuota (litros, cigarros…), si no son la cantidad."},"iva_retention":{"type":"number","minimum":0,"maximum":0.16,"description":"Tasa de IVA retenido (por ejemplo 0.106667, dos terceras partes del 16%)."},"isr_retention":{"type":"number","minimum":0,"maximum":0.35,"description":"Tasa de ISR retenido (por ejemplo 0.10 honorarios, 0.0125 RESICO)."},"predial":{"maxItems":10,"type":"array","items":{"type":"string","pattern":"^[0-9a-zA-Z]{1,150}$"},"description":"Números de cuenta predial (CuentaPredial) en arrendamiento."},"pedimentos":{"maxItems":50,"type":"array","items":{"type":"string","pattern":"^\\d{2} {2}\\d{2} {2}\\d{4} {2}\\d{7}$"},"description":"Números de pedimento (InformacionAduanera) de mercancía importada."},"third_party":{"type":"object","properties":{"tax_id":{"type":"string","minLength":12,"maxLength":13,"description":"RFC de a cuenta de quién (RfcACuentaTerceros)."},"name":{"type":"string","minLength":1,"maxLength":300,"description":"Nombre (NombreACuentaTerceros)."},"tax_system":{"type":"string","pattern":"^6\\d\\d$","description":"Régimen fiscal (RegimenFiscalACuentaTerceros), c_RegimenFiscal."},"zip":{"type":"string","pattern":"^\\d{5}$","description":"Código postal de su domicilio fiscal (DomicilioFiscalACuentaTerceros)."}},"required":["tax_id","name","tax_system","zip"],"description":"A cuenta de terceros (ACuentaTerceros): RFC, nombre, régimen y código postal."},"iedu":{"type":"object","properties":{"student_name":{"type":"string","minLength":1,"maxLength":300,"description":"Nombre del alumno (nombreAlumno)."},"curp":{"type":"string","minLength":18,"maxLength":18,"description":"CURP, 18 caracteres."},"level":{"type":"string","enum":["Preescolar","Primaria","Secundaria","Profesional técnico","Bachillerato o su equivalente"],"description":"Nivel educativo (nivelEducativo)."},"rvoe":{"type":"string","minLength":1,"maxLength":30,"description":"Reconocimiento de validez oficial de estudios (autRVOE)."},"payer_tax_id":{"anyOf":[{"type":"string","maxLength":13},{"type":"null"}],"description":"RFC de quien paga, si no es el receptor (rfcPago)."}},"required":["student_name","curp","level","rvoe"],"description":"Complemento de instituciones educativas privadas (IEDU): alumno, CURP, nivel y RVOE."},"used_vehicle":{"type":"object","properties":{"purchase_amount":{"type":"number","exclusiveMinimum":0,"maximum":1000000000000,"description":"Monto de adquisición (montoAdquisicion)."},"sale_amount":{"type":"number","exclusiveMinimum":0,"maximum":1000000000000,"description":"Monto de enajenación (montoEnajenacion)."},"vehicle_key":{"type":"string","minLength":1,"maxLength":7,"description":"Clave vehicular (claveVehicular)."},"make":{"type":"string","minLength":1,"maxLength":50,"description":"Marca (marca)."},"type":{"type":"string","minLength":1,"maxLength":50,"description":"Tipo o versión (tipo)."},"model":{"type":"string","pattern":"^\\d{4}$","description":"Año del modelo (modelo), 4 dígitos."},"engine_number":{"type":"string","maxLength":17,"description":"Número de motor (numeroMotor)."},"serial_number":{"type":"string","maxLength":17,"description":"Número de serie (numeroSerie)."},"niv":{"type":"string","maxLength":17,"description":"Número de identificación vehicular (NIV)."},"guide_value":{"type":"number","exclusiveMinimum":0,"maximum":1000000000000,"description":"Valor según la guía EBC o Libro Azul (valor)."},"customs":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"number":{"type":"string","minLength":1,"maxLength":100,"description":"Número del documento de importación (numero)."},"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Fecha del documento (fecha), AAAA-MM-DD."},"office":{"type":"string","maxLength":100,"description":"Aduana (aduana)."}},"required":["number","date"]},"description":"Información aduanera de la importación del vehículo (InformacionAduanera)."}},"required":["purchase_amount","sale_amount","vehicle_key","make","type","model","guide_value"],"description":"Complemento de vehículo usado."},"addenda":{"type":"object","propertyNames":{"type":"string","maxLength":40},"additionalProperties":{"type":"string","maxLength":200},"description":"Addenda del receptor (Walmart, Soriana…), con sus propios campos."}},"required":[],"description":"Un concepto. description, product_key y unit_price son obligatorios, salvo que mande product (prd_…): entonces vienen de su catálogo y lo que mande encima gana."},"description":"Conceptos (Conceptos), al menos uno."},"type":{"type":"string","enum":["I","T"],"default":"I","description":"I ingreso (por omisión; con global, factura global) o T traslado. Notas de crédito: POST /v1/credit_notes. Pagos: POST /v1/payments."},"carta_porte":{"type":"object","properties":{"modes":{"minItems":1,"maxItems":4,"type":"array","items":{"type":"string","enum":["01","02","03","04"]},"description":"Cómo viajan las mercancías (c_CveTransporte): 01 autotransporte, 02 marítimo, 03 aéreo, 04 ferroviario; varios si es intermodal. Por omisión 01."},"international":{"type":"object","properties":{"direction":{"type":"string","enum":["Entrada","Salida"],"description":"EntradaSalidaMerc: Entrada o Salida."},"country":{"type":"string","minLength":3,"maxLength":3,"description":"País de origen o destino (PaisOrigenDestino), c_Pais."},"via":{"type":"string","maxLength":2,"description":"Vía de entrada o salida (ViaEntradaSalida), c_CveTransporte (05 ducto incluido)."},"regimes":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"string","maxLength":3},"description":"Regímenes aduaneros (RegimenAduanero), c_RegimenAduanero."}},"required":["direction","country","via","regimes"],"description":"Transporte internacional (TranspInternac Sí): entrada o salida, país, vía y regímenes aduaneros."},"istmo":{"type":"object","properties":{"origin":{"type":"string","maxLength":2,"description":"Polo de origen (UbicacionPoloOrigen)."},"destination":{"type":"string","maxLength":2,"description":"Polo de destino (UbicacionPoloDestino)."}},"required":["origin","destination"],"description":"Corredor Interoceánico del Istmo de Tehuantepec: polos de origen y destino (c_RegistroISTMO)."},"reverse_logistics":{"type":"boolean","description":"Autotransporte: true si es logística inversa, recolección o devolución."},"origin":{"type":"object","properties":{"tax_id":{"type":"string","pattern":"^[A-ZÑ&]{3,4}\\d{6}[A-Z0-9]{3}$","description":"RFC del remitente (RFCRemitenteDestinatario); XEXX010101000 si es extranjero."},"name":{"type":"string","maxLength":254,"description":"Nombre del remitente (NombreRemitenteDestinatario)."},"foreign":{"type":"object","properties":{"tax_id":{"type":"string","maxLength":40,"description":"Número de registro de identidad fiscal en su país (NumRegIdTrib)."},"country":{"type":"string","minLength":3,"maxLength":3,"description":"País de residencia fiscal, clave de 3 letras de c_Pais (USA, CAN…)."}},"required":["tax_id","country"],"description":"Si es extranjero: su país de residencia (ResidenciaFiscal, c_Pais) y su número de registro tributario (NumRegIdTrib), con el RFC genérico XEXX010101000."},"date_time":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(:\\d{2})?$","description":"Fecha y hora de salida (origen) o llegada (destino), AAAA-MM-DDTHH:MM, hora local."},"distance_km":{"type":"number","exclusiveMinimum":0,"maximum":99999,"description":"Distancia recorrida desde la ubicación anterior, en km (DistanciaRecorrida). Autotransporte y ferroviario."},"station":{"type":"object","properties":{"type":{"type":"string","maxLength":2,"description":"Tipo de estación (TipoEstacion): 01 origen, 02 intermedia, 03 destino final."},"number":{"type":"string","maxLength":12,"description":"Clave de la estación, puerto o aeropuerto (NumEstacion), c_Estaciones."},"name":{"type":"string","maxLength":50,"description":"Nombre de la estación (NombreEstacion)."},"foreign":{"type":"boolean","description":"true si la estación está en el extranjero (va sin TipoEstacion)."}},"description":"Estación, puerto o aeropuerto (TipoEstacion y NumEstacion de c_Estaciones). Solo sin autotransporte."},"navigation":{"type":"string","enum":["Altura","Cabotaje"],"description":"Marítimo: tipo de tráfico (NavegacionTrafico), Altura o Cabotaje."},"address":{"type":"object","properties":{"street":{"type":"string","maxLength":100,"description":"Calle (Calle)."},"exterior":{"type":"string","maxLength":55,"description":"Número exterior (NumeroExterior)."},"interior":{"type":"string","maxLength":55,"description":"Número interior (NumeroInterior)."},"zip":{"type":"string","minLength":1,"maxLength":12,"description":"Código postal (CodigoPostal). En México se deducen de él estado, municipio y localidad."},"country":{"type":"string","minLength":3,"maxLength":3,"description":"País (Pais), c_Pais. Por omisión MEX."},"state":{"type":"string","maxLength":30,"description":"Estado (Estado): en el extranjero c_Estado para USA y CAN, o texto."},"municipality":{"type":"string","maxLength":120,"description":"Municipio (Municipio), en el extranjero como texto."},"locality":{"type":"string","maxLength":120,"description":"Localidad (Localidad), en el extranjero como texto."},"colony":{"type":"string","maxLength":120,"description":"Colonia (Colonia), en el extranjero como texto."}},"required":["zip"],"description":"Domicilio (Domicilio). En México basta el código postal: estado, municipio y localidad se toman de c_CodigoPostal."}},"required":["tax_id","date_time","address"],"description":"Ubicación de origen (Ubicacion TipoUbicacion Origen): remitente, fecha y hora de salida y domicilio."},"destinations":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"object","properties":{"tax_id":{"type":"string","pattern":"^[A-ZÑ&]{3,4}\\d{6}[A-Z0-9]{3}$","description":"RFC del destinatario (RFCRemitenteDestinatario); XEXX010101000 si es extranjero."},"name":{"type":"string","maxLength":254,"description":"Nombre del destinatario (NombreRemitenteDestinatario)."},"foreign":{"type":"object","properties":{"tax_id":{"type":"string","maxLength":40,"description":"Número de registro de identidad fiscal en su país (NumRegIdTrib)."},"country":{"type":"string","minLength":3,"maxLength":3,"description":"País de residencia fiscal, clave de 3 letras de c_Pais (USA, CAN…)."}},"required":["tax_id","country"],"description":"Si es extranjero: su país de residencia (ResidenciaFiscal, c_Pais) y su número de registro tributario (NumRegIdTrib), con el RFC genérico XEXX010101000."},"date_time":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}(:\\d{2})?$","description":"Fecha y hora de salida (origen) o llegada (destino), AAAA-MM-DDTHH:MM, hora local."},"distance_km":{"type":"number","exclusiveMinimum":0,"maximum":99999,"description":"Distancia recorrida desde la ubicación anterior, en km (DistanciaRecorrida). Autotransporte y ferroviario."},"station":{"type":"object","properties":{"type":{"type":"string","maxLength":2,"description":"Tipo de estación (TipoEstacion): 01 origen, 02 intermedia, 03 destino final."},"number":{"type":"string","maxLength":12,"description":"Clave de la estación, puerto o aeropuerto (NumEstacion), c_Estaciones."},"name":{"type":"string","maxLength":50,"description":"Nombre de la estación (NombreEstacion)."},"foreign":{"type":"boolean","description":"true si la estación está en el extranjero (va sin TipoEstacion)."}},"description":"Estación, puerto o aeropuerto (TipoEstacion y NumEstacion de c_Estaciones). Solo sin autotransporte."},"navigation":{"type":"string","enum":["Altura","Cabotaje"],"description":"Marítimo: tipo de tráfico (NavegacionTrafico), Altura o Cabotaje."},"address":{"type":"object","properties":{"street":{"type":"string","maxLength":100,"description":"Calle (Calle)."},"exterior":{"type":"string","maxLength":55,"description":"Número exterior (NumeroExterior)."},"interior":{"type":"string","maxLength":55,"description":"Número interior (NumeroInterior)."},"zip":{"type":"string","minLength":1,"maxLength":12,"description":"Código postal (CodigoPostal). En México se deducen de él estado, municipio y localidad."},"country":{"type":"string","minLength":3,"maxLength":3,"description":"País (Pais), c_Pais. Por omisión MEX."},"state":{"type":"string","maxLength":30,"description":"Estado (Estado): en el extranjero c_Estado para USA y CAN, o texto."},"municipality":{"type":"string","maxLength":120,"description":"Municipio (Municipio), en el extranjero como texto."},"locality":{"type":"string","maxLength":120,"description":"Localidad (Localidad), en el extranjero como texto."},"colony":{"type":"string","maxLength":120,"description":"Colonia (Colonia), en el extranjero como texto."}},"required":["zip"],"description":"Domicilio (Domicilio). En México basta el código postal: estado, municipio y localidad se toman de c_CodigoPostal."}},"required":["tax_id","date_time","address"]},"description":"Ubicaciones de destino (TipoUbicacion Destino), en orden: destinatario, llegada, distancia y domicilio."},"goods":{"minItems":1,"maxItems":200,"type":"array","items":{"type":"object","properties":{"product_key":{"type":"string","pattern":"^\\d{8}$","description":"Clave del bien transportado (BienesTransp), c_ClaveProdServCP."},"description":{"type":"string","minLength":1,"maxLength":1000,"description":"Descripción de la mercancía (Descripcion)."},"quantity":{"type":"number","exclusiveMinimum":0,"maximum":1000000000,"description":"Cantidad (Cantidad)."},"unit_key":{"type":"string","minLength":1,"maxLength":5,"description":"Clave de unidad (ClaveUnidad), c_ClaveUnidad."},"weight_kg":{"type":"number","minimum":0.001,"maximum":100000000,"description":"Peso en kilogramos (PesoEnKg)."},"dimensions":{"type":"string","maxLength":20,"description":"Dimensiones (Dimensiones), como 30/40/30cm o en plg."},"hazmat":{"type":"object","properties":{"key":{"type":"string","maxLength":4,"description":"Clave del material peligroso (CveMaterialPeligroso), c_MaterialPeligroso (número UN)."},"packaging":{"type":"string","maxLength":4,"description":"Tipo de embalaje (Embalaje), c_TipoEmbalaje."},"packaging_description":{"type":"string","maxLength":100,"description":"Descripción del embalaje (DescripEmbalaje)."}},"required":["key","packaging"],"description":"Material peligroso (MaterialPeligroso Sí): clave UN y embalaje."},"cofepris":{"type":"object","properties":{"sector":{"type":"string","maxLength":2,"description":"Sector COFEPRIS (SectorCOFEPRIS): 01 medicamento, 02 precursores y químicos de uso dual, 03 psicotrópicos y estupefacientes, 04 sustancias tóxicas, 05 plaguicidas y fertilizantes."},"active_ingredient":{"type":"string","maxLength":1000,"description":"Nombre del ingrediente activo (NombreIngredienteActivo)."},"chemical_name":{"type":"string","maxLength":150,"description":"Nombre químico (NomQuimico)."},"generic_name":{"type":"string","maxLength":50,"description":"Denominación genérica del producto (DenominacionGenericaProd)."},"brand_name":{"type":"string","maxLength":50,"description":"Denominación distintiva o marca (DenominacionDistintivaProd)."},"manufacturer":{"type":"string","maxLength":240,"description":"Fabricante (Fabricante)."},"expiry":{"type":"string","maxLength":10,"description":"Fecha de caducidad (FechaCaducidad), AAAA-MM-DD."},"lot":{"type":"string","maxLength":10,"description":"Lote del medicamento (LoteMedicamento)."},"form":{"type":"string","maxLength":2,"description":"Forma farmacéutica (FormaFarmaceutica), c_FormaFarmaceutica."},"conditions":{"type":"string","maxLength":2,"description":"Condiciones especiales de transporte (CondicionesEspTransp), c_CondicionesEspeciales."},"sanitary_registry":{"type":"string","maxLength":15,"description":"Registro sanitario o folio de autorización (RegistroSanitarioFolioAutorizacion)."},"import_permit":{"type":"string","maxLength":6,"description":"Permiso de importación (PermisoImportacion)."},"vucem_folio":{"type":"string","maxLength":25,"description":"Folio de importación VUCEM (FolioImpoVUCEM)."},"cas":{"type":"string","maxLength":15,"description":"Número CAS de la sustancia (NumCAS)."},"importer":{"type":"string","maxLength":80,"description":"Razón social de la empresa importadora (RazonSocialEmpImp)."},"pesticide_registry":{"type":"string","maxLength":60,"description":"Registro sanitario de plaguicidas COFEPRIS (NumRegSanPlagCOFEPRIS)."},"manufacturer_data":{"type":"string","maxLength":600,"description":"Datos del fabricante (DatosFabricante)."},"formulator_data":{"type":"string","maxLength":600,"description":"Datos del formulador (DatosFormulador)."},"maquilador_data":{"type":"string","maxLength":600,"description":"Datos del maquilador (DatosMaquilador)."},"authorized_use":{"type":"string","maxLength":1000,"description":"Uso autorizado (UsoAutorizado)."}},"required":["sector"],"description":"Datos COFEPRIS de la mercancía: sector y lo que pide cada uno (medicamentos, precursores, psicotrópicos, sustancias tóxicas, plaguicidas)."},"value":{"type":"number","minimum":0,"maximum":1000000000000000,"description":"Valor de la mercancía (ValorMercancia); obligatorio en transporte aéreo."},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"Moneda del valor de la mercancía (Moneda), c_Moneda."},"tariff":{"type":"string","maxLength":10,"description":"Fracción arancelaria (FraccionArancelaria), 10 dígitos. Transporte internacional."},"cce_uuid":{"type":"string","maxLength":36,"description":"UUID del CFDI con complemento de comercio exterior (UUIDComercioExt)."},"material":{"type":"object","properties":{"type":{"type":"string","maxLength":2,"description":"Tipo de materia (TipoMateria), c_TipoMateria."},"description":{"type":"string","maxLength":50,"description":"Descripción de la materia (DescripcionMateria), con el tipo 05 otra."}},"required":["type"],"description":"Tipo de materia (TipoMateria, c_TipoMateria) y su descripción si es «otra»."},"customs_docs":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"type":{"type":"string","maxLength":2,"description":"Tipo de documento (TipoDocumento), c_DocumentoAduanero: 01 pedimento…"},"pedimento":{"type":"string","maxLength":21,"description":"Número de pedimento (NumPedimento), con el formato «NN  NN  NNNN  NNNNNNN». Solo con el tipo 01."},"doc_id":{"type":"string","maxLength":150,"description":"Identificador del documento aduanero (IdentDocAduanero), con un tipo distinto de 01."},"importer_tax_id":{"type":"string","maxLength":13,"description":"RFC del importador (RFCImpo), con un pedimento."}},"required":["type"]},"description":"Documentación aduanera (DocumentacionAduanera) de la mercancía en transporte internacional."},"guides":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"number":{"type":"string","maxLength":30,"description":"Número de guía (NumeroGuiaIdentificacion)."},"description":{"type":"string","maxLength":1000,"description":"Descripción del contenido (DescripGuiaIdentificacion)."},"weight_kg":{"type":"number","minimum":0,"maximum":100000000,"description":"Peso en kilogramos (PesoEnKg)."}},"required":["number","description","weight_kg"]},"description":"Paquetería: guías de los paquetes o tarimas (GuiasIdentificacion)."},"quantities":{"maxItems":40,"type":"array","items":{"type":"object","properties":{"quantity":{"type":"number","exclusiveMinimum":0,"maximum":1000000000,"description":"Cantidad que va a ese destino."},"destination":{"type":"integer","minimum":0,"maximum":19,"description":"El destino, por su posición en destinations (desde 0)."},"mode":{"type":"string","enum":["01","02","03","04"],"description":"Medio en que va esa cantidad (CvesTransporte), c_CveTransporte."}},"required":["quantity","destination"]},"description":"Cuánto va a cada destino (CantidadTransporta), por destino."},"detail":{"type":"object","properties":{"net_kg":{"type":"number","minimum":0,"maximum":100000000,"description":"Peso neto en kg (PesoNeto)."},"tare_kg":{"type":"number","minimum":0,"maximum":100000000,"description":"Tara en kg (PesoTara)."},"pieces":{"type":"integer","minimum":0,"maximum":1000000000,"description":"Número de piezas (NumPiezas)."}},"required":["net_kg","tare_kg"],"description":"Marítimo: detalle de la mercancía (DetalleMercancia): kilos netos, tara y piezas."},"stcc":{"type":"string","maxLength":7,"description":"Ferroviario: clave STCC (ClaveSTCC)."}},"required":["product_key","description","quantity","unit_key","weight_kg"]},"description":"Mercancías (Mercancia) que se transportan."},"vehicle":{"type":"object","properties":{"config":{"type":"string","minLength":2,"maxLength":10,"description":"Configuración vehicular (ConfigVehicular), c_ConfigAutotransporte: C2, T3S2…"},"plate":{"type":"string","maxLength":10,"description":"Placa (PlacaVM), sin guiones ni espacios."},"year":{"type":"integer","minimum":0,"maximum":2100,"description":"Año del modelo (AnioModeloVM)."},"gross_weight":{"type":"number","minimum":0,"maximum":999,"description":"Peso bruto vehicular en toneladas (PesoBrutoVehicular)."},"permit_type":{"type":"string","maxLength":50,"description":"Tipo de permiso SCT (PermSCT), c_TipoPermiso."},"permit_number":{"type":"string","maxLength":50,"description":"Número de permiso SCT (NumPermisoSCT)."},"insurer":{"type":"string","maxLength":50,"description":"Aseguradora de responsabilidad civil (AseguraRespCivil)."},"policy":{"type":"string","maxLength":30,"description":"Póliza de responsabilidad civil (PolizaRespCivil)."},"env_insurer":{"type":"string","maxLength":50,"description":"Aseguradora de daños al medio ambiente (AseguraMedAmbiente); obligatoria con material peligroso."},"env_policy":{"type":"string","maxLength":30,"description":"Póliza de daños al medio ambiente (PolizaMedAmbiente)."},"cargo_insurer":{"type":"string","maxLength":50,"description":"Aseguradora de la carga (AseguraCarga)."},"cargo_policy":{"type":"string","maxLength":30,"description":"Póliza de la carga (PolizaCarga)."},"premium":{"type":"number","minimum":0,"maximum":1000000000000,"description":"Prima del seguro (PrimaSeguro)."},"trailers":{"maxItems":2,"type":"array","items":{"type":"object","properties":{"type":{"type":"string","maxLength":10,"description":"Subtipo de remolque (SubTipoRem), c_SubTipoRem."},"plate":{"type":"string","maxLength":10,"description":"Placa del remolque (Placa)."}},"required":["type","plate"]},"description":"Remolques o semirremolques (Remolque): tipo (c_SubTipoRem) y placa."}},"required":["config","plate","year","gross_weight","permit_type","permit_number","insurer","policy"],"description":"Autotransporte (Autotransporte): vehículo, permiso SCT, seguros y remolques."},"sea":{"type":"object","properties":{"permit_type":{"type":"string","maxLength":10,"description":"Tipo de permiso SCT (PermSCT), c_TipoPermiso."},"permit_number":{"type":"string","maxLength":30,"description":"Número de permiso SCT (NumPermisoSCT)."},"insurer":{"type":"string","maxLength":50,"description":"Aseguradora de responsabilidad civil (AseguraRespCivil)."},"policy":{"type":"string","maxLength":30,"description":"Póliza de responsabilidad civil (PolizaRespCivil)."},"vessel_type":{"type":"string","maxLength":4,"description":"Tipo de embarcación (TipoEmbarcacion), c_ConfigMaritima."},"registration":{"type":"string","maxLength":30,"description":"Matrícula (Matricula)."},"imo":{"type":"string","maxLength":10,"description":"Número IMO (NumeroOMI): IMO y 7 dígitos."},"year":{"type":"integer","minimum":0,"maximum":2100,"description":"Año de la embarcación (AnioEmbarcacion)."},"vessel_name":{"type":"string","maxLength":50,"description":"Nombre de la embarcación (NombreEmbarc)."},"flag":{"type":"string","minLength":3,"maxLength":3,"description":"Nacionalidad de la embarcación (NacionalidadEmbarc), c_Pais."},"gross_tonnage":{"type":"number","minimum":0,"maximum":1000000000,"description":"Unidades de arqueo bruto (UnidadesDeArqBruto)."},"cargo_type":{"type":"string","maxLength":4,"description":"Tipo de carga (TipoCarga), c_ClaveTipoCarga."},"length":{"type":"number","minimum":0,"maximum":100000,"description":"Eslora en metros (Eslora)."},"beam":{"type":"number","minimum":0,"maximum":100000,"description":"Manga en metros (Manga)."},"draft":{"type":"number","minimum":0,"maximum":100000,"description":"Calado en metros (Calado)."},"depth":{"type":"number","minimum":0,"maximum":100000,"description":"Puntal en metros (Puntal)."},"line":{"type":"string","maxLength":50,"description":"Línea naviera (LineaNaviera)."},"agent_name":{"type":"string","maxLength":100,"description":"Nombre del agente naviero consignatario (NombreAgenteNaviero)."},"agent_authorization":{"type":"string","maxLength":20,"description":"Autorización del agente naviero (NumAutorizacionNaviero), c_NumAutorizacionNaviero."},"voyage":{"type":"string","maxLength":30,"description":"Número de viaje (NumViaje)."},"bill_of_lading":{"type":"string","maxLength":30,"description":"Número de conocimiento de embarque (NumConocEmbarc)."},"temp_permit":{"type":"string","maxLength":19,"description":"Permiso temporal de navegación (PermisoTempNavegacion), para una embarcación extranjera."},"containers":{"maxItems":100,"type":"array","items":{"type":"object","properties":{"type":{"type":"string","maxLength":6,"description":"Tipo de contenedor (TipoContenedor), c_ContenedorMaritimo o c_Contenedor en ferroviario."},"registration":{"type":"string","maxLength":15,"description":"Matrícula (Matricula)."},"seal":{"type":"string","maxLength":20,"description":"Número de precinto (NumPrecinto)."},"related_id_ccp":{"type":"string","maxLength":36,"description":"Ferri: el IdCCP de la Carta Porte del autotransporte a bordo (IdCCPRelacionado)."},"truck_plate":{"type":"string","maxLength":10,"description":"Ferri: placa del vehículo a bordo (PlacaVMCCP)."},"certified_at":{"type":"string","maxLength":19,"description":"Ferri: fecha de certificación de la Carta Porte del vehículo (FechaCertificacionCCP)."},"trailers":{"maxItems":2,"type":"array","items":{"type":"object","properties":{"type":{"type":"string","maxLength":10,"description":"Subtipo de remolque (SubTipoRem), c_SubTipoRem."},"plate":{"type":"string","maxLength":10,"description":"Placa del remolque (Placa)."}},"required":["type","plate"]},"description":"Remolques o semirremolques (Remolque): tipo (c_SubTipoRem) y placa."}},"required":["type"]},"description":"Contenedores (Contenedor)."}},"required":["vessel_type","registration","imo","flag","gross_tonnage","cargo_type","agent_name","agent_authorization"],"description":"Transporte marítimo (TransporteMaritimo): embarcación, naviero y contenedores."},"air":{"type":"object","properties":{"permit_type":{"type":"string","maxLength":10,"description":"Tipo de permiso SCT (PermSCT), c_TipoPermiso."},"permit_number":{"type":"string","maxLength":50,"description":"Número de permiso SCT (NumPermisoSCT)."},"aircraft":{"type":"string","maxLength":11,"description":"Matrícula de la aeronave (MatriculaAeronave)."},"insurer":{"type":"string","maxLength":50,"description":"Aseguradora de responsabilidad civil (AseguraRespCivil)."},"policy":{"type":"string","maxLength":30,"description":"Póliza de responsabilidad civil (PolizaRespCivil)."},"waybill":{"type":"string","maxLength":15,"description":"Número de guía aérea (NumeroGuia), de 12 a 15 caracteres."},"contract_place":{"type":"string","maxLength":120,"description":"Lugar del contrato (LugarContrato)."},"carrier":{"type":"string","maxLength":6,"description":"Código del transportista (CodigoTransportista), c_CodigoTransporteAereo."},"shipper":{"type":"object","properties":{"tax_id":{"type":"string","maxLength":13,"description":"RFC del embarcador (RFCEmbarcador)."},"foreign":{"type":"object","properties":{"tax_id":{"type":"string","maxLength":40,"description":"Número de registro de identidad fiscal en su país (NumRegIdTrib)."},"country":{"type":"string","minLength":3,"maxLength":3,"description":"País de residencia fiscal, clave de 3 letras de c_Pais (USA, CAN…)."}},"required":["tax_id","country"],"description":"Si es extranjero: su país de residencia (ResidenciaFiscal, c_Pais) y su número de registro tributario (NumRegIdTrib), con el RFC genérico XEXX010101000."},"name":{"type":"string","maxLength":254,"description":"Nombre del embarcador (NombreEmbarcador)."}},"description":"Embarcador (RFCEmbarcador o NumRegIdTribEmbarc y ResidenciaFiscalEmbarc, NombreEmbarcador)."},"rate_charge":{"type":"number","minimum":0,"maximum":1000000000000000,"description":"Cargo por tasación (CargoPorTasacion)."}},"required":["permit_type","permit_number","waybill","carrier"],"description":"Transporte aéreo (TransporteAereo): permiso, guía y transportista."},"rail":{"type":"object","properties":{"service":{"type":"string","maxLength":4,"description":"Tipo de servicio (TipoDeServicio), c_TipoDeServicio."},"traffic":{"type":"string","maxLength":4,"description":"Tipo de tráfico (TipoDeTrafico), c_TipoDeTrafico."},"insurer":{"type":"string","maxLength":50,"description":"Aseguradora de responsabilidad civil (AseguraRespCivil)."},"policy":{"type":"string","maxLength":30,"description":"Póliza de responsabilidad civil (PolizaRespCivil)."},"rights":{"maxItems":50,"type":"array","items":{"type":"object","properties":{"type":{"type":"string","maxLength":6,"description":"Tipo de derecho de paso (TipoDerechoDePaso), c_DerechosDePaso."},"km":{"type":"number","minimum":0,"maximum":100000,"description":"Kilometraje pagado (KilometrajePagado)."}},"required":["type","km"]},"description":"Derechos de paso (DerechosDePaso): tipo y kilómetros."},"cars":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"type":{"type":"string","maxLength":4,"description":"Tipo de carro (TipoCarro), c_TipoCarro."},"registration":{"type":"string","maxLength":15,"description":"Matrícula (Matricula)."},"guide":{"type":"string","maxLength":15,"description":"Guía del carro (GuiaCarro)."},"net_tons":{"type":"number","minimum":0,"maximum":1000000,"description":"Toneladas netas del carro (ToneladasNetasCarro)."},"containers":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"type":{"type":"string","maxLength":4,"description":"Tipo de contenedor (TipoContenedor), c_ContenedorMaritimo o c_Contenedor en ferroviario."},"empty_kg":{"type":"number","minimum":0,"maximum":100000000,"description":"Peso del contenedor vacío en kg (PesoContenedorVacio)."},"net_kg":{"type":"number","minimum":0,"maximum":100000000,"description":"Peso neto en kg (PesoNeto)."}},"required":["type","empty_kg","net_kg"]},"description":"Contenedores (Contenedor)."}},"required":["type","registration","guide","net_tons"]},"description":"Carros (Carro)."}},"required":["service","traffic","cars"],"description":"Transporte ferroviario (TransporteFerroviario): servicio, tráfico, derechos de paso y carros."},"drivers":{"maxItems":5,"type":"array","items":{"type":"object","properties":{"tax_id":{"anyOf":[{"type":"string","pattern":"^[A-ZÑ&]{3,4}\\d{6}[A-Z0-9]{3}$"},{"type":"string","const":""}],"description":"RFC del operador (RFCFigura); vacío si es extranjero (con foreign)."},"license":{"type":"string","maxLength":16,"description":"Número de licencia (NumLicencia)."},"name":{"type":"string","maxLength":254,"description":"Nombre del operador (NombreFigura)."},"foreign":{"type":"object","properties":{"tax_id":{"type":"string","maxLength":40,"description":"Número de registro de identidad fiscal en su país (NumRegIdTrib)."},"country":{"type":"string","minLength":3,"maxLength":3,"description":"País de residencia fiscal, clave de 3 letras de c_Pais (USA, CAN…)."}},"required":["tax_id","country"],"description":"Si es extranjero: su país de residencia (ResidenciaFiscal, c_Pais) y su número de registro tributario (NumRegIdTrib), con el RFC genérico XEXX010101000."}},"required":["tax_id","license","name"]},"description":"Operadores (FiguraTransporte tipo 01): RFC, licencia y nombre."},"figures":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["02","03","04","05"],"description":"Tipo de figura (TipoFigura): 02 propietario, 03 arrendador, 04 notificado, 05 integrante."},"tax_id":{"type":"string","pattern":"^[A-ZÑ&]{3,4}\\d{6}[A-Z0-9]{3}$","description":"RFC de la figura (RFCFigura)."},"foreign":{"type":"object","properties":{"tax_id":{"type":"string","maxLength":40,"description":"Número de registro de identidad fiscal en su país (NumRegIdTrib)."},"country":{"type":"string","minLength":3,"maxLength":3,"description":"País de residencia fiscal, clave de 3 letras de c_Pais (USA, CAN…)."}},"required":["tax_id","country"],"description":"Si es extranjero: su país de residencia (ResidenciaFiscal, c_Pais) y su número de registro tributario (NumRegIdTrib), con el RFC genérico XEXX010101000."},"name":{"type":"string","maxLength":254,"description":"Nombre de la figura (NombreFigura)."},"parts":{"maxItems":20,"type":"array","items":{"type":"string","maxLength":4},"description":"Partes del transporte que posee o arrienda (ParteTransporte), c_ParteTransporte."},"address":{"type":"object","properties":{"street":{"type":"string","maxLength":100,"description":"Calle (Calle)."},"exterior":{"type":"string","maxLength":55,"description":"Número exterior (NumeroExterior)."},"interior":{"type":"string","maxLength":55,"description":"Número interior (NumeroInterior)."},"zip":{"type":"string","minLength":1,"maxLength":12,"description":"Código postal (CodigoPostal). En México se deducen de él estado, municipio y localidad."},"country":{"type":"string","minLength":3,"maxLength":3,"description":"País (Pais), c_Pais. Por omisión MEX."},"state":{"type":"string","maxLength":30,"description":"Estado (Estado): en el extranjero c_Estado para USA y CAN, o texto."},"municipality":{"type":"string","maxLength":120,"description":"Municipio (Municipio), en el extranjero como texto."},"locality":{"type":"string","maxLength":120,"description":"Localidad (Localidad), en el extranjero como texto."},"colony":{"type":"string","maxLength":120,"description":"Colonia (Colonia), en el extranjero como texto."}},"required":["zip"],"description":"Domicilio (Domicilio). En México basta el código postal: estado, municipio y localidad se toman de c_CodigoPostal."}},"required":["type","name"]},"description":"Otras figuras de transporte: 02 propietario, 03 arrendador, 04 notificado, 05 integrante de coordinados."}},"required":["origin","destinations","goods","drivers"],"description":"Complemento Carta Porte 3.1 (traslado de mercancías)."},"ine":{"type":"object","properties":{"process":{"type":"string","enum":["Ordinario","Precampaña","Campaña"],"description":"Tipo de proceso (TipoProceso): Ordinario, Precampaña o Campaña."},"committee":{"type":"string","enum":["Ejecutivo Nacional","Ejecutivo Estatal","Directivo Estatal"],"description":"Tipo de comité (TipoComite), con el proceso Ordinario."},"accounting_id":{"type":"string","pattern":"^\\d{1,6}$","description":"Clave de contabilidad (IdContabilidad), hasta 6 dígitos."},"entities":{"maxItems":64,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":3,"maxLength":3,"description":"Clave de la entidad (ClaveEntidad), 3 letras."},"scope":{"type":"string","enum":["Local","Federal"],"description":"Ámbito (Ambito): Local o Federal."},"accounting_ids":{"maxItems":50,"type":"array","items":{"type":"string","pattern":"^\\d{1,6}$"},"description":"Claves de contabilidad (IdContabilidad)."}},"required":["key"]},"description":"Entidades (Entidad): clave del estado, ámbito y claves de contabilidad."}},"required":["process"],"description":"Complemento INE (procesos electorales)."},"leyendas":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":1000,"description":"Texto de la leyenda (textoLeyenda)."},"disposition":{"type":"string","maxLength":30,"description":"Disposición fiscal (disposicionFiscal), por ejemplo LISR."},"norm":{"type":"string","maxLength":100,"description":"Norma o artículo (norma)."}},"required":["text"]},"description":"Complemento de leyendas fiscales."},"donation":{"type":"object","properties":{"in_kind":{"type":"boolean","description":"true si el donativo es en especie (va sin forma de pago en efectivo)."},"deducted":{"type":"boolean","description":"true si el donativo es deducible para quien lo da."}},"description":"Complemento de donatarias."},"local_taxes":{"maxItems":20,"type":"array","items":{"type":"object","properties":{"retention":{"type":"boolean","description":"true si es una retención local; false si es un traslado."},"name":{"type":"string","maxLength":100,"description":"Nombre del impuesto local (ImpLocTrasladado o ImpLocRetenido), como ISH."},"rate":{"type":"number","minimum":0,"maximum":100,"description":"Tasa en por ciento (TasadeTraslado o TasadeRetencion)."},"amount":{"type":"number","minimum":0,"maximum":1000000000000,"description":"Importe del impuesto local."}},"required":["retention","name","rate","amount"]},"description":"Impuestos locales (complemento implocal): traslados y retenciones estatales."},"export":{"type":"string","enum":["01","02","03","04"],"description":"Exportación (Exportacion), c_Exportacion: 01 no aplica (por omisión), 02 definitiva…"},"comercio_exterior":{"type":"object","properties":{"motive":{"type":"string","const":"05","description":"Motivo de traslado (MotivoTraslado): 05 envío de mercancías propias."},"owners":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"tax_id":{"type":"string","maxLength":40,"description":"Número de registro tributario del propietario (NumRegIdTrib)."},"country":{"type":"string","minLength":3,"maxLength":3,"description":"País de residencia del propietario (ResidenciaFiscal), c_Pais."}},"required":["tax_id","country"]},"description":"Propietarios de la mercancía si no es el emisor (Propietario), con motive 05."},"incoterm":{"type":"string","minLength":3,"maxLength":3,"description":"Incoterm (Incoterm), c_INCOTERM: EXW, FOB, CIF, DAP, DDP…"},"certificate":{"type":"string","maxLength":40,"description":"Número de certificado de origen (NumCertificadoOrigen)."},"usd_rate":{"type":"number","exclusiveMinimum":0,"maximum":1000000,"description":"Tipo de cambio a dólares (TipoCambioUSD)."},"issuer_curp":{"type":"string","minLength":18,"maxLength":18,"description":"CURP del emisor persona física (Emisor Curp)."},"issuer_address":{"type":"object","properties":{"street":{"type":"string","maxLength":100,"description":"Calle (Calle)."},"exterior":{"type":"string","maxLength":55,"description":"Número exterior (NumeroExterior)."},"interior":{"type":"string","maxLength":55,"description":"Número interior (NumeroInterior)."},"zip":{"type":"string","pattern":"^\\d{5}$","description":"Código postal del emisor (CodigoPostal)."}},"required":["street"],"description":"Domicilio del emisor (Emisor Domicilio): calle y números; lo demás sale de su código postal."},"receiver_address":{"type":"object","properties":{"street":{"type":"string","maxLength":100,"description":"Calle (Calle)."},"exterior":{"type":"string","maxLength":55,"description":"Número exterior (NumeroExterior)."},"interior":{"type":"string","maxLength":55,"description":"Número interior (NumeroInterior)."},"colony":{"type":"string","maxLength":120,"description":"Colonia (Colonia), en el extranjero como texto."},"locality":{"type":"string","maxLength":120,"description":"Localidad (Localidad), en el extranjero como texto."},"municipality":{"type":"string","maxLength":120,"description":"Municipio (Municipio), en el extranjero como texto."},"state":{"type":"string","maxLength":30,"description":"Estado (Estado), c_Estado para USA y CAN."},"country":{"type":"string","minLength":3,"maxLength":3,"description":"País (Pais), c_Pais."},"zip":{"type":"string","maxLength":12,"description":"Código postal en su país (CodigoPostal)."}},"required":["street","country","zip"],"description":"Domicilio del receptor en el extranjero (Receptor Domicilio)."},"recipient":{"type":"object","properties":{"name":{"type":"string","maxLength":300,"description":"Nombre del destinatario (Nombre)."},"tax_id":{"type":"string","maxLength":40,"description":"Número de registro tributario del destinatario (NumRegIdTrib)."},"address":{"type":"object","properties":{"street":{"type":"string","maxLength":100,"description":"Calle (Calle)."},"exterior":{"type":"string","maxLength":55,"description":"Número exterior (NumeroExterior)."},"interior":{"type":"string","maxLength":55,"description":"Número interior (NumeroInterior)."},"colony":{"type":"string","maxLength":120,"description":"Colonia (Colonia), en el extranjero como texto."},"locality":{"type":"string","maxLength":120,"description":"Localidad (Localidad), en el extranjero como texto."},"municipality":{"type":"string","maxLength":120,"description":"Municipio (Municipio), en el extranjero como texto."},"state":{"type":"string","maxLength":30,"description":"Estado (Estado): en el extranjero c_Estado para USA y CAN, o texto."},"country":{"type":"string","minLength":3,"maxLength":3,"description":"País (Pais), c_Pais. Por omisión MEX."},"zip":{"type":"string","maxLength":12,"description":"Código postal (CodigoPostal). En México se deducen de él estado, municipio y localidad."}},"required":["street","country","zip"],"description":"Domicilio del destinatario (Domicilio)."}},"required":["address"],"description":"Destinatario, si no es el receptor (Destinatario)."},"goods":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","maxLength":100,"description":"Número de identificación de la mercancía (NoIdentificacion): el sku de su concepto."},"tariff":{"type":"string","pattern":"^\\d{10}$","description":"Fracción arancelaria (FraccionArancelaria), 10 dígitos. Transporte internacional."},"unit":{"type":"string","pattern":"^\\d{2}$","description":"Unidad aduana (UnidadAduana), c_UnidadAduana."},"quantity":{"type":"number","exclusiveMinimum":0,"maximum":100000000000000,"description":"Cantidad en la unidad aduana (CantidadAduana)."},"unit_value_usd":{"type":"number","minimum":0,"maximum":10000000000000000,"description":"Valor unitario en dólares (ValorUnitarioAduana)."}},"required":["unit"]},"description":"Mercancías (Mercancia), una por concepto exportado."},"notes":{"type":"string","maxLength":300,"description":"Observaciones del complemento (Observaciones)."}},"required":["usd_rate","goods"],"description":"Complemento de comercio exterior 2.0."},"global":{"type":"object","properties":{"periodicity":{"type":"string","pattern":"^0[1-5]$","description":"Periodicidad (Periodicidad), c_Periodicidad: 01 diario, 02 semanal, 03 quincenal, 04 mensual, 05 bimestral."},"months":{"type":"string","pattern":"^(0[1-9]|1[0-8])$","description":"Meses (Meses), c_Meses: 01 a 12, o 13 a 18 bimestres."},"year":{"type":"integer","minimum":2022,"maximum":2100,"description":"Año (Año)."}},"required":["periodicity","months","year"],"description":"Factura global a público en general (InformacionGlobal): periodicidad, meses y año."},"use":{"type":"string","pattern":"^[A-Z]{1,2}\\d{2}$","description":"Uso del CFDI (UsoCFDI), clave de c_UsoCFDI. Por omisión G03, o S01 con régimen 616."},"payment_form":{"type":"string","pattern":"^\\d{2}$","description":"Forma de pago (FormaPago), clave de c_FormaPago: 01 efectivo, 03 transferencia, 04 tarjeta de crédito, 28 débito, 99 por definir… Obligatoria con PUE; con PPD es 99."},"payment_method":{"type":"string","enum":["PUE","PPD"],"description":"Método de pago (MetodoPago): PUE (una sola exhibición, por omisión) o PPD (en parcialidades o diferido, se cobra con complementos de pago)."},"paid_later":{"type":"boolean","description":"Con PUE: true si aún no le pagan («Por cobrar» en la app) aunque se pagará este mes."},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"Moneda, clave ISO 4217 de c_Moneda (MXN, USD, EUR…). Por omisión MXN."},"series":{"type":"string","maxLength":25,"description":"Serie (Serie), hasta 25 caracteres. Cada serie lleva sus propios folios."},"notes":{"type":"string","maxLength":1000,"description":"Observaciones que aparecen en el PDF (no van en el XML)."},"pdf_language":{"type":"string","enum":["es","en","bi"],"description":"Idioma del PDF: es (por omisión) o en."},"addenda":{"type":"object","properties":{"type":{"type":"string","enum":["walmart","soriana","liverpool","homedepot","chedraui","generic"]},"values":{"type":"object","propertyNames":{"type":"string","maxLength":40},"additionalProperties":{"type":"string","maxLength":200}},"customer":{"type":"object","propertyNames":{"type":"string","maxLength":40},"additionalProperties":{"type":"string","maxLength":20000}}},"required":["type","values"],"description":"Addenda del receptor (Walmart, Soriana…), con sus propios campos."},"related":{"type":"object","properties":{"relationship":{"type":"string","pattern":"^\\d{2}$","description":"Tipo de relación (TipoRelacion): 01 nota de crédito, 03 devolución, 04 sustitución, 07 anticipo…"},"uuids":{"maxItems":20,"type":"array","items":{"type":"string","pattern":"^[0-9A-Fa-f]{8}-(?:[0-9A-Fa-f]{4}-){3}[0-9A-Fa-f]{12}$"},"description":"Folios fiscales relacionados."}},"required":["relationship","uuids"],"description":"CFDI relacionados (CfdiRelacionados): tipo de relación de c_TipoRelacion y los UUID."},"exchange_rate":{"type":"number","exclusiveMinimum":0,"maximum":1000000,"description":"Tipo de cambio a pesos (TipoCambio). Obligatorio si la moneda no es MXN; use el del DOF del día anterior."},"folio":{"type":"integer","minimum":1,"maximum":2000000000,"description":"Folio (Folio). Fiscalisto asigna el siguiente de la serie; mande uno solo si debe ser ese."},"continue_sequence":{"type":"boolean","description":"Con un folio elegido: true para que los siguientes sigan desde ese número."},"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}$","description":"Fecha de emisión (Fecha) si no es ahora, AAAA-MM-DDTHH:MM:SS hora de la Ciudad de México: hasta 72 horas antes."},"send_email":{"type":"boolean","default":false,"description":"true para mandar el PDF y el XML por correo al timbrar, con el diseño de Fiscalisto. Por omisión no se envía."},"email_cc":{"type":["string","null"],"description":"Correos con copia, separados por comas."},"metadata":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":40},"additionalProperties":{"type":"string","maxLength":500},"description":"Sus propios datos: hasta 50 llaves de 40 caracteres con valores de texto de hasta 500. No van al CFDI; vuelven en el objeto y en los webhooks."}},"required":["customer","items"],"description":"Una factura (CFDI 4.0). Un campo que no existe se rechaza con parameter_unknown, nunca se ignora."}}}}