{ "totalRows": 50, "successCount": 47, "errorCount": 3, "errors": [ { "row": 3, "message": "La clave de producto o servicio \"99999999\" no existe en el catálogo SAT (c_ClaveProdServ)" } ]}
Products
Import Products from CSV
Uploads a CSV file (multipart/form-data, field name “file”) and creates one product per data row. Required columns: description, productKey, price. Optional columns: unitKey (default H87), unitName, sku, taxIncluded, taxability, livemode — same field names as the JSON create endpoint. Each row is validated individually against the SAT product/unit key catalogs before creating it — rows with invalid SAT keys are never created silently. Processing is partial: valid rows are created even if other rows fail, and every failure is reported with its row number and reason.
{ "totalRows": 50, "successCount": 47, "errorCount": 3, "errors": [ { "row": 3, "message": "La clave de producto o servicio \"99999999\" no existe en el catálogo SAT (c_ClaveProdServ)" } ]}
Bulk-creates products or services from a CSV file. One product is created per data row. Processing is partial: valid rows are created even if other rows fail, and every failed row is reported individually with its row number and reason — no row is ever created silently with an invalid SAT key.
This endpoint takes no organizationId in the URL. Authenticate with either a Supabase Bearer session (send the X-Organization-Id: <org-id> header — the user must be a member of that organization) or an API key (the organization resolves automatically from the key; any X-Organization-Id header sent alongside an API key is ignored).
A Supabase Bearer session (Authorization: Bearer <token>) with the X-Organization-Id: <org-id> header — the authenticated user must be a member of that organization.
An API key (X-API-Key: sk_...) with the write:products scope — the organization is resolved from the key itself.
{ "totalRows": 3, "successCount": 2, "errorCount": 1, "errors": [ { "row": 4, "message": "La clave de producto o servicio \"99999999\" no existe en el catálogo SAT (c_ClaveProdServ)" } ]}
Field
Type
Description
totalRows
integer
Total data rows processed (excluding the header)
successCount
integer
Number of products created successfully
errorCount
integer
Number of rows that failed and did not create a product
errors
array
Per-row error detail
errors[].row
integer
1-based row number as it appears in the file (header = row 1)
Row-level failures (invalid SAT keys, missing required columns in a row, duplicate SKU) do not fail the request — they are reported in the errors array of a 200 OK response. The errors below abort the whole import instead.
No file was uploaded, the file is not a .csv, the file exceeds 5MB, the CSV is empty, the header row is missing a required column (description, productKey, or price), or the X-Organization-Id header is missing on a session-authenticated request.
{ "statusCode": 400, "message": "El CSV debe incluir las columnas requeridas: description, productKey, price"}
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Timbrix","colors":{"primary":"#000000","light":"#ffffff","dark":"#000000"},"logo":{"light":"https://mintcdn.com/timbrify/gNpyqvpwohEXPk52/logo/light.svg?fit=max\u0026auto=format\u0026n=gNpyqvpwohEXPk52\u0026q=85\u0026s=83b6a3e733e09f30ee340a5350b73212","dark":"https://mintcdn.com/timbrify/gNpyqvpwohEXPk52/logo/dark.svg?fit=max\u0026auto=format\u0026n=gNpyqvpwohEXPk52\u0026q=85\u0026s=8059165110d142712a6da647732f7527"},"favicon":"https://mintcdn.com/timbrify/4x_Tmgur6hxMQ4iw/favicon.svg?fit=max\u0026auto=format\u0026n=4x_Tmgur6hxMQ4iw\u0026q=85\u0026s=1db2033741049c7d0b55113e5aedb862","navbar":{"links":[{"href":"mailto:hola@timbrix.mx","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://app.timbrix.mx"}},"footer":{"socials":{"x":"https://x.com/timbrix_mx","instagram":"https://www.instagram.com/timbrix.mx","github":"https://github.com/Timbrix","linkedin":"https://www.linkedin.com/company/timbrix"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"timbrify","hasAudioNarration":false,"actualSubdomain":"timbrify","customDomains":["docs.timbrix.mx"],"gitSource":{"type":"github","owner":"timbrix","repo":"timbrix-platform","deployBranch":"main","contentDirectory":"apps/docs","isPrivate":true,"mountPath":"","label":""},"entitlements":{},"buildId":"6af694abf72f7996df8712a5","clientVersion":"0.0.4124","searchFilterCounts":[{"language":"default","tag":"API reference","count":196},{"language":"default","tag":"Invoices","count":17},{"language":"default","tag":"invoices","count":17},{"language":"default","tag":"organizations","count":17},{"language":"default","tag":"oauth","count":14},{"language":"default","tag":"Guides","count":13},{"language":"default","tag":"OAuth","count":11},{"language":"default","tag":"Organizations","count":10},{"language":"default","tag":"API Keys","count":7},{"language":"default","tag":"Webhooks","count":7}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/products/import","slug":"/api-reference/products/import","pageMetadata":{"title":"Import Products from CSV","openapi":"POST /products/import","description":"Uploads a CSV file (multipart/form-data, field name \"file\") and creates one product per data row. Required columns: description, productKey, price. Optional columns: unitKey (default H87), unitName, sku, taxIncluded, taxability, livemode — same field names as the JSON create endpoint. Each row is validated individually against the SAT product/unit key catalogs before creating it — rows with invalid SAT keys are never created silently. Processing is partial: valid rows are created even if other rows fail, and every failure is reported with its row number and reason.","href":"/api-reference/products/import"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Uploads a CSV file (multipart/form-data, field name “file”) and creates one product per data row. Required columns: description, productKey, price. Optional columns: unitKey (default H87), unitName, sku, taxIncluded, taxability, livemode — same field names as the JSON create endpoint. Each row is validated individually against the SAT product/unit key catalogs before creating it — rows with invalid SAT keys are never created silently. Processing is partial: valid rows are created even if other rows fail, and every failure is reported with its row number and reason.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,blockquote:`blockquote`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Table}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Bulk-creates products or services from a CSV file. One product is created per data row. Processing is `,_jsx(_components.strong,{children:`partial`}),`: valid rows are created even if other rows fail, and every failed row is reported individually with its row number and reason — no row is ever created silently with an invalid SAT key.`]}),`\n`,_jsxs(_components.blockquote,{children:[`\n`,_jsxs(_components.p,{children:[`This endpoint takes no `,_jsx(_components.code,{children:`organizationId`}),` in the URL. Authenticate with `,_jsx(_components.strong,{children:`either`}),` a Supabase Bearer session (send the `,_jsx(_components.code,{children:`X-Organization-Id: \u003corg-id>`}),` header — the user must be a member of that organization) `,_jsx(_components.strong,{children:`or`}),` an API key (the organization resolves automatically from the key; any `,_jsx(_components.code,{children:`X-Organization-Id`}),` header sent alongside an API key is ignored).`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`authentication`,children:`Authentication`}),`\n`,_jsxs(_components.p,{children:[`Accepts `,_jsx(_components.strong,{children:`either`}),`:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`A Supabase Bearer session (`,_jsx(_components.code,{children:`Authorization: Bearer \u003ctoken>`}),`) with the `,_jsx(_components.code,{children:`X-Organization-Id: \u003corg-id>`}),` header — the authenticated user must be a member of that organization.`]}),`\n`,_jsxs(_components.li,{children:[`An API key (`,_jsx(_components.code,{children:`X-API-Key: sk_...`}),`) with the `,_jsx(_components.code,{children:`write:products`}),` scope — the organization is resolved from the key itself.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`request`,children:`Request`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Content-Type:`}),` `,_jsx(_components.code,{children:`multipart/form-data`})]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`Type`}),_jsx(_components.th,{children:`Required`}),_jsx(_components.th,{children:`Description`})]})}),_jsx(_components.tbody,{children:_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`file`})}),_jsxs(_components.td,{children:[`file (`,_jsx(_components.code,{children:`.csv`}),`)`]}),_jsx(_components.td,{children:`Yes`}),_jsxs(_components.td,{children:[`CSV file, max `,_jsx(_components.strong,{children:`5MB`}),`. Must have a `,_jsx(_components.code,{children:`.csv`}),` extension or a `,_jsx(_components.code,{children:`text/csv`}),` / `,_jsx(_components.code,{children:`application/vnd.ms-excel`}),` MIME type.`]})]})})]}),`\n`,_jsx(Heading,{level:`3`,id:`csv-columns`,children:`CSV Columns`}),`\n`,_jsxs(_components.p,{children:[`The header row is required. Column names match the JSON `,_jsx(_components.a,{href:`/api-reference/products/create`,children:`Create Product`}),` field names.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Column`}),_jsx(_components.th,{children:`Required`}),_jsx(_components.th,{children:`Default`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`description`})}),_jsx(_components.td,{children:`Yes`}),_jsx(_components.td,{children:`—`}),_jsx(_components.td,{children:`Product or service description`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`productKey`})}),_jsx(_components.td,{children:`Yes`}),_jsx(_components.td,{children:`—`}),_jsxs(_components.td,{children:[`SAT product/service key. Must exist in the SAT `,_jsx(_components.code,{children:`c_ClaveProdServ`}),` catalog.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`price`})}),_jsx(_components.td,{children:`Yes`}),_jsx(_components.td,{children:`—`}),_jsx(_components.td,{children:`Unit price (positive number)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`unitKey`})}),_jsx(_components.td,{children:`No`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`\"H87\"`})}),_jsxs(_components.td,{children:[`SAT unit of measure key. Must exist in the SAT `,_jsx(_components.code,{children:`c_ClaveUnidad`}),` catalog.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`unitName`})}),_jsx(_components.td,{children:`No`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`\"Elemento\"`})}),_jsx(_components.td,{children:`Unit of measure name`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`sku`})}),_jsx(_components.td,{children:`No`}),_jsx(_components.td,{children:`—`}),_jsx(_components.td,{children:`Internal product SKU. Must be unique within the organization and within the file.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`taxIncluded`})}),_jsx(_components.td,{children:`No`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`false`})}),_jsxs(_components.td,{children:[`Whether taxes are already included in the price. Accepts `,_jsx(_components.code,{children:`true`}),`/`,_jsx(_components.code,{children:`false`}),`, `,_jsx(_components.code,{children:`1`}),`/`,_jsx(_components.code,{children:`0`}),`, `,_jsx(_components.code,{children:`si`}),`/`,_jsx(_components.code,{children:`no`}),`, `,_jsx(_components.code,{children:`yes`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`taxability`})}),_jsx(_components.td,{children:`No`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`\"01\"`})}),_jsx(_components.td,{children:`SAT taxability code (objeto de impuesto)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`livemode`})}),_jsx(_components.td,{children:`No`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`true`})}),_jsxs(_components.td,{children:[`Whether this is a live mode product. Same accepted boolean values as `,_jsx(_components.code,{children:`taxIncluded`}),`.`]})]})]})]}),`\n`,_jsx(_components.p,{children:`Row 1 is always treated as the header. Data rows are numbered starting at row 2.`}),`\n`,_jsx(Heading,{level:`2`,id:`example-request`,children:`Example Request`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -X`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://api.timbrix.mx/products/import`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Authorization: Bearer \u003cyour_token>\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"X-Organization-Id: 550e8400-e29b-41d4-a716-446655440000\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -F`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"file=@products.csv\"`})]}),`\n`]})})}),`\n`,_jsx(CodeBlock,{filename:`TypeScript SDK`,numberOfLines:`6`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`6`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` result`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` timbrix`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`products`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`importCsv`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` file`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"products.csv\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"550e8400-e29b-41d4-a716-446655440000\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`console`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`log`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`result`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`successCount`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`result`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`errorCount`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`With an API key, omit the `,_jsx(_components.code,{children:`X-Organization-Id`}),` header (and the SDK’s `,_jsx(_components.code,{children:`organizationId`}),` argument) entirely — it’s resolved from the key:`]}),`\n`,_jsx(CodeBlock,{filename:`TypeScript SDK (API key)`,numberOfLines:`2`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` result`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` timbrix`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`products`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`importCsv`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`file`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"products.csv\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`console`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`log`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`result`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`successCount`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`result`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`errorCount`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Example `,_jsx(_components.code,{children:`products.csv`}),`:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`csv`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`csv`,children:_jsxs(_components.code,{language:`csv`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`description,`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`productKey,`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`price,`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`unitKey,`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`unitName,`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`sku,`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`taxIncluded,`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`taxability,`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-light-font-weight\":`bold`,\"--shiki-dark\":`#569CD6`,\"--shiki-dark-font-weight\":`bold`},children:`livemode`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`Ukelele,`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`60131324,`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`345.60,`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`H87,`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`Elemento,`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`UKL-001,`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`true,`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`01,`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-light-font-weight\":`bold`,\"--shiki-dark\":`#569CD6`,\"--shiki-dark-font-weight\":`bold`},children:`true`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`Guitarra acústica,`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`60131327,`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`2500.00,`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`H87,`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`Elemento,`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`GTR-001,`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`true,`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`01,`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-light-font-weight\":`bold`,\"--shiki-dark\":`#569CD6`,\"--shiki-dark-font-weight\":`bold`},children:`true`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`Producto inválido,`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`99999999,`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`100.00,`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`,`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`,`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`BAD-001,`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`,`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`,`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`example-response`,children:`Example Response`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`11`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`11`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"totalRows\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`3`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"successCount\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`2`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"errorCount\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"errors\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"row\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`4`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"message\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"La clave de producto o servicio `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\\"`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`99999999`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:`\\\\\"`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` no existe en el catálogo SAT (c_ClaveProdServ)\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`Type`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`totalRows`})}),_jsx(_components.td,{children:`integer`}),_jsx(_components.td,{children:`Total data rows processed (excluding the header)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`successCount`})}),_jsx(_components.td,{children:`integer`}),_jsx(_components.td,{children:`Number of products created successfully`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`errorCount`})}),_jsx(_components.td,{children:`integer`}),_jsx(_components.td,{children:`Number of rows that failed and did not create a product`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`errors`})}),_jsx(_components.td,{children:`array`}),_jsx(_components.td,{children:`Per-row error detail`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`errors[].row`})}),_jsx(_components.td,{children:`integer`}),_jsx(_components.td,{children:`1-based row number as it appears in the file (header = row 1)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`errors[].message`})}),_jsx(_components.td,{children:`string`}),_jsx(_components.td,{children:`Reason the row could not be imported`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`common-errors`,children:`Common Errors`}),`\n`,_jsxs(_components.p,{children:[`Row-level failures (invalid SAT keys, missing required columns in a row, duplicate SKU) do `,_jsx(_components.strong,{children:`not`}),` fail the request — they are reported in the `,_jsx(_components.code,{children:`errors`}),` array of a `,_jsx(_components.code,{children:`200 OK`}),` response. The errors below abort the whole import instead.`]}),`\n`,_jsx(Heading,{level:`3`,id:`400-bad-request`,children:`400 Bad Request`}),`\n`,_jsxs(_components.p,{children:[`No file was uploaded, the file is not a `,_jsx(_components.code,{children:`.csv`}),`, the file exceeds 5MB, the CSV is empty, the header row is missing a required column (`,_jsx(_components.code,{children:`description`}),`, `,_jsx(_components.code,{children:`productKey`}),`, or `,_jsx(_components.code,{children:`price`}),`), or the `,_jsx(_components.code,{children:`X-Organization-Id`}),` header is missing on a session-authenticated request.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`4`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"statusCode\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`400`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"message\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"El CSV debe incluir las columnas requeridas: description, productKey, price\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`401-unauthorized`,children:`401 Unauthorized`}),`\n`,_jsx(_components.p,{children:`Missing or invalid Bearer token / API key.`}),`\n`,_jsx(Heading,{level:`3`,id:`403-forbidden`,children:`403 Forbidden`}),`\n`,_jsxs(_components.p,{children:[`The authenticated user is not a member of the organization sent in `,_jsx(_components.code,{children:`X-Organization-Id`}),`, or the API key does not have the `,_jsx(_components.code,{children:`write:products`}),` scope.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Import Products from CSV","openapi":"POST /products/import","description":"Uploads a CSV file (multipart/form-data, field name \"file\") and creates one product per data row. Required columns: description, productKey, price. Optional columns: unitKey (default H87), unitName, sku, taxIncluded, taxability, livemode — same field names as the JSON create endpoint. Each row is validated individually against the SAT product/unit key catalogs before creating it — rows with invalid SAT keys are never created silently. Processing is partial: valid rows are created even if other rows fail, and every failure is reported with its row number and reason.","href":"/api-reference/products/import"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Authentication","slug":"authentication","depth":2,"children":[]},{"title":"Request","slug":"request","depth":2,"children":[{"title":"CSV Columns","slug":"csv-columns","depth":3,"children":[]}]},{"title":"Example Request","slug":"example-request","depth":2,"children":[]},{"title":"Example Response","slug":"example-response","depth":2,"children":[]},{"title":"Common Errors","slug":"common-errors","depth":2,"children":[{"title":"400 Bad Request","slug":"400-bad-request","depth":3,"children":[]},{"title":"401 Unauthorized","slug":"401-unauthorized","depth":3,"children":[]},{"title":"403 Forbidden","slug":"403-forbidden","depth":3,"children":[]}]}],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"description":"Uploads a CSV file (multipart/form-data, field name \"file\") and creates one product per data row. Required columns: description, productKey, price. Optional columns: unitKey (default H87), unitName, sku, taxIncluded, taxability, livemode — same field names as the JSON create endpoint. Each row is validated individually against the SAT product/unit key catalogs before creating it — rows with invalid SAT keys are never created silently. Processing is partial: valid rows are created even if other rows fail, and every failure is reported with its row number and reason.","operationId":"ProductsController_importCsv","parameters":["7b962f53-5ca7-4d36-af91-9d23bad38b86"],"requestBody":"d5c45b26-98b9-4488-8f06-9f7553f9924e","responses":{"201":"d03c1aec-7205-4c9f-8cc7-e8f40967ad65","400":"54cc114c-49b8-4c7f-9848-bef2152df32c"},"security":["e748d537-9030-4c12-a09d-c5190086a29a","3365b236-a9c6-41bd-af17-d4d57b70440c"],"summary":"Bulk import products/services from a CSV file","tags":["products"],"method":"post","type":"path","servers":[],"path":"/products/import","baseUrlOptions":[],"title":"Bulk import products/services from a CSV file","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"7b962f53-5ca7-4d36-af91-9d23bad38b86":{"name":"X-Organization-Id","in":"header","description":"Required for Supabase session auth. Ignored when authenticating with an API key (the organization resolves from the key).","required":false,"schema":{"type":"string","isRequired":false,"description":"Required for Supabase session auth. Ignored when authenticating with an API key (the organization resolves from the key).","uniqueKey":"","typeLabel":"string"}}},"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary","uniqueKey":"file","typeLabel":"file"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"file":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"d03c1aec-7205-4c9f-8cc7-e8f40967ad65":{"description":"Import summary with per-row success/error detail","content":{"application/json":{"schema":{"type":"object","properties":{"totalRows":{"type":"number","example":50,"description":"Total de filas de datos procesadas (sin contar el encabezado)","isRequired":true,"uniqueKey":"totalRows","typeLabel":"number"},"successCount":{"type":"number","example":47,"description":"Número de productos creados exitosamente","isRequired":true,"uniqueKey":"successCount","typeLabel":"number"},"errorCount":{"type":"number","example":3,"description":"Número de filas que fallaron y no generaron un producto","isRequired":true,"uniqueKey":"errorCount","typeLabel":"number"},"errors":{"description":"Detalle de errores por fila","type":"array","items":{"type":"object","properties":{"row":{"type":"number","example":3,"description":"Número de fila en el archivo CSV (la fila 1 es el encabezado, la primera fila de datos es la 2)","isRequired":true,"uniqueKey":"errors.items.[INDEX].row","typeLabel":"number"},"message":{"type":"string","example":"La clave de producto o servicio \"99999999\" no existe en el catálogo SAT (c_ClaveProdServ)","description":"Motivo por el que la fila no se pudo importar","isRequired":true,"uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"}},"required":["row","message"],"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"errors","typeLabel":"object[]"}},"required":["totalRows","successCount","errorCount","errors"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"totalRows":50,"successCount":47,"errorCount":3,"errors":[{"row":3,"message":"La clave de producto o servicio \"99999999\" no existe en el catálogo SAT (c_ClaveProdServ)"}]}}},"exampleType":"generated"}},"exampleType":"generated"},"54cc114c-49b8-4c7f-9848-bef2152df32c":{"description":"Missing X-Organization-Id header for a session request","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}}},"security":{"e748d537-9030-4c12-a09d-c5190086a29a":{"apiKey":{"type":"apiKey","in":"header","name":"X-API-Key","description":"API Key for authentication (sk_test_... for sandbox, sk_live_... for production)","scopes":[],"schemeName":"apiKey"}},"3365b236-a9c6-41bd-af17-d4d57b70440c":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http","scopes":[],"schemeName":"bearer"}}},"servers":{},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"X-API-Key","description":"API Key for authentication (sk_test_... for sandbox, sk_live_... for production)","scopes":[],"schemeName":"apiKey"},"schema":{"title":"X-API-Key","type":"string","description":"API Key for authentication (sk_test_... for sandbox, sk_live_... for production)","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"apiKey","name":"X-API-Key"}],"title":"apiKey"},{"schemes":[{"scheme":{"scheme":"bearer","bearerFormat":"JWT","type":"http","scopes":[],"schemeName":"bearer"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your auth token.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearer","name":"Authorization"}],"title":"bearer"}]},"originalFileLocation":"https://api.timbrix.mx/api/openapi.json"},"subdomain":"timbrify","siteName":"Timbrix","title":"Import Products from CSV - Timbrix","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-02T06:10:28.839Z","originalFileLocation":"api-reference/products/import.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Uploads a CSV file (multipart/form-data, field name \u0026quot;file\u0026quot;) and creates one product per data row. Required columns: description, productKey, price. Optional columns: unitKey (default H87), unitName, sku, taxIncluded, taxability, livemode — same field names as the JSON create endpoint. Each row is validated individually against the SAT product/unit key catalogs before creating it — rows with invalid SAT keys are never created silently. Processing is partial: valid rows are created even if other rows fail, and every failure is reported with its row number and reason.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Timbrix\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/timbrify/iZomOVb_tfgoSMHM/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/timbrify/iZomOVb_tfgoSMHM/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/timbrify/iZomOVb_tfgoSMHM/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/timbrify/iZomOVb_tfgoSMHM/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/timbrify/iZomOVb_tfgoSMHM/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/timbrify/iZomOVb_tfgoSMHM/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/timbrify/iZomOVb_tfgoSMHM/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/timbrify/iZomOVb_tfgoSMHM/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/timbrify/iZomOVb_tfgoSMHM/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Import Products from CSV - Timbrix\">\u003cmeta data-mint-head property=\"og:description\" content=\"Uploads a CSV file (multipart/form-data, field name \u0026quot;file\u0026quot;) and creates one product per data row. Required columns: description, productKey, price. Optional columns: unitKey (default H87), unitName, sku, taxIncluded, taxability, livemode — same field names as the JSON create endpoint. Each row is validated individually against the SAT product/unit key catalogs before creating it — rows with invalid SAT keys are never created silently. Processing is partial: valid rows are created even if other rows fail, and every failure is reported with its row number and reason.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Timbrix\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.timbrix.mx/api-reference/products/import\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://timbrify.mintlify.site/_mintlify/api/og/v2?division=Products\u0026amp;title=Import+Products+from+CSV\u0026amp;description=Uploads+a+CSV+file+%28multipart%2Fform-data%2C+field+name+%22file%22%29+and+creates+one+product+per+data+row.+Required+columns%3A+description%2C+productKey%2C+price.+Optional+col\u0026amp;theme=826df6b90d7e3e43c048463d\u0026amp;signature=effaade34a456fd37e69a7bd2f873b9862ac5091aaf3a5b8f677c9b0c67b9314\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Import Products from CSV - Timbrix\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Uploads a CSV file (multipart/form-data, field name \u0026quot;file\u0026quot;) and creates one product per data row. Required columns: description, productKey, price. Optional columns: unitKey (default H87), unitName, sku, taxIncluded, taxability, livemode — same field names as the JSON create endpoint. Each row is validated individually against the SAT product/unit key catalogs before creating it — rows with invalid SAT keys are never created silently. Processing is partial: valid rows are created even if other rows fail, and every failure is reported with its row number and reason.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://timbrify.mintlify.site/_mintlify/api/og/v2?division=Products\u0026amp;title=Import+Products+from+CSV\u0026amp;description=Uploads+a+CSV+file+%28multipart%2Fform-data%2C+field+name+%22file%22%29+and+creates+one+product+per+data+row.+Required+columns%3A+description%2C+productKey%2C+price.+Optional+col\u0026amp;theme=826df6b90d7e3e43c048463d\u0026amp;signature=effaade34a456fd37e69a7bd2f873b9862ac5091aaf3a5b8f677c9b0c67b9314\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/timbrify/iZomOVb_tfgoSMHM/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Timbrix\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#000000\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.timbrix.mx/api-reference/products/import\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/products/import.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.timbrix.mx/#organization\",\"name\":\"Timbrix\",\"url\":\"https://docs.timbrix.mx\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/timbrify/gNpyqvpwohEXPk52/logo/light.svg?fit=max\u0026auto=format\u0026n=gNpyqvpwohEXPk52\u0026q=85\u0026s=83b6a3e733e09f30ee340a5350b73212\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.timbrix.mx#website\",\"name\":\"Timbrix\",\"url\":\"https://docs.timbrix.mx\",\"publisher\":{\"@id\":\"https://docs.timbrix.mx/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.timbrix.mx/api-reference/products/import#webpage\",\"url\":\"https://docs.timbrix.mx/api-reference/products/import\",\"name\":\"Import Products from CSV\",\"description\":\"Uploads a CSV file (multipart/form-data, field name \\\"file\\\") and creates one product per data row. Required columns: description, productKey, price. Optional columns: unitKey (default H87), unitName, sku, taxIncluded, taxability, livemode — same field names as the JSON create endpoint. Each row is validated individually against the SAT product/unit key catalogs before creating it — rows with invalid SAT keys are never created silently. Processing is partial: valid rows are created even if other rows fail, and every failure is reported with its row number and reason.\",\"dateModified\":\"2026-09-02T06:10:28.839Z\",\"isPartOf\":{\"@id\":\"https://docs.timbrix.mx#website\"},\"breadcrumb\":{\"@id\":\"https://docs.timbrix.mx/api-reference/products/import#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.timbrix.mx/api-reference/products/import#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Products\",\"item\":\"https://docs.timbrix.mx/api-reference/products/list\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Import Products from CSV\",\"item\":\"https://docs.timbrix.mx/api-reference/products/import\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.timbrix.mx/api-reference/products/import#apireference\",\"headline\":\"Import Products from CSV\",\"name\":\"Import Products from CSV\",\"description\":\"Uploads a CSV file (multipart/form-data, field name \\\"file\\\") and creates one product per data row. Required columns: description, productKey, price. Optional columns: unitKey (default H87), unitName, sku, taxIncluded, taxability, livemode — same field names as the JSON create endpoint. Each row is validated individually against the SAT product/unit key catalogs before creating it — rows with invalid SAT keys are never created silently. Processing is partial: valid rows are created even if other rows fail, and every failure is reported with its row number and reason.\",\"url\":\"https://docs.timbrix.mx/api-reference/products/import\",\"mainEntityOfPage\":{\"@id\":\"https://docs.timbrix.mx/api-reference/products/import#webpage\"},\"dateModified\":\"2026-09-02T06:10:28.839Z\",\"publisher\":{\"@id\":\"https://docs.timbrix.mx/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.timbrix.mx#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Timbrix\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Timbrix\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api-reference/products/import.md","siteName":"Timbrix","nav":{"global":null,"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":""}]},{"tab":"Agentes de IA","pages":[{"title":"Agentes de IA","href":"/ai-agents"}]},{"tab":"API reference","groups":[{"group":"API documentation","pages":[{"title":"API Reference","href":"/api-reference/introduction"}]},{"group":"Organizations","pages":[{"title":"Create Organization","openapi":"POST /organizations","href":"/api-reference/organizations/create"},{"title":"Get Organization","openapi":"GET /organizations/{id}","href":"/api-reference/organizations/get"},{"title":"Update Organization","openapi":"PUT /organizations/{id}","href":"/api-reference/organizations/update"},{"title":"Update Legal Data","api":"PUT /organizations/{id}/legal","href":"/api-reference/organizations/update-legal-data"},{"title":"Upload Certificates","api":"PUT /organizations/{id}/certificates","href":"/api-reference/organizations/upload-certificates"},{"title":"Delete Certificates","api":"DELETE /organizations/{id}/certificates","href":"/api-reference/organizations/delete-certificates"},{"title":"Close Preview","openapi":"GET /organizations/{id}/close-preview","href":"/api-reference/organizations/close-preview"},{"title":"Delete Organization","openapi":"DELETE /organizations/{id}","href":"/api-reference/organizations/delete"},{"title":"Reopen Organization","openapi":"POST /organizations/{id}/reopen","href":"/api-reference/organizations/reopen"},{"title":"Transfer Ownership","openapi":"POST /organizations/{id}/transfer-ownership","href":"/api-reference/organizations/transfer-ownership"}]},{"group":"Members","pages":[{"title":"List Members","openapi":"GET /organizations/{id}/members","href":"/api-reference/members/list"},{"title":"Invite Member","openapi":"POST /organizations/{id}/members/invite","href":"/api-reference/members/invite"},{"title":"Update Member Role","openapi":"PUT /organizations/{id}/members/{memberId}/role","href":"/api-reference/members/update-role"},{"title":"Remove Member","openapi":"DELETE /organizations/{id}/members/{memberId}","href":"/api-reference/members/remove"}]},{"group":"Invites","pages":[{"title":"List Invites","openapi":"GET /organizations/{id}/invites","href":"/api-reference/invites/list"},{"title":"Cancel Invite","openapi":"DELETE /organizations/{id}/invites/{inviteId}","href":"/api-reference/invites/cancel"}]},{"group":"Auth","pages":[{"title":"Login","openapi":"POST /auth/login","href":"/api-reference/auth/login"},{"title":"Logout","openapi":"POST /auth/logout","href":"/api-reference/auth/logout"}]},{"group":"OAuth","pages":[{"title":"Create OAuth Application","openapi":"POST /oauth/apps","href":"/api-reference/oauth/create-app"},{"title":"List OAuth Applications","openapi":"GET /oauth/apps/organization/{organizationId}","href":"/api-reference/oauth/list-apps"},{"title":"Get OAuth Application","openapi":"GET /oauth/apps/{clientId}","href":"/api-reference/oauth/get-app"},{"title":"Update OAuth Application","openapi":"PUT /oauth/apps/{clientId}","href":"/api-reference/oauth/update-app"},{"title":"Delete OAuth Application","openapi":"DELETE /oauth/apps/{clientId}","href":"/api-reference/oauth/delete-app"},{"title":"Authorization Endpoint","openapi":"GET /oauth/authorize","href":"/api-reference/oauth/authorize"},{"title":"Generate OAuth Access Token","openapi":"POST /oauth/token","href":"/api-reference/oauth/token"},{"title":"Exchange Authorization Code","openapi":"POST /oauth/token/exchange","href":"/api-reference/oauth/exchange"},{"title":"Refresh OAuth Token","openapi":"POST /oauth/token/refresh","href":"/api-reference/oauth/refresh"},{"title":"List OAuth Tokens","openapi":"GET /oauth/apps/{clientId}/tokens","href":"/api-reference/oauth/list-tokens"},{"title":"Revoke OAuth Token","openapi":"DELETE /oauth/token/{tokenId}","href":"/api-reference/oauth/revoke"}]},{"group":"Customers","pages":[{"title":"List Customers","openapi":"GET /customers","href":"/api-reference/customers/list"},{"title":"Create Customer","openapi":"POST /customers","href":"/api-reference/customers/create"},{"title":"Get Customer","openapi":"GET /customers/{customerId}","href":"/api-reference/customers/get"},{"title":"Update Customer","openapi":"PUT /customers/{customerId}","href":"/api-reference/customers/update"},{"title":"Delete Customer","openapi":"DELETE /customers/{customerId}","href":"/api-reference/customers/delete"}]},{"group":"SAT Catalogs","pages":[{"title":"SAT Catalogs","href":"/api-reference/sat-catalogs"}]},{"group":"Invoices","pages":[{"title":"List Invoices","openapi":"GET /invoices","href":"/api-reference/invoices/list"},{"title":"Get Invoice","openapi":"GET /invoices/{uuid}","href":"/api-reference/invoices/get"},{"title":"Download Invoice XML","openapi":"GET /invoices/{uuid}/xml","href":"/api-reference/invoices/download-xml"},{"title":"Download Invoice PDF","openapi":"GET /invoices/{uuid}/pdf","href":"/api-reference/invoices/download-pdf"},{"title":"Create Invoice","openapi":"POST /invoices","href":"/api-reference/invoices/create"},{"title":"Register Payment (Complemento de Pago)","openapi":"POST /invoices/payments","href":"/api-reference/invoices/register-payment"},{"title":"Get Payments","openapi":"GET /invoices/{uuid}/payments","href":"/api-reference/invoices/get-payments"},{"title":"Preview Invoice PDF","openapi":"POST /invoices/preview/pdf","href":"/api-reference/invoices/preview-pdf"},{"title":"Cancel Invoice","openapi":"POST /invoices/{uuid}/cancel","href":"/api-reference/invoices/cancel"},{"title":"Resolve Cancellation","openapi":"POST /invoices/{uuid}/cancellations/{cancellationId}/resolve","href":"/api-reference/invoices/resolve-cancellation"},{"title":"List Invoice Cancellations","openapi":"GET /invoices/{uuid}/cancellations","href":"/api-reference/invoices/list-cancellations"},{"title":"Email Invoice","openapi":"POST /invoices/{uuid}/email","href":"/api-reference/invoices/email"},{"title":"Get CFDI Usage","openapi":"GET /usage","href":"/api-reference/invoices/usage"},{"title":"Get Invoice Report Summary","openapi":"GET /invoices/report/summary","href":"/api-reference/invoices/report-summary"},{"title":"Export Invoices as CSV","openapi":"GET /invoices/report/export.csv","href":"/api-reference/invoices/export-csv"},{"title":"Export Invoices as XML ZIP","openapi":"GET /invoices/report/export/xml.zip","href":"/api-reference/invoices/export-xml"},{"title":"Export Invoices as PDF ZIP","openapi":"GET /invoices/report/export/pdf.zip","href":"/api-reference/invoices/export-pdf"}]},{"group":"Request logs","pages":[{"title":"List Request Logs","openapi":"GET /request-logs","href":"/api-reference/request-logs/list"},{"title":"Request stats","openapi":"GET /request-logs/stats","href":"/api-reference/request-logs/stats"},{"title":"Get Request Log","openapi":"GET /request-logs/{id}","href":"/api-reference/request-logs/get"}]},{"group":"Audit log","pages":[{"title":"List Audit Log Entries","openapi":"GET /audit-logs","href":"/api-reference/audit-logs/list"},{"title":"Get Audit Log Entry","openapi":"GET /audit-logs/{id}","href":"/api-reference/audit-logs/get"},{"title":"Export Audit Log as CSV","openapi":"GET /audit-logs/export.csv","href":"/api-reference/audit-logs/export"},{"title":"Verify Audit Log Integrity","openapi":"GET /audit-logs/verify","href":"/api-reference/audit-logs/verify"}]},{"group":"Products","pages":[{"title":"List Products","openapi":"GET /products","href":"/api-reference/products/list"},{"title":"Create Product","openapi":"POST /products","description":null,"href":"/api-reference/products/create"},{"title":"Import Products from CSV","openapi":"POST /products/import","href":"/api-reference/products/import"},{"title":"Get Product","openapi":"GET /products/{productId}","description":null,"href":"/api-reference/products/get"},{"title":"Update Product","openapi":"PUT /products/{productId}","href":"/api-reference/products/update"},{"title":"Delete Product","openapi":"DELETE /products/{productId}","href":"/api-reference/products/delete"}]},{"group":"Users","pages":[{"title":"Get Current User","openapi":"GET /users/me","href":"/api-reference/users/me"},{"title":"Get User by ID","openapi":"GET /users/{id}","href":"/api-reference/users/get"},{"title":"Get User by Email","openapi":"GET /users/email/{email}","href":"/api-reference/users/get-by-email"},{"title":"Get User Organizations","openapi":"GET /users/{id}/organizations","href":"/api-reference/users/organizations"},{"title":"Delete My Account","openapi":"DELETE /users/me","href":"/api-reference/users/delete-me"}]},{"group":"Webhooks","pages":[{"title":"List Organization Webhooks","openapi":"GET /organizations/{organizationId}/webhooks","href":"/api-reference/webhooks/list"},{"title":"Create Webhook","openapi":"POST /organizations/{organizationId}/webhooks","href":"/api-reference/webhooks/create"},{"title":"Get Webhook by ID","openapi":"GET /organizations/{organizationId}/webhooks/{id}","href":"/api-reference/webhooks/get"},{"title":"Update Webhook","openapi":"PUT /organizations/{organizationId}/webhooks/{id}","href":"/api-reference/webhooks/update"},{"title":"Delete Webhook","openapi":"DELETE /organizations/{organizationId}/webhooks/{id}","href":"/api-reference/webhooks/delete"},{"title":"Get Webhook Delivery History","openapi":"GET /organizations/{organizationId}/webhooks/{id}/deliveries","href":"/api-reference/webhooks/deliveries"},{"title":"Send Test Webhook","openapi":"POST /organizations/{organizationId}/webhooks/{id}/test","href":"/api-reference/webhooks/test"}]},{"group":"Series","pages":[{"title":"List Series","openapi":"GET /organizations/{organizationId}/series","href":"/api-reference/series/list"},{"title":"Create Series","openapi":"POST /organizations/{organizationId}/series","href":"/api-reference/series/create"},{"title":"Update Series","openapi":"PUT /organizations/{organizationId}/series/{series}","href":"/api-reference/series/update"},{"title":"Delete Series","openapi":"DELETE /organizations/{organizationId}/series/{series}","href":"/api-reference/series/delete"},{"title":"Set Default Series","openapi":"PUT /organizations/{organizationId}/default-series","href":"/api-reference/series/set-default"}]},{"group":"API Keys","pages":[{"title":"List API Keys","openapi":"GET /organizations/{organizationId}/api-keys","href":"/api-reference/api-keys/list"},{"title":"Create API Key","openapi":"POST /organizations/{organizationId}/api-keys","href":"/api-reference/api-keys/create"},{"title":"Get API Key","openapi":"GET /organizations/{organizationId}/api-keys/{id}","href":"/api-reference/api-keys/get"},{"title":"Update API Key","openapi":"PUT /organizations/{organizationId}/api-keys/{id}","href":"/api-reference/api-keys/update"},{"title":"Delete API Key","openapi":"DELETE /organizations/{organizationId}/api-keys/{id}","href":"/api-reference/api-keys/delete"},{"title":"Get API Key Statistics","openapi":"GET /organizations/{organizationId}/api-keys/stats","href":"/api-reference/api-keys/stats"},{"title":"Validate API Key","openapi":"POST /api-keys/validate","href":"/api-reference/api-keys/validate"}]},{"group":"organizations","pages":[{"title":"Create a new organization","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json post /organizations","href":"/api-reference/organizations/create-a-new-organization"},{"title":"Validate CSD certificate and optionally verify private key password","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json post /organizations/certificates/validate","href":"/api-reference/organizations/validate-csd-certificate-and-optionally-verify-private-key-password"},{"title":"Get organization by ID","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /organizations/{id}","href":"/api-reference/organizations/get-organization-by-id"},{"title":"Update organization (owner only)","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json put /organizations/{id}","href":"/api-reference/organizations/update-organization-owner-only"},{"title":"Delete or close organization (owner only)","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json delete /organizations/{id}","href":"/api-reference/organizations/delete-or-close-organization-owner-only"},{"title":"Update organization legal/fiscal data (owner only)","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json put /organizations/{id}/legal","href":"/api-reference/organizations/update-organization-legalfiscal-data-owner-only"},{"title":"Upload CSD certificate (owner only)","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json put /organizations/{id}/certificates","href":"/api-reference/organizations/upload-csd-certificate-owner-only"},{"title":"Delete CSD certificates (owner only)","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json delete /organizations/{id}/certificates","href":"/api-reference/organizations/delete-csd-certificates-owner-only"},{"title":"Preview deleting or closing the organization (owner only)","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /organizations/{id}/close-preview","href":"/api-reference/organizations/preview-deleting-or-closing-the-organization-owner-only"},{"title":"Reopen a closed organization (owner only)","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json post /organizations/{id}/reopen","href":"/api-reference/organizations/reopen-a-closed-organization-owner-only"},{"title":"Transfer organization ownership (owner only)","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json post /organizations/{id}/transfer-ownership","href":"/api-reference/organizations/transfer-organization-ownership-owner-only"},{"title":"Get organization members","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /organizations/{id}/members","href":"/api-reference/organizations/get-organization-members"},{"title":"Invite a member (owner/admin only)","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json post /organizations/{id}/members/invite","href":"/api-reference/organizations/invite-a-member-owneradmin-only"},{"title":"Remove a member (owner/admin only)","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json delete /organizations/{id}/members/{memberId}","href":"/api-reference/organizations/remove-a-member-owneradmin-only"},{"title":"Update member role (owner/admin only)","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json put /organizations/{id}/members/{memberId}/role","href":"/api-reference/organizations/update-member-role-owneradmin-only"},{"title":"Get pending invitations","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /organizations/{id}/invites","href":"/api-reference/organizations/get-pending-invitations"},{"title":"Cancel an invitation (owner/admin only)","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json delete /organizations/{id}/invites/{inviteId}","href":"/api-reference/organizations/cancel-an-invitation-owneradmin-only"}]},{"group":"users","pages":[{"title":"Get current authenticated user","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /users/me","href":"/api-reference/users/get-current-authenticated-user"},{"title":"Delete my account","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json delete /users/me","href":"/api-reference/users/delete-my-account"},{"title":"Get user by ID","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /users/{id}","href":"/api-reference/users/get-user-by-id"},{"title":"Get user organizations","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /users/{id}/organizations","href":"/api-reference/users/get-user-organizations"},{"title":"Get user by email","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /users/email/{email}","href":"/api-reference/users/get-user-by-email"}]},{"group":"api-keys","pages":[{"title":"List organization API keys","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /organizations/{organizationId}/api-keys","href":"/api-reference/api-keys/list-organization-api-keys"},{"title":"Create API key","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json post /organizations/{organizationId}/api-keys","href":"/api-reference/api-keys/create-api-key"},{"title":"Get API key statistics","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /organizations/{organizationId}/api-keys/stats","href":"/api-reference/api-keys/get-api-key-statistics"},{"title":"Get API key by ID","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /organizations/{organizationId}/api-keys/{id}","href":"/api-reference/api-keys/get-api-key-by-id"},{"title":"Update API key","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json put /organizations/{organizationId}/api-keys/{id}","href":"/api-reference/api-keys/update-api-key"},{"title":"Delete API key","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json delete /organizations/{organizationId}/api-keys/{id}","href":"/api-reference/api-keys/delete-api-key"},{"title":"Validate API key","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json post /api-keys/validate","href":"/api-reference/api-keys/validate-api-key"}]},{"group":"series","pages":[{"title":"List the organization's series and folios","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /organizations/{organizationId}/series","href":"/api-reference/series/list-the-organizations-series-and-folios"},{"title":"Create a series","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json post /organizations/{organizationId}/series","href":"/api-reference/series/create-a-series"},{"title":"Set the default series of a voucher type","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json put /organizations/{organizationId}/default-series","href":"/api-reference/series/set-the-default-series-of-a-voucher-type"},{"title":"Update the next folio of a series","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json put /organizations/{organizationId}/series/{series}","href":"/api-reference/series/update-the-next-folio-of-a-series"},{"title":"Delete a series","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json delete /organizations/{organizationId}/series/{series}","href":"/api-reference/series/delete-a-series"}]},{"group":"oauth","pages":[{"title":"Create a new OAuth application","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json post /oauth/apps","href":"/api-reference/oauth/create-a-new-oauth-application"},{"title":"Get OAuth application by client ID","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /oauth/apps/{clientId}","href":"/api-reference/oauth/get-oauth-application-by-client-id"},{"title":"Update OAuth application","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json put /oauth/apps/{clientId}","href":"/api-reference/oauth/update-oauth-application"},{"title":"Delete OAuth application","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json delete /oauth/apps/{clientId}","href":"/api-reference/oauth/delete-oauth-application"},{"title":"List OAuth applications for organization","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /oauth/apps/organization/{organizationId}","href":"/api-reference/oauth/list-oauth-applications-for-organization"},{"title":"Generate OAuth access token","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json post /oauth/token","href":"/api-reference/oauth/generate-oauth-access-token"},{"title":"OAuth2 Authorization Endpoint (redirects to consent screen)","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /oauth/authorize","href":"/api-reference/oauth/oauth2-authorization-endpoint-redirects-to-consent-screen"},{"title":"Get authorization details for consent screen","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /oauth/authorize/details","href":"/api-reference/oauth/get-authorization-details-for-consent-screen"},{"title":"Approve authorization and generate code","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json post /oauth/authorize/approve","href":"/api-reference/oauth/approve-authorization-and-generate-code"},{"title":"Deny authorization request","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json post /oauth/authorize/deny","href":"/api-reference/oauth/deny-authorization-request"},{"title":"Exchange authorization code for access token","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json post /oauth/token/exchange","href":"/api-reference/oauth/exchange-authorization-code-for-access-token"},{"title":"Refresh OAuth access token","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json post /oauth/token/refresh","href":"/api-reference/oauth/refresh-oauth-access-token"},{"title":"Revoke access token","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json delete /oauth/token/{tokenId}","href":"/api-reference/oauth/revoke-access-token"},{"title":"List tokens for OAuth application","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /oauth/apps/{clientId}/tokens","href":"/api-reference/oauth/list-tokens-for-oauth-application"}]},{"group":"monitoring","pages":[{"title":"Health check endpoint","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /health","href":"/api-reference/monitoring/health-check-endpoint"},{"title":"Readiness check","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /health/ready","href":"/api-reference/monitoring/readiness-check"},{"title":"Liveness check","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /health/live","href":"/api-reference/monitoring/liveness-check"},{"title":"Sandbox PAC reachability","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /health/pac-sandbox","href":"/api-reference/monitoring/sandbox-pac-reachability"}]},{"group":"auth","pages":[{"title":"Iniciar sesión con email y contraseña","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json post /auth/login","href":"/api-reference/auth/iniciar-sesión-con-email-y-contraseña"},{"title":"Cerrar sesión","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json post /auth/logout","href":"/api-reference/auth/cerrar-sesión"}]},{"group":"customers","pages":[{"title":"List customers for an organization","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /customers","href":"/api-reference/customers/list-customers-for-an-organization"},{"title":"Create a customer","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json post /customers","href":"/api-reference/customers/create-a-customer"},{"title":"Get a customer by ID","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /customers/{customerId}","href":"/api-reference/customers/get-a-customer-by-id"},{"title":"Update a customer","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json put /customers/{customerId}","href":"/api-reference/customers/update-a-customer"},{"title":"Delete a customer","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json delete /customers/{customerId}","href":"/api-reference/customers/delete-a-customer"}]},{"group":"products","pages":[{"title":"List products for an organization","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /products","href":"/api-reference/products/list-products-for-an-organization"},{"title":"Create a product or service","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json post /products","href":"/api-reference/products/create-a-product-or-service"},{"title":"Bulk import products/services from a CSV file","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json post /products/import","href":"/api-reference/products/bulk-import-productsservices-from-a-csv-file"},{"title":"Get a product by ID","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /products/{productId}","href":"/api-reference/products/get-a-product-by-id"},{"title":"Update a product","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json put /products/{productId}","href":"/api-reference/products/update-a-product"},{"title":"Delete a product","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json delete /products/{productId}","href":"/api-reference/products/delete-a-product"}]},{"group":"sat","pages":[{"title":"Listar regímenes fiscales SAT (c_RegimenFiscal)","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /sat/regimenes-fiscales","href":"/api-reference/sat/listar-regímenes-fiscales-sat-c_regimenfiscal"},{"title":"Listar usos de CFDI SAT (c_UsoCFDI)","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /sat/usos-cfdi","href":"/api-reference/sat/listar-usos-de-cfdi-sat-c_usocfdi"},{"title":"Buscar claves de producto o servicio SAT (c_ClaveProdServ)","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /sat/claves-prod-serv","href":"/api-reference/sat/buscar-claves-de-producto-o-servicio-sat-c_claveprodserv"},{"title":"Buscar claves de unidad de medida SAT (c_ClaveUnidad)","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /sat/claves-unidad","href":"/api-reference/sat/buscar-claves-de-unidad-de-medida-sat-c_claveunidad"}]},{"group":"webhooks","pages":[{"title":"List organization webhooks","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /organizations/{organizationId}/webhooks","href":"/api-reference/webhooks/list-organization-webhooks"},{"title":"Create a new webhook","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json post /organizations/{organizationId}/webhooks","href":"/api-reference/webhooks/create-a-new-webhook"},{"title":"Get webhook by ID","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /organizations/{organizationId}/webhooks/{id}","href":"/api-reference/webhooks/get-webhook-by-id"},{"title":"Update webhook","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json put /organizations/{organizationId}/webhooks/{id}","href":"/api-reference/webhooks/update-webhook"},{"title":"Delete webhook","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json delete /organizations/{organizationId}/webhooks/{id}","href":"/api-reference/webhooks/delete-webhook"},{"title":"Get webhook delivery history","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /organizations/{organizationId}/webhooks/{id}/deliveries","href":"/api-reference/webhooks/get-webhook-delivery-history"},{"title":"Send test webhook","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json post /organizations/{organizationId}/webhooks/{id}/test","href":"/api-reference/webhooks/send-test-webhook"}]},{"group":"invoices","pages":[{"title":"List invoices for the organization","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /invoices","href":"/api-reference/invoices/list-invoices-for-the-organization"},{"title":"Create and stamp a CFDI 4.0 invoice via the configured PAC","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json post /invoices","href":"/api-reference/invoices/create-and-stamp-a-cfdi-40-invoice-via-the-configured-pac"},{"title":"Register a payment of PPD invoices and stamp its Complemento de Pago (CFDI tipo P)","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json post /invoices/payments","href":"/api-reference/invoices/register-a-payment-of-ppd-invoices-and-stamp-its-complemento-de-pago-cfdi-tipo-p"},{"title":"Preview a CFDI 4.0 invoice as an unstamped PDF","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json post /invoices/preview/pdf","href":"/api-reference/invoices/preview-a-cfdi-40-invoice-as-an-unstamped-pdf"},{"title":"Get CFDI usage/quota for the current billing month","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /usage","href":"/api-reference/invoices/get-cfdi-usagequota-for-the-current-billing-month"},{"title":"Get a fiscal totals summary for a filtered set of invoices","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /invoices/report/summary","href":"/api-reference/invoices/get-a-fiscal-totals-summary-for-a-filtered-set-of-invoices"},{"title":"Export a filtered set of invoices as CSV","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /invoices/report/export.csv","href":"/api-reference/invoices/export-a-filtered-set-of-invoices-as-csv"},{"title":"Export a filtered set of invoices as a ZIP of their stamped XML","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /invoices/report/export/xml.zip","href":"/api-reference/invoices/export-a-filtered-set-of-invoices-as-a-zip-of-their-stamped-xml"},{"title":"Export a filtered set of invoices as a ZIP of their PDF representation","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /invoices/report/export/pdf.zip","href":"/api-reference/invoices/export-a-filtered-set-of-invoices-as-a-zip-of-their-pdf-representation"},{"title":"Request cancellation of a stamped CFDI","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json post /invoices/{uuid}/cancel","href":"/api-reference/invoices/request-cancellation-of-a-stamped-cfdi"},{"title":"Manually confirm the outcome of a pending cancellation","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json post /invoices/{uuid}/cancellations/{cancellationId}/resolve","href":"/api-reference/invoices/manually-confirm-the-outcome-of-a-pending-cancellation"},{"title":"List the cancellation history for an invoice","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /invoices/{uuid}/cancellations","href":"/api-reference/invoices/list-the-cancellation-history-for-an-invoice"},{"title":"Get the installments and balance of a PPD invoice","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /invoices/{uuid}/payments","href":"/api-reference/invoices/get-the-installments-and-balance-of-a-ppd-invoice"},{"title":"Get a single stamped CFDI by its folio fiscal UUID","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /invoices/{uuid}","href":"/api-reference/invoices/get-a-single-stamped-cfdi-by-its-folio-fiscal-uuid"},{"title":"Download the stamped CFDI XML","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /invoices/{uuid}/xml","href":"/api-reference/invoices/download-the-stamped-cfdi-xml"},{"title":"Download the CFDI's representación impresa (PDF)","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /invoices/{uuid}/pdf","href":"/api-reference/invoices/download-the-cfdis-representación-impresa-pdf"},{"title":"Send the CFDI (XML + PDF) by email to the receptor","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json post /invoices/{uuid}/email","href":"/api-reference/invoices/send-the-cfdi-xml-+-pdf-by-email-to-the-receptor"}]},{"group":"partners","pages":[{"title":"Get the current organization's partner enrollment","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /organizations/{organizationId}/partners","href":"/api-reference/partners/get-the-current-organizations-partner-enrollment"},{"title":"Enroll the current organization as a referral partner","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json post /organizations/{organizationId}/partners/enroll","href":"/api-reference/partners/enroll-the-current-organization-as-a-referral-partner"},{"title":"List referred client organizations for this partner","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /organizations/{organizationId}/partners/referrals","href":"/api-reference/partners/list-referred-client-organizations-for-this-partner"},{"title":"List this partner's monthly commission ledger","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /organizations/{organizationId}/partners/commissions","href":"/api-reference/partners/list-this-partners-monthly-commission-ledger"},{"title":"Check whether a referral code is valid and active","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /partners/validate-code","href":"/api-reference/partners/check-whether-a-referral-code-is-valid-and-active"}]},{"group":"partners-admin","pages":[{"title":"Mark a set of accrued commissions as paid","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json post /partners/commissions/mark-paid","href":"/api-reference/partners-admin/mark-a-set-of-accrued-commissions-as-paid"}]},{"group":"request-logs","pages":[{"title":"List API requests","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /request-logs","href":"/api-reference/request-logs/list-api-requests"},{"title":"Request counts over time","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /request-logs/stats","href":"/api-reference/request-logs/request-counts-over-time"},{"title":"Get one API request, including its error body","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /request-logs/{id}","href":"/api-reference/request-logs/get-one-api-request-including-its-error-body"}]},{"group":"audit-logs","pages":[{"title":"List audit log entries","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /audit-logs","href":"/api-reference/audit-logs/list-audit-log-entries"},{"title":"Export audit log entries as CSV","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /audit-logs/export.csv","href":"/api-reference/audit-logs/export-audit-log-entries-as-csv"},{"title":"Verify the audit log hash chain","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /audit-logs/verify","href":"/api-reference/audit-logs/verify-the-audit-log-hash-chain"},{"title":"Get one audit log entry","deprecated":null,"version":null,"openapi":"https://api.timbrix.mx/api/openapi.json get /audit-logs/{id}","href":"/api-reference/audit-logs/get-one-audit-log-entry"}]}]}]},"basePath":"","title":"Import Products from CSV - Timbrix","buildId":"dpl_8hoxaqFTU7hTr6A2fUraxAyjuiZo","deploymentId":"dpl_8hoxaqFTU7hTr6A2fUraxAyjuiZo","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CDiBsYGW.js","utils-KF9rPlmF.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-C26urKTX.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-BdjmJAC1.js","snippetPresets-3IpDBjt3.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-D4x_2vvo.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BIWdc5Pa.js","shallow-LQqfiMNd.js","getApiPlaygroundDisplay-DryzlOZG.js","CodeSnippet-tcJujU4r.js","CodeSnippets-BHp0nVLL.js","Page-1CZdsdAn.js","getPastedJson-DU-1ayUv.js","icon-CZK2hPr4.js","MethodPill-DOaqmTFC.js","DuplicateIcon-B5-nUxxl.js","createIcon-CDP_U77G.js","DynamicMarkdown-GHvayGOn.js","SectionHeading-BYvpkmUD.js","axios-vUo_bRtp.js","Markdown-uxhlayGT.js","clsx-B35qUV0p.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BvrGG8gU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-CAf0yVYe.js"]}