Para firmar tus comprobantes, Factio necesita tu certificado de firma electrónica
en formato .p12, emitido por una entidad certificadora autorizada en Ecuador.
El certificado se sube desde el panel web de Factio, no desde la API. Si es tu
primer emisor, el asistente de registro te lo pide.Para cambiarlo después:
El archivo .p12 se guarda en almacenamiento de objetos (Cloudflare R2), que
lo cifra en reposo.
La contraseña del certificado se guarda cifrada en la base de datos, con una
clave maestra que no está en la base de datos ni en el código.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Factio","colors":{"primary":"#0F6FFF","light":"#3B8EFF","dark":"#0047CC"},"logo":{"light":"https://mintcdn.com/me-94224791/5bVkgcL-lfIQwY19/logo/factio-light.svg?fit=max\u0026auto=format\u0026n=5bVkgcL-lfIQwY19\u0026q=85\u0026s=9425e17ca9555aa016ad9333f09072b1","dark":"https://mintcdn.com/me-94224791/5bVkgcL-lfIQwY19/logo/factio-dark.svg?fit=max\u0026auto=format\u0026n=5bVkgcL-lfIQwY19\u0026q=85\u0026s=c8a58d6e201fc17ea18bbb93f40fc6c4","href":"https://factioapp.com"},"favicon":"https://mintcdn.com/me-94224791/5bVkgcL-lfIQwY19/favicon.png?fit=max\u0026auto=format\u0026n=5bVkgcL-lfIQwY19\u0026q=85\u0026s=dc2a0f2d4bdcdd41c0a99318ba4a6413","api":{"playground":{"display":"interactive"}},"variables":{"API_PRODUCTION_URL":"https://api.factioapp.com","API_STAGING_URL":"https://api.staging.factioapp.com","APP_DOMAIN":"https://factioapp.com","WEB_DOMAIN":"https://factioapp.com","DOCS_DOMAIN":"https://docs.factioapp.com"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"me-94224791","hasAudioNarration":false,"actualSubdomain":"me-94224791","customDomains":["docs.factioapp.com"],"gitSource":{"type":"github","owner":"rommel96","repo":"factio-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6adadc96fa05280e66cb96eb","collectionId":"3a57dcf4-8616-4b38-a4ba-be618591770d","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6adadc96fa05280e66cb96eb"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6adadc96fa05280e66cb96eb","clientVersion":"0.0.4045","searchFilterCounts":[{"language":"default","tag":"Referencia API","count":88},{"language":"default","tag":"Authentication","count":21},{"language":"default","tag":"documents","count":21},{"language":"default","tag":"Guías","count":17},{"language":"default","tag":"establishments","count":11},{"language":"default","tag":"Buyers","count":8},{"language":"default","tag":"issuers","count":8},{"language":"default","tag":"tenant","count":6},{"language":"default","tag":"certificates","count":5},{"language":"default","tag":"Products","count":5}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":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":"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":"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":"llms-txt-v2","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":"byok-sep-25","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":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","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":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"guides/upload-certificate","slug":"/guides/upload-certificate","pageMetadata":{"title":"Subir Certificado","description":"Guía: subir certificado .p12","href":"/guides/upload-certificate"},"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: \"Guía: subir certificado .p12\"\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`,code:`code`,li:`li`,ol:`ol`,p:`p`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Heading,Warning}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Para firmar tus comprobantes, Factio necesita tu certificado de firma electrónica\nen formato `,_jsx(_components.code,{children:`.p12`}),`, emitido por una entidad certificadora autorizada en Ecuador.`]}),`\n`,_jsx(Heading,{level:`2`,id:`¿cómo-subo-mi-certificado`,children:`¿Cómo subo mi certificado?`}),`\n`,_jsx(_components.p,{children:`El certificado se sube desde el panel web de Factio, no desde la API. Si es tu\nprimer emisor, el asistente de registro te lo pide.`}),`\n`,_jsx(_components.p,{children:`Para cambiarlo después:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Inicia sesión en `,_jsx(_components.a,{href:`https://factioapp.com`,children:`Factio`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Ve a `,_jsx(_components.strong,{children:`Emisores`}),` y abre tu emisor.`]}),`\n`,_jsxs(_components.li,{children:[`Entra a la pestaña `,_jsx(_components.strong,{children:`Certificados`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Haz clic en `,_jsx(_components.strong,{children:`Subir Certificado`}),`, elige tu archivo `,_jsx(_components.code,{children:`.p12`}),` e ingresa su contraseña.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`validaciones`,children:`Validaciones`}),`\n`,_jsx(_components.p,{children:`Al subirlo, Factio valida:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`La vigencia:`}),` que la fecha actual esté dentro del período de validez del certificado.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`El RUC:`}),` que el certificado corresponda al RUC de tu emisor.`]}),`\n`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`Si tu certificado está vencido, la emisión falla con `,_jsx(_components.code,{children:`409`}),` y el código\n`,_jsx(_components.code,{children:`CERTIFICATE_EXPIRED`}),`. Factio te avisa por email antes de que venza.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`cómo-se-guarda`,children:`Cómo se guarda`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`El archivo `,_jsx(_components.code,{children:`.p12`}),` se guarda en almacenamiento de objetos (Cloudflare R2), que\nlo cifra en reposo.`]}),`\n`,_jsx(_components.li,{children:`La contraseña del certificado se guarda cifrada en la base de datos, con una\nclave maestra que no está en la base de datos ni en el código.`}),`\n`]})]})}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":"Subir Certificado","description":"Guía: subir certificado .p12","href":"/guides/upload-certificate"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"¿Cómo subo mi certificado?","slug":"¿cómo-subo-mi-certificado","depth":2,"children":[]},{"title":"Validaciones","slug":"validaciones","depth":2,"children":[]},{"title":"Cómo se guarda","slug":"cómo-se-guarda","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"me-94224791","siteName":"Factio","title":"Subir Certificado - Factio","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-23T04:03:41.393Z","originalFileLocation":"guides/upload-certificate.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=\"Guía: subir certificado .p12\">\u003cmeta data-mint-head name=\"application-name\" content=\"Factio\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"https://mintcdn.com/me-94224791/5bVkgcL-lfIQwY19/favicon.png?fit=max\u0026amp;auto=format\u0026amp;n=5bVkgcL-lfIQwY19\u0026amp;q=85\u0026amp;s=dc2a0f2d4bdcdd41c0a99318ba4a6413\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"https://mintcdn.com/me-94224791/5bVkgcL-lfIQwY19/favicon.png?fit=max\u0026amp;auto=format\u0026amp;n=5bVkgcL-lfIQwY19\u0026amp;q=85\u0026amp;s=dc2a0f2d4bdcdd41c0a99318ba4a6413\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"https://mintcdn.com/me-94224791/5bVkgcL-lfIQwY19/favicon.png?fit=max\u0026amp;auto=format\u0026amp;n=5bVkgcL-lfIQwY19\u0026amp;q=85\u0026amp;s=dc2a0f2d4bdcdd41c0a99318ba4a6413\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/png\" href=\"https://mintcdn.com/me-94224791/5bVkgcL-lfIQwY19/favicon.png?fit=max\u0026amp;auto=format\u0026amp;n=5bVkgcL-lfIQwY19\u0026amp;q=85\u0026amp;s=dc2a0f2d4bdcdd41c0a99318ba4a6413\">\u003cmeta data-mint-head property=\"og:title\" content=\"Subir Certificado - Factio\">\u003cmeta data-mint-head property=\"og:description\" content=\"Guía: subir certificado .p12\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Factio\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.factioapp.com/guides/upload-certificate\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://me-94224791.mintlify.app/_mintlify/api/og/v2?division=Gu%C3%ADas\u0026amp;title=Subir+Certificado\u0026amp;description=Gu%C3%ADa%3A+subir+certificado+.p12\u0026amp;theme=e04c22958a665de58c7f2931\u0026amp;signature=b85e80e9c5611f3c66c4df668e8191e156c2392b6014facef0bee56159bb9563\">\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=\"Subir Certificado - Factio\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Guía: subir certificado .p12\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://me-94224791.mintlify.app/_mintlify/api/og/v2?division=Gu%C3%ADas\u0026amp;title=Subir+Certificado\u0026amp;description=Gu%C3%ADa%3A+subir+certificado+.p12\u0026amp;theme=e04c22958a665de58c7f2931\u0026amp;signature=b85e80e9c5611f3c66c4df668e8191e156c2392b6014facef0bee56159bb9563\">\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=\"https://mintlify.s3.us-west-1.amazonaws.com/me-94224791/_generated/favicon/browserconfig.xml?v=3\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Factio\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0F6FFF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.factioapp.com/guides/upload-certificate\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/guides/upload-certificate.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.factioapp.com/#organization\",\"name\":\"Factio\",\"url\":\"https://docs.factioapp.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/me-94224791/5bVkgcL-lfIQwY19/logo/factio-light.svg?fit=max\u0026auto=format\u0026n=5bVkgcL-lfIQwY19\u0026q=85\u0026s=9425e17ca9555aa016ad9333f09072b1\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.factioapp.com#website\",\"name\":\"Factio\",\"url\":\"https://docs.factioapp.com\",\"publisher\":{\"@id\":\"https://docs.factioapp.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.factioapp.com/guides/upload-certificate#webpage\",\"url\":\"https://docs.factioapp.com/guides/upload-certificate\",\"name\":\"Subir Certificado\",\"description\":\"Guía: subir certificado .p12\",\"dateModified\":\"2026-10-23T04:03:41.393Z\",\"isPartOf\":{\"@id\":\"https://docs.factioapp.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.factioapp.com/guides/upload-certificate#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.factioapp.com/guides/upload-certificate#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Guías\",\"item\":\"https://docs.factioapp.com/guides/emit-invoice\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Subir Certificado\",\"item\":\"https://docs.factioapp.com/guides/upload-certificate\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.factioapp.com/guides/upload-certificate#article\",\"headline\":\"Subir Certificado\",\"name\":\"Subir Certificado\",\"description\":\"Guía: subir certificado .p12\",\"url\":\"https://docs.factioapp.com/guides/upload-certificate\",\"mainEntityOfPage\":{\"@id\":\"https://docs.factioapp.com/guides/upload-certificate#webpage\"},\"dateModified\":\"2026-10-23T04:03:41.393Z\",\"publisher\":{\"@id\":\"https://docs.factioapp.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.factioapp.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Factio\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Factio","nav":{"global":null,"tabs":[{"tab":"Guías","groups":[{"group":"Introducción","pages":[{"title":"Bienvenido a Factio","href":"/introduction"},{"title":"Quickstart","href":"/quickstart"},{"title":"Autenticación","href":"/authentication"},{"title":"Entornos","href":"/environments"}]},{"group":"Conceptos clave","pages":[{"title":"Ciclo de vida de un comprobante","href":"/sri-lifecycle"},{"title":"Idempotencia","href":"/idempotency"},{"title":"Manejo de errores","href":"/errors"}]},{"group":"Guías","pages":[{"title":"Emitir Factura","href":"/guides/emit-invoice"},{"title":"Emitir Nota de Crédito","href":"/guides/emit-credit-note"},{"title":"Consultar Estado","description":"Guía: cómo consultar el estado de autorización","href":"/guides/check-status"},{"title":"Subir Certificado","href":"/guides/upload-certificate"},{"title":"Manejar Rechazos","description":"Guía: qué hacer si el SRI devuelve o no autoriza un documento","href":"/guides/handle-rejections"}]}]},{"tab":"Referencia API","pages":[{"title":"Referencia API","href":"/api-reference/authentication/google-oauth-callback"}]}]},"basePath":"","title":"Subir Certificado - Factio","buildId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","deploymentId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","dynamics":[],"chunks":[]}