# Table of Contents - [Introducción | Afip SDK](#introducci-n-afip-sdk) - [Serverless | Afip SDK](#serverless-afip-sdk) - [Supabase Edge Functions | Afip SDK](#supabase-edge-functions-afip-sdk) - [Vercel Functions | Afip SDK](#vercel-functions-afip-sdk) - [Cloudflare Workers | Afip SDK](#cloudflare-workers-afip-sdk) - [Python | Afip SDK](#python-afip-sdk) - [Ruby | Afip SDK](#ruby-afip-sdk) - [PHP | Afip SDK](#php-afip-sdk) - [Visual Fox Pro | Afip SDK](#visual-fox-pro-afip-sdk) - [API | Afip SDK](#api-afip-sdk) - [Visual Basic 6 | Afip SDK](#visual-basic-6-afip-sdk) - [Deno Deploy | Afip SDK](#deno-deploy-afip-sdk) - [AWS Lambda | Afip SDK](#aws-lambda-afip-sdk) - [n8n | Afip SDK](#n8n-afip-sdk) - [.NET | Afip SDK](#-net-afip-sdk) - [Zapier | Afip SDK](#zapier-afip-sdk) - [Java | Afip SDK](#java-afip-sdk) - [Make | Afip SDK](#make-afip-sdk) - [Pipedream | Afip SDK](#pipedream-afip-sdk) - [Flutter | Afip SDK](#flutter-afip-sdk) - [Bubble | Afip SDK](#bubble-afip-sdk) - [Go | Afip SDK](#go-afip-sdk) - [Web services | Afip SDK](#web-services-afip-sdk) - [Ir a producción | Afip SDK](#ir-a-producci-n-afip-sdk) - [Preguntas frecuentes | Afip SDK](#preguntas-frecuentes-afip-sdk) - [Tutoriales página de ARCA | Afip SDK](#tutoriales-p-gina-de-arca-afip-sdk) - [Errores frecuentes | Afip SDK](#errores-frecuentes-afip-sdk) - [Habilitar administrador de certificados de testing | Afip SDK](#habilitar-administrador-de-certificados-de-testing-afip-sdk) - [Habilitar administrador de certificados de producción | Afip SDK](#habilitar-administrador-de-certificados-de-producci-n-afip-sdk) - [Crear punto de venta | Afip SDK](#crear-punto-de-venta-afip-sdk) - [Autorizar web service de testing | Afip SDK](#autorizar-web-service-de-testing-afip-sdk) - [Aceptar delegación de web service | Afip SDK](#aceptar-delegaci-n-de-web-service-afip-sdk) - [Autorizar web service de producción | Afip SDK](#autorizar-web-service-de-producci-n-afip-sdk) - [Otros métodos útiles | Afip SDK](#otros-m-todos-tiles-afip-sdk) - [Delegar web service | Afip SDK](#delegar-web-service-afip-sdk) - [Obtener certificado de testing | Afip SDK](#obtener-certificado-de-testing-afip-sdk) - [Obtener certificado de producción | Afip SDK](#obtener-certificado-de-producci-n-afip-sdk) - [Crear PDF | Afip SDK](#crear-pdf-afip-sdk) - [Padrón alcance 10 | Afip SDK](#padr-n-alcance-10-afip-sdk) - [Factura de Exportación | Afip SDK](#factura-de-exportaci-n-afip-sdk) - [Comprobantes de Turismo | Afip SDK](#comprobantes-de-turismo-afip-sdk) - [Carta de Porte Electrónica | Afip SDK](#carta-de-porte-electr-nica-afip-sdk) - [Factura MiPyME | Afip SDK](#factura-mipyme-afip-sdk) - [Padrón alcance 13 | Afip SDK](#padr-n-alcance-13-afip-sdk) - [Otro web service | Afip SDK](#otro-web-service-afip-sdk) - [Constatación de Comprobantes | Afip SDK](#constataci-n-de-comprobantes-afip-sdk) - [Padrón de constancia de inscripción | Afip SDK](#padr-n-de-constancia-de-inscripci-n-afip-sdk) - [Remito cárnico | Afip SDK](#remito-c-rnico-afip-sdk) - [Código QR | Afip SDK](#c-digo-qr-afip-sdk) - [Factura C | Afip SDK](#factura-c-afip-sdk) - [Nota de Débito C | Afip SDK](#nota-de-d-bito-c-afip-sdk) - [Factura B | Afip SDK](#factura-b-afip-sdk) - [Factura A | Afip SDK](#factura-a-afip-sdk) - [Nota de Crédito C | Afip SDK](#nota-de-cr-dito-c-afip-sdk) - [Nota de Crédito electrónica C | Afip SDK](#nota-de-cr-dito-electr-nica-c-afip-sdk) - [Nota de Débito A | Afip SDK](#nota-de-d-bito-a-afip-sdk) - [Nota de Débito electrónica C | Afip SDK](#nota-de-d-bito-electr-nica-c-afip-sdk) - [Nota de Débito B | Afip SDK](#nota-de-d-bito-b-afip-sdk) - [Nota de Crédito A | Afip SDK](#nota-de-cr-dito-a-afip-sdk) - [Nota de Crédito B | Afip SDK](#nota-de-cr-dito-b-afip-sdk) - [Nota de Crédito electrónica B | Afip SDK](#nota-de-cr-dito-electr-nica-b-afip-sdk) - [Nota de Débito electrónica A | Afip SDK](#nota-de-d-bito-electr-nica-a-afip-sdk) - [Nota de Crédito electrónica A | Afip SDK](#nota-de-cr-dito-electr-nica-a-afip-sdk) - [Nota de Débito electrónica B | Afip SDK](#nota-de-d-bito-electr-nica-b-afip-sdk) - [Factura de Crédito electrónica C | Afip SDK](#factura-de-cr-dito-electr-nica-c-afip-sdk) - [Factura de Crédito electrónica A | Afip SDK](#factura-de-cr-dito-electr-nica-a-afip-sdk) - [Factura de Crédito electrónica B | Afip SDK](#factura-de-cr-dito-electr-nica-b-afip-sdk) - [Factura electrónica | Afip SDK](#factura-electr-nica-afip-sdk) - [Node.js | Afip SDK](#node-js-afip-sdk) --- # Introducción | Afip SDK ### [hashtag](https://docs.afipsdk.com/#introduccion) Introducción Con más de 100k descargas, desde el 2017, Afip SDK es la plataforma preferida entre los desarrolladores para conectarse a los servicios de ARCA. circle-info Si estás buscando usar las automatizaciones, debés ir a la [documentación de las automatizacionesarrow-up-right](https://afipsdk.com/docs/automations/introduction/) . ### [hashtag](https://docs.afipsdk.com/#requisitos-previos) Requisitos previos Si es tu primera vez conectándote con los web services de ARCA, te recomiendo primero leer esta guía: [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Conectar tu sistema con los web services de ARCAafipsdk.comchevron-right](https://afipsdk.com/blog/conectar-tu-sistema-con-los-web-services-de-de-arca/) ### [hashtag](https://docs.afipsdk.com/#integracion) Integración Aprende cómo usar Afip SDK en tu proyecto. [](https://docs.afipsdk.com/integracion/node.js) ![Cover](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-ca53b9277f5cf4e5dcdddfffbda58496d9be0b18%252Fnode.js%281%29.png%3Falt%3Dmedia&width=490&dpr=3&quality=100&sign=5d86ea6f&sv=2) **Integración en Node.js** [](https://docs.afipsdk.com/integracion/serverless) ![Cover](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-c2d09826f46656b07ab24713555ada571a677428%252Fserverless.png%3Falt%3Dmedia&width=490&dpr=3&quality=100&sign=d64a6819&sv=2) **Integración en Serverless** [](https://docs.afipsdk.com/integracion/php) ![Cover](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-acefd94caa85d5ea8cdc6e607b893fd85d2fc85d%252Fphp.png%3Falt%3Dmedia&width=490&dpr=3&quality=100&sign=4723db7a&sv=2) **Integración en PHP** [](https://docs.afipsdk.com/integracion/python) ![Cover](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-9a6ea5a366fa993c9fba48ef0f9961483fc1b693%252Fpython.png%3Falt%3Dmedia&width=490&dpr=3&quality=100&sign=b86af6b9&sv=2) **Integración en Python** [](https://docs.afipsdk.com/integracion/ruby) ![Cover](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-3a7ee497d8a6a6f26eee01469686724c901fecc4%252Fruby.png%3Falt%3Dmedia&width=490&dpr=3&quality=100&sign=c49267a5&sv=2) **Integración en Ruby** [](https://docs.afipsdk.com/integracion/api) ![Cover](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-ea4fe25899ad9ac6b41bb1b674e0623e63a116b7%252Fapi.png%3Falt%3Dmedia&width=490&dpr=3&quality=100&sign=c46207f1&sv=2) **Integración via API** [](https://docs.afipsdk.com/integracion/vfp) ![Cover](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-170f534acd3ed1a13aeb4a0739eb2bedce0a52c5%252Fvfp.png%3Falt%3Dmedia&width=490&dpr=3&quality=100&sign=f8e9468c&sv=2) **Integración en VFP** [](https://docs.afipsdk.com/integracion/vb6) ![Cover](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-1252c65d61619e9b5fdc7279c285ff34fea8229a%252Fvb6.png%3Falt%3Dmedia&width=490&dpr=3&quality=100&sign=d599606b&sv=2) **Integración en VB6** [](https://docs.afipsdk.com/integracion/dotnet) ![Cover](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-48088290d0f304bad41a4456dd15f46de165922f%252Fdotnet.png%3Falt%3Dmedia&width=490&dpr=3&quality=100&sign=acefb7b4&sv=2) **Integración en .NET** [](https://docs.afipsdk.com/integracion/java) ![Cover](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-cba7dc67f0195c1f188f55c24c8ec5cbe32a7fb9%252Fjava.png%3Falt%3Dmedia&width=490&dpr=3&quality=100&sign=6e7feb8a&sv=2) **Integración en Java** [](https://docs.afipsdk.com/integracion/flutter) ![Cover](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-38b397a20b8e15ea45be30cc9c73dc44925cc217%252Fflutter.png%3Falt%3Dmedia&width=490&dpr=3&quality=100&sign=ec95c62a&sv=2) **Integración en Flutter** [](https://docs.afipsdk.com/integracion/go) ![Cover](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-fbf78a3ca09a790733128a127dd0c8f916023b59%252Fgo.png%3Falt%3Dmedia&width=490&dpr=3&quality=100&sign=3e85c364&sv=2) **Integración en Go** [](https://docs.afipsdk.com/integracion/n8n) ![Cover](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-df4e12320bcfcfdb6b6cb9c68cbd3e7c01c59813%252Fn8n.png%3Falt%3Dmedia&width=490&dpr=3&quality=100&sign=c90ccd9f&sv=2) **Integración en n8n** [](https://docs.afipsdk.com/integracion/make) ![Cover](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-e28b1a7a00572234d4f6d58f239e366d058290a9%252Fmake.png%3Falt%3Dmedia&width=490&dpr=3&quality=100&sign=4130bb71&sv=2) **Integración en Make** [](https://docs.afipsdk.com/integracion/bubble) ![Cover](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-11f3c14e49e783de5bb05270d5b903c61f4466e8%252Fbubble.png%3Falt%3Dmedia&width=490&dpr=3&quality=100&sign=1051a2a4&sv=2) **Integración en Bubble** [](https://docs.afipsdk.com/integracion/zapier) ![Cover](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-1686b5376db321428ea240dfaca18825ee0f70e4%252Fzapier.png%3Falt%3Dmedia&width=490&dpr=3&quality=100&sign=d040b5fc&sv=2) **Integración en Zapier** [](https://docs.afipsdk.com/integracion/pipedream) ![Cover](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-1bb64cad01d0ed2cc58a8867efd9198d43e2cd00%252Fpipedream.png%3Falt%3Dmedia&width=490&dpr=3&quality=100&sign=d29857b6&sv=2) **Integración en Pipedream** ### [hashtag](https://docs.afipsdk.com/#siguientes-pasos) Siguientes pasos Una vez integrado, ya estás listo para usar los web services y, luego, ir a producción. [](https://docs.afipsdk.com/siguientes-pasos/web-services) **Web services** Documentación de uso de cada web service. [](https://docs.afipsdk.com/siguientes-pasos/ir-a-produccion) **Ir a producción** Una vez tengas tu sistema listo, debés seguir este tutorial para ir a producción. ### [hashtag](https://docs.afipsdk.com/#recursos) Recursos La documentación que necesitás en cada paso del desarrollo. [](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca) **Tutoriales página de ARCA** Paso a paso para no perderse en la página de ARCA. [](https://docs.afipsdk.com/recursos/otros-metodos-utiles) **Otros métodos útiles** Para facilitar el desarrollo. [](https://docs.afipsdk.com/recursos/preguntas-frecuentes) **Preguntas frecuentes** Resolvé las dudas más comunes. [](https://docs.afipsdk.com/recursos/errores-frecuentes) **Errores frecuentes** Resolvé los errores más comunes. [SiguienteNode.jschevron-right](https://docs.afipsdk.com/integracion/node.js) Última actualización hace 4 días --- # Serverless | Afip SDK [triangleVercel Functionschevron-right](https://docs.afipsdk.com/integracion/serverless/vercel-functions) [boltSupabase Edge Functionschevron-right](https://docs.afipsdk.com/integracion/serverless/supabase-edge-functions) [cloudCloudflare Workerschevron-right](https://docs.afipsdk.com/integracion/serverless/cloudflare-workers) [codeDeno Deploychevron-right](https://docs.afipsdk.com/integracion/serverless/deno-deploy) [awsAWS Lambdachevron-right](https://docs.afipsdk.com/integracion/serverless/aws-lambda) [AnteriorNode.jschevron-left](https://docs.afipsdk.com/integracion/node.js) [SiguienteVercel Functionschevron-right](https://docs.afipsdk.com/integracion/serverless/vercel-functions) Última actualización hace 4 días --- # Supabase Edge Functions | Afip SDK ### [hashtag](https://docs.afipsdk.com/integracion/serverless/supabase-edge-functions#requisitos-previos) Requisitos previos Para poder seguir esta guía, primero necesitarás: * [Obtener un access\_token de Afip SDKarrow-up-right](https://app.afipsdk.com/) * Tener instalado [Supabase CLIarrow-up-right](https://supabase.com/docs/guides/local-development#installation) ### [hashtag](https://docs.afipsdk.com/integracion/serverless/supabase-edge-functions#basicos) Básicos Para usar los Web Services de ARCA, vamos a utilizar la [API de Afip SDKarrow-up-right](https://github.com/AfipSDK/afip-gitbook/blob/main/integracion/serverless/api.md) . En la [documentación de la APIarrow-up-right](https://github.com/AfipSDK/afip-gitbook/blob/main/integracion/serverless/api.md) podés consultar todos los parámetros del endpoint. * * * ### [hashtag](https://docs.afipsdk.com/integracion/serverless/supabase-edge-functions#id-1.-instalacion) 1\. Instalación Creá una nueva funcion en tu proyecto con el comando Copiar supabase functions new afipSDK Agregá el access token de AfipSDK como secreto de tu proyecto. Terminal Copiar supabase secrets set AFIPSDK_ACCESS_TOKEN=TU_ACCESS_TOKEN ### [hashtag](https://docs.afipsdk.com/integracion/serverless/supabase-edge-functions#id-2.-obtener-el-ticket-de-acceso-ta) 2\. Obtener el Ticket de Acceso (TA) Antes de llamar a los Web Services de ARCA, necesitás un ticket de acceso (TA), también llamado Token Authorization. Este TA expira tras un tiempo, pero no tenés que preocuparte por renovarlo: Afip SDK lo cachea y solicita uno nuevo automáticamente si es necesario. Solo llamá a la API y Afip SDK te devuelve el TA correspondiente. Para obtener el TA se necesita un certificado digital, pero con Afip SDK podés empezar en modo desarrollo usando el CUIT 20-40937847-2 sin necesidad de uno. Si preferís [usar tu propio certificado](https://docs.afipsdk.com/integracion/serverless/supabase-edge-functions#usar-tu-propio-certificado-opcional) , al final te mostramos cómo. supabase/functions/afipSDK/index.ts `token` y `sign` corresponden el TA que nos da ARCA. Debemos enviar estos datos en el body de cada solicitud a los Web Services. En el manual de cada Web Service verás dónde colocarlos. ### [hashtag](https://docs.afipsdk.com/integracion/serverless/supabase-edge-functions#id-3.-llamar-al-metodo-del-web-service-que-necesites) 3\. Llamar al método del Web Service que necesites Con el TA ya podés realizar las llamadas a los Web Services que necesites. Es similar al código para obtener el TA, pero debés cambiar la URL y el body de la request. Podés encontrar las URLs y los body correspondientes en las pestañas API de la documentación de cada Web Service. [cloudsWeb serviceschevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services) Si el Web Service que necesitás no se encuentra en la lista de la documentación, podés llamarlo siguiendo esta guía: [cloudsOtro web servicechevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/otro-web-service) Podés usar la referencia de la API para obtener ejemplos de cómo usar los métodos de todos los web services de ARCA. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Referencia de APIafipsdk.comchevron-right](https://afipsdk.com/docs/api-reference/introduction/) * * * ### [hashtag](https://docs.afipsdk.com/integracion/serverless/supabase-edge-functions#usar-tu-propio-certificado-opcional) Usar tu propio certificado (Opcional) Primero, obtenemos el certificado siguiendo esta guía. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Obtener el certificado para conectar tu sistema con los web services de ARCAafipsdk.comchevron-right](https://afipsdk.com/blog/como-obtener-certificado-para-web-services-arca/) Agregá los secrets desde la terminal de Git Bash: Git Bash Para probar en local deberás crear un archivo `.env.local` dentro de la carpeta `functions` y pegar el contenido del .cert y .key en base64. En la consola ejecutaremos este comando para copiar el valor al portapapeles: Git Bash Linux Y luego los leemos desde las variables de entorno en la función: supabase/functions/afipSDK/index.ts [AnteriorVercel Functionschevron-left](https://docs.afipsdk.com/integracion/serverless/vercel-functions) [SiguienteCloudflare Workerschevron-right](https://docs.afipsdk.com/integracion/serverless/cloudflare-workers) Última actualización hace 4 días * [Requisitos previos](https://docs.afipsdk.com/integracion/serverless/supabase-edge-functions#requisitos-previos) * [Básicos](https://docs.afipsdk.com/integracion/serverless/supabase-edge-functions#basicos) * [1\. Instalación](https://docs.afipsdk.com/integracion/serverless/supabase-edge-functions#id-1.-instalacion) * [2\. Obtener el Ticket de Acceso (TA)](https://docs.afipsdk.com/integracion/serverless/supabase-edge-functions#id-2.-obtener-el-ticket-de-acceso-ta) * [3\. Llamar al método del Web Service que necesites](https://docs.afipsdk.com/integracion/serverless/supabase-edge-functions#id-3.-llamar-al-metodo-del-web-service-que-necesites) * [Usar tu propio certificado (Opcional)](https://docs.afipsdk.com/integracion/serverless/supabase-edge-functions#usar-tu-propio-certificado-opcional) Copiar const accessToken = Deno.env.get('AFIPSDK_ACCESS_TOKEN'); Deno.serve(async (_req: Request) => { const authResponse = await fetch('https://app.afipsdk.com/api/v1/afip/auth', { method: 'POST', headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${accessToken}`, }, body: JSON.stringify({ environment: 'dev', tax_id: '20409378472', // CUIT a utilizar wsid: 'wsfe', }), }); const { token, sign } = await authResponse.json(); // Tu llamada al Web Service aqui }); Copiar supabase secrets set AFIP_CERT="$(base64 -w 0 certificado.crt)" supabase secrets set AFIP_KEY="$(base64 -w 0 key.key)" Copiar base64 -w 0 afip-cert.crt | clip base64 -w 0 afip-key.key | clip Copiar base64 -w 0 afip-cert.crt | xclip -selection clipboard base64 -w 0 afip-key.key | xclip -selection clipboard Copiar // Certificado y Key almacenados como secrets del proyecto en formato base64 const cert = atob(Deno.env.get('AFIP_CERT')); const key = atob(Deno.env.get('AFIP_KEY')); const accessToken = Deno.env.get('AFIPSDK_ACCESS_TOKEN'); const authResponse = await fetch('https://app.afipsdk.com/api/v1/afip/auth', { method: 'POST', headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${accessToken}`, }, body: JSON.stringify({ environment: 'dev', tax_id: '20409378472', // CUIT del certificado wsid: 'wsfe', cert, key, }), }); --- # Vercel Functions | Afip SDK ### [hashtag](https://docs.afipsdk.com/integracion/serverless/vercel-functions#requisitos-previos) Requisitos previos Para poder seguir esta guía, primero necesitarás: * [Obtener un access\_token de Afip SDKarrow-up-right](https://app.afipsdk.com/) ### [hashtag](https://docs.afipsdk.com/integracion/serverless/vercel-functions#id-1.-instalacion) 1\. Instalación Agregá la librería de Afip SDK en Node.js. npm Copiar npm install @afipsdk/afip.js Agregá una variable de ambiente para el access token de AfipSDK. .env.local Copiar #Obtenido de https://app.afipsdk.com AFIPSDK_ACCESS_TOKEN=TU_ACCESS_TOKEN ### [hashtag](https://docs.afipsdk.com/integracion/serverless/vercel-functions#id-2.-crear-una-instancia-de-la-clase-afip) 2\. Crear una instancia de la clase Afip Para usar los Web Services de ARCA se necesita un certificado digital, pero con Afip SDK podés empezar en modo desarrollo usando el CUIT 20-40937847-2 sin necesidad de uno. Si preferís [usar tu propio certificadoarrow-up-right](https://github.com/AfipSDK/afip-gitbook/blob/main/integracion/serverless/vercel-functions.js.md#usar-tu-propio-certificado-opcional) , al final te mostramos cómo. Crea un archivo en tu proyecto de Next.js en, por ejemplo, `app/api/afipsdk/route.ts`. route.ts Copiar import Afip from '@afipsdk/afip.js'; const afip = new Afip({ CUIT: 20409378472, access_token: process.env.AFIPSDK_ACCESS_TOKEN }); export async function POST() { // Tu llamada de afipSDK aqui } ### [hashtag](https://docs.afipsdk.com/integracion/serverless/vercel-functions#id-3.-llamar-al-metodo-del-web-service-que-necesites) 3\. Llamar al método del Web Service que necesites Con la instancia creada ya podés realizar las llamadas a los Web Services que necesites. [cloudsWeb serviceschevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services) Si el Web Service que necesitás no se encuentra en la lista de la documentación, podés llamarlo siguiendo esta guía: [cloudsOtro web servicechevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/otro-web-service) Podés usar la referencia de la API para obtener ejemplos de cómo usar los métodos de todos los web services de ARCA. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Referencia de APIafipsdk.comchevron-right](https://afipsdk.com/docs/api-reference/introduction/) * * * ### [hashtag](https://docs.afipsdk.com/integracion/serverless/vercel-functions#usar-tu-propio-certificado-opcional) Usar tu propio certificado (Opcional) Primero, obtenemos el certificado siguiendo esta guía. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Obtener el certificado para conectar tu sistema con los web services de ARCAafipsdk.comchevron-right](https://afipsdk.com/blog/como-obtener-certificado-para-web-services-arca/) Y luego lo agregamos a la instancia de la clase Afip. route.ts [AnteriorServerlesschevron-left](https://docs.afipsdk.com/integracion/serverless) [SiguienteSupabase Edge Functionschevron-right](https://docs.afipsdk.com/integracion/serverless/supabase-edge-functions) Última actualización hace 4 días * [Requisitos previos](https://docs.afipsdk.com/integracion/serverless/vercel-functions#requisitos-previos) * [1\. Instalación](https://docs.afipsdk.com/integracion/serverless/vercel-functions#id-1.-instalacion) * [2\. Crear una instancia de la clase Afip](https://docs.afipsdk.com/integracion/serverless/vercel-functions#id-2.-crear-una-instancia-de-la-clase-afip) * [3\. Llamar al método del Web Service que necesites](https://docs.afipsdk.com/integracion/serverless/vercel-functions#id-3.-llamar-al-metodo-del-web-service-que-necesites) * [Usar tu propio certificado (Opcional)](https://docs.afipsdk.com/integracion/serverless/vercel-functions#usar-tu-propio-certificado-opcional) Copiar import fs from 'fs'; import Afip from '@afipsdk/afip.js'; // Certificado (Puede estar guardado en archivos, DB, etc) const cert = fs.readFileSync('ruta/a/certificado.crt', {encoding: 'utf8'}); // Key (Puede estar guardado en archivos, DB, etc) const key = fs.readFileSync('ruta/a/key.key', {encoding: 'utf8'}); // CUIT del certificado const CUIT = 20111111112; const afip = new Afip({ cert, key, CUIT, access_token: process.env.AFIPSDK_ACCESS_TOKEN, // Obtenido de https://app.afipsdk.com }); --- # Cloudflare Workers | Afip SDK ### [hashtag](https://docs.afipsdk.com/integracion/serverless/cloudflare-workers#requisitos-previos) Requisitos previos Para poder seguir esta guía, primero necesitarás: * [Obtener un access\_token de Afip SDKarrow-up-right](https://app.afipsdk.com/) * Tener instalado [Wrangler CLIarrow-up-right](https://developers.cloudflare.com/workers/wrangler/install-and-update/) ### [hashtag](https://docs.afipsdk.com/integracion/serverless/cloudflare-workers#id-1.-instalacion) 1\. Instalación Creá un nuevo Worker con Wrangler e instalá la librería de Afip SDK. Terminal Copiar npm create cloudflare@latest afipsdk cd afipsdk npm install @afipsdk/afip.js Agregá el access token de AfipSDK como secreto del Worker. Terminal Copiar wrangler secret put AFIPSDK_ACCESS_TOKEN Luego modificá el archivo `worker-configuration.d.ts`. Terminal Copiar interface Env { AFIPSDK_ACCESS_TOKEN: string; //AFIP_CERT: string; //AFIP_KEY: string; } ### [hashtag](https://docs.afipsdk.com/integracion/serverless/cloudflare-workers#id-2.-crear-una-instancia-de-la-clase-afip) 2\. Crear una instancia de la clase Afip Para usar los Web Services de ARCA se necesita un certificado digital, pero con Afip SDK podés empezar en modo desarrollo usando el CUIT 20-40937847-2 sin necesidad de uno. Si preferís [usar tu propio certificado](https://docs.afipsdk.com/integracion/serverless/cloudflare-workers#usar-tu-propio-certificado-opcional) , al final te mostramos cómo. src/index.ts ### [hashtag](https://docs.afipsdk.com/integracion/serverless/cloudflare-workers#id-3.-llamar-al-metodo-del-web-service-que-necesites) 3\. Llamar al método del Web Service que necesites Con la instancia creada ya podés realizar las llamadas a los Web Services que necesites. [cloudsWeb serviceschevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services) Si el Web Service que necesitás no se encuentra en la lista de la documentación, podés llamarlo siguiendo esta guía: [cloudsOtro web servicechevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/otro-web-service) Podés usar la referencia de la API para obtener ejemplos de cómo usar los métodos de todos los web services de ARCA. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Referencia de APIafipsdk.comchevron-right](https://afipsdk.com/docs/api-reference/introduction/) * * * ### [hashtag](https://docs.afipsdk.com/integracion/serverless/cloudflare-workers#usar-tu-propio-certificado-opcional) Usar tu propio certificado (Opcional) Primero, obtenemos el certificado siguiendo esta guía. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Obtener el certificado para conectar tu sistema con los web services de ARCAafipsdk.comchevron-right](https://afipsdk.com/blog/como-obtener-certificado-para-web-services-arca/) Para agregar los secrets primero debemos obtener el valor de .cert y .key en base64 (guardalo ya que se nos pedirá luego). En la consola ejecutaremos este comando para copiar el valor al portapapeles: Git Bash Linux Asignar el valor obtenido en su correspondiente secret: Terminal Luego los leemos desde el parámetro `env` en la función: src/index.ts [AnteriorSupabase Edge Functionschevron-left](https://docs.afipsdk.com/integracion/serverless/supabase-edge-functions) [SiguienteDeno Deploychevron-right](https://docs.afipsdk.com/integracion/serverless/deno-deploy) Última actualización hace 4 días * [Requisitos previos](https://docs.afipsdk.com/integracion/serverless/cloudflare-workers#requisitos-previos) * [1\. Instalación](https://docs.afipsdk.com/integracion/serverless/cloudflare-workers#id-1.-instalacion) * [2\. Crear una instancia de la clase Afip](https://docs.afipsdk.com/integracion/serverless/cloudflare-workers#id-2.-crear-una-instancia-de-la-clase-afip) * [3\. Llamar al método del Web Service que necesites](https://docs.afipsdk.com/integracion/serverless/cloudflare-workers#id-3.-llamar-al-metodo-del-web-service-que-necesites) * [Usar tu propio certificado (Opcional)](https://docs.afipsdk.com/integracion/serverless/cloudflare-workers#usar-tu-propio-certificado-opcional) Copiar import Afip from '@afipsdk/afip.js'; let afip: Afip; export default { async fetch(request: Request, env: Env): Promise { if (!afip) { afip = new Afip({ CUIT: 20409378472, access_token: env.AFIPSDK_ACCESS_TOKEN, }); } // Tu llamada de afipSDK aqui }, }; Copiar base64 -w 0 afip-cert.crt | clip base64 -w 0 afip-key.key | clip Copiar base64 -w 0 afip-cert.crt | xclip -selection clipboard base64 -w 0 afip-key.key | xclip -selection clipboard Copiar wrangler secret put AFIP_CERT wrangler secret put AFIP_KEY Copiar import Afip from '@afipsdk/afip.js'; let afip: Afip; export default { async fetch(request: Request, env: Env): Promise { if (!afip) { // Certificado y Key almacenados como secrets del Worker afip = new Afip({ cert: atob(env.AFIP_CERT), key: atob(env.AFIP_KEY), CUIT: 20111111112, access_token: env.AFIPSDK_ACCESS_TOKEN, // Obtenido de https://app.afipsdk.com }); } }, }; --- # Python | Afip SDK ### [hashtag](https://docs.afipsdk.com/integracion/python#requisitos-previos) Requisitos previos Para poder seguir esta guía, primero necesitarás: * [Obtener un access\_token de Afip SDKarrow-up-right](https://app.afipsdk.com/) ### [hashtag](https://docs.afipsdk.com/integracion/python#id-1.-instalacion) 1\. Instalación Agregá la librería de Afip SDK en Python Pip Copiar pip install afip.py ### [hashtag](https://docs.afipsdk.com/integracion/python#id-2.-crear-una-instancia-de-la-clase-afip) 2\. Crear una instancia de la clase Afip Para usar los Web Services de ARCA se necesita un certificado digital, pero con Afip SDK podés empezar en modo desarrollo usando el CUIT 20-40937847-2 sin necesidad de uno. Si preferís [usar tu propio certificado](https://docs.afipsdk.com/integracion/python#usar-tu-propio-certificado-opcional) , al final te mostramos cómo. index.py Copiar from afip import Afip afip = Afip({ "CUIT": 20409378472, "access_token": "TU_ACCESS_TOKEN" # Obtenido de https://app.afipsdk.com }) ### [hashtag](https://docs.afipsdk.com/integracion/python#id-3.-llamar-al-metodo-del-web-service-que-necesites) 3\. Llamar al método del Web Service que necesites Con la instancia creada ya podés realizar las llamadas a los Web Services que necesites. [cloudsWeb serviceschevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services) Si el Web Service que necesitás no se encuentra en la lista de la documentación, podés llamarlo siguiendo esta guía: [cloudsOtro web servicechevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/otro-web-service) Podés usar la referencia de la API para obtener ejemplos de cómo usar los métodos de todos los web services de ARCA. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Referencia de APIafipsdk.comchevron-right](https://afipsdk.com/docs/api-reference/introduction/) También podés usar las guías del blog de Afip SDK para Python: [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Python | Blogafipsdk.comchevron-right](https://afipsdk.com/blog/category/Python/) * * * ### [hashtag](https://docs.afipsdk.com/integracion/python#usar-tu-propio-certificado-opcional) Usar tu propio certificado (Opcional) Primero, obtenemos el certificado siguiendo esta guía. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Obtener el certificado para conectar tu sistema con los web services de ARCAafipsdk.comchevron-right](https://afipsdk.com/blog/como-obtener-certificado-para-web-services-arca/) Y luego lo agregamos a la instancia de la clase Afip. index.py [AnteriorPHPchevron-left](https://docs.afipsdk.com/integracion/php) [SiguienteRubychevron-right](https://docs.afipsdk.com/integracion/ruby) Última actualización hace 4 meses * [Requisitos previos](https://docs.afipsdk.com/integracion/python#requisitos-previos) * [1\. Instalación](https://docs.afipsdk.com/integracion/python#id-1.-instalacion) * [2\. Crear una instancia de la clase Afip](https://docs.afipsdk.com/integracion/python#id-2.-crear-una-instancia-de-la-clase-afip) * [3\. Llamar al método del Web Service que necesites](https://docs.afipsdk.com/integracion/python#id-3.-llamar-al-metodo-del-web-service-que-necesites) * [Usar tu propio certificado (Opcional)](https://docs.afipsdk.com/integracion/python#usar-tu-propio-certificado-opcional) Copiar from afip import Afip # Certificado (Puede estar guardado en archivos, DB, etc) cert = open("ruta/a/certificado.crt").read() # Key (Puede estar guardado en archivos, DB, etc) key = open("ruta/a/key.key").read() # CUIT del certificado tax_id = 20111111112 afip = Afip({ "CUIT": tax_id, "cert": cert, "key": key, "access_token": "TU_ACCESS_TOKEN" # Obtenido de https://app.afipsdk.com )) --- # Ruby | Afip SDK ### [hashtag](https://docs.afipsdk.com/integracion/ruby#requisitos-previos) Requisitos previos Para poder seguir esta guía, primero necesitarás: * [Obtener un access\_token de Afip SDKarrow-up-right](https://app.afipsdk.com/) ### [hashtag](https://docs.afipsdk.com/integracion/ruby#id-1.-instalacion) 1\. Instalación Agregá la librería de Afip SDK en Ruby RubyGems Gemfile Copiar gem install afip.rb Copiar gem 'afip.rb' ### [hashtag](https://docs.afipsdk.com/integracion/ruby#id-2.-crear-una-instancia-de-la-clase-afip) 2\. Crear una instancia de la clase Afip Para usar los Web Services de ARCA se necesita un certificado digital, pero con Afip SDK podés empezar en modo desarrollo usando el CUIT 20-40937847-2 sin necesidad de uno. Si preferís [usar tu propio certificado](https://docs.afipsdk.com/integracion/ruby#usar-tu-propio-certificado-opcional) , al final te mostramos cómo. index.rb Copiar require "afip" afip = Afip.new({ "CUIT": 20409378472, "access_token": "TU_ACCESS_TOKEN" # Obtenido de https://app.afipsdk.com }) ### [hashtag](https://docs.afipsdk.com/integracion/ruby#id-3.-llamar-al-metodo-del-web-service-que-necesites) 3\. Llamar al método del Web Service que necesites Con la instancia creada ya podés realizar las llamadas a los Web Services que necesites. [cloudsWeb serviceschevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services) Si el Web Service que necesitás no se encuentra en la lista de la documentación, podés llamarlo siguiendo esta guía: [cloudsOtro web servicechevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/otro-web-service) Podés usar la referencia de la API para obtener ejemplos de cómo usar los métodos de todos los web services de ARCA. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Referencia de APIafipsdk.comchevron-right](https://afipsdk.com/docs/api-reference/introduction/) También podés usar las guías del blog de Afip SDK para Ruby: [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Ruby | Blogafipsdk.comchevron-right](https://afipsdk.com/blog/category/Ruby/) * * * ### [hashtag](https://docs.afipsdk.com/integracion/ruby#usar-tu-propio-certificado-opcional) Usar tu propio certificado (Opcional) Primero, obtenemos el certificado siguiendo esta guía. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Obtener el certificado para conectar tu sistema con los web services de ARCAafipsdk.comchevron-right](https://afipsdk.com/blog/como-obtener-certificado-para-web-services-arca/) Y luego lo agregamos a la instancia de la clase Afip. index.rb [AnteriorPythonchevron-left](https://docs.afipsdk.com/integracion/python) [SiguienteAPIchevron-right](https://docs.afipsdk.com/integracion/api) Última actualización hace 4 meses * [Requisitos previos](https://docs.afipsdk.com/integracion/ruby#requisitos-previos) * [1\. Instalación](https://docs.afipsdk.com/integracion/ruby#id-1.-instalacion) * [2\. Crear una instancia de la clase Afip](https://docs.afipsdk.com/integracion/ruby#id-2.-crear-una-instancia-de-la-clase-afip) * [3\. Llamar al método del Web Service que necesites](https://docs.afipsdk.com/integracion/ruby#id-3.-llamar-al-metodo-del-web-service-que-necesites) * [Usar tu propio certificado (Opcional)](https://docs.afipsdk.com/integracion/ruby#usar-tu-propio-certificado-opcional) Copiar require "afip" # Certificado (Puede estar guardado en archivos, DB, etc) cert = File.read("ruta/a/certificado.crt") # Key (Puede estar guardado en archivos, DB, etc) key = File.read("ruta/a/key.key") # CUIT del certificado tax_id = 20111111112 afip = Afip.new({ "CUIT": tax_id, "cert": cert, "key": key, "access_token": "TU_ACCESS_TOKEN" # Obtenido de https://app.afipsdk.com )) --- # PHP | Afip SDK ### [hashtag](https://docs.afipsdk.com/integracion/php#requisitos-previos) Requisitos previos Para poder seguir esta guía, primero necesitarás: * [Obtener un access\_token de Afip SDKarrow-up-right](https://app.afipsdk.com/) ### [hashtag](https://docs.afipsdk.com/integracion/php#id-1.-instalacion) 1\. Instalación Agregá la librería de Afip SDK en PHP composer Manualmente Copiar composer require afipsdk/afip.php **Repositorio:** [**https://github.com/AfipSDK/afip.php**arrow-up-right](https://github.com/AfipSDK/afip.php) 1. Clonarlo con `git clone` o descargar el repositorio desde [aquiarrow-up-right](https://github.com/AfipSDK/afip.php/archive/refs/heads/master.zip) . 2. Copiar el contenido de la carpeta `src` a tu aplicación. 3. Incluir el archivo Afip.php en tu proyecto (el resto de los archivos se incluyen automáticamente).\\ Copiar include 'ruta/a/src/Afip.php'; ### [hashtag](https://docs.afipsdk.com/integracion/php#id-2.-crear-una-instancia-de-la-clase-afip) 2\. Crear una instancia de la clase Afip Para usar los Web Services de ARCA se necesita un certificado digital, pero con Afip SDK podés empezar en modo desarrollo usando el CUIT 20-40937847-2 sin necesidad de uno. Si preferís [usar tu propio certificado](https://docs.afipsdk.com/integracion/php#usar-tu-propio-certificado-opcional) , al final te mostramos cómo. index.php Copiar $afip = new Afip([\ 'CUIT' => 20409378472,\ 'access_token' => 'TU_ACCESS_TOKEN' // Obtenido de https://app.afipsdk.com\ ]); ### [hashtag](https://docs.afipsdk.com/integracion/php#id-3.-llamar-al-metodo-del-web-service-que-necesites) 3\. Llamar al método del Web Service que necesites Con la instancia creada ya podés realizar las llamadas a los Web Services que necesites. [cloudsWeb serviceschevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services) Si el Web Service que necesitás no se encuentra en la lista de la documentación, podés llamarlo siguiendo esta guía: [cloudsOtro web servicechevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/otro-web-service) Podés usar la referencia de la API para obtener ejemplos de cómo usar los métodos de todos los web services de ARCA. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Referencia de APIafipsdk.comchevron-right](https://afipsdk.com/docs/api-reference/introduction/) También podés usar las guías del blog de Afip SDK para PHP: [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)PHP | Blogafipsdk.comchevron-right](https://afipsdk.com/blog/category/PHP/) * * * ### [hashtag](https://docs.afipsdk.com/integracion/php#usar-tu-propio-certificado-opcional) Usar tu propio certificado (Opcional) Primero, obtenemos el certificado siguiendo esta guía. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Obtener el certificado para conectar tu sistema con los web services de ARCAafipsdk.comchevron-right](https://afipsdk.com/blog/como-obtener-certificado-para-web-services-arca/) Y luego lo agregamos a la instancia de la clase Afip. index.php [AnteriorAWS Lambdachevron-left](https://docs.afipsdk.com/integracion/serverless/aws-lambda) [SiguientePythonchevron-right](https://docs.afipsdk.com/integracion/python) Última actualización hace 10 días * [Requisitos previos](https://docs.afipsdk.com/integracion/php#requisitos-previos) * [1\. Instalación](https://docs.afipsdk.com/integracion/php#id-1.-instalacion) * [2\. Crear una instancia de la clase Afip](https://docs.afipsdk.com/integracion/php#id-2.-crear-una-instancia-de-la-clase-afip) * [3\. Llamar al método del Web Service que necesites](https://docs.afipsdk.com/integracion/php#id-3.-llamar-al-metodo-del-web-service-que-necesites) * [Usar tu propio certificado (Opcional)](https://docs.afipsdk.com/integracion/php#usar-tu-propio-certificado-opcional) Copiar // Certificado (Puede estar guardado en archivos, DB, etc) $cert = file_get_contents('ruta/a/certificado.crt'); // Key (Puede estar guardado en archivos, DB, etc) $key = file_get_contents('ruta/a/key.key'); // CUIT del certificado $tax_id = 20111111112; $afip = new Afip([\ 'CUIT' => $tax_id,\ 'cert' => $cert,\ 'key' => $key,\ 'access_token' => 'TU_ACCESS_TOKEN' // Obtenido de https://app.afipsdk.com\ ]); --- # Visual Fox Pro | Afip SDK ### [hashtag](https://docs.afipsdk.com/integracion/vfp#requisitos-previos) Requisitos previos Para poder seguir esta guía, primero necesitarás: * [Obtener un access\_token de Afip SDKarrow-up-right](https://app.afipsdk.com/) ### [hashtag](https://docs.afipsdk.com/integracion/vfp#basicos) Básicos Para usar los Web Services de ARCA, vamos a utilizar la [API de Afip SDK](https://docs.afipsdk.com/integracion/api) . En la [documentación de la API](https://docs.afipsdk.com/integracion/api) podés consultar todos los parámetros del endpoint. * * * ### [hashtag](https://docs.afipsdk.com/integracion/vfp#id-1.-instalacion) 1\. Instalación Vamos a usar [https://github.com/AfipSDK/vfp-json/blob/master/json.prgarrow-up-right](https://github.com/AfipSDK/vfp-json/blob/master/json.prg) para trabajar con JSON. AfipSDKRequest.prg Copiar SET PROCEDURE TO "path\al\archivo\json.prg" ADDITIVE ### [hashtag](https://docs.afipsdk.com/integracion/vfp#id-2.-obtener-el-ticket-de-acceso-ta) 2\. Obtener el Ticket de Acceso (TA) Antes de llamar a los Web Services de ARCA, necesitás un ticket de acceso (TA), también llamado Token Authorization. Este TA expira tras un tiempo, pero no tenés que preocuparte por renovarlo: Afip SDK lo cachea y solicita uno nuevo automáticamente si es necesario. Solo llamá a la API y Afip SDK te devuelve el TA correspondiente. Para obtener el TA se necesita un certificado digital, pero con Afip SDK podés empezar en modo desarrollo usando el CUIT 20-40937847-2 sin necesidad de uno. Si preferís [usar tu propio certificado](https://docs.afipsdk.com/integracion/vfp#usar-tu-propio-certificado-opcional) , al final te mostramos cómo. AfipSDKRequest.prg `lcToken` y `lcSign` corresponden el TA que nos da ARCA. Debemos enviar estos datos en el body de cada solicitud a los Web Services. En el manual de cada Web Service verás dónde colocarlos. ### [hashtag](https://docs.afipsdk.com/integracion/vfp#id-3.-llamar-al-metodo-del-web-service-que-necesites) 3\. Llamar al método del Web Service que necesites Con el TA ya podés realizar las llamadas a los Web Services que necesites. Es similar al código para obtener el TA, pero debés cambiar la URL y el body de la request. Podés encontrar las URLs y los body correspondientes en las pestañas API de la documentación de cada Web Service. [cloudsWeb serviceschevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services) Si el Web Service que necesitás no se encuentra en la lista de la documentación, podés llamarlo siguiendo esta guía: [cloudsOtro web servicechevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/otro-web-service) Podés usar la referencia de la API para obtener ejemplos de cómo usar los métodos de todos los web services de ARCA. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Referencia de APIafipsdk.comchevron-right](https://afipsdk.com/docs/api-reference/introduction/) También podés usar las guías del blog de Afip SDK para Visual Fox Pro: [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)VFP | Blogafipsdk.comchevron-right](https://afipsdk.com/blog/category/VFP/) * * * ### [hashtag](https://docs.afipsdk.com/integracion/vfp#usar-tu-propio-certificado-opcional) Usar tu propio certificado (Opcional) Primero, obtenemos el certificado siguiendo esta guía. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Obtener el certificado para conectar tu sistema con los web services de ARCAafipsdk.comchevron-right](https://afipsdk.com/blog/como-obtener-certificado-para-web-services-arca/) Al pedir la autorización agregamos `cert` y `key` en el body AfipSDKRequest.prg [AnteriorAPIchevron-left](https://docs.afipsdk.com/integracion/api) [SiguienteVisual Basic 6chevron-right](https://docs.afipsdk.com/integracion/vb6) Última actualización hace 4 meses * [Requisitos previos](https://docs.afipsdk.com/integracion/vfp#requisitos-previos) * [Básicos](https://docs.afipsdk.com/integracion/vfp#basicos) * [1\. Instalación](https://docs.afipsdk.com/integracion/vfp#id-1.-instalacion) * [2\. Obtener el Ticket de Acceso (TA)](https://docs.afipsdk.com/integracion/vfp#id-2.-obtener-el-ticket-de-acceso-ta) * [3\. Llamar al método del Web Service que necesites](https://docs.afipsdk.com/integracion/vfp#id-3.-llamar-al-metodo-del-web-service-que-necesites) * [Usar tu propio certificado (Opcional)](https://docs.afipsdk.com/integracion/vfp#usar-tu-propio-certificado-opcional) Copiar LOCAL loHttp, loResponse, lcJson, lcAuthUrl, loAuthData, loAuthDataObject, loAuthResponse loHttp = CREATEOBJECT("Msxml2.XMLHTTP") lcAuthUrl = "https://app.afipsdk.com/api/v1/afip/auth" loAuthDataObject = CREATEOBJECT("JSONObject") loAuthDataObject.set("environment", "dev") loAuthDataObject.set("tax_id", "20409378472") loAuthDataObject.set("wsid", "wsfe") loAuthData = json_encode(loAuthDataObject) loHttp.Open("POST", lcAuthUrl, .F.) loHttp.setRequestHeader("Content-Type", "application/json") * Reemplazar con tu access_token obtenido de https://app.afipsdk.com LOCAL accessToken accessToken = "TU_TOKEN_AQUI" loHttp.setRequestHeader("Authorization", "Bearer " + accessToken) loHttp.Send(loAuthData) IF loHttp.Status <> 200 ? "Error en la autorizacion: " + STR(loHttp.Status) RETURN ENDIF loResponse = loHttp.responseText loAuthResponse = json_decode(loResponse) lcToken = loAuthResponse._token lcSign = loAuthResponse._sign ? "Token: " + lcToken ? "Sign: " + lcSign Copiar loAuthDataObject.set("environment", "dev") loAuthDataObject.set("tax_id", "20111111112") loAuthDataObject.set("wsid", "wsfe") loAuthDataObject.set("cert", "-----BEGIN CERTIFICATE-----MIIDRzC...") loAuthDataObject.set("key", "-----BEGIN RSA PRIVATE KEY-----MIIEowIBAAKCA...") --- # API | Afip SDK ### [hashtag](https://docs.afipsdk.com/integracion/api#requisitos-previos) Requisitos previos Para poder seguir esta guía, primero necesitarás: * [Obtener un access\_token de Afip SDKarrow-up-right](https://app.afipsdk.com/) ### [hashtag](https://docs.afipsdk.com/integracion/api#basicos) Básicos La URL base de la API es: Copiar https://app.afipsdk.com/api/ El body de las peticiones es de tipo JSON. Se debe agregar el header correspondiente: Copiar Content-Type: application/json Además, debes agregar el header de autorización con tu access\_token Copiar Authorization: Bearer TU_ACCESS_TOKEN_AQUI ### [hashtag](https://docs.afipsdk.com/integracion/api#id-1.-obtener-el-ticket-de-acceso-ta) 1\. Obtener el Ticket de Acceso (TA) Antes de llamar a los Web Services de ARCA, necesitás un ticket de acceso (TA), también llamado Token Authorization. Este TA expira tras un tiempo, pero no tenés que preocuparte por renovarlo: Afip SDK lo cachea y solicita uno nuevo automáticamente si es necesario. Solo llamá a la API y Afip SDK te devuelve el TA correspondiente. Para obtener el TA se necesita un certificado digital, pero con Afip SDK podés empezar en modo desarrollo usando el CUIT 20-40937847-2 sin necesidad de uno. Si preferís [usar tu propio certificado](https://docs.afipsdk.com/integracion/api#usar-tu-propio-certificado-opcional) , al final te mostramos cómo. **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/auth` **Body** Nombre Tipo Descripción `environment` string Usar `dev` para ambiente de desarrollo o `prod` para producción. `tax_id` string CUIT para el cual queremos obtener el TA. `wsid` string ID del Web Service a utilizar. Lo encontrás al inicio de la documentación de Afip SDK de cada Web Service o en el manual PDF de ARCA. `force_create` boolean `default: false` Se debe setear en `true` si queremos forzar la creación de un nuevo TA. [Mas información](https://docs.afipsdk.com/recursos/otros-metodos-utiles#forzar-la-solicitud-de-un-nuevo-ta) `cert` string Certificado digital. `key` string Key del certificado. **Ejemplo** **Response** `STATUS` `200` `token` y `sign` corresponden el TA que nos da ARCA. Debemos enviar estos datos en el body de cada solicitud a los Web Services. En el manual de cada Web Service verás dónde colocarlos. ### [hashtag](https://docs.afipsdk.com/integracion/api#id-2.-llamar-al-metodo-del-web-service-que-necesites) 2\. Llamar al método del Web Service que necesites Con el TA ya podés realizar las llamadas a los Web Services que necesites. [cloudsWeb serviceschevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services) Si el Web Service que necesitás no se encuentra en la lista de la documentación, podés llamarlo siguiendo esta guía: [cloudsOtro web servicechevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/otro-web-service) Podés usar la referencia de la API para obtener ejemplos de cómo usar los métodos de todos los web services de ARCA. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Referencia de APIafipsdk.comchevron-right](https://afipsdk.com/docs/api-reference/introduction/) También podés usar las guías del blog de Afip SDK para API: [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)API | Blogafipsdk.comchevron-right](https://afipsdk.com/blog/category/API/) * * * ### [hashtag](https://docs.afipsdk.com/integracion/api#usar-tu-propio-certificado-opcional) Usar tu propio certificado (Opcional) Primero, obtenemos el certificado siguiendo esta guía. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Obtener el certificado para conectar tu sistema con los web services de ARCAafipsdk.comchevron-right](https://afipsdk.com/blog/como-obtener-certificado-para-web-services-arca/) Al pedir la autorización agregamos `cert` y `key` en el body API Request `POST` `https://app.afipsdk.com/api/v1/afip/auth` [AnteriorRubychevron-left](https://docs.afipsdk.com/integracion/ruby) [SiguienteVisual Fox Prochevron-right](https://docs.afipsdk.com/integracion/vfp) Última actualización hace 4 meses * [Requisitos previos](https://docs.afipsdk.com/integracion/api#requisitos-previos) * [Básicos](https://docs.afipsdk.com/integracion/api#basicos) * [1\. Obtener el Ticket de Acceso (TA)](https://docs.afipsdk.com/integracion/api#id-1.-obtener-el-ticket-de-acceso-ta) * [2\. Llamar al método del Web Service que necesites](https://docs.afipsdk.com/integracion/api#id-2.-llamar-al-metodo-del-web-service-que-necesites) * [Usar tu propio certificado (Opcional)](https://docs.afipsdk.com/integracion/api#usar-tu-propio-certificado-opcional) Copiar { "environment": "dev", "tax_id": "20409378472", "wsid": "wsfe" } Copiar { "expiration": "2024-03-13T00:42:59.845Z", "token": "PD94bWwgd...", "sign": "kEaCwSs36hpe..." } Copiar { "environment": "dev", "tax_id": "20111111112", "wsid": "wsfe", "cert": "-----BEGIN CERTIFICATE-----MIIDRzC...", "key": "-----BEGIN RSA PRIVATE KEY-----MIIEowIBAAKCA..." } --- # Visual Basic 6 | Afip SDK ### [hashtag](https://docs.afipsdk.com/integracion/vb6#requisitos-previos) Requisitos previos Para poder seguir esta guía, primero necesitarás: * [Obtener un access\_token de Afip SDKarrow-up-right](https://app.afipsdk.com/) ### [hashtag](https://docs.afipsdk.com/integracion/vb6#basicos) Básicos Para usar los Web Services de ARCA, vamos a utilizar la [API de Afip SDK](https://docs.afipsdk.com/integracion/api) . En la [documentación de la API](https://docs.afipsdk.com/integracion/api) podés consultar todos los parámetros del endpoint. * * * ### [hashtag](https://docs.afipsdk.com/integracion/vb6#id-1.-instalacion) 1\. Instalación Vamos a usar [https://github.com/VBA-tools/VBA-JSON/blob/master/JsonConverter.basarrow-up-right](https://github.com/VBA-tools/VBA-JSON/blob/master/JsonConverter.bas) para trabajar con JSON. Para esto debemos descargar [descargar JsonConverter.basarrow-up-right](https://raw.githubusercontent.com/VBA-tools/VBA-JSON/refs/heads/master/JsonConverter.bas) , y agregarlo a nuestro proyecto. ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-262d3690aa31c89b0495d358ead1dd12492d08fe%252Fimagen.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=48d35f5d&sv=2) ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-af83407b19f8ec4734e64c226191fac2292b0640%252Fimagen.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=2d5f3f0&sv=2) Y agregar las referencias "Microsoft Scripting Runtime" y "Microsoft WinHTTP Services, version 5.1" ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-ddcedb01de540c66f43ee5309b15520a21c11024%252Fimagen.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=a7fa17fb&sv=2) ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-490184f4df2cfeaa952d76ce8df70c09a6d81c42%252Fimagen.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=1cb38cb2&sv=2) ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-c8efeca8e8cfd70c15b43425dcd703c35b2b3880%252Fimagen.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=d56a1ded&sv=2) ### [hashtag](https://docs.afipsdk.com/integracion/vb6#id-2.-obtener-el-ticket-de-acceso-ta) 2\. Obtener el Ticket de Acceso (TA) Antes de llamar a los Web Services de ARCA, necesitás un ticket de acceso (TA), también llamado Token Authorization. Este TA expira tras un tiempo, pero no tenés que preocuparte por renovarlo: Afip SDK lo cachea y solicita uno nuevo automáticamente si es necesario. Solo llamá a la API y Afip SDK te devuelve el TA correspondiente. Para obtener el TA se necesita un certificado digital, pero con Afip SDK podés empezar en modo desarrollo usando el CUIT 20-40937847-2 sin necesidad de uno. Si preferís [usar tu propio certificado](https://docs.afipsdk.com/integracion/vb6#usar-tu-propio-certificado-opcional) , al final te mostramos cómo. AfipSDKRequest.frm `gstrToken` y `gstrSign` corresponden el TA que nos da ARCA. Debemos enviar estos datos en el body de cada solicitud a los Web Services. En el manual de cada Web Service verás dónde colocarlos. ### [hashtag](https://docs.afipsdk.com/integracion/vb6#id-3.-llamar-al-metodo-del-web-service-que-necesites) 3\. Llamar al método del Web Service que necesites Con el TA ya podés realizar las llamadas a los Web Services que necesites. Es similar al código para obtener el TA, pero debés cambiar la URL y el body de la request. Podés encontrar las URLs y los body correspondientes en las pestañas API de la documentación de cada Web Service. [cloudsWeb serviceschevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services) Si el Web Service que necesitás no se encuentra en la lista de la documentación, podés llamarlo siguiendo esta guía: [cloudsOtro web servicechevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/otro-web-service) Podés usar la referencia de la API para obtener ejemplos de cómo usar los métodos de todos los web services de ARCA. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Referencia de APIafipsdk.comchevron-right](https://afipsdk.com/docs/api-reference/introduction/) También podés usar las guías del blog de Afip SDK para Visual Basic 6: [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)VB6 | Blogafipsdk.comchevron-right](https://afipsdk.com/blog/category/VB6/) * * * ### [hashtag](https://docs.afipsdk.com/integracion/vb6#usar-tu-propio-certificado-opcional) Usar tu propio certificado (Opcional) Primero, obtenemos el certificado siguiendo esta guía. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Obtener el certificado para conectar tu sistema con los web services de ARCAafipsdk.comchevron-right](https://afipsdk.com/blog/como-obtener-certificado-para-web-services-arca/) Al pedir la autorización agregamos `cert` y `key` en el body AfipSDKRequest.frm [AnteriorVisual Fox Prochevron-left](https://docs.afipsdk.com/integracion/vfp) [Siguiente.NETchevron-right](https://docs.afipsdk.com/integracion/dotnet) Última actualización hace 4 meses * [Requisitos previos](https://docs.afipsdk.com/integracion/vb6#requisitos-previos) * [Básicos](https://docs.afipsdk.com/integracion/vb6#basicos) * [1\. Instalación](https://docs.afipsdk.com/integracion/vb6#id-1.-instalacion) * [2\. Obtener el Ticket de Acceso (TA)](https://docs.afipsdk.com/integracion/vb6#id-2.-obtener-el-ticket-de-acceso-ta) * [3\. Llamar al método del Web Service que necesites](https://docs.afipsdk.com/integracion/vb6#id-3.-llamar-al-metodo-del-web-service-que-necesites) * [Usar tu propio certificado (Opcional)](https://docs.afipsdk.com/integracion/vb6#usar-tu-propio-certificado-opcional) Copiar Private Sub GetAuthorization() Dim objHttp As Object Dim strResponse As String Dim strAuthUrl As String Dim strAuthData As String Dim dictAuthData As Dictionary ' Crear objeto XMLHTTP Set objHttp = CreateObject("WinHttp.WinHttpRequest.5.1") strAuthUrl = "https://app.afipsdk.com/api/v1/afip/auth" ' Preparamos la data para pedir el TA Set dictAuthData = New Dictionary dictAuthData.Add "environment", "dev" dictAuthData.Add "tax_id", "20409378472" dictAuthData.Add "wsid", "wsfe" strAuthData = JsonConverter.ConvertToJson(dictAuthData) ' Reemplazar con tu access_token obtenido de https://app.afipsdk.com Dim accessToken As String accessToken = "TU_TOKEN_AQUI" With objHttp .Open "POST", strAuthUrl, False .setRequestHeader "Content-Type", "application/json" .setRequestHeader "Authorization", "Bearer " + accessToken .Send strAuthData If .Status <> 200 Then MsgBox "Error en la autorización: " & .Status MsgBox "Respuesta: " & .responseText Exit Sub End If strResponse = .responseText End With ' Parsear respuesta JSON (requiere función auxiliar ParseJson) Dim objJson As Object Set objJson = JsonConverter.ParseJson(strResponse) ' Guardar token y sign gstrToken = objJson("token") gstrSign = objJson("sign") Debug.Print "Token: " & gstrToken Debug.Print "Sign: " & gstrSign End Sub Copiar dictAuthData.Add "environment", "dev" dictAuthData.Add "tax_id", "20111111112" dictAuthData.Add "wsid", "wsfe" dictAuthData.Add "cert", "-----BEGIN CERTIFICATE-----MIIDRzC..." dictAuthData.Add "key", "-----BEGIN RSA PRIVATE KEY-----MIIEowIBAAKCA..." --- # Deno Deploy | Afip SDK ### [hashtag](https://docs.afipsdk.com/integracion/serverless/deno-deploy#requisitos-previos) Requisitos previos Para poder seguir esta guía, primero necesitarás: * [Obtener un access\_token de Afip SDKarrow-up-right](https://app.afipsdk.com/) ### [hashtag](https://docs.afipsdk.com/integracion/serverless/deno-deploy#id-1.-instalacion) 1\. Instalación Deno Deploy no requiere instalación de dependencias. Podés importar paquetes de npm directamente usando el prefijo `npm:`. Agrega el access token de AfipSDK como variable de entorno desde el dashboard de Deno Deploy, en la sección **Settings > Environment Variables** de tu proyecto. ### [hashtag](https://docs.afipsdk.com/integracion/serverless/deno-deploy#id-2.-crear-una-instancia-de-la-clase-afip) 2\. Crear una instancia de la clase Afip Para usar los Web Services de ARCA se necesita un certificado digital, pero con Afip SDK podés empezar en modo desarrollo usando el CUIT 20-40937847-2 sin necesidad de uno. Si preferís [usar tu propio certificado](https://docs.afipsdk.com/integracion/serverless/deno-deploy#usar-tu-propio-certificado-opcional) , al final te mostramos cómo. En Deno Deploy, los paquetes npm se importan con el prefijo `npm:`. main.ts Copiar import Afip from 'npm:@afipsdk/afip.js'; const afip = new Afip({ CUIT: 20409378472, access_token: Deno.env.get('AFIPSDK_ACCESS_TOKEN'), }); Deno.serve(async (_req: Request) => { // Tu llamada de afipSDK aqui }); ### [hashtag](https://docs.afipsdk.com/integracion/serverless/deno-deploy#id-3.-llamar-al-metodo-del-web-service-que-necesites) 3\. Llamar al método del Web Service que necesites Con la instancia creada ya podés realizar las llamadas a los Web Services que necesites. [cloudsWeb serviceschevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services) Si el Web Service que necesitás no se encuentra en la lista de la documentación, podés llamarlo siguiendo esta guía: [cloudsOtro web servicechevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/otro-web-service) Podés usar la referencia de la API para obtener ejemplos de cómo usar los métodos de todos los web services de ARCA. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Referencia de APIafipsdk.comchevron-right](https://afipsdk.com/docs/api-reference/introduction/) * * * ### [hashtag](https://docs.afipsdk.com/integracion/serverless/deno-deploy#usar-tu-propio-certificado-opcional) Usar tu propio certificado (Opcional) Primero, obtenemos el certificado siguiendo esta guía. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Obtener el certificado para conectar tu sistema con los web services de ARCAafipsdk.comchevron-right](https://afipsdk.com/blog/como-obtener-certificado-para-web-services-arca/) Para agregar las variables de ambiente primero debemos obtener el valor de .cert y .key en base64 (guardalo ya que se nos pedirá luego). En la consola ejecutaremos este comando para copiar el valor al portapapeles: Git Bash Linux El valor del certificado y la key deben almacenarse como **variables de entorno** del proyecto desde el dashboard de Deno Deploy, en la sección **Settings > Environment Variables**. Y luego los leemos desde las variables de entorno en la función: main.ts [AnteriorCloudflare Workerschevron-left](https://docs.afipsdk.com/integracion/serverless/cloudflare-workers) [SiguienteAWS Lambdachevron-right](https://docs.afipsdk.com/integracion/serverless/aws-lambda) Última actualización hace 4 días * [Requisitos previos](https://docs.afipsdk.com/integracion/serverless/deno-deploy#requisitos-previos) * [1\. Instalación](https://docs.afipsdk.com/integracion/serverless/deno-deploy#id-1.-instalacion) * [2\. Crear una instancia de la clase Afip](https://docs.afipsdk.com/integracion/serverless/deno-deploy#id-2.-crear-una-instancia-de-la-clase-afip) * [3\. Llamar al método del Web Service que necesites](https://docs.afipsdk.com/integracion/serverless/deno-deploy#id-3.-llamar-al-metodo-del-web-service-que-necesites) * [Usar tu propio certificado (Opcional)](https://docs.afipsdk.com/integracion/serverless/deno-deploy#usar-tu-propio-certificado-opcional) Copiar base64 -w 0 afip-cert.crt | clip base64 -w 0 afip-key.key | clip Copiar base64 -w 0 afip-cert.crt | xclip -selection clipboard base64 -w 0 afip-key.key | xclip -selection clipboard Copiar import Afip from 'npm:@afipsdk/afip.js'; // Certificado y Key almacenados como variables de entorno const afip = new Afip({ cert: atob(Deno.env.get('AFIP_CERT')), key: atob(Deno.env.get('AFIP_KEY')), CUIT: 20111111112, access_token: Deno.env.get('AFIPSDK_ACCESS_TOKEN'), // Obtenido de https://app.afipsdk.com }); --- # AWS Lambda | Afip SDK ### [hashtag](https://docs.afipsdk.com/integracion/serverless/aws-lambda#requisitos-previos) Requisitos previos Para poder seguir esta guía, primero necesitarás: * [Obtener un access\_token de Afip SDKarrow-up-right](https://app.afipsdk.com/) ### [hashtag](https://docs.afipsdk.com/integracion/serverless/aws-lambda#basicos) Básicos Para usar los Web Services de ARCA, vamos a utilizar la [API de Afip SDKarrow-up-right](https://github.com/AfipSDK/afip-gitbook/blob/main/integracion/serverless/api.md) . En la [documentación de la APIarrow-up-right](https://github.com/AfipSDK/afip-gitbook/blob/main/integracion/serverless/api.md) podés consultar todos los parámetros del endpoint. * * * ### [hashtag](https://docs.afipsdk.com/integracion/serverless/aws-lambda#id-1.-instalacion) 1\. Instalación Creá una nueva función Lambda desde la consola de AWS o con [AWS CLIarrow-up-right](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html) , usando el runtime **Node.js**. Agregá el access token de AfipSDK como variable de entorno de tu función Lambda desde la consola de AWS, en la sección **Configuration > Environment variables**. ### [hashtag](https://docs.afipsdk.com/integracion/serverless/aws-lambda#id-2.-obtener-el-ticket-de-acceso-ta) 2\. Obtener el Ticket de Acceso (TA) Antes de llamar a los Web Services de ARCA, necesitás un ticket de acceso (TA), también llamado Token Authorization. Este TA expira tras un tiempo, pero no tenés que preocuparte por renovarlo: Afip SDK lo cachea y solicita uno nuevo automáticamente si es necesario. Solo llamá a la API y Afip SDK te devuelve el TA correspondiente. Para obtener el TA se necesita un certificado digital, pero con Afip SDK podés empezar en modo desarrollo usando el CUIT 20-40937847-2 sin necesidad de uno. Si preferís [usar tu propio certificado](https://docs.afipsdk.com/integracion/serverless/aws-lambda#usar-tu-propio-certificado-opcional) , al final te mostramos cómo. index.mjs `token` y `sign` corresponden el TA que nos da ARCA. Debemos enviar estos datos en el body de cada solicitud a los Web Services. En el manual de cada Web Service verás dónde colocarlos. ### [hashtag](https://docs.afipsdk.com/integracion/serverless/aws-lambda#id-3.-llamar-al-metodo-del-web-service-que-necesites) 3\. Llamar al método del Web Service que necesites Con el TA ya podés realizar las llamadas a los Web Services que necesites. Es similar al código para obtener el TA, pero debés cambiar la URL y el body de la request. Podés encontrar las URLs y los body correspondientes en las pestañas API de la documentación de cada Web Service. [cloudsWeb serviceschevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services) Si el Web Service que necesitás no se encuentra en la lista de la documentación, podés llamarlo siguiendo esta guía: [cloudsOtro web servicechevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/otro-web-service) Podés usar la referencia de la API para obtener ejemplos de cómo usar los métodos de todos los web services de ARCA. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Referencia de APIafipsdk.comchevron-right](https://afipsdk.com/docs/api-reference/introduction/) * * * ### [hashtag](https://docs.afipsdk.com/integracion/serverless/aws-lambda#usar-tu-propio-certificado-opcional) Usar tu propio certificado (Opcional) Primero, obtenemos el certificado siguiendo esta guía. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Obtener el certificado para conectar tu sistema con los web services de ARCAafipsdk.comchevron-right](https://afipsdk.com/blog/como-obtener-certificado-para-web-services-arca/) Para agregar las variables de ambiente primero debemos obtener el valor de .cert y .key en base64 (guardalo ya que se nos pedirá luego). En la consola ejecutaremos este comando para copiar el valor al portapapeles: Git Bash Linux El valor del certificado y la key deben almacenarse como **variables de entorno** de tu función Lambda desde la consola de AWS, en la sección **Configuration > Environment variables**. Y luego los enviamos en el body de la llamada a la API: index.mjs [AnteriorDeno Deploychevron-left](https://docs.afipsdk.com/integracion/serverless/deno-deploy) [SiguientePHPchevron-right](https://docs.afipsdk.com/integracion/php) Última actualización hace 4 días * [Requisitos previos](https://docs.afipsdk.com/integracion/serverless/aws-lambda#requisitos-previos) * [Básicos](https://docs.afipsdk.com/integracion/serverless/aws-lambda#basicos) * [1\. Instalación](https://docs.afipsdk.com/integracion/serverless/aws-lambda#id-1.-instalacion) * [2\. Obtener el Ticket de Acceso (TA)](https://docs.afipsdk.com/integracion/serverless/aws-lambda#id-2.-obtener-el-ticket-de-acceso-ta) * [3\. Llamar al método del Web Service que necesites](https://docs.afipsdk.com/integracion/serverless/aws-lambda#id-3.-llamar-al-metodo-del-web-service-que-necesites) * [Usar tu propio certificado (Opcional)](https://docs.afipsdk.com/integracion/serverless/aws-lambda#usar-tu-propio-certificado-opcional) Copiar const accessToken = process.env.AFIPSDK_ACCESS_TOKEN; export const handler = async (event) => { const authResponse = await fetch('https://app.afipsdk.com/api/v1/afip/auth', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${accessToken}`, }, body: JSON.stringify({ environment: 'dev', tax_id: '20409378472', // CUIT a utilizar wsid: 'wsfe', }), }); if (!authResponse.ok) { return { statusCode: authResponse.status, body: JSON.stringify({ error: `Error en la autorización: ${authResponse.status}` }), }; } const { token, sign } = await authResponse.json(); // Tu llamada al Web Service aqui }; Copiar base64 -w 0 afip-cert.crt | clip base64 -w 0 afip-key.key | clip Copiar base64 -w 0 afip-cert.crt | xclip -selection clipboard base64 -w 0 afip-key.key | xclip -selection clipboard Copiar const accessToken = process.env.AFIPSDK_ACCESS_TOKEN; const cert = atob(process.env.AFIP_CERT); const key = aatob(process.env.AFIP_KEY); export const handler = async (event) => { const authResponse = await fetch('https://app.afipsdk.com/api/v1/afip/auth', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${accessToken}`, }, body: JSON.stringify({ environment: 'prod', tax_id: '20111111112', // CUIT del certificado wsid: 'wsfe', cert, key, }), }); const { token, sign } = await authResponse.json(); }; --- # n8n | Afip SDK ### [hashtag](https://docs.afipsdk.com/integracion/n8n#requisitos-previos) Requisitos previos Para poder seguir esta guía, primero necesitarás: * [Obtener un access\_token de Afip SDKarrow-up-right](https://app.afipsdk.com/) ### [hashtag](https://docs.afipsdk.com/integracion/n8n#basicos) Básicos Para usar los Web Services de ARCA, vamos a utilizar la [API de Afip SDK](https://docs.afipsdk.com/integracion/api) . En la [documentación de la API](https://docs.afipsdk.com/integracion/api) podés consultar todos los parámetros del endpoint. Para poder usar la API lo vamos a hacer a través del nodo HTTP Request. ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-116d96081acf0204c320d30274a4237b35147494%252Fimagen.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=3092017f&sv=2) * * * ### [hashtag](https://docs.afipsdk.com/integracion/n8n#id-1.-obtener-el-ticket-de-acceso-ta) 1\. Obtener el Ticket de Acceso (TA) Antes de llamar a los Web Services de ARCA, necesitás un ticket de acceso (TA), también llamado Token Authorization. Este TA expira tras un tiempo, pero no tenés que preocuparte por renovarlo: Afip SDK lo cachea y solicita uno nuevo automáticamente si es necesario. Solo llamá a la API y Afip SDK te devuelve el TA correspondiente. Para obtener el TA se necesita un certificado digital, pero con Afip SDK podés empezar en modo desarrollo usando el CUIT 20-40937847-2 sin necesidad de uno. Si preferís [usar tu propio certificado](https://docs.afipsdk.com/integracion/n8n#usar-tu-propio-certificado-opcional) , al final te mostramos cómo. HTTP Request Click en "Import cURL" para importar la request automáticamente. ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-bcab26c2da608397a8ef5770fa57a68c2f273dfa%252Fimagen.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=62a03517&sv=2) **Comando cURL** ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-c89b48c9871ab5943b0febf5a913d6be7a388b04%252Fimagen.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=58b2077f&sv=2) `token` y `sign` corresponden el TA que nos da ARCA. Debemos enviar estos datos en el body de cada solicitud a los Web Services. En el manual de cada Web Service verás dónde colocarlos. ### [hashtag](https://docs.afipsdk.com/integracion/n8n#id-2.-llamar-al-metodo-del-web-service-que-necesites) 2\. Llamar al método del Web Service que necesites Con el TA ya podés realizar las llamadas a los Web Services que necesites. Es similar al código para obtener el TA, pero debés cambiar la URL y el body de la request. Podés encontrar las URLs y los body correspondientes en las pestañas API de la documentación de cada Web Service. [cloudsWeb serviceschevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services) Si el Web Service que necesitás no se encuentra en la lista de la documentación, podés llamarlo siguiendo esta guía: [cloudsOtro web servicechevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/otro-web-service) Podés usar la referencia de la API para obtener ejemplos de cómo usar los métodos de todos los web services de ARCA. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Referencia de APIafipsdk.comchevron-right](https://afipsdk.com/docs/api-reference/introduction/) También podés usar las guías del blog de Afip SDK para n8n: [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)N8n | Blogafipsdk.comchevron-right](https://afipsdk.com/blog/category/n8n/) * * * ### [hashtag](https://docs.afipsdk.com/integracion/n8n#usar-tu-propio-certificado-opcional) Usar tu propio certificado (Opcional) Primero, obtenemos el certificado siguiendo esta guía. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Obtener el certificado para conectar tu sistema con los web services de ARCAafipsdk.comchevron-right](https://afipsdk.com/blog/como-obtener-certificado-para-web-services-arca/) Al pedir la autorización agregamos `cert` y `key` en el body HTTP Request **Comando cURL** ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-5ec720d4a85dd97596591b9ac05ac9ea49716d8a%252Fimagen.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=492f11c5&sv=2) [AnteriorGochevron-left](https://docs.afipsdk.com/integracion/go) [SiguienteMakechevron-right](https://docs.afipsdk.com/integracion/make) Última actualización hace 4 meses * [Requisitos previos](https://docs.afipsdk.com/integracion/n8n#requisitos-previos) * [Básicos](https://docs.afipsdk.com/integracion/n8n#basicos) * [1\. Obtener el Ticket de Acceso (TA)](https://docs.afipsdk.com/integracion/n8n#id-1.-obtener-el-ticket-de-acceso-ta) * [2\. Llamar al método del Web Service que necesites](https://docs.afipsdk.com/integracion/n8n#id-2.-llamar-al-metodo-del-web-service-que-necesites) * [Usar tu propio certificado (Opcional)](https://docs.afipsdk.com/integracion/n8n#usar-tu-propio-certificado-opcional) Copiar curl --location 'https://app.afipsdk.com/api/v1/afip/auth' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer TU_TOKEN_AQUI' \ --data '{ "environment": "dev", "tax_id": "20409378472", "wsid": "wsfe" }' Copiar curl --location 'https://app.afipsdk.com/api/v1/afip/auth' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer TU_TOKEN_AQUI' \ --data '{ "environment": "dev", "tax_id": "20111111112", "wsid": "wsfe", "cert": "-----BEGIN CERTIFICATE-----MIIDRzC...", "key": "-----BEGIN RSA PRIVATE KEY-----MIIEowIBAAKCA..." }' --- # .NET | Afip SDK ### [hashtag](https://docs.afipsdk.com/integracion/dotnet#requisitos-previos) Requisitos previos Para poder seguir esta guía, primero necesitarás: * [Obtener un access\_token de Afip SDKarrow-up-right](https://app.afipsdk.com/) ### [hashtag](https://docs.afipsdk.com/integracion/dotnet#basicos) Básicos Para usar los Web Services de ARCA, vamos a utilizar la [API de Afip SDK](https://docs.afipsdk.com/integracion/api) . En la [documentación de la API](https://docs.afipsdk.com/integracion/api) podés consultar todos los parámetros del endpoint. * * * ### [hashtag](https://docs.afipsdk.com/integracion/dotnet#id-1.-instalacion) 1\. Instalación Vamos a usar [Newtonsoft.Jsonarrow-up-right](https://www.nuget.org/packages/Newtonsoft.Json/) para trabajar con JSON. dotnet CLI Visual Studio (Package Manager Console) Copiar dotnet add package Newtonsoft.Json Copiar PM> Install-Package Newtonsoft.Json ### [hashtag](https://docs.afipsdk.com/integracion/dotnet#id-2.-obtener-el-ticket-de-acceso-ta) 2\. Obtener el Ticket de Acceso (TA) Antes de llamar a los Web Services de ARCA, necesitás un ticket de acceso (TA), también llamado Token Authorization. Este TA expira tras un tiempo, pero no tenés que preocuparte por renovarlo: Afip SDK lo cachea y solicita uno nuevo automáticamente si es necesario. Solo llamá a la API y Afip SDK te devuelve el TA correspondiente. Para obtener el TA se necesita un certificado digital, pero con Afip SDK podés empezar en modo desarrollo usando el CUIT 20-40937847-2 sin necesidad de uno. Si preferís [usar tu propio certificado](https://docs.afipsdk.com/integracion/dotnet#usar-tu-propio-certificado-opcional) , al final te mostramos cómo. AfipSDKRequest.cs `token` y `sign` corresponden el TA que nos da ARCA. Debemos enviar estos datos en el body de cada solicitud a los Web Services. En el manual de cada Web Service verás dónde colocarlos. ### [hashtag](https://docs.afipsdk.com/integracion/dotnet#id-3.-llamar-al-metodo-del-web-service-que-necesites) 3\. Llamar al método del Web Service que necesites Con el TA ya podés realizar las llamadas a los Web Services que necesites. Es similar al código para obtener el TA, pero debés cambiar la URL y el body de la request. Podés encontrar las URLs y los body correspondientes en las pestañas API de la documentación de cada Web Service. [cloudsWeb serviceschevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services) Si el Web Service que necesitás no se encuentra en la lista de la documentación, podés llamarlo siguiendo esta guía: [cloudsOtro web servicechevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/otro-web-service) Podés usar la referencia de la API para obtener ejemplos de cómo usar los métodos de todos los web services de ARCA. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Referencia de APIafipsdk.comchevron-right](https://afipsdk.com/docs/api-reference/introduction/) También podés usar las guías del blog de Afip SDK para .NET: [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2).NET | Blogafipsdk.comchevron-right](https://afipsdk.com/blog/category/.NET/) * * * ### [hashtag](https://docs.afipsdk.com/integracion/dotnet#usar-tu-propio-certificado-opcional) Usar tu propio certificado (Opcional) Primero, obtenemos el certificado siguiendo esta guía. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Obtener el certificado para conectar tu sistema con los web services de ARCAafipsdk.comchevron-right](https://afipsdk.com/blog/como-obtener-certificado-para-web-services-arca/) Al pedir la autorización agregamos `cert` y `key` en el body AfipSDKRequest.cs [AnteriorVisual Basic 6chevron-left](https://docs.afipsdk.com/integracion/vb6) [SiguienteJavachevron-right](https://docs.afipsdk.com/integracion/java) Última actualización hace 4 meses * [Requisitos previos](https://docs.afipsdk.com/integracion/dotnet#requisitos-previos) * [Básicos](https://docs.afipsdk.com/integracion/dotnet#basicos) * [1\. Instalación](https://docs.afipsdk.com/integracion/dotnet#id-1.-instalacion) * [2\. Obtener el Ticket de Acceso (TA)](https://docs.afipsdk.com/integracion/dotnet#id-2.-obtener-el-ticket-de-acceso-ta) * [3\. Llamar al método del Web Service que necesites](https://docs.afipsdk.com/integracion/dotnet#id-3.-llamar-al-metodo-del-web-service-que-necesites) * [Usar tu propio certificado (Opcional)](https://docs.afipsdk.com/integracion/dotnet#usar-tu-propio-certificado-opcional) Copiar using System; using System.Net.Http; using System.Text; using System.Text.Json; using System.Threading.Tasks; using Newtonsoft.Json; var client = new HttpClient(); var authUrl = "https://app.afipsdk.com/api/v1/afip/auth"; // Reemplazar con tu access_token obtenido de https://app.afipsdk.com var accessToken = "TU_TOKEN_AQUI"; client.DefaultRequestHeaders.Add("Authorization", $"Bearer {accessToken}"); var authData = new { environment = "dev", tax_id = "20409378472", // CUIT a utilizar wsid = "wsfe" }; var authJsonContent = JsonConvert.SerializeObject(authData); var authContent = new StringContent(authJsonContent, Encoding.UTF8, "application/json"); var authResponse = await client.PostAsync(authUrl, authContent); if (!authResponse.IsSuccessStatusCode) { Console.WriteLine($"Error en la autorización: {authResponse.StatusCode}"); return; } var authResponseBody = await authResponse.Content.ReadAsStringAsync(); dynamic auth = JsonConvert.DeserializeObject(authResponseBody); string token = auth.token; string sign = auth.sign; Console.WriteLine($"Token: {token}"); Console.WriteLine($"Sign: {sign}"); Copiar var authData = new { environment = "dev", tax_id = "20111111112", // CUIT del certificado wsid = "wsfe", cert = "-----BEGIN CERTIFICATE-----MIIDRzC...", key = "-----BEGIN RSA PRIVATE KEY-----MIIEowIBAAKCA..." }; --- # Zapier | Afip SDK ### [hashtag](https://docs.afipsdk.com/integracion/zapier#requisitos-previos) Requisitos previos Para poder seguir esta guía, primero necesitarás: * [Obtener un access\_token de Afip SDKarrow-up-right](https://app.afipsdk.com/) ### [hashtag](https://docs.afipsdk.com/integracion/zapier#basicos) Básicos Para usar los Web Services de ARCA, vamos a utilizar la [API de Afip SDK](https://docs.afipsdk.com/integracion/api) . En la [documentación de la API](https://docs.afipsdk.com/integracion/api) podés consultar todos los parámetros del endpoint. Para poder usar la API lo vamos a hacer a través de la action Webhooks ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-4025e1345fefef3a35ad810dfb2db89fc86f05b5%252Fimagen.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=a18a454c&sv=2) * * * ### [hashtag](https://docs.afipsdk.com/integracion/zapier#id-1.-obtener-el-ticket-de-acceso-ta) 1\. Obtener el Ticket de Acceso (TA) Antes de llamar a los Web Services de ARCA, necesitás un ticket de acceso (TA), también llamado Token Authorization. Este TA expira tras un tiempo, pero no tenés que preocuparte por renovarlo: Afip SDK lo cachea y solicita uno nuevo automáticamente si es necesario. Solo llamá a la API y Afip SDK te devuelve el TA correspondiente. Para obtener el TA se necesita un certificado digital, pero con Afip SDK podés empezar en modo desarrollo usando el CUIT 20-40937847-2 sin necesidad de uno. Si preferís [usar tu propio certificado](https://docs.afipsdk.com/integracion/zapier#usar-tu-propio-certificado-opcional) , al final te mostramos cómo. Webhooks En Action Event elegimos custom request ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-71b96bed14326a5a216b28368e4f489ff49dd4cd%252Fimagen.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=adbcc278&sv=2) Completamos con la siguiente información: Method URL Data Pass-Through? Data Unflatten Headers Return Raw Response ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-fcc17276a511bb887c8e68ce114a0a4c92b4a3a7%252Fimagen.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=ae136e5b&sv=2) ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-a03adafda65739fdd71d1bc49655845e75925ea8%252Fimagen.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=6f0926fb&sv=2) `token` y `sign` corresponden el TA que nos da ARCA. Debemos enviar estos datos en el body de cada solicitud a los Web Services. En el manual de cada Web Service verás dónde colocarlos. ### [hashtag](https://docs.afipsdk.com/integracion/zapier#id-2.-llamar-al-metodo-del-web-service-que-necesites) 2\. Llamar al método del Web Service que necesites Con el TA ya podés realizar las llamadas a los Web Services que necesites. Es similar al código para obtener el TA, pero debés cambiar la URL y el body de la request. Podés encontrar las URLs y los body correspondientes en las pestañas API de la documentación de cada Web Service. [cloudsWeb serviceschevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services) Si el Web Service que necesitás no se encuentra en la lista de la documentación, podés llamarlo siguiendo esta guía: [cloudsOtro web servicechevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/otro-web-service) Podés usar la referencia de la API para obtener ejemplos de cómo usar los métodos de todos los web services de ARCA. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Referencia de APIafipsdk.comchevron-right](https://afipsdk.com/docs/api-reference/introduction/) También podés usar las guías del blog de Afip SDK para API: [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)API | Blogafipsdk.comchevron-right](https://afipsdk.com/blog/category/API/) * * * ### [hashtag](https://docs.afipsdk.com/integracion/zapier#usar-tu-propio-certificado-opcional) Usar tu propio certificado (Opcional) Primero, obtenemos el certificado siguiendo esta guía. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Obtener el certificado para conectar tu sistema con los web services de ARCAafipsdk.comchevron-right](https://afipsdk.com/blog/como-obtener-certificado-para-web-services-arca/) Al pedir la autorización agregamos `cert` y `key` en Data Webhooks Data ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-785853b28b236b643c3d3fdcce09012ff50cb198%252Fimagen.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=d89e80ad&sv=2) [AnteriorBubblechevron-left](https://docs.afipsdk.com/integracion/bubble) [SiguientePipedreamchevron-right](https://docs.afipsdk.com/integracion/pipedream) Última actualización hace 4 meses * [Requisitos previos](https://docs.afipsdk.com/integracion/zapier#requisitos-previos) * [Básicos](https://docs.afipsdk.com/integracion/zapier#basicos) * [1\. Obtener el Ticket de Acceso (TA)](https://docs.afipsdk.com/integracion/zapier#id-1.-obtener-el-ticket-de-acceso-ta) * [2\. Llamar al método del Web Service que necesites](https://docs.afipsdk.com/integracion/zapier#id-2.-llamar-al-metodo-del-web-service-que-necesites) * [Usar tu propio certificado (Opcional)](https://docs.afipsdk.com/integracion/zapier#usar-tu-propio-certificado-opcional) Copiar POST Copiar https://app.afipsdk.com/api/v1/afip/auth Copiar False Copiar { "environment": "dev", "tax_id": "20409378472", "wsid": "wsfe" } Copiar Yes Copiar Content-Type: application/json Copiar Authorization: Bearer TU_TOKEN_AQUI Copiar No Copiar { "environment": "dev", "tax_id": "20111111112", "wsid": "wsfe", "cert": "-----BEGIN CERTIFICATE-----MIIDRzC...", "key": "-----BEGIN RSA PRIVATE KEY-----MIIEowIBAAKCA..." } --- # Java | Afip SDK ### [hashtag](https://docs.afipsdk.com/integracion/java#requisitos-previos) Requisitos previos Para poder seguir esta guía, primero necesitarás: * [Obtener un access\_token de Afip SDKarrow-up-right](https://app.afipsdk.com/) ### [hashtag](https://docs.afipsdk.com/integracion/java#basicos) Básicos Para usar los Web Services de ARCA, vamos a utilizar la [API de Afip SDK](https://docs.afipsdk.com/integracion/api) . En la [documentación de la API](https://docs.afipsdk.com/integracion/api) podés consultar todos los parámetros del endpoint. * * * ### [hashtag](https://docs.afipsdk.com/integracion/java#id-1.-instalacion) 1\. Instalación Vamos a usar [Gsonarrow-up-right](https://github.com/google/gson/) para trabajar con JSON. Gradle Maven Copiar implementation 'com.google.code.gson:gson:2.13.1' Copiar com.google.code.gson gson 2.13.1 ### [hashtag](https://docs.afipsdk.com/integracion/java#id-2.-obtener-el-ticket-de-acceso-ta) 2\. Obtener el Ticket de Acceso (TA) Antes de llamar a los Web Services de ARCA, necesitás un ticket de acceso (TA), también llamado Token Authorization. Este TA expira tras un tiempo, pero no tenés que preocuparte por renovarlo: Afip SDK lo cachea y solicita uno nuevo automáticamente si es necesario. Solo llamá a la API y Afip SDK te devuelve el TA correspondiente. Para obtener el TA se necesita un certificado digital, pero con Afip SDK podés empezar en modo desarrollo usando el CUIT 20-40937847-2 sin necesidad de uno. Si preferís [usar tu propio certificado](https://docs.afipsdk.com/integracion/java#usar-tu-propio-certificado-opcional) , al final te mostramos cómo. AfipSDKRequest.java `token` y `sign` corresponden el TA que nos da ARCA. Debemos enviar estos datos en el body de cada solicitud a los Web Services. En el manual de cada Web Service verás dónde colocarlos. ### [hashtag](https://docs.afipsdk.com/integracion/java#id-3.-llamar-al-metodo-del-web-service-que-necesites) 3\. Llamar al método del Web Service que necesites Con el TA ya podés realizar las llamadas a los Web Services que necesites. Es similar al código para obtener el TA, pero debés cambiar la URL y el body de la request. Podés encontrar las URLs y los body correspondientes en las pestañas API de la documentación de cada Web Service. [cloudsWeb serviceschevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services) Si el Web Service que necesitás no se encuentra en la lista de la documentación, podés llamarlo siguiendo esta guía: [cloudsOtro web servicechevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/otro-web-service) Podés usar la referencia de la API para obtener ejemplos de cómo usar los métodos de todos los web services de ARCA. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Referencia de APIafipsdk.comchevron-right](https://afipsdk.com/docs/api-reference/introduction/) También podés usar las guías del blog de Afip SDK para Java: [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Java | Blogafipsdk.comchevron-right](https://afipsdk.com/blog/category/Java/) * * * ### [hashtag](https://docs.afipsdk.com/integracion/java#usar-tu-propio-certificado-opcional) Usar tu propio certificado (Opcional) Primero, obtenemos el certificado siguiendo esta guía. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Obtener el certificado para conectar tu sistema con los web services de ARCAafipsdk.comchevron-right](https://afipsdk.com/blog/como-obtener-certificado-para-web-services-arca/) Al pedir la autorización agregamos `cert` y `key` en el body AfipSDKRequest.java [Anterior.NETchevron-left](https://docs.afipsdk.com/integracion/dotnet) [SiguienteFlutterchevron-right](https://docs.afipsdk.com/integracion/flutter) Última actualización hace 4 meses * [Requisitos previos](https://docs.afipsdk.com/integracion/java#requisitos-previos) * [Básicos](https://docs.afipsdk.com/integracion/java#basicos) * [1\. Instalación](https://docs.afipsdk.com/integracion/java#id-1.-instalacion) * [2\. Obtener el Ticket de Acceso (TA)](https://docs.afipsdk.com/integracion/java#id-2.-obtener-el-ticket-de-acceso-ta) * [3\. Llamar al método del Web Service que necesites](https://docs.afipsdk.com/integracion/java#id-3.-llamar-al-metodo-del-web-service-que-necesites) * [Usar tu propio certificado (Opcional)](https://docs.afipsdk.com/integracion/java#usar-tu-propio-certificado-opcional) Copiar package com.example; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import java.lang.reflect.Type; import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.time.Duration; import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { try { // Paso 1: Obtener el Token Authorization HttpClient client = HttpClient.newBuilder() .connectTimeout(Duration.ofSeconds(15)) .build(); // Crear JSON para el request usando GSON Map authRequestMap = new HashMap<>(); authRequestMap.put("environment", "dev"); authRequestMap.put("tax_id", "20409378472"); authRequestMap.put("wsid", "wsfe"); Gson gson = new Gson(); String authRequestBody = gson.toJson(authRequestMap); // Reemplazar con tu access_token obtenido de https://app.afipsdk.com String accessToken = "TU_TOKEN_AQUI"; HttpRequest authRequest = HttpRequest.newBuilder() .uri(new URI("https://app.afipsdk.com/api/v1/afip/auth")) .header("Content-Type", "application/json") .header("Authorization", "Bearer "+ accessToken) .POST(HttpRequest.BodyPublishers.ofString(authRequestBody)) .build(); HttpResponse authResponse = client.send(authRequest, HttpResponse.BodyHandlers.ofString()); if (authResponse.statusCode() >= 400) { System.out.println("Error in auth request: " + authResponse.body()); return; } // Parsear respuesta para extraer el sign y token usando GSON Type mapType = new TypeToken>() {}.getType(); Map authData = gson.fromJson(authResponse.body(), mapType); String token = authData.get("token"); String sign = authData.get("sign"); System.out.println("Token: " + token); System.out.println("Sign: " + sign); } catch (Exception e) { e.printStackTrace(); } } } Copiar Map authRequestMap = new HashMap<>(); authRequestMap.put("environment", "dev"); authRequestMap.put("tax_id", "20111111112"); // CUIT del certificado authRequestMap.put("wsid", "wsfe"); authRequestMap.put("cert", "-----BEGIN CERTIFICATE-----MIIDRzC..."); authRequestMap.put("key", "-----BEGIN RSA PRIVATE KEY-----MIIEowIBAAKCA..."); --- # Make | Afip SDK ### [hashtag](https://docs.afipsdk.com/integracion/make#requisitos-previos) Requisitos previos Para poder seguir esta guía, primero necesitarás: * [Obtener un access\_token de Afip SDKarrow-up-right](https://app.afipsdk.com/) ### [hashtag](https://docs.afipsdk.com/integracion/make#basicos) Básicos Para usar los Web Services de ARCA, vamos a utilizar la [API de Afip SDK](https://docs.afipsdk.com/integracion/api) . En la [documentación de la API](https://docs.afipsdk.com/integracion/api) podés consultar todos los parámetros del endpoint. Para poder usar la API lo vamos a hacer a través del nodo HTTP Request. ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-2553f6a43f945fa5359614851b720b442f83c3b1%252FScreenshot%25202025-06-24%2520at%252016.33.03.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=6047675f&sv=2) * * * ### [hashtag](https://docs.afipsdk.com/integracion/make#id-1.-obtener-el-ticket-de-acceso-ta) 1\. Obtener el Ticket de Acceso (TA) Antes de llamar a los Web Services de ARCA, necesitás un ticket de acceso (TA), también llamado Token Authorization. Este TA expira tras un tiempo, pero no tenés que preocuparte por renovarlo: Afip SDK lo cachea y solicita uno nuevo automáticamente si es necesario. Solo llamá a la API y Afip SDK te devuelve el TA correspondiente. Para obtener el TA se necesita un certificado digital, pero con Afip SDK podés empezar en modo desarrollo usando el CUIT 20-40937847-2 sin necesidad de uno. Si preferís [usar tu propio certificado](https://docs.afipsdk.com/integracion/make#usar-tu-propio-certificado-opcional) , al final te mostramos cómo. HTTP Request Completamos con la siguiente información: URL Method Headers Body type Content type Request content Parse response ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-fbaf7c9aa6555b92a7cca7a1c908a1b69cfad0b7%252FScreenshot%25202025-06-24%2520at%252016.43.15.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=a52c4b4d&sv=2) `token` y `sign` corresponden el TA que nos da ARCA. Debemos enviar estos datos en el body de cada solicitud a los Web Services. En el manual de cada Web Service verás dónde colocarlos. ### [hashtag](https://docs.afipsdk.com/integracion/make#id-2.-llamar-al-metodo-del-web-service-que-necesites) 2\. Llamar al método del Web Service que necesites Con el TA ya podés realizar las llamadas a los Web Services que necesites. Es similar al código para obtener el TA, pero debés cambiar la URL y el body de la request. Podés encontrar las URLs y los body correspondientes en las pestañas API de la documentación de cada Web Service. [cloudsWeb serviceschevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services) Si el Web Service que necesitás no se encuentra en la lista de la documentación, podés llamarlo siguiendo esta guía: [cloudsOtro web servicechevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/otro-web-service) Podés usar la referencia de la API para obtener ejemplos de cómo usar los métodos de todos los web services de ARCA. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Referencia de APIafipsdk.comchevron-right](https://afipsdk.com/docs/api-reference/introduction/) También podés usar las guías del blog de Afip SDK para Make: [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Make | Blogafipsdk.comchevron-right](https://afipsdk.com/blog/category/Make/) * * * ### [hashtag](https://docs.afipsdk.com/integracion/make#usar-tu-propio-certificado-opcional) Usar tu propio certificado (Opcional) Primero, obtenemos el certificado siguiendo esta guía. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Obtener el certificado para conectar tu sistema con los web services de ARCAafipsdk.comchevron-right](https://afipsdk.com/blog/como-obtener-certificado-para-web-services-arca/) Al pedir la autorización agregamos `cert` y `key` en el Request content HTTP Request Request content ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-33491b5f1e16aa0a9ba82d720e21c5ba15eb68e4%252FScreenshot%25202025-06-24%2520at%252016.48.54.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=b5398616&sv=2) [Anteriorn8nchevron-left](https://docs.afipsdk.com/integracion/n8n) [SiguienteBubblechevron-right](https://docs.afipsdk.com/integracion/bubble) Última actualización hace 4 meses * [Requisitos previos](https://docs.afipsdk.com/integracion/make#requisitos-previos) * [Básicos](https://docs.afipsdk.com/integracion/make#basicos) * [1\. Obtener el Ticket de Acceso (TA)](https://docs.afipsdk.com/integracion/make#id-1.-obtener-el-ticket-de-acceso-ta) * [2\. Llamar al método del Web Service que necesites](https://docs.afipsdk.com/integracion/make#id-2.-llamar-al-metodo-del-web-service-que-necesites) * [Usar tu propio certificado (Opcional)](https://docs.afipsdk.com/integracion/make#usar-tu-propio-certificado-opcional) Copiar https://app.afipsdk.com/api/v1/afip/auth Copiar POST Copiar Authorization: Bearer TU_TOKEN_AQUI Copiar Raw Copiar JSON(application/json) Copiar { "environment": "dev", "tax_id": "20409378472", "wsid": "wsfe" } Copiar Yes Copiar { "environment": "dev", "tax_id": "20111111112", "wsid": "wsfe", "cert": "-----BEGIN CERTIFICATE-----MIIDRzC...", "key": "-----BEGIN RSA PRIVATE KEY-----MIIEowIBAAKCA..." } --- # Pipedream | Afip SDK ### [hashtag](https://docs.afipsdk.com/integracion/pipedream#requisitos-previos) Requisitos previos Para poder seguir esta guía, primero necesitarás: * [Obtener un access\_token de Afip SDKarrow-up-right](https://app.afipsdk.com/) ### [hashtag](https://docs.afipsdk.com/integracion/pipedream#basicos) Básicos Para usar los Web Services de ARCA, vamos a utilizar la [API de Afip SDK](https://docs.afipsdk.com/integracion/api) . En la [documentación de la API](https://docs.afipsdk.com/integracion/api) podés consultar todos los parámetros del endpoint. Para poder usar la API lo vamos a hacer a través de la action HTTP Request ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-ef34f3713899f28fcb1bf4e68cf13ac33bbfbb75%252Fimagen.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=a11419f9&sv=2) * * * ### [hashtag](https://docs.afipsdk.com/integracion/pipedream#id-1.-obtener-el-ticket-de-acceso-ta) 1\. Obtener el Ticket de Acceso (TA) Antes de llamar a los Web Services de ARCA, necesitás un ticket de acceso (TA), también llamado Token Authorization. Este TA expira tras un tiempo, pero no tenés que preocuparte por renovarlo: Afip SDK lo cachea y solicita uno nuevo automáticamente si es necesario. Solo llamá a la API y Afip SDK te devuelve el TA correspondiente. Para obtener el TA se necesita un certificado digital, pero con Afip SDK podés empezar en modo desarrollo usando el CUIT 20-40937847-2 sin necesidad de uno. Si preferís [usar tu propio certificado](https://docs.afipsdk.com/integracion/pipedream#usar-tu-propio-certificado-opcional) , al final te mostramos cómo. Http Request Completamos con la siguiente información: Method URL **En la pestaña Headers** **En la pestaña Body:** Content-Type: Raw Request Body ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-670d445399ab96ea2e68f0e775e9b93f1aac8a71%252Fimagen.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=5d32d12e&sv=2) ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-762893e2691c0228c1a1195747db37674673d9b5%252Fimagen.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=ead83fb6&sv=2) `token` y `sign` corresponden el TA que nos da ARCA. Debemos enviar estos datos en el body de cada solicitud a los Web Services. En el manual de cada Web Service verás dónde colocarlos. ### [hashtag](https://docs.afipsdk.com/integracion/pipedream#id-2.-llamar-al-metodo-del-web-service-que-necesites) 2\. Llamar al método del Web Service que necesites Con el TA ya podés realizar las llamadas a los Web Services que necesites. Es similar al código para obtener el TA, pero debés cambiar la URL y el body de la request. Podés encontrar las URLs y los body correspondientes en las pestañas API de la documentación de cada Web Service. [cloudsWeb serviceschevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services) Si el Web Service que necesitás no se encuentra en la lista de la documentación, podés llamarlo siguiendo esta guía: [cloudsOtro web servicechevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/otro-web-service) Podés usar la referencia de la API para obtener ejemplos de cómo usar los métodos de todos los web services de ARCA. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Referencia de APIafipsdk.comchevron-right](https://afipsdk.com/docs/api-reference/introduction/) También podés usar las guías del blog de Afip SDK para API: [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)API | Blogafipsdk.comchevron-right](https://afipsdk.com/blog/category/API/) * * * ### [hashtag](https://docs.afipsdk.com/integracion/pipedream#usar-tu-propio-certificado-opcional) Usar tu propio certificado (Opcional) Primero, obtenemos el certificado siguiendo esta guía. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Obtener el certificado para conectar tu sistema con los web services de ARCAafipsdk.comchevron-right](https://afipsdk.com/blog/como-obtener-certificado-para-web-services-arca/) Al pedir la autorización agregamos `cert` y `key` en Data Http Request Data ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-9e03937ce4e3a8e1b3c5580c6e913b776d1404e5%252Fimagen.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=3e55ec9e&sv=2) [AnteriorZapierchevron-left](https://docs.afipsdk.com/integracion/zapier) [SiguienteWeb serviceschevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services) Última actualización hace 4 meses * [Requisitos previos](https://docs.afipsdk.com/integracion/pipedream#requisitos-previos) * [Básicos](https://docs.afipsdk.com/integracion/pipedream#basicos) * [1\. Obtener el Ticket de Acceso (TA)](https://docs.afipsdk.com/integracion/pipedream#id-1.-obtener-el-ticket-de-acceso-ta) * [2\. Llamar al método del Web Service que necesites](https://docs.afipsdk.com/integracion/pipedream#id-2.-llamar-al-metodo-del-web-service-que-necesites) * [Usar tu propio certificado (Opcional)](https://docs.afipsdk.com/integracion/pipedream#usar-tu-propio-certificado-opcional) Copiar POST Copiar https://app.afipsdk.com/api/v1/afip/auth Copiar Authorization: Bearer TU_TOKEN_AQUI Copiar application/json Copiar { "environment": "dev", "tax_id": "20409378472", "wsid": "wsfe" } Copiar { "environment": "dev", "tax_id": "20111111112", "wsid": "wsfe", "cert": "-----BEGIN CERTIFICATE-----MIIDRzC...", "key": "-----BEGIN RSA PRIVATE KEY-----MIIEowIBAAKCA..." } --- # Flutter | Afip SDK ### [hashtag](https://docs.afipsdk.com/integracion/flutter#requisitos-previos) Requisitos previos Para poder seguir esta guía, primero necesitarás: * [Obtener un access\_token de Afip SDKarrow-up-right](https://app.afipsdk.com/) ### [hashtag](https://docs.afipsdk.com/integracion/flutter#basicos) Básicos Para usar los Web Services de ARCA, vamos a utilizar la [API de Afip SDK](https://docs.afipsdk.com/integracion/api) . En la [documentación de la API](https://docs.afipsdk.com/integracion/api) podés consultar todos los parámetros del endpoint. * * * ### [hashtag](https://docs.afipsdk.com/integracion/flutter#id-1.-obtener-el-ticket-de-acceso-ta) 1\. Obtener el Ticket de Acceso (TA) Antes de llamar a los Web Services de ARCA, necesitás un ticket de acceso (TA), también llamado Token Authorization. Este TA expira tras un tiempo, pero no tenés que preocuparte por renovarlo: Afip SDK lo cachea y solicita uno nuevo automáticamente si es necesario. Solo llamá a la API y Afip SDK te devuelve el TA correspondiente. Para obtener el TA se necesita un certificado digital, pero con Afip SDK podés empezar en modo desarrollo usando el CUIT 20-40937847-2 sin necesidad de uno. Si preferís [usar tu propio certificado](https://docs.afipsdk.com/integracion/flutter#usar-tu-propio-certificado-opcional) , al final te mostramos cómo. AfipSDKRequest.dart Copiar import 'package:http/http.dart' as http; import 'dart:convert'; import 'package:intl/intl.dart'; var headers = { 'Content-Type': 'application/json' }; var request = http.Request('POST', Uri.parse('https://app.afipsdk.com/api/v1/afip/auth')); request.body = json.encode({ "environment": "dev", "tax_id": "20409378472", // CUIT a utilizar "wsid": "wsfe" }); // Reemplazar con tu access_token obtenido de https://app.afipsdk.com var accessToken = "TU_TOKEN_AQUI"; headers['Authorization'] = "Bearer " + accessToken; request.headers.addAll(headers); http.StreamedResponse response = await request.send(); if (response.statusCode != 200) { print(await response.stream.bytesToString()); throw new Error(); } var auth = json.decode(await response.stream.bytesToString()); `auth['token']` y `auth['sign']` corresponden el TA que nos da ARCA. Debemos enviar estos datos en el body de cada solicitud a los Web Services. En el manual de cada Web Service verás dónde colocarlos. ### [hashtag](https://docs.afipsdk.com/integracion/flutter#id-2.-llamar-al-metodo-del-web-service-que-necesites) 2\. Llamar al método del Web Service que necesites Con el TA ya podés realizar las llamadas a los Web Services que necesites. Es similar al código para obtener el TA, pero debés cambiar la URL y el body de la request. Podés encontrar las URLs y los body correspondientes en las pestañas API de la documentación de cada Web Service. [cloudsWeb serviceschevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services) Si el Web Service que necesitás no se encuentra en la lista de la documentación, podés llamarlo siguiendo esta guía: [cloudsOtro web servicechevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/otro-web-service) Podés usar la referencia de la API para obtener ejemplos de cómo usar los métodos de todos los web services de ARCA. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Referencia de APIafipsdk.comchevron-right](https://afipsdk.com/docs/api-reference/introduction/) También podés usar las guías del blog de Afip SDK para Flutter: [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Flutter | Blogafipsdk.comchevron-right](https://afipsdk.com/blog/category/Flutter/) * * * ### [hashtag](https://docs.afipsdk.com/integracion/flutter#usar-tu-propio-certificado-opcional) Usar tu propio certificado (Opcional) Primero, obtenemos el certificado siguiendo esta guía. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Obtener el certificado para conectar tu sistema con los web services de ARCAafipsdk.comchevron-right](https://afipsdk.com/blog/como-obtener-certificado-para-web-services-arca/) Al pedir la autorización agregamos `cert` y `key` en el body AfipSDKRequest.dart [AnteriorJavachevron-left](https://docs.afipsdk.com/integracion/java) [SiguienteGochevron-right](https://docs.afipsdk.com/integracion/go) Última actualización hace 4 meses * [Requisitos previos](https://docs.afipsdk.com/integracion/flutter#requisitos-previos) * [Básicos](https://docs.afipsdk.com/integracion/flutter#basicos) * [1\. Obtener el Ticket de Acceso (TA)](https://docs.afipsdk.com/integracion/flutter#id-1.-obtener-el-ticket-de-acceso-ta) * [2\. Llamar al método del Web Service que necesites](https://docs.afipsdk.com/integracion/flutter#id-2.-llamar-al-metodo-del-web-service-que-necesites) * [Usar tu propio certificado (Opcional)](https://docs.afipsdk.com/integracion/flutter#usar-tu-propio-certificado-opcional) Copiar request.body = json.encode({ "environment": "dev", "tax_id": "20111111112", // CUIT del certificado "wsid": "wsfe", "cert": "-----BEGIN CERTIFICATE-----MIIDRzC...", "key": "-----BEGIN RSA PRIVATE KEY-----MIIEowIBAAKCA..." }); --- # Bubble | Afip SDK ### [hashtag](https://docs.afipsdk.com/integracion/bubble#requisitos-previos) Requisitos previos Para poder seguir esta guía, primero necesitarás: * [Obtener un access\_token de Afip SDKarrow-up-right](https://app.afipsdk.com/) ### [hashtag](https://docs.afipsdk.com/integracion/bubble#basicos) Básicos Para usar los Web Services de ARCA, vamos a utilizar la [API de Afip SDK](https://docs.afipsdk.com/integracion/api) . En la [documentación de la API](https://docs.afipsdk.com/integracion/api) podés consultar todos los parámetros del endpoint. Para poder usar la API lo vamos a hacer a través del plugin API Connector. En el menu izquierdo clickeamos en el icono de plugins ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-46667c271ddaa42ea957192889126ee914bb7a73%252FScreenshot%25202025-06-25%2520at%252016.41.00.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=ed4147d7&sv=2) Clickeamos en "+ Add Plugins" ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-8426f4d59ee9d6ecd25e2219e592fd79fb23f605%252FScreenshot%25202025-06-25%2520at%252016-41-32%2520Afipsdk%2520Bubble%2520Editor.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=de3a56d9&sv=2) Buscamos "API Connector" y le damos a "Install" ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-8e2f3f2d5430cc03b7731f2610e0bf42b3ddd1f9%252Fimagen.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=bdcf6de1&sv=2) Clickeamos en "+ Add another API" ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-45d583969a76078214b9fce32fcb3317fe307301%252Fimagen.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=28526e56&sv=2) En API Name ponemos "Afip SDK" ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-5f26b9b854e9f28d74f3b1f4f03457b01f7b8cee%252Fimagen.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=ba97cf47&sv=2) * * * ### [hashtag](https://docs.afipsdk.com/integracion/bubble#id-1.-obtener-el-ticket-de-acceso-ta) 1\. Obtener el Ticket de Acceso (TA) Antes de llamar a los Web Services de ARCA, necesitás un ticket de acceso (TA), también llamado Token Authorization. Este TA expira tras un tiempo, pero no tenés que preocuparte por renovarlo: Afip SDK lo cachea y solicita uno nuevo automáticamente si es necesario. Solo llamá a la API y Afip SDK te devuelve el TA correspondiente. Para obtener el TA se necesita un certificado digital, pero con Afip SDK podés empezar en modo desarrollo usando el CUIT 20-40937847-2 sin necesidad de uno. Si preferís [usar tu propio certificado](https://docs.afipsdk.com/integracion/bubble#usar-tu-propio-certificado-opcional) , al final te mostramos cómo. API Call En el recuadro de API Call, en la esquina superior derecha, le damos a expand ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-ed6710fd4b48914f4989b7652a7bb18dec87d49c%252Fimagen.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=11d9b2a2&sv=2) Completamos con la siguiente información: Name Use as Headers Data type Body ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-fe560da50556c94d4340bf0d6f7fcdd3204ce54c%252Fimagen.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=df141a2f&sv=2) Clickeamos en "Initialize Call" ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-605191bcf6b6a24b25b96fc74542bcb02a54f891%252Fimagen.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=5b35211f&sv=2) `token` y `sign` corresponden el TA que nos da ARCA. Debemos enviar estos datos en el body de cada solicitud a los Web Services. En el manual de cada Web Service verás dónde colocarlos. ### [hashtag](https://docs.afipsdk.com/integracion/bubble#id-2.-llamar-al-metodo-del-web-service-que-necesites) 2\. Llamar al método del Web Service que necesites Con el TA ya podés realizar las llamadas a los Web Services que necesites. Es similar al código para obtener el TA, pero debés cambiar la URL y el body de la request. Podés encontrar las URLs y los body correspondientes en las pestañas API de la documentación de cada Web Service. [cloudsWeb serviceschevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services) Si el Web Service que necesitás no se encuentra en la lista de la documentación, podés llamarlo siguiendo esta guía: [cloudsOtro web servicechevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/otro-web-service) Podés usar la referencia de la API para obtener ejemplos de cómo usar los métodos de todos los web services de ARCA. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Referencia de APIafipsdk.comchevron-right](https://afipsdk.com/docs/api-reference/introduction/) También podés usar las guías del blog de Afip SDK para Bubble: [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Bubble | Blogafipsdk.comchevron-right](https://afipsdk.com/blog/category/Bubble/) * * * ### [hashtag](https://docs.afipsdk.com/integracion/bubble#usar-tu-propio-certificado-opcional) Usar tu propio certificado (Opcional) Primero, obtenemos el certificado siguiendo esta guía. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Obtener el certificado para conectar tu sistema con los web services de ARCAafipsdk.comchevron-right](https://afipsdk.com/blog/como-obtener-certificado-para-web-services-arca/) Al pedir la autorización agregamos `cert` y `key` en el Body API Call Body ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-2b0fe4f16386cffdf9f8c9a01dee9cfd8efdedc2%252Fimagen.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=83a8026b&sv=2) [AnteriorMakechevron-left](https://docs.afipsdk.com/integracion/make) [SiguienteZapierchevron-right](https://docs.afipsdk.com/integracion/zapier) Última actualización hace 4 meses * [Requisitos previos](https://docs.afipsdk.com/integracion/bubble#requisitos-previos) * [Básicos](https://docs.afipsdk.com/integracion/bubble#basicos) * [1\. Obtener el Ticket de Acceso (TA)](https://docs.afipsdk.com/integracion/bubble#id-1.-obtener-el-ticket-de-acceso-ta) * [2\. Llamar al método del Web Service que necesites](https://docs.afipsdk.com/integracion/bubble#id-2.-llamar-al-metodo-del-web-service-que-necesites) * [Usar tu propio certificado (Opcional)](https://docs.afipsdk.com/integracion/bubble#usar-tu-propio-certificado-opcional) Copiar Auth Create Copiar Action Copiar Authorization: Bearer TU_TOKEN_AQUI Copiar JSON Copiar POST https://app.afipsdk.com/api/v1/afip/auth Copiar { "environment": "dev", "tax_id": "20409378472", "wsid": "wsfe" } Copiar { "environment": "dev", "tax_id": "20111111112", "wsid": "wsfe", "cert": "-----BEGIN CERTIFICATE-----MIIDRzC...", "key": "-----BEGIN RSA PRIVATE KEY-----MIIEowIBAAKCA..." } --- # Go | Afip SDK ### [hashtag](https://docs.afipsdk.com/integracion/go#requisitos-previos) Requisitos previos Para poder seguir esta guía, primero necesitarás: * [Obtener un access\_token de Afip SDKarrow-up-right](https://app.afipsdk.com/) ### [hashtag](https://docs.afipsdk.com/integracion/go#basicos) Básicos Para usar los Web Services de ARCA, vamos a utilizar la [API de Afip SDK](https://docs.afipsdk.com/integracion/api) . En la [documentación de la API](https://docs.afipsdk.com/integracion/api) podés consultar todos los parámetros del endpoint. * * * ### [hashtag](https://docs.afipsdk.com/integracion/go#id-1.-obtener-el-ticket-de-acceso-ta) 1\. Obtener el Ticket de Acceso (TA) Antes de llamar a los Web Services de ARCA, necesitás un ticket de acceso (TA), también llamado Token Authorization. Este TA expira tras un tiempo, pero no tenés que preocuparte por renovarlo: Afip SDK lo cachea y solicita uno nuevo automáticamente si es necesario. Solo llamá a la API y Afip SDK te devuelve el TA correspondiente. Para obtener el TA se necesita un certificado digital, pero con Afip SDK podés empezar en modo desarrollo usando el CUIT 20-40937847-2 sin necesidad de uno. Si preferís [usar tu propio certificado](https://docs.afipsdk.com/integracion/go#usar-tu-propio-certificado-opcional) , al final te mostramos cómo. AfipSDKRequest.go Copiar import ( "fmt" "strings" "net/http" "io/ioutil" "time" ) url := "https://app.afipsdk.com/api/v1/afip/auth" method := "POST" authData, err := json.Marshal(map[string]string{ "environment": "dev", "tax_id": "20409378472", // CUIT a utilizar "wsid": "wsfe", }) payload := strings.NewReader(string(authData)) client := &http.Client {} req, err := http.NewRequest(method, url, payload) if err != nil { fmt.Println(err) return } // Reemplazar con tu access_token obtenido de https://app.afipsdk.com accessToken := "TU_TOKEN_AQUI" req.Header.Add("Authorization", "Bearer " + accessToken) req.Header.Add("Content-Type", "application/json") res, err := client.Do(req) if err != nil { fmt.Println(err) return } defer res.Body.Close() body, err := ioutil.ReadAll(res.Body) if res.StatusCode >= 400 { fmt.Println(string(body)) return } var auth any json.Unmarshal([]byte(string(body)), &auth) `auth['token']` y `auth['sign']` corresponden el TA que nos da ARCA. Debemos enviar estos datos en el body de cada solicitud a los Web Services. En el manual de cada Web Service verás dónde colocarlos. ### [hashtag](https://docs.afipsdk.com/integracion/go#id-2.-llamar-al-metodo-del-web-service-que-necesites) 2\. Llamar al método del Web Service que necesites Con el TA ya podés realizar las llamadas a los Web Services que necesites. Es similar al código para obtener el TA, pero debés cambiar la URL y el body de la request. Podés encontrar las URLs y los body correspondientes en las pestañas API de la documentación de cada Web Service. [cloudsWeb serviceschevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services) Si el Web Service que necesitás no se encuentra en la lista de la documentación, podés llamarlo siguiendo esta guía: [cloudsOtro web servicechevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/otro-web-service) Podés usar la referencia de la API para obtener ejemplos de cómo usar los métodos de todos los web services de ARCA. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Referencia de APIafipsdk.comchevron-right](https://afipsdk.com/docs/api-reference/introduction/) También podés usar las guías del blog de Afip SDK para Go: [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Go | Blogafipsdk.comchevron-right](https://afipsdk.com/blog/category/Go/) * * * ### [hashtag](https://docs.afipsdk.com/integracion/go#usar-tu-propio-certificado-opcional) Usar tu propio certificado (Opcional) Primero, obtenemos el certificado siguiendo esta guía. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Obtener el certificado para conectar tu sistema con los web services de ARCAafipsdk.comchevron-right](https://afipsdk.com/blog/como-obtener-certificado-para-web-services-arca/) Al pedir la autorización agregamos `cert` y `key` en el body AfipSDKRequest.go [AnteriorFlutterchevron-left](https://docs.afipsdk.com/integracion/flutter) [Siguienten8nchevron-right](https://docs.afipsdk.com/integracion/n8n) Última actualización hace 4 meses * [Requisitos previos](https://docs.afipsdk.com/integracion/go#requisitos-previos) * [Básicos](https://docs.afipsdk.com/integracion/go#basicos) * [1\. Obtener el Ticket de Acceso (TA)](https://docs.afipsdk.com/integracion/go#id-1.-obtener-el-ticket-de-acceso-ta) * [2\. Llamar al método del Web Service que necesites](https://docs.afipsdk.com/integracion/go#id-2.-llamar-al-metodo-del-web-service-que-necesites) * [Usar tu propio certificado (Opcional)](https://docs.afipsdk.com/integracion/go#usar-tu-propio-certificado-opcional) Copiar authData, err := json.Marshal(map[string]string{ "environment": "dev", "tax_id": "20111111112", // CUIT del certificado "wsid": "wsfe", "cert": "-----BEGIN CERTIFICATE-----MIIDRzC...", "key": "-----BEGIN RSA PRIVATE KEY-----MIIEowIBAAKCA..." }) --- # Web services | Afip SDK Antes de comenzar a usar cualquier web service, recordá autorizarlo en ARCA. Cada web service requiere su propia autorización. En la siguiente guía se explica cómo hacerlo: [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Obtener el certificado para conectar tu sistema con los web services de ARCAafipsdk.comchevron-right](https://afipsdk.com/blog/como-obtener-certificado-para-web-services-arca/) [AnteriorPipedreamchevron-left](https://docs.afipsdk.com/integracion/pipedream) [SiguienteFactura electrónicachevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica) Última actualización hace 1 año --- # Ir a producción | Afip SDK ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/ir-a-produccion#id-1.-obtener-certificado-de-produccion) 1\. Obtener certificado de producción Si aún no lo hiciste, en este momento necesitas obtener los certificados de producción. Aquí te dejo una guía sobre cómo obtenerlos. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Obtener el certificado para conectar tu sistema con los web services de ARCAafipsdk.comchevron-right](https://afipsdk.com/blog/como-obtener-certificado-para-web-services-arca/) ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/ir-a-produccion#id-2.-cambiar-los-parametros) 2\. Cambiar los parámetros Node PHP Ruby Python API Debes agregar el `cert`, `key` y configurar `production` en `true`. Debes agregar el `cert`, `key` y configurar `production` en `true`. Debes agregar el `cert`, `key` y configurar `production` en `true`. Debes agregar el `cert`, `key` y configurar `production` en `true`. En los requests cambiar el parámetro `environment: prod` En los request de Autorización agregarle el cert y key de producción Eso es todo. Los requests que realices con esta configuración ya van a impactar en los web services de producción. [AnteriorOtro web servicechevron-left](https://docs.afipsdk.com/siguientes-pasos/web-services/otro-web-service) [SiguienteTutoriales página de ARCAchevron-right](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca) Última actualización hace 3 meses * [1\. Obtener certificado de producción](https://docs.afipsdk.com/siguientes-pasos/ir-a-produccion#id-1.-obtener-certificado-de-produccion) * [2\. Cambiar los parámetros](https://docs.afipsdk.com/siguientes-pasos/ir-a-produccion#id-2.-cambiar-los-parametros) Copiar import Afip from '@afipsdk/afip.js'; import fs from 'fs'; // Certificado (Puede estar guardado en archivos, DB, etc) const cert = fs.readFileSync('./certificado.crt', {encoding: 'utf8'}); // Key (Puede estar guardado en archivos, DB, etc) const key = fs.readFileSync('./key.key', {encoding: 'utf8'}); const afip = new Afip({ CUIT: 20111111112, cert: cert, key: key, access_token: 'access_token obtenido en https://app.afipsdk.com/', production: true }); Copiar // Certificado (Puede estar guardado en archivos, DB, etc) $cert = file_get_contents('./certificado.crt'); // Key (Puede estar guardado en archivos, DB, etc) $key = file_get_contents('./key.key'); $afip = new Afip(array( 'CUIT' => 20111111112, 'cert' => $cert, 'key' => $key, 'access_token' => 'access_token obtenido en https://app.afipsdk.com/', 'production' => TRUE )); Copiar # Certificado (Puede estar guardado en archivos, DB, etc) cert = File.read("./certificado.crt") # Key (Puede estar guardado en archivos, DB, etc) key = File.read("./key.key") afip = Afip.new({ "CUIT": 20111111112, "cert": cert, "key": key, "access_token": "access_token obtenido en https://app.afipsdk.com/", "production": true }) Copiar # Certificado (Puede estar guardado en archivos, DB, etc) cert = open("./certificado.crt").read() # Key (Puede estar guardado en archivos, DB, etc) key = open("./key.key").read() afip = Afip({ "CUIT": 20111111112, "cert": cert, "key": key, "access_token": "access_token obtenido en https://app.afipsdk.com/", "production": True }) Copiar { "environment": "prod" } Copiar { "environment": "prod", "cert": "-----BEGIN CERTIFICATE-----\nMIIDRzC...", "key": "-----BEGIN RSA PRIVATE KEY-----\r\nMIIEowIBAAKCA..." } --- # Preguntas frecuentes | Afip SDK #### [hashtag](https://docs.afipsdk.com/recursos/preguntas-frecuentes#cuales-son-todos-los-pasos-a-seguir-para-emitir-una-factura-electronica) **¿Cuáles son todos los pasos a seguir para emitir una factura electrónica?** Lo primero es obtener el CAE y Vencimiento del CAE de la factura, una vez obtenido queda crear la factura en algún formato de archivo no modificable, como PDF o imagen, y allí poner el CAE, su vencimiento y el código QR correspondiente. Lo ultimo es enviar la factura por algún medio electrónico al cliente. * * * #### [hashtag](https://docs.afipsdk.com/recursos/preguntas-frecuentes#como-se-anula-una-factura) **¿Cómo se anula una Factura?** Con una Nota de Crédito con los mismos datos que la factura. * * * #### [hashtag](https://docs.afipsdk.com/recursos/preguntas-frecuentes#por-que-los-web-services-del-padron-me-muestran-datos-erroneos) **¿Por qué los web services del padrón me muestran datos erróneos?** En testing los web services del padrón muestran datos de prueba, pero no te preocupes en producción te mostrara los datos reales. * * * #### [hashtag](https://docs.afipsdk.com/recursos/preguntas-frecuentes#por-que-al-consultar-datos-del-padron-devuelve-siempre-null) **¿Por qué al consultar datos del padrón devuelve siempre null?** En modo testing suelen funcionar mal los servidores de AFIP y traer siempre null, pero no te preocupes funciona bien en producción. * * * #### [hashtag](https://docs.afipsdk.com/recursos/preguntas-frecuentes#por-que-los-comprobantes-que-genero-en-modo-testing-no-se-validan-en-la-pagina-de-afip) **¿Por qué los comprobantes que género en modo testing no se validan en la página de AFIP?** El modo testing (Homologación) genera comprobantes de prueba para que puedas comprobar que tu código funciona correctamente. Para crear comprobantes validos deberás pasar al modo producción. * * * #### [hashtag](https://docs.afipsdk.com/recursos/preguntas-frecuentes#debo-usar-wsfev1-o-wsmtxca) **¿Debo usar WSFEV1 O WSMTXCA?** Para la mayoria de los casos debes usar el WSFEV1, el WSMTXCA solo debe se usa cuando AFIP te obliga a hacerlo, sino ni siquiera te habilita el uso. * * * **¿Debo instalar los certificados en el servidor?** No es necesario realizar una “instalación”, lo único que hay que hacer es copiar los archivos en el proyecto para que la librería los pueda leer. [AnteriorOtros métodos útileschevron-left](https://docs.afipsdk.com/recursos/otros-metodos-utiles) [SiguienteErrores frecuenteschevron-right](https://docs.afipsdk.com/recursos/errores-frecuentes) Última actualización hace 1 año --- # Tutoriales página de ARCA | Afip SDK Los tutoriales de ARCA pueden ser difíciles de entender por ello se hicieron estos tutoriales mas simples para explicar como tramitar los certificados y permisos. [AnteriorIr a producciónchevron-left](https://docs.afipsdk.com/siguientes-pasos/ir-a-produccion) [SiguienteHabilitar administrador de certificados de testingchevron-right](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/habilitar-administrador-de-certificados-de-testing) Última actualización hace 9 meses --- # Errores frecuentes | Afip SDK * * * #### [hashtag](https://docs.afipsdk.com/recursos/errores-frecuentes#error-11002-el-punto-de-venta-no-se-encuentra-habilitado-a-usar-el-presente-ws.-ver-metodo-feparamge) **Error:** (11002) El punto de venta no se encuentra habilitado a usar el presente WS. Ver metodo FEParamGetPtosVenta La solución a este error es [crear un punto de venta](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/crear-punto-de-venta) que sea accesible desde web services. Si ya creaste el punto de venta y el error persiste espera un poco, la creación puede tardar en impactar en todos los sistemas de AFIP. * * * #### [hashtag](https://docs.afipsdk.com/recursos/errores-frecuentes#fatal-error-uncaught-exception-soap-fault-ns1-coe.alreadyauthenticated-el-cee-ya-posee-un-ta-valido) Fatal error: Uncaught Exception: SOAP Fault: ns1:coe.alreadyAuthenticated El CEE ya posee un TA valido para el acceso al WSN solicitado Si estas intentando [forzar la creación de un nuevo Token Authorization](https://docs.afipsdk.com/recursos/otros-metodos-utiles#forzar-la-solicitud-de-un-nuevo-ta) debes esperar 2 minutos entre cada TA en producción, y 10 minutos en desarrollo. * * * #### [hashtag](https://docs.afipsdk.com/recursos/errores-frecuentes#id-10016-el-numero-o-fecha-del-comprobante-no-se-corresponde-con-el-proximo-a-autorizar) (10016) El número o fecha del comprobante no se corresponde con el próximo a autorizar Asegurarse de que en el campo CbteDesde y CbteHasta estas poniendo el número del siguiente comprobante a autorizar. También aparece este error cuando tratas de enviar un comprobante con una fecha anterior al del último comprobante enviado. Para solucionarlo debes enviarlo con una fecha igual o posterior. * * * #### [hashtag](https://docs.afipsdk.com/recursos/errores-frecuentes#certificado-no-emitido-por-ac-de-confianza) Certificado no emitido por AC de confianza Esto sucede porque estamos tratando de utilizar certificados de testing en modo producción o viceversa. Se soluciona cambiando los certificados por el correspondiente o cambiando el modo de la librería (test o producción). * * * #### [hashtag](https://docs.afipsdk.com/recursos/errores-frecuentes#warning-openssl_pkcs7_sign-error-getting-cert) Warning: openssl\_pkcs7\_sign(): error getting cert Este error suele aparecer por confundir el certificado con el CRS. Abre el certificado en un editor de texto y asegúrate que la primera línea diga “—–BEGIN CERTIFICATE—–” si hay algo diferente es porque ese no es el certificado. Este error también suele producirse por un error en el certificado, si no podes solucionarlo con el método anterior entonces genera uno nuevamente siguiendo los pasos de los [Tutoriales página de AFIP](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca) * * * #### [hashtag](https://docs.afipsdk.com/recursos/errores-frecuentes#id-600-validaciondetoken-error-al-verificar-hash-verificaciondehash-no-valido-la-firma-digital) (600) ValidacionDeToken: Error al verificar hash: VerificacionDeHash: No validó la firma digital. Este error suele aparecer al cambiar entre modo producción y testing. Si estas usando la API asegurate de no estar pidiendo la autorización en desarrollo y ejecutando la request en producción, sino una posible solución es [forzar la solicitud de un nuevo TA.](https://docs.afipsdk.com/recursos/otros-metodos-utiles#forzar-la-solicitud-de-un-nuevo-ta) * * * #### [hashtag](https://docs.afipsdk.com/recursos/errores-frecuentes#id-600-validaciondetoken-no-aparecio-cuit-en-lista-de-relaciones) (600) ValidacionDeToken: No aparecio CUIT en lista de relaciones Este error aparece cuando intentas usar la librería con un CUIT no vinculado al certificado. Si estas intentando usar un CUIT de un cliente que te [delego el web service](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/delegar-web-service) aun debes [Aceptar delegación de web service](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/aceptar-delegacion-de-web-service) y luego debes seguir el tutorial [Autorizar web service de producción](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/autorizar-web-service-de-produccion) teniendo en cuenta que en la parte de elegir el «Representado» debes elegir el CUIT de tu cliente. Si todo esto no lo soluciona quizá necesites [Forzar la solicitud de un nuevo TAarrow-up-right](https://docs.afipsdk.com/paso-a-paso/otros-metodos-utiles#forzar-la-solicitud-de-un-nuevo-ta) * * * #### [hashtag](https://docs.afipsdk.com/recursos/errores-frecuentes#error-500) Error 500 Esto aparece porque ocurre algún error en el código pero no está mostrando cual es el error real. Deberías agregar error\_reporting(E\_ALL); ini\_set(“display\_errors”, “1”); en tu código para saber cuál es exactamente el error. * * * #### [hashtag](https://docs.afipsdk.com/recursos/errores-frecuentes#id-501-error-interno-de-base-de-datos) (501) Error interno de base de datos Este es un error interno de Afip. La única solución es esperar hasta que lo arreglen. * * * #### [hashtag](https://docs.afipsdk.com/recursos/errores-frecuentes#soap-fault-ns1-coe.notauthorized-computador-no-autorizado-a-acceder-al-servicio) SOAP Fault: ns1:coe.notAuthorized Computador no autorizado a acceder al servicio El problema es que falta autorizar a que se pueda acceder al web service con el certificado en uso. En el tutorial [Autorizar a un web service de testing](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/autorizar-web-service-de-testing) explicamos cómo autorizar en modo testing y en el tutorial [Autorizar a un web service de producción](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/autorizar-web-service-de-produccion) como hacerlo en modo producción. [AnteriorPreguntas frecuenteschevron-left](https://docs.afipsdk.com/recursos/preguntas-frecuentes) Última actualización hace 1 año --- # Habilitar administrador de certificados de testing | Afip SDK Para agregar la aplicación **«WSASS - Autogestión Certificados Homologación»** a nuestro escritorio de ARCA primero debemos ingresar en **«Administrador de Relaciones de Clave Fiscal»** ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-432d1d6fdd2b07cdebc82c3842840e9cb8521a48%252FScreenshot%25202025-02-17%2520at%252009-32-46%2520Portal%2520de%2520Clave%2520Fiscal.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=8a4ddc1&sv=2) En caso de tener permiso para administrar las relaciones de otros contribuyentes deberemos elegir el que queremos administrar, caso contrario se elegirá el nuestro automáticamente. Siempre en modo testing recomendamos usar el usuario de uno mismo. ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-b464b9a413e8790d1e9b08c2f26453afd44888f4%252FScreenshot%25202025-02-17%2520at%252009-33-04%2520AFIP%2520-%2520ADMINISTRACION%2520FEDERAL%2520DE%2520INGRESOS%2520PUBLICOS.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=d60c09c0&sv=2) Luego elegimos «Adherir servicio» ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-0743c5b1d406659af3d34dce4ce7abe4ae6aa227%252FScreenshot%25202025-02-17%2520at%252009-33-18%2520AFIP%2520-%2520ADMINISTRACION%2520FEDERAL%2520DE%2520INGRESOS%2520PUBLICOS.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=b71bf447&sv=2) Allí dentro elegimos «ARCA > Servicios interactivos > WSASS - Autogestión Certificados Homologación» ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-b18ba252a9d6e089bc5f18778e6d7ae61b2e3a02%252FScreenshot%25202025-02-17%2520at%252009-33-51%2520AFIP%2520-%2520ADMINISTRACION%2520FEDERAL%2520DE%2520INGRESOS%2520PUBLICOS.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=a7132d34&sv=2) Le damos a confirmar y ya tendremos acceso a la aplicación desde nuestro escritorio de ARCA ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-e6e11146e9c74a2bae82d2eaa73f846e06de6ec8%252FScreenshot%25202025-02-17%2520at%252009-34-20%2520AFIP%2520-%2520ADMINISTRACION%2520FEDERAL%2520DE%2520INGRESOS%2520PUBLICOS.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=d564c552&sv=2) [AnteriorTutoriales página de ARCAchevron-left](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca) [SiguienteObtener certificado de testingchevron-right](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/obtener-certificado-de-testing) Última actualización hace 9 meses --- # Habilitar administrador de certificados de producción | Afip SDK Para agregar la aplicación **«Administración de Certificados Digitales»** a nuestro escritorio de ARCA primero debemos ingresar en **«Administrador de Relaciones de Clave Fiscal»** ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-2bd07f942f1713ebc7702273bf4c092b05b8897a%252FScreenshot%25202025-02-17%2520at%252010-09-26%2520Portal%2520de%2520Clave%2520Fiscal.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=734f46a1&sv=2) En caso de tener permiso para administrar las relaciones de otros contribuyentes deberemos elegir el que queremos administrar, caso contrario se elegirá el nuestro automáticamente. Siempre en modo testing recomendamos usar el usuario de uno mismo. ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-bc5f4cb982f0bb871afe1c9bf89f7f375faaf558%252FScreenshot%25202025-02-17%2520at%252010-10-46%2520AFIP%2520-%2520ADMINISTRACION%2520FEDERAL%2520DE%2520INGRESOS%2520PUBLICOS.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=998165d3&sv=2) Luego elegimos «Adherir servicio» ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-0743c5b1d406659af3d34dce4ce7abe4ae6aa227%252FScreenshot%25202025-02-17%2520at%252009-33-18%2520AFIP%2520-%2520ADMINISTRACION%2520FEDERAL%2520DE%2520INGRESOS%2520PUBLICOS.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=b71bf447&sv=2) Allí dentro elegimos «ARCA > Servicios interactivos > Administración de Certificados Digitales» ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-a9059927911b43bcf16a3e158e2110f8988a709e%252FScreenshot%25202025-02-17%2520at%252010-12-43%2520AFIP%2520-%2520ADMINISTRACION%2520FEDERAL%2520DE%2520INGRESOS%2520PUBLICOS.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=394e93f7&sv=2) Le damos a confirmar y ya tendremos acceso a la aplicación desde nuestro escritorio de ARCA ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-21a30b57fce0c9f28742e7f13b30c4b49ae83b0e%252FScreenshot%25202025-02-17%2520at%252010-13-33%2520AFIP%2520-%2520ADMINISTRACION%2520FEDERAL%2520DE%2520INGRESOS%2520PUBLICOS.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=4822105b&sv=2) [AnteriorAutorizar web service de testingchevron-left](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/autorizar-web-service-de-testing) [SiguienteObtener certificado de producciónchevron-right](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/obtener-certificado-de-produccion) Última actualización hace 9 meses --- # Crear punto de venta | Afip SDK En caso de emitir facturas electrónicas debes disponer de un punto de venta compatible. Podes darlo de alta darlo de alta a través del servicio «Administración de puntos de venta y domicilios». ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-367a722ab6d0cbb842f013eba080f86a7dd1de52%252FScreenshot%25202025-02-17%2520at%252010-34-47%2520Portal%2520de%2520Clave%2520Fiscal.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=7bbb82cf&sv=2) Ingresar en la opción "A/B/M de puntos de venta". Hacé click en agregar nuevo punto de venta y elegir la opción correspondiente para tu caso: ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-ce0a1c2bd5664bc3785159947c6989330d30fb05%252Fimagen.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=97b8265&sv=2) Para monotributista "Factura Electronica - Monotributo - Web Service". ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-1079c63a8f87c857e6fa9fce45572338c1b5d14f%252Falta-punto-de-venta-responsable-inscripto.jpg%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=a326e8e7&sv=2) Para responsable inscripto "RECE para aplicativo y Web Service". Le das a «Aceptar» y listo, ya podes utilizar el web service de facturación electronica con dicho punto de venta [AnteriorAutorizar web service de producciónchevron-left](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/autorizar-web-service-de-produccion) [SiguienteDelegar web servicechevron-right](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/delegar-web-service) Última actualización hace 1 año --- # Autorizar web service de testing | Afip SDK circle-info Si querés evitar este trabajo manual, podés hacerlo automáticamente a través de tu sistema con la [automatización para Autorizar web service de desarrolloarrow-up-right](https://afipsdk.com/docs/automations/auth-web-service-dev/nodejs/) . Para que los certificados puedan acceder a un web service se debe crear una autorización, esto se hace de la siguiente manera: Dentro de **«WSASS - Autogestión Certificados Homologación»**, que anteriormente en [Obtener certificado de testing](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/obtener-certificado-de-testing#paso-4-generar-el-certificado-cert) explicamos cómo ingresar, debemos ir a «Crear autorización a servicio» ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-20d88653d8491a35c4c4c644b3bcd455d7fe1694%252Fimagen.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=aeff4bbd&sv=2) Allí dentro en `1. Nombre simbólico del DN a autorizar` debemos seleccionar el certificado que queremos autorizar. En `3. CUIT representado` debemos ingresar el CUIT con el cual queremos utilizar el web service. En modo testing recomendamos usar el CUIT propio para no crear confusión. Y en `5. Servicio al que desea acceder` debemos elegir el web service a utilizar.\` Con todo esto listo debemos presionar en «Crear autorización de acceso» Por ejemplo para autorizar al Web service de factura electrónica me quedaría así ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-a36644fc8def0b0ba78c026eca1908fbf05657d5%252Fimagen.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=9f152c47&sv=2) Luego ingresamos en «Autorizaciones» para verificar que se creó la autorización correctamente ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-b9ed04974637a6d6c4f58acc53909182aff784bf%252Fimagen.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=edd87d5c&sv=2) Eso sería todo, ya estamos listos para usar el certificado con el web service autorizado [AnteriorObtener certificado de testingchevron-left](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/obtener-certificado-de-testing) [SiguienteHabilitar administrador de certificados de producciónchevron-right](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/habilitar-administrador-de-certificados-de-produccion) Última actualización hace 6 meses --- # Aceptar delegación de web service | Afip SDK circle-info Si querés evitar este trabajo manual, podés hacerlo automáticamente a través de tu sistema con la [automatización para Aceptar delegación de web servicearrow-up-right](https://afipsdk.com/docs/automations/accept-web-service-delegation/nodejs/) . Primero te deben delegar el acceso a un web service siguiendo el siguiente tutorial [user-plusDelegar web servicechevron-right](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/delegar-web-service) circle-info Podes enviarle a tu cliente directamente el enlace al tutorial, de manera que sea sencillo de entender En la página de ARCA entrar en la app «Aceptación de Designación» ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-d5e2465b9552283f99ec6232ed56dca54cc0c8ff%252FScreenshot%25202025-02-17%2520at%252010-48-03%2520Portal%2520de%2520Clave%2520Fiscal.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=7cc7681d&sv=2) En caso de que el usuario haya autorizado correctamente en esa lista aparece autorización a confirmar. Click en «Aceptar» ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-970cc733680f2bf4669dbc62d4f4caa847a3352b%252FScreenshot%25202025-02-17%2520at%252010-49-25%2520AFIP%2520-%2520ADMINISTRACION%2520FEDERAL%2520DE%2520INGRESOS%2520PUBLICOS.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=368e90b&sv=2) Una vez que echo esto lo que queda es [Obtener certificado de producción](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/obtener-certificado-de-produccion) , si aun no lo hiciste, y por ultimo seguir el tutorial [Autorizar a un web service de producción](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/autorizar-web-service-de-produccion) pero cambiando que en la parte de elegir el «Representado» debes elegir el CUIT que te dio la autorización. [AnteriorDelegar web servicechevron-left](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/delegar-web-service) [SiguienteOtros métodos útileschevron-right](https://docs.afipsdk.com/recursos/otros-metodos-utiles) Última actualización hace 6 meses --- # Autorizar web service de producción | Afip SDK circle-info Si querés evitar este trabajo manual, podés hacerlo automáticamente a través de tu sistema con la [automatización para Autorizar web service de producciónarrow-up-right](https://afipsdk.com/docs/automations/auth-web-service-prod/nodejs/) . Para Autorizar a que se pueda acceder a un web service de producción con un certificado previamente creado debemos ingresar a «Administrador de Relaciones de Clave Fiscal» dentro de nuestro escritorio de ARCA ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-2bd07f942f1713ebc7702273bf4c092b05b8897a%252FScreenshot%25202025-02-17%2520at%252010-09-26%2520Portal%2520de%2520Clave%2520Fiscal.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=734f46a1&sv=2) En caso de poder administrar las cuentas de varios contribuyentes desde nuestro escritorio deberemos elegir el que queremos administrar. ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-bc5f4cb982f0bb871afe1c9bf89f7f375faaf558%252FScreenshot%25202025-02-17%2520at%252010-10-46%2520AFIP%2520-%2520ADMINISTRACION%2520FEDERAL%2520DE%2520INGRESOS%2520PUBLICOS.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=998165d3&sv=2) Ahora debemos ir a «Nueva Relación» ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-6e0c741797ccceb215cb285896fed65f07f52ce4%252FScreenshot%25202025-02-17%2520at%252010-25-14%2520AFIP%2520-%2520ADMINISTRACION%2520FEDERAL%2520DE%2520INGRESOS%2520PUBLICOS.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=312779c8&sv=2) Si estas vinculando un web service delegado por alguien mas en la parte de «Representado» debes elegir el CUIT de quien te realizo la delegación; sino te aparecerá seleccionado tu propio CUIT. Luego presionamos «Buscar» ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-4c4df6fdb060323e43b0d6fbb39ade1d20f61439%252FScreenshot%25202025-02-17%2520at%252010-26-01%2520AFIP%2520-%2520ADMINISTRACION%2520FEDERAL%2520DE%2520INGRESOS%2520PUBLICOS.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=944e7802&sv=2) Abrimos «ARCA > Web Services» y elegimos el web service que queremos autorizar ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-65f02dd482c650d10c3c82fffd70c6c64f2b821b%252FScreenshot%25202025-02-17%2520at%252010-26-24%2520AFIP%2520-%2520ADMINISTRACION%2520FEDERAL%2520DE%2520INGRESOS%2520PUBLICOS.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=ce101aa1&sv=2) Luego presionamos en el segundo botón de «Buscar» ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-92e1b9b28dbdca71c6807c6ab373407af2ea7636%252FScreenshot%25202025-02-17%2520at%252010-26-59%2520AFIP%2520-%2520ADMINISTRACION%2520FEDERAL%2520DE%2520INGRESOS%2520PUBLICOS.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=3b4a30fd&sv=2) Elegimos el certificado que queremos autorizar y le damos a «Confirmar» ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-409222dd2598717794415982cc0e34deee3c1f7d%252FScreenshot%25202025-02-17%2520at%252010-27-38%2520AFIP%2520-%2520ADMINISTRACION%2520FEDERAL%2520DE%2520INGRESOS%2520PUBLICOS.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=9f16cac6&sv=2) Nuevamente le damos a «Confirmar» ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-c2f9a84fbd0d4a357dd2cd0c2101522222be7129%252FScreenshot%25202025-02-17%2520at%252010-28-31%2520AFIP%2520-%2520ADMINISTRACION%2520FEDERAL%2520DE%2520INGRESOS%2520PUBLICOS.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=b843cd04&sv=2) Y listo ya podemos utilizar el web service que autorizamos con el certificado elegido. [AnteriorObtener certificado de producciónchevron-left](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/obtener-certificado-de-produccion) [SiguienteCrear punto de ventachevron-right](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/crear-punto-de-venta) Última actualización hace 6 meses --- # Otros métodos útiles | Afip SDK [hashtag](https://docs.afipsdk.com/recursos/otros-metodos-utiles#obtener-xml-de-la-ultima-solicitud-realizada) Obtener XML de la ultima solicitud realizada ---------------------------------------------------------------------------------------------------------------------------------------------------------------- Hay momentos en los cuales obtenemos un error y no sabemos como resolverlo, lo que podemos hacer es enviar un correo a **[\[email protected\]](https://docs.afipsdk.com/cdn-cgi/l/email-protection) ** explicando el problema y adjuntarles el XML de solicitud y respuesta que te dio el web service para que te den una respuesta. Con ese método obtenés dicho XML. Recordá utilizar a este método luego de llamar al web service y no antes porque lo que te devuelve es el XML ultima solicitud. Node PHP Ruby Python API Copiar const res = await afip.getLastRequestXML(); console.log(res); Copiar $res = $afip->GetLastRequestXML(); var_dump($res); Copiar res = afip.getLastRequestXML puts res Copiar res = afip.getLastRequestXML() print(res) **Endpoint** `GET` `https://app.afipsdk.com/api/v1/afip/requests/last-xml` **Response** `STATUS` `200` Copiar { "request": "ElectronicBilling->getTokenAuthorization(TRUE); var_dump($ta); En cualquier web service podes llamar al método `getTokenAuthorization(true)` . El parámetro `true` fuerza la renovación. Por ej: Copiar ta = afip.ElectronicBilling.getTokenAuthorization(true) puts ta En cualquier web service podes llamar al método `getTokenAuthorization(True)` . El parámetro `true` fuerza la renovación. Por ej: Copiar ta = afip.ElectronicBilling.getTokenAuthorization(True) print(ta) Al pedir la autorización debemos poner el parámetro `force_create: true` **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/auth` **Ejemplo** Copiar { "environment": "dev", "tax_id": "20409378472", "wsid": "wsfe", "force_create": true } [AnteriorAceptar delegación de web servicechevron-left](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/aceptar-delegacion-de-web-service) [SiguientePreguntas frecuenteschevron-right](https://docs.afipsdk.com/recursos/preguntas-frecuentes) Última actualización hace 6 meses * [Obtener XML de la ultima solicitud realizada](https://docs.afipsdk.com/recursos/otros-metodos-utiles#obtener-xml-de-la-ultima-solicitud-realizada) * [Forzar la solicitud de un nuevo TA](https://docs.afipsdk.com/recursos/otros-metodos-utiles#forzar-la-solicitud-de-un-nuevo-ta) --- # Delegar web service | Afip SDK circle-info Si querés evitar este trabajo manual, podés hacerlo automáticamente a través de tu sistema con la [automatización para Delegar un web servicearrow-up-right](https://afipsdk.com/docs/automations/delegate-web-service/nodejs/) . Para permitir que alguien mas use un servicio de ARCA a nuestro nombre debemos delegarle dicho servicio. Ingresar a «Administrador de Relaciones de Clave Fiscal» dentro de nuestro escritorio de ARCA ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-2bd07f942f1713ebc7702273bf4c092b05b8897a%252FScreenshot%25202025-02-17%2520at%252010-09-26%2520Portal%2520de%2520Clave%2520Fiscal.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=734f46a1&sv=2) En caso de poder administrar las cuentas de varios contribuyentes desde nuestro escritorio deberemos elegir el que queremos administrar. ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-bc5f4cb982f0bb871afe1c9bf89f7f375faaf558%252FScreenshot%25202025-02-17%2520at%252010-10-46%2520AFIP%2520-%2520ADMINISTRACION%2520FEDERAL%2520DE%2520INGRESOS%2520PUBLICOS.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=998165d3&sv=2) Ahora debemos ir a «Nueva Relación» ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-6e0c741797ccceb215cb285896fed65f07f52ce4%252FScreenshot%25202025-02-17%2520at%252010-25-14%2520AFIP%2520-%2520ADMINISTRACION%2520FEDERAL%2520DE%2520INGRESOS%2520PUBLICOS.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=312779c8&sv=2) Allí dentro presionamos «Buscar» ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-4c4df6fdb060323e43b0d6fbb39ade1d20f61439%252FScreenshot%25202025-02-17%2520at%252010-26-01%2520AFIP%2520-%2520ADMINISTRACION%2520FEDERAL%2520DE%2520INGRESOS%2520PUBLICOS.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=944e7802&sv=2) Abrimos «ARCA > Web Services» y elegimos el web service que queremos autorizar ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-65f02dd482c650d10c3c82fffd70c6c64f2b821b%252FScreenshot%25202025-02-17%2520at%252010-26-24%2520AFIP%2520-%2520ADMINISTRACION%2520FEDERAL%2520DE%2520INGRESOS%2520PUBLICOS.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=ce101aa1&sv=2) Luego presionamos en el segundo botón de «Buscar» ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-92e1b9b28dbdca71c6807c6ab373407af2ea7636%252FScreenshot%25202025-02-17%2520at%252010-26-59%2520AFIP%2520-%2520ADMINISTRACION%2520FEDERAL%2520DE%2520INGRESOS%2520PUBLICOS.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=3b4a30fd&sv=2) Ingresar el CUIT de a quien le va a delegar el servicio y click en «Buscar» ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-7e4a2ec6a36a938cc61418074cddf16741d0ecf4%252FScreenshot%25202025-02-17%2520at%252010-43-37%2520AFIP%2520-%2520ADMINISTRACION%2520FEDERAL%2520DE%2520INGRESOS%2520PUBLICOS.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=22a1c232&sv=2) Le damos a «Confirmar» ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-35fb1170643dd92a67dcda966bb2cfd3d18d35ce%252FScreenshot%25202025-02-17%2520at%252010-40-39%2520AFIP%2520-%2520ADMINISTRACION%2520FEDERAL%2520DE%2520INGRESOS%2520PUBLICOS.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=9b35d69f&sv=2) Nuevamente la damos a «Confirmar» ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-06f2dc79961a224fdd35d83fa71bf3253fdd8503%252FScreenshot%25202025-02-17%2520at%252010-46-09%2520AFIP%2520-%2520ADMINISTRACION%2520FEDERAL%2520DE%2520INGRESOS%2520PUBLICOS.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=23021b54&sv=2) Y listo ya solo falta que el autorizado lo acepte. [AnteriorCrear punto de ventachevron-left](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/crear-punto-de-venta) [SiguienteAceptar delegación de web servicechevron-right](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/aceptar-delegacion-de-web-service) Última actualización hace 6 meses --- # Obtener certificado de testing | Afip SDK circle-info Si querés evitar este trabajo manual, podés hacerlo automáticamente a través de tu sistema con la [automatización para Crear certificado de desarrolloarrow-up-right](https://afipsdk.com/docs/automations/create-cert-dev/nodejs/) . [hashtag](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/obtener-certificado-de-testing#paso-1-instalar-openssl) Paso 1 - Instalar OpenSSL ------------------------------------------------------------------------------------------------------------------------------------------------------------ Para la generación del certificado vamos a usar OpenSLL, el cual ya viene en los sistemas Linux/Unix. Para Windows se puede descargar desde [https://sourceforge.net/projects/openssl/arrow-up-right](https://sourceforge.net/projects/openssl/) , una vez descargado copiar la carpeta `bin` en `C:\` con el nombre `OpenSSL`. Ahora debemos abrir una consola. En Windows se debe abrir en modo administrador y navegar hacia `C:\OpenSSL` [hashtag](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/obtener-certificado-de-testing#paso-2-generar-la-clave-de-cifrado-key) Paso 2 - Generar la clave de cifrado (key) -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Dentro de la consola lo primero que debemos ejecutar es el siguiente comando para generar el archivo key. Copiar openssl genrsa -traditional -out [nombre de archivo] 2048 Reemplazando: > * `[nombre de archivo]` con el nombre que querés que se guarde el archivo key. > Este archivo key es muy importante porque representa la «contraseña» con la que va a funcionar el certificado así que no debemos perderlo. Por ejemplo yo voy a generarlo de la siguiente forma Copiar openssl genrsa -traditional -out keytest 2048 circle-exclamation Las versiones mas antiguas de OpenSSL no soportan el parámetro -traditional, si no te funciona borralo De esta forma el nombre de mi archivo key seria `keytest` [hashtag](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/obtener-certificado-de-testing#paso-3-generar-el-certificate-signing-request-csr) Paso 3 - Generar el Certificate Signing Request (csr) ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Una vez generada la key estamos listos para generar el CSR. Para ello debemos ejecutar el siguiente comando: Reemplazando: > * `[nombre de archivo key]` con el nombre del archivo key generado en el paso anterior. > > * `[nombre de la empresa]` con el nombre de la empresa para quien es el certificado. En testing recomendamos utilizar el nombre de uno para no generar confusiones. > > * `[nombre del certificado]` con el nombre que quieres que tenga el certificado. Solo se pueden utilizar letras y números. Esto es a modo de que puedas reconocerlo luego en la pagina de AFIP si generas varios certificados para diferentes sistemas. > > * `[CUIT]` con el CUIT de la empresa para quien es el certificado. De nuevo, en testing recomendamos usar el CUIT de uno para no generar confusiones. > > * `[nombre de archivo para el CSR]` con el nombre que quieres que se guarde el archivo CSR > Por ejemplo yo lo generaría de la siguiente forma Donde en `11111111111` pondría mi CUIT Teniendo el archivos CSR ya podemos dirigirnos a la página de ARCA para generar el certificado. circle-exclamation ATENCIÓN: El archivo CSR no es lo mismo que el certificado, suele ser un error común confundirlos al momento de usar el certificado [hashtag](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/obtener-certificado-de-testing#paso-4-generar-el-certificado-cert) Paso 4 - Generar el certificado (cert) ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Dentro de nuestro escritorio de ARCA debemos ingresar en **«WSASS - Autogestión Certificados Homologación»** ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-1b008cf70c684291c4f1702e29a2c6f9eaef7f88%252FScreenshot%25202025-02-17%2520at%252010-07-17%2520Portal%2520de%2520Clave%2520Fiscal.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=d44de213&sv=2) En caso de no tener esta aplicación en tu escritorio debes ver el tutorial [Habilitar administrador de certificados de testing](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/habilitar-administrador-de-certificados-de-testing) Dentro de esta aplicación debemos ir a «Nuevo Certificado» ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-0f795d0369597688acae3238c3561ea5375fa5bc%252Fimagen.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=b80851f2&sv=2) Allí en `1. Nombre simbólico del DN` debemos colocar el nombre que le pusimos al certificado dentro del CSR. En `2. Solicitud del certificado en formato PKCS#10` debemos pegar el contenido de nuestro CSR. circle-info El CSR lo podes abrir con cualquier editor de texto para ver su contenido en texto plano. Y luego apretar `Crear DN y obtener certificado`. En mi caso quedaría así ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-09a4fb8743e8095b7ea6c0c9503d4893bcb3ac19%252Fimagen.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=5095c0f0&sv=2) Y debajo se nos generara el certificado, este debemos guardarlo en nuestra computadora junto con la key para usarlo luego en la librería. circle-info El CSR ya no lo necesitaremos, podemos eliminarlo. Ahora lo que nos falta por hacer es autorizar a que con este certificado se pueda acceder al/los web service/s que queramos usar. [AnteriorHabilitar administrador de certificados de testingchevron-left](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/habilitar-administrador-de-certificados-de-testing) [SiguienteAutorizar web service de testingchevron-right](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/autorizar-web-service-de-testing) Última actualización hace 6 meses * [Paso 1 - Instalar OpenSSL](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/obtener-certificado-de-testing#paso-1-instalar-openssl) * [Paso 2 - Generar la clave de cifrado (key)](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/obtener-certificado-de-testing#paso-2-generar-la-clave-de-cifrado-key) * [Paso 3 - Generar el Certificate Signing Request (csr)](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/obtener-certificado-de-testing#paso-3-generar-el-certificate-signing-request-csr) * [Paso 4 - Generar el certificado (cert)](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/obtener-certificado-de-testing#paso-4-generar-el-certificado-cert) Copiar openssl req -new -key [nombre de archivo key] -subj "/C=AR/O=[nombre de la empresa]/CN=[nombre del certificado]/serialNumber=CUIT [CUIT]" -out [nombre de archivo para el CSR] Copiar openssl req -new -key keytest -subj "/C=AR/O=IvanM/CN=Test1/serialNumber=CUIT 11111111111" -out csr-test1 --- # Obtener certificado de producción | Afip SDK circle-info Si querés evitar este trabajo manual, podés hacerlo automáticamente a través de tu sistema con la [automatización para Crear certificado de producciónarrow-up-right](https://afipsdk.com/docs/automations/create-cert-prod/nodejs/) . [hashtag](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/obtener-certificado-de-produccion#paso-1-instalar-openssl) Paso 1 - Instalar OpenSSL --------------------------------------------------------------------------------------------------------------------------------------------------------------- Para la generación del certificado vamos a usar OpenSLL, el cual ya viene en los sistemas Linux/Unix. Para Windows se puede descargar desde [https://sourceforge.net/projects/openssl/arrow-up-right](https://sourceforge.net/projects/openssl/) , una vez descargado copiar la carpeta `bin` en `C:\` con el nombre `OpenSSL`. Ahora debemos abrir una consola. En Windows se debe abrir en modo administrador y navegar hacia `C:\OpenSSL` [hashtag](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/obtener-certificado-de-produccion#paso-2-generar-la-clave-de-cifrado-key) Paso 2 - Generar la clave de cifrado (key) ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Dentro de la consola lo primero que debemos ejecutar es el siguiente comando para generar el archivo key. Copiar openssl genrsa -traditional -out [nombre de archivo] 2048 Reemplazando: > * `[nombre de archivo]` con el nombre que querés que se guarde el archivo key. > Este archivo key es muy importante porque representa la «contraseña» con la que va a funcionar el certificado así que no debemos perderlo. Por ejemplo yo voy a generarlo de la siguiente forma Copiar openssl genrsa -traditional -out keytest 2048 De esta forma el nombre de mi archivo key seria `keytest` circle-info Las versiones mas antiguas de OpenSSL no soportan el parámetro -traditional, si no te funciona borralo [hashtag](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/obtener-certificado-de-produccion#paso-3-generar-el-certificate-signing-request-csr) Paso 3 - Generar el Certificate Signing Request (csr) --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Una vez generada la key estamos listos para generar el CSR. Para ello debemos ejecutar el siguiente comando Reemplazando: > * `nombre de archivo para la key` con el nombre del archivo key generado anteriormente. > > * `nombre de la empresa` con el nombre de la empresa para quien es el certificado. > > * `nombre del certificado` con el nombre que quieres que tenga el certificado. Solo se pueden utilizar letras y números. Esto es a modo de que puedas reconocerlo luego si generas varios certificados para diferentes sistemas > > * `CUIT` con el CUIT de la empresa para quien es el certificado. > > * `nombre de archivo para el CSR` con el nombre que quieres que se guarde el archivo CSR > Por ejemplo yo lo generaría de la siguiente forma Donde en «Nombre Empresa» pondría el nombre de la empresa y en «11111111111» podía el CUIT de la empresa Teniendo el archivos CSR ya podemos dirigirnos a la página de AFIP para generar el certificado. circle-exclamation ATENCIÓN: El archivo CSR no es lo mismo que el certificado, suele ser un error común confundirlos al momento de usar el certificado [hashtag](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/obtener-certificado-de-produccion#paso-4-generar-el-certificado-cert) Paso 4 - Generar el certificado (cert) --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Dentro de nuestro escritorio de AFIP debemos ingresar en **«Administración de Certificados Digitales»** ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-fe68f05e1e96c30d00f5f83ee7fd73fe60fad51c%252FScreenshot%25202025-02-17%2520at%252010-16-06%2520Portal%2520de%2520Clave%2520Fiscal.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=a0dd7d71&sv=2) En caso de no tener esta aplicación en tu escritorio debes ver el tutorial [Habilitar administrador de certificados de producción](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/habilitar-administrador-de-certificados-de-produccion) En caso de tener permiso para administrar las relaciones de otros contribuyentes nos hará elegir el de quien queremos administrar. ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-bc5f4cb982f0bb871afe1c9bf89f7f375faaf558%252FScreenshot%25202025-02-17%2520at%252010-10-46%2520AFIP%2520-%2520ADMINISTRACION%2520FEDERAL%2520DE%2520INGRESOS%2520PUBLICOS.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=998165d3&sv=2) Dentro de esta aplicación debemos ir a «Agregar alias» ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-19d327c3a652177c69d85ee857fc957cc3aaa2e5%252FScreenshot%25202025-02-17%2520at%252010-17-15%2520AFIP%2520-%2520ADMINISTRACION%2520FEDERAL%2520DE%2520INGRESOS%2520PUBLICOS.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=8b9d13c8&sv=2) Allí en «Alias» debemos colocar el nombre que le pusimos el certificado dentro del CSR. Luego presionamos examinar y elegimos el CSR que generamos anteriormente. Por ultimo presionamos «Agregar Alias» y ya tenemos nuestro certificado ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-82a02cc067e94899d83a8058405930cca763a211%252FScreenshot%25202025-02-17%2520at%252010-18-06%2520AFIP%2520-%2520ADMINISTRACION%2520FEDERAL%2520DE%2520INGRESOS%2520PUBLICOS.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=996195f1&sv=2) Ahora en la lista de Alias presionamos «ver» ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-19b1366618c1265a69bfd3255572849763362ccd%252FScreenshot%25202025-02-17%2520at%252010-17-15%2520AFIP%2520-%2520ADMINISTRACION%2520FEDERAL%2520DE%2520INGRESOS%2520PUBLICOS.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=7c8f45f3&sv=2) Y allí presionamos el boto debajo de «descargar» ![](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-c051c02555b2aa6146dfc2014e112292fdf130d2%252FScreenshot%25202025-02-17%2520at%252010-19-03%2520AFIP%2520-%2520ADMINISTRACION%2520FEDERAL%2520DE%2520INGRESOS%2520PUBLICOS.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=79d2a56f&sv=2) Y eso es todo ya tenemos nuestro certificado y la key para usarlos luego en la librería. circle-info El CSR ya no lo necesitaremos, podemos eliminarlo. Ahora lo que nos queda es autorizar a que con este certificado se pueda acceder al/los web service/s que queramos usar. [AnteriorHabilitar administrador de certificados de producciónchevron-left](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/habilitar-administrador-de-certificados-de-produccion) [SiguienteAutorizar web service de producciónchevron-right](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/autorizar-web-service-de-produccion) Última actualización hace 6 meses * [Paso 1 - Instalar OpenSSL](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/obtener-certificado-de-produccion#paso-1-instalar-openssl) * [Paso 2 - Generar la clave de cifrado (key)](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/obtener-certificado-de-produccion#paso-2-generar-la-clave-de-cifrado-key) * [Paso 3 - Generar el Certificate Signing Request (csr)](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/obtener-certificado-de-produccion#paso-3-generar-el-certificate-signing-request-csr) * [Paso 4 - Generar el certificado (cert)](https://docs.afipsdk.com/recursos/tutoriales-pagina-de-arca/obtener-certificado-de-produccion#paso-4-generar-el-certificado-cert) Copiar openssl req -new -key [nombre de archivo para la key] -subj "/C=AR/O=[nombre de la empresa]/CN=[nombre del certificado]/serialNumber=CUIT [CUIT]" -out [nombre de archivo para el CSR] Copiar openssl req -new -key keyproduccion -subj "/C=AR/O=Nombre Empresa/CN=Test1/serialNumber=CUIT 11111111111" -out csr-produccion --- # Crear PDF | Afip SDK circle-info Esta documentación se movió a: [https://afipsdk.com/docs/pdfs/introduction/arrow-up-right](https://afipsdk.com/docs/pdfs/introduction/) 👉 [Ir a la nueva documentación de PDFsarrow-up-right](https://afipsdk.com/docs/pdfs/introduction/) [AnteriorFactura electrónicachevron-left](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica) [SiguienteCódigo QRchevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/codigo-qr) Última actualización hace 7 días --- # Padrón alcance 10 | Afip SDK ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/padron-alcance-10#requisitos-previos) Requisitos previos Para poder usar esta guía, primero necesitarás: * [Integrar Afip SDK en tu proyecto](https://docs.afipsdk.com/#integracion) * * * La especificación de este Web Service se encuentra disponible en [https://www.afip.gob.ar/ws/ws\_sr\_padron\_a10/manual\_ws\_sr\_padron\_a10\_v1.1.pdfarrow-up-right](https://www.afip.gob.ar/ws/ws_sr_padron_a10/manual_ws_sr_padron_a10_v1.1.pdf) chevron-rightIdentificador ws\_sr\_padron\_a10[hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/padron-alcance-10#identificador-ws_sr_padron_a10) Producción ![Produccion](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-08bbe114e5ab19c9a903bc5ca2aa1f9108c521c4%252F3.png%3Falt%3Dmedia&width=242&dpr=3&quality=100&sign=e36424cb&sv=2) Desarrollo ![Desarrollo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-c408db256ec9c00fe14b3105ebdec7b4e2200b96%252F3.png%3Falt%3Dmedia&width=300&dpr=3&quality=100&sign=36824586&sv=2) ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/padron-alcance-10#obtener-datos-del-contribuyente) **Obtener datos del contribuyente** Nos devolverá un objeto con los detalles o `null` en caso de no existir en el padrón. Node PHP Ruby Python API Copiar // CUIT del contribuyente const taxId = 20111111111; const taxpayerDetails = await afip.RegisterScopeTen.getTaxpayerDetails(taxId); Copiar // CUIT del contribuyente $tax_id = 20111111111; $taxpayer_details = $afip->RegisterScopeTen->GetTaxpayerDetails($tax_id); Copiar # CUIT del contribuyente tax_id = 20111111111 taxpayer_details = afip.RegisterScopeTen.getTaxpayerDetails(tax_id) Copiar # CUIT del contribuyente tax_id = 20111111111 taxpayer_details = afip.RegisterScopeTen.getTaxpayerDetails(tax_id) **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** Copiar { "environment": "dev", "method": "getPersona", "wsid": "ws_sr_padron_a10", "params": { "token": "{{token}}", "sign": "{{sign}}", "cuitRepresentada": "20409378472", "idPersona" : 20111111111 } } ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/padron-alcance-10#obtener-estado-del-servidor) **Obtener estado del servidor** circle-exclamation No te confíes mucho de este método, ARCA siempre devuelve que esta todo bien incluso cuando hay algo fallando. Node PHP Ruby Python API **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** [AnteriorPadrón de constancia de inscripciónchevron-left](https://docs.afipsdk.com/siguientes-pasos/web-services/padron-de-constancia-de-inscripcion) [SiguientePadrón alcance 13chevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/padron-alcance-13) Última actualización hace 9 meses * [Requisitos previos](https://docs.afipsdk.com/siguientes-pasos/web-services/padron-alcance-10#requisitos-previos) * [Obtener datos del contribuyente](https://docs.afipsdk.com/siguientes-pasos/web-services/padron-alcance-10#obtener-datos-del-contribuyente) * [Obtener estado del servidor](https://docs.afipsdk.com/siguientes-pasos/web-services/padron-alcance-10#obtener-estado-del-servidor) Copiar const serverStatus = await afip.RegisterScopeTen.getServerStatus(); console.log('Este es el estado del servidor:'); console.log(serverStatus); Copiar $server_status = $afip->RegisterScopeTen->GetServerStatus(); echo 'Este es el estado del servidor:'; echo '
';
    print_r($server_status);
    echo '
'; Copiar server_status = afip.RegisterScopeTen.getServerStatus puts "Este es el estado del servidor:" puts server_status Copiar server_status = afip.RegisterScopeTen.getServerStatus() print("Este es el estado del servidor:") print(server_status) Copiar { "environment": "dev", "method": "dummy", "wsid": "ws_sr_padron_a10", "params": {} } --- # Factura de Exportación | Afip SDK ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-de-exportacion#requisitos-previos) Requisitos previos Para poder usar esta guía, primero necesitarás: * [Integrar Afip SDK en tu proyecto](https://docs.afipsdk.com/#integracion) * * * [https://www.afip.gob.ar/fe/documentos/WSFEX-Manual-para-el-desarrollador.pdfarrow-up-right](https://www.afip.gob.ar/fe/documentos/WSFEX-Manual-para-el-desarrollador.pdf) chevron-rightIdentificador wsfex[hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-de-exportacion#identificador-wsfex) Producción ![Produccion](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-1660c317d3ebcf23820d822f0957d0f15a95186f%252F9.png%3Falt%3Dmedia&width=256&dpr=3&quality=100&sign=b0fb5c1b&sv=2) Desarrollo ![Desarrollo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-5e23dc91657c7bb91c2c95e9d1ae89c3fd9723d2%252F9.png%3Falt%3Dmedia&width=300&dpr=3&quality=100&sign=23e3a&sv=2) ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-de-exportacion#paso-1-crear-una-instancia-del-web-service) **Paso 1 - Crear una instancia del web service** Node PHP Ruby Python API Copiar const ws = afip.WebService('wsfex'); Copiar $ws = $afip->WebService('wsfex'); Copiar ws = afip.webService("wsfex") Copiar ws = afip.webService("wsfex") No se requiere ninguna acción adicional. ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-de-exportacion#paso-2-preparar-lo-datos-para-la-solicitud) **Paso 2 - Preparar lo datos para la solicitud** En la [Referencia de API de Factura de Exportaciónarrow-up-right](https://afipsdk.com/docs/api-reference/web-services/wsfex/) pueden encontrar los métodos disponibles En este ejemplo vamos a usar los datos para el método FEXGetLast\_ID Node PHP Ruby Python API Copiar // Obtenemos el TA const ta = await ws.getTokenAuthorization(); // Preparamos los datos const data = { 'Auth': { 'Token': ta.token, 'Sign': ta.sign, 'Cuit': afip.CUIT } }; Copiar // Obtenemos el TA $ta = $ws->GetTokenAuthorization(); // Preparamos los datos $data = array( 'Auth' => array( 'Token' => $ta->token, 'Sign' => $ta->sign, 'Cuit' => $afip->CUIT ) ); No se requiere ninguna acción adicional. ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-de-exportacion#paso-3-ejecutamos-la-solicitud) **Paso 3 - Ejecutamos la solicitud** Node PHP Ruby Python API **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** [AnteriorComprobantes de Turismochevron-left](https://docs.afipsdk.com/siguientes-pasos/web-services/comprobantes-de-turismo) [SiguienteRemito cárnicochevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/remito-carnico) Última actualización hace 7 meses * [Requisitos previos](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-de-exportacion#requisitos-previos) * [Paso 1 - Crear una instancia del web service](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-de-exportacion#paso-1-crear-una-instancia-del-web-service) * [Paso 2 - Preparar lo datos para la solicitud](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-de-exportacion#paso-2-preparar-lo-datos-para-la-solicitud) * [Paso 3 - Ejecutamos la solicitud](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-de-exportacion#paso-3-ejecutamos-la-solicitud) Copiar # Obtenemos el TA ta = ws.getTokenAuthorization # Preparamos los datos data = { "Auth": { "Token": ta["token"], "Sign": ta["sign"], "Cuit": afip.CUIT } } Copiar # Obtenemos el TA ta = ws.getTokenAuthorization() # Preparamos los datos data = { "Auth": { "Token": ta["token"], "Sign": ta["sign"], "Cuit": afip.CUIT } } Copiar const res = await ws.executeRequest('FEXGetLast_ID', data); console.log(res); Copiar $res = $ws->ExecuteRequest('FEXGetLast_ID', $data); var_dump($res); Copiar res = ws.executeRequest("FEXGetLast_ID", data) puts res Copiar res = ws.executeRequest("FEXGetLast_ID", data) print(res) Copiar { "environment": "dev", "method": "FEXGetLast_ID", "wsid": "wsfex", "params": { "Auth": { "Token": "{{token}}", "Sign": "{{sign}}", "Cuit": "20409378472", } } } --- # Comprobantes de Turismo | Afip SDK ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/comprobantes-de-turismo#requisitos-previos) Requisitos previos Para poder usar esta guía, primero necesitarás: * [Integrar Afip SDK en tu proyecto](https://docs.afipsdk.com/#integracion) * * * [https://www.afip.gob.ar/fe/documentos/Manual-Desarrollador-WSCT.pdfarrow-up-right](https://www.afip.gob.ar/fe/documentos/Manual-Desarrollador-WSCT.pdf) chevron-rightIdentificador wsct[hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/comprobantes-de-turismo#identificador-wsct) Producción ![Produccion](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-53574d29c7d961d67493201e14a6b7bf62b1dc3f%252F8.png%3Falt%3Dmedia&width=218&dpr=3&quality=100&sign=cc700a1c&sv=2) Desarrollo ![Desarrollo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-aa45feafc7b5fb63091d27f5b53e06ea128bdd28%252F8.png%3Falt%3Dmedia&width=300&dpr=3&quality=100&sign=ce70dba5&sv=2) ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/comprobantes-de-turismo#paso-1-crear-una-instancia-del-web-service) **Paso 1 - Crear una instancia del web service** Node PHP Ruby Python API Copiar const ws = afip.WebService('wsct'); Copiar $ws = $afip->WebService('wsct'); Copiar ws = afip.webService("wsct") Copiar ws = afip.webService("wsct") No se requiere ninguna acción adicional. ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/comprobantes-de-turismo#paso-2-preparar-los-datos-para-la-solicitud) **Paso 2 - Preparar los datos para la solicitud** En la [Referencia de API de Comprobantes de Turismoarrow-up-right](https://afipsdk.com/docs/api-reference/web-services/wsct/) pueden encontrar los métodos disponibles. En este ejemplo vamos a usar los datos para el método `consultarUltimoComprobanteAutorizado` Node PHP Ruby Python API Copiar // Obtenemos el TA const ta = await ws.getTokenAuthorization(); // Preparamos los datos const data = { 'authRequest': { 'token': ta.token, 'sign': ta.sign, 'cuitRepresentada': afip.CUIT }, 'codigoTipoComprobante': 195, 'numeroPuntoVenta': 1 }; Copiar // Obtenemos el TA $ta = $ws->GetTokenAuthorization(); // Preparamos los datos $data = array( 'authRequest' => array( 'token' => $ta->token, 'sign' => $ta->sign, 'cuitRepresentada' => $afip->CUIT ), 'codigoTipoComprobante' => 195, 'numeroPuntoVenta' => 1 ); No se requiere ninguna acción adicional. ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/comprobantes-de-turismo#paso-3-ejecutamos-la-solicitud) **Paso 3 - Ejecutamos la solicitud** Node PHP Ruby Python API **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** [AnteriorCarta de Porte Electrónicachevron-left](https://docs.afipsdk.com/siguientes-pasos/web-services/carta-de-porte-electronica) [SiguienteFactura de Exportaciónchevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-de-exportacion) Última actualización hace 7 meses * [Requisitos previos](https://docs.afipsdk.com/siguientes-pasos/web-services/comprobantes-de-turismo#requisitos-previos) * [Paso 1 - Crear una instancia del web service](https://docs.afipsdk.com/siguientes-pasos/web-services/comprobantes-de-turismo#paso-1-crear-una-instancia-del-web-service) * [Paso 2 - Preparar los datos para la solicitud](https://docs.afipsdk.com/siguientes-pasos/web-services/comprobantes-de-turismo#paso-2-preparar-los-datos-para-la-solicitud) * [Paso 3 - Ejecutamos la solicitud](https://docs.afipsdk.com/siguientes-pasos/web-services/comprobantes-de-turismo#paso-3-ejecutamos-la-solicitud) Copiar # Obtenemos el TA ta = ws.getTokenAuthorization # Preparamos los datos data = { "authRequest": { "token": ta["token"], "sign": ta["sign"], "cuitRepresentada": afip.CUIT }, "codigoTipoComprobante": 195, "numeroPuntoVenta": 1 } Copiar # Obtenemos el TA ta = ws.getTokenAuthorization() # Preparamos los datos data = { "authRequest": { "token": ta["token"], "sign": ta["sign"], "cuitRepresentada": afip.CUIT }, "codigoTipoComprobante": 195, "numeroPuntoVenta": 1 } Copiar const res = await ws.executeRequest('consultarUltimoComprobanteAutorizado', data); console.log(res); Copiar $res = $ws->ExecuteRequest('consultarUltimoComprobanteAutorizado', $data); var_dump($res); Copiar res = ws.executeRequest("consultarUltimoComprobanteAutorizado", data) puts res Copiar res = ws.executeRequest("consultarUltimoComprobanteAutorizado", data) print(res) Copiar { "environment": "dev", "method": "consultarUltimoComprobanteAutorizado", "wsid": "wsct", "params": { "authRequest": { "token": "{{token}}", "sign": "{{sign}}", "cuitRepresentada": "20409378472" }, "codigoTipoComprobante": 195, "numeroPuntoVenta": 1 } } --- # Carta de Porte Electrónica | Afip SDK ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/carta-de-porte-electronica#requisitos-previos) Requisitos previos Para poder usar esta guía, primero necesitarás: * [Integrar Afip SDK en tu proyecto](https://docs.afipsdk.com/#integracion) * * * [https://www.afip.gob.ar/ws/documentos/manual\_wscpe\_version-2-0-3.pdfarrow-up-right](https://www.afip.gob.ar/ws/documentos/manual_wscpe_version-2-0-3.pdf) chevron-rightIdentificador wscpe[hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/carta-de-porte-electronica#identificador-wscpe) Producción ![Produccion](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-4944303257ec5f74d0f9b49f0d89c4cb4b302961%252F7.png%3Falt%3Dmedia&width=262&dpr=3&quality=100&sign=9fab4b94&sv=2) Desarrollo ![Desarrollo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-547392654f2a6bbf00b6a58329457bda57d7684e%252F7.png%3Falt%3Dmedia&width=300&dpr=3&quality=100&sign=22f6ba8c&sv=2) ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/carta-de-porte-electronica#paso-1-crear-una-instancia-del-web-service) **Paso 1 - Crear una instancia del web service** Node PHP Ruby Python API Copiar const ws = afip.WebService('wscpe'); Copiar $ws = $afip->WebService('wscpe'); Copiar ws = afip.webService("wscpe") Copiar ws = afip.webService("wscpe") No se requiere ninguna acción adicional. ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/carta-de-porte-electronica#paso-2-preparar-los-datos-para-la-solicitud) **Paso 2 - Preparar los datos para la solicitud** En la [Referencia de API de Carta de Porte Electrónicaarrow-up-right](https://afipsdk.com/docs/api-reference/web-services/wscpe/) pueden encontrar los métodos disponibles. En este ejemplo vamos a usar los datos para el método `consultarUltNroOrden` Node PHP Ruby Python API Copiar // Obtenemos el TA const ta = await ws.getTokenAuthorization(); // Preparamos los datos const data = { 'auth': { 'token': ta.token, 'sign': ta.sign, 'cuitRepresentada': afip.CUIT }, 'solicitud': { 'sucursal': 195, 'tipoCPE': 1 } }; Copiar // Obtenemos el TA $ta = $ws->GetTokenAuthorization(); // Preparamos los datos $data = array( 'auth' => array( 'token' => $ta->token, 'sign' => $ta->sign, 'cuitRepresentada' => $afip->CUIT ), 'solicitud' => array( 'sucursal' => 195, 'tipoCPE' => 1 ) ); No se requiere ninguna acción adicional. ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/carta-de-porte-electronica#paso-3-ejecutamos-la-solicitud) **Paso 3 - Ejecutamos la solicitud** Node PHP Ruby Python API **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** [AnteriorConstatación de Comprobanteschevron-left](https://docs.afipsdk.com/siguientes-pasos/web-services/constatacion-de-comprobantes) [SiguienteComprobantes de Turismochevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/comprobantes-de-turismo) Última actualización hace 7 meses * [Requisitos previos](https://docs.afipsdk.com/siguientes-pasos/web-services/carta-de-porte-electronica#requisitos-previos) * [Paso 1 - Crear una instancia del web service](https://docs.afipsdk.com/siguientes-pasos/web-services/carta-de-porte-electronica#paso-1-crear-una-instancia-del-web-service) * [Paso 2 - Preparar los datos para la solicitud](https://docs.afipsdk.com/siguientes-pasos/web-services/carta-de-porte-electronica#paso-2-preparar-los-datos-para-la-solicitud) * [Paso 3 - Ejecutamos la solicitud](https://docs.afipsdk.com/siguientes-pasos/web-services/carta-de-porte-electronica#paso-3-ejecutamos-la-solicitud) Copiar # Obtenemos el TA ta = ws.getTokenAuthorization # Preparamos los datos data = { "auth": { "token": ta["token"], "sign": ta["sign"], "cuitRepresentada": afip.CUIT }, "solicitud": { "sucursal": 195, "tipoCPE": 1 } } Copiar # Obtenemos el TA ta = ws.getTokenAuthorization() # Preparamos los datos data = { "auth": { "token": ta["token"], "sign": ta["sign"], "cuitRepresentada": afip.CUIT }, "solicitud": { "sucursal": 195, "tipoCPE": 1 } } Copiar const res = await ws.executeRequest('consultarUltNroOrden', data); console.log(res); Copiar $res = $ws->ExecuteRequest('consultarUltNroOrden', $data); var_dump($res); Copiar res = ws.executeRequest("consultarUltNroOrden", data) puts res Copiar res = ws.executeRequest("consultarUltNroOrden", data) print(res) Copiar { "environment": "dev", "method": "consultarUltNroOrden", "wsid": "wscpe", "params": { "auth": { "token": "{{token}}", "sign": "{{sign}}", "cuitRepresentada": "20409378472" }, "solicitud": { "sucursal": 195, "tipoCPE": 1 } } } --- # Factura MiPyME | Afip SDK ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-mipyme#requisitos-previos) Requisitos previos Para poder usar esta guía, primero necesitarás: * [Integrar Afip SDK en tu proyecto](https://docs.afipsdk.com/#integracion) * * * [https://servicioscf.afip.gob.ar/facturadecreditoelectronica/documentos/Manual-Desarrollador-WSFECRED.pdfarrow-up-right](https://servicioscf.afip.gob.ar/facturadecreditoelectronica/documentos/Manual-Desarrollador-WSFECRED.pdf) chevron-rightIdentificador wsfecred[hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-mipyme#identificador-wsfecred) Producción ![Produccion](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-7dc49ca72f92946141509976ca2165f19a1c610d%252F5.png%3Falt%3Dmedia&width=457&dpr=3&quality=100&sign=7ffd0887&sv=2) Desarrollo ![Desarrollo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-f31157ee3896a351c9b71dea290442366017174f%252F5.png%3Falt%3Dmedia&width=300&dpr=3&quality=100&sign=a50042c0&sv=2) ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-mipyme#paso-1-crear-una-instancia-del-web-service) **Paso 1 - Crear una instancia del web service** Node PHP Ruby Python API Copiar const ws = afip.WebService('wsfecred'); Copiar $ws = $afip->WebService('wsfecred'); Copiar ws = afip.webService("wsfecred") Copiar ws = afip.webService("wsfecred") No se requiere ninguna acción adicional. ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-mipyme#paso-2-preparar-lo-datos-para-la-solicitud) **Paso 2 - Preparar lo datos para la solicitud** En la [Referencia de API de Factura MiPyMEarrow-up-right](https://afipsdk.com/docs/api-reference/web-services/wsfecred/) pueden encontrar los métodos disponibles. En este ejemplo vamos a usar los datos para el método `consultarMontoObligadoRecepcion` Node PHP Ruby Python API Copiar // Obtenemos el TA const ta = await ws.getTokenAuthorization(); // Preparamos los datos const data = { 'authRequest': { 'token': ta.token, 'sign': ta.sign, 'cuitRepresentada': afip.CUIT, }, 'cuitConsultada': '20409378472', 'fechaEmision': '2024-03-03' }; Copiar // Obtenemos el TA $ta = $ws->GetTokenAuthorization(); // Preparamos los datos $data = array( 'authRequest' => array( 'token' => $ta->token, 'sign' => $ta->sign, 'cuitRepresentada' => $afip->CUIT, ), 'cuitConsultada' => '20409378472', 'fechaEmision' => '2024-03-03' ); No se requiere ninguna acción adicional. ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-mipyme#paso-3-ejecutamos-la-solicitud) **Paso 3 - Ejecutamos la solicitud** Node PHP Ruby Python API **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** [AnteriorPadrón alcance 13chevron-left](https://docs.afipsdk.com/siguientes-pasos/web-services/padron-alcance-13) [SiguienteConstatación de Comprobanteschevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/constatacion-de-comprobantes) Última actualización hace 7 meses * [Requisitos previos](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-mipyme#requisitos-previos) * [Paso 1 - Crear una instancia del web service](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-mipyme#paso-1-crear-una-instancia-del-web-service) * [Paso 2 - Preparar lo datos para la solicitud](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-mipyme#paso-2-preparar-lo-datos-para-la-solicitud) * [Paso 3 - Ejecutamos la solicitud](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-mipyme#paso-3-ejecutamos-la-solicitud) Copiar # Obtenemos el TA ta = ws.getTokenAuthorization # Preparamos los datos data = { "authRequest": { "token": ta["token"], "sign": ta["sign"], "cuitRepresentada": afip.CUIT }, "cuitConsultada": "20409378472", "fechaEmision": "2024-03-03" } Copiar # Obtenemos el TA ta = ws.getTokenAuthorization() # Preparamos los datos data = { "authRequest": { "token": ta["token"], "sign": ta["sign"], "cuitRepresentada": afip.CUIT }, "cuitConsultada": "20409378472", "fechaEmision": "2024-03-03" } Copiar const res = await ws.executeRequest('consultarMontoObligadoRecepcion', data); console.log(res); Copiar $res = $ws->ExecuteRequest('consultarMontoObligadoRecepcion', $data); var_dump($res); Copiar res = ws.executeRequest("consultarMontoObligadoRecepcion", data) puts res Copiar res = ws.executeRequest("consultarMontoObligadoRecepcion", data) print(res) Copiar { "environment": "dev", "method": "consultarMontoObligadoRecepcion", "wsid": "wsfecred", "params": { "authRequest": { "token": "{{token}}", "sign": "{{sign}}", "cuitRepresentada": "20409378472", }, "cuitConsultada": "20409378472", "fechaEmision": "2024-03-03" } } --- # Padrón alcance 13 | Afip SDK ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/padron-alcance-13#requisitos-previos) Requisitos previos Para poder usar esta guía, primero necesitarás: * [Integrar Afip SDK en tu proyecto](https://docs.afipsdk.com/#integracion) * * * La especificación de este Web Service se encuentra disponible en [https://www.afip.gob.ar/ws/ws-padron-a13/manual-ws-sr-padron-a13-v1.2.pdfarrow-up-right](https://www.afip.gob.ar/ws/ws-padron-a13/manual-ws-sr-padron-a13-v1.2.pdf) chevron-rightIdentificador ws\_sr\_padron\_a13[hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/padron-alcance-13#identificador-ws_sr_padron_a13) Producción ![Produccion](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-44d0d4b0f8555de3e3e9fbe66a48bff058e0d3ce%252F4.png%3Falt%3Dmedia&width=225&dpr=3&quality=100&sign=86b08bac&sv=2) Desarrollo ![Desarrollo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-aac7943a239790481b42457724b2e5ab14a29a9e%252F4.png%3Falt%3Dmedia&width=300&dpr=3&quality=100&sign=2edd886a&sv=2) #### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/padron-alcance-13#metodos-disponibles) Métodos disponibles 1. [Obtener datos del contribuyente](https://docs.afipsdk.com/siguientes-pasos/web-services/padron-alcance-13#obtener-datos-del-contribuyente) 2. [Obtener CUIT a partir de un DNI](https://docs.afipsdk.com/siguientes-pasos/web-services/padron-alcance-13#obtener-cuit-a-partir-de-un-dni) 3. [Obtener estado del servidor](https://docs.afipsdk.com/siguientes-pasos/web-services/padron-alcance-13#obtener-estado-del-servidor) ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/padron-alcance-13#obtener-datos-del-contribuyente) **Obtener datos del contribuyente** Nos devolverá un objeto con los detalles o `null` en caso de no existir en el padrón. Node PHP Ruby Python API Copiar // CUIT del contribuyente const taxId = 20111111111; const taxpayerDetails = await afip.RegisterScopeThirteen.getTaxpayerDetails(taxId); Copiar // CUIT del contribuyente $tax_id = 20111111111; $taxpayer_details = $afip->RegisterScopeThirteen->GetTaxpayerDetails($tax_id); Copiar # CUIT del contribuyente tax_id = 20111111111 taxpayer_details = afip.RegisterScopeThirteen.getTaxpayerDetails(tax_id) Copiar # CUIT del contribuyente tax_id = 20111111111 taxpayer_details = afip.RegisterScopeThirteen.getTaxpayerDetails(tax_id) **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** Copiar { "environment": "dev", "method": "getPersona", "wsid": "ws_sr_padron_a13", "params": { "token": "{{token}}", "sign": "{{sign}}", "cuitRepresentada": "20409378472", "idPersona" : 20111111111 } } ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/padron-alcance-13#obtener-cuit-a-partir-de-un-dni) **Obtener CUIT a partir de un DNI** Nos devolverá el CUIT o `null` en caso de no existir en el padrón Node PHP Ruby Python API **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/padron-alcance-13#obtener-estado-del-servidor) **Obtener estado del servidor** circle-exclamation No te confíes mucho de este método, ARCA siempre devuelve que esta todo bien incluso cuando hay algo fallando. Node PHP Ruby Python API **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** [AnteriorPadrón alcance 10chevron-left](https://docs.afipsdk.com/siguientes-pasos/web-services/padron-alcance-10) [SiguienteFactura MiPyMEchevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-mipyme) Última actualización hace 9 meses * [Requisitos previos](https://docs.afipsdk.com/siguientes-pasos/web-services/padron-alcance-13#requisitos-previos) * [Obtener datos del contribuyente](https://docs.afipsdk.com/siguientes-pasos/web-services/padron-alcance-13#obtener-datos-del-contribuyente) * [Obtener CUIT a partir de un DNI](https://docs.afipsdk.com/siguientes-pasos/web-services/padron-alcance-13#obtener-cuit-a-partir-de-un-dni) * [Obtener estado del servidor](https://docs.afipsdk.com/siguientes-pasos/web-services/padron-alcance-13#obtener-estado-del-servidor) Copiar // DNI const nationalId = 11111111; const taxID = await afip.RegisterScopeThirteen.getTaxIDByDocument(nationalId); Copiar // DNI $national_id = 11111111; $tax_id = $afip->RegisterScopeThirteen->GetTaxIDByDocument($national_id); Copiar # DNI national_id = 11111111 tax_id = afip.RegisterScopeThirteen.getTaxIDByDocument(national_id) Copiar # DNI national_id = 11111111 tax_id = afip.RegisterScopeThirteen.getTaxIDByDocument(national_id) Copiar { "environment": "dev", "method": "getIdPersonaListByDocumento", "wsid": "ws_sr_padron_a13", "params": { "token": "{{token}}", "sign": "{{sign}}", "cuitRepresentada": "20409378472", "documento" : 11111111 } } Copiar const serverStatus = await afip.RegisterScopeThirteen.getServerStatus(); console.log('Este es el estado del servidor:'); console.log(serverStatus); Copiar $server_status = $afip->RegisterScopeThirteen->GetServerStatus(); echo 'Este es el estado del servidor:'; echo '
';
    print_r($server_status);
    echo '
'; Copiar server_status = afip.RegisterScopeThirteen.getServerStatus puts "Este es el estado del servidor:" puts server_status Copiar server_status = afip.RegisterScopeThirteen.getServerStatus print("Este es el estado del servidor:") print(server_status) Copiar { "environment": "dev", "method": "dummy", "wsid": "ws_sr_padron_a13", "params": {} } --- # Otro web service | Afip SDK ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/otro-web-service#requisitos-previos) Requisitos previos Para poder usar esta guía, primero necesitarás: * [Integrar Afip SDK en tu proyecto](https://docs.afipsdk.com/#integracion) * * * En esta documentación solo encontrarás los web services de ARCA más usados, pero en la [Referencia de APIarrow-up-right](https://afipsdk.com/docs/api-reference/introduction/) podés encontrar ejemplos de código para usar cada método de todos los web services de ARCA. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Referencia de APIafipsdk.comchevron-right](https://afipsdk.com/docs/api-reference/introduction/) En caso de no encontrar en la Referencia de la API el web service que necesitás, no dudes en [contactarnosarrow-up-right](https://afipsdk.com/contact/) . * * * Aquí abajo encontrarás algunos ejemplos genéricos para los lenguajes más utilizados. Node PHP Ruby Python API Es similar a llamar a otros web services **Body** **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** [AnteriorRemito cárnicochevron-left](https://docs.afipsdk.com/siguientes-pasos/web-services/remito-carnico) [SiguienteIr a producciónchevron-right](https://docs.afipsdk.com/siguientes-pasos/ir-a-produccion) Última actualización hace 7 meses Copiar /** * Nombre del web service. * * El nombre por el cual se llama al web service en AFIP. * Esto lo podes encontrar en el manual correspondiente. * Por ej. el de factura electronica se llama 'wsfe', el de * comprobantes T se llama 'wsct' **/ const servicio = 'wsct'; /** * Creamos el web service **/ const genericWebService = afip.WebService(servicio, options); /** * Este es un ejemplo de como utilizar el wsct para * obtener el ultimo comprobante autorizado * * Aqui veras como obtener un Token Authorizataion * para el web service que acabamos de crear y como * ejecutar un request basico **/ (async () => { /** * Obtenemos el Token Authorizataion **/ const ta = await genericWebService.getTokenAuthorization(); /** * Preparamos los datos que nos pide el web service * * Este ejemplo es especifico para el wsct. En el manual * del web service que quieras utilizar encontraras que * datos requiere cada metodo **/ const data = { 'authRequest': { 'token': ta.token, 'sign' : ta.sign, 'cuitRepresentada' : afip.CUIT }, 'codigoTipoComprobante': 195, 'numeroPuntoVenta': 1 }; /** * Iniciamos la variable donde guardaremos el resultado **/ let result; try { /** * Ejecutamos la request al web service * * consultarUltimoComprobanteAutorizado es un metodo * de wsct, esto debes cambiarlo por el metodo que * quieras utilizar **/ result = await genericWebService.executeRequest('consultarUltimoComprobanteAutorizado', data); /** * Seteamos el resultado en nuestra variable. * * consultarUltimoComprobanteAutorizadoReturn es especifico * de este metodo de este web service. Esto deberas adaptarlo * al web service que estes integrando **/ result = result.consultarUltimoComprobanteAutorizadoReturn /** * Checkeamos si devolvio error en el resultado. * * arrayErrores es especifico de este web service. * Esto deberas adaptarlo al web service que estes integrando **/ if (typeof result.arrayErrores !== 'undefined') { err = Array.isArray(result.arrayErrores.codigoDescripcion) ? result.arrayErrores.codigoDescripcion[0] : result.arrayErrores.codigoDescripcion; throw new Error(`(${err.codigo}) ${err.descripcion}`, err.codigo); } } catch(error){ /** * Si hubo un error lo logeamos **/ console.error(error); } /** * Logeamos el resultado final **/ console.log(result); })(); Copiar WebService($servicio); /** * Este es un ejemplo de como utilizar el wsct para * obtener el ultimo comprobante autorizado * * Aqui veras como obtener un Token Authorizataion * para el web service que acabamos de crear y como * ejecutar un request basico **/ /** * Obtenemos el Token Authorizataion **/ $ta = $generic_web_service->GetTokenAuthorization(); /** * Preparamos los datos que nos pide el web service * * Este ejemplo es especifico para el wsct. En el manual * del web service que quieras utilizar encontraras que * datos requiere cada metodo **/ $data = array( 'authRequest' => array( 'token' => $ta->token, 'sign' => $ta->sign, 'cuitRepresentada' => $afip->CUIT ), 'codigoTipoComprobante' => 195, 'numeroPuntoVenta' => 1 ); /** * Ejecutamos la request al web service * * consultarUltimoComprobanteAutorizado es un metodo * de wsct, esto debes cambiarlo por el metodo que * quieras utilizar **/ $result = $generic_web_service->ExecuteRequest('consultarUltimoComprobanteAutorizado', $data); /** * Seteamos el resultado en nuestra variable. * * consultarUltimoComprobanteAutorizadoReturn es especifico * de este metodo de este web service. Esto deberas adaptarlo * al web service que estes integrando **/ $result = $result->consultarUltimoComprobanteAutorizadoReturn; /** * Checkeamos si devolvio error en el resultado. * * arrayErrores es especifico de este web service. * Esto deberas adaptarlo al web service que estes integrando **/ if (isset($result->arrayErrores)) { $err = is_array($result->arrayErrores->codigoDescripcion) ? $result->arrayErrores->codigoDescripcion[0] : $result->arrayErrores->codigoDescripcion; throw new Exception('('.$err->codigo.') '.$err->descripcion, $err->codigo); } /** * Mostramos por pantalla el resultado final **/ var_dump($result); Copiar # Nombre del web service. # # El nombre por el cual se llama al web service en AFIP. # Esto lo podes encontrar en el manual correspondiente. # Por ej. el de factura electronica se llama "wsfe", el de # comprobantes T se llama "wsct" servicio = "wsct" # Creamos el web service genericWebService = afip.webService(servicio) # Este es un ejemplo de como utilizar el wsct para # obtener el ultimo comprobante autorizado # # Aqui veras como obtener un Token Authorizataion # para el web service que acabamos de crear y como # ejecutar un request basico # Obtenemos el Token Authorizataion ta = genericWebService.getTokenAuthorization # Preparamos los datos que nos pide el web service # # Este ejemplo es especifico para el wsct. En el manual # del web service que quieras utilizar encontraras que # datos requiere cada metodo data = { "authRequest": { "token": ta["token"], "sign": ta["sign"], "cuitRepresentada": afip.CUIT }, "codigoTipoComprobante": 195, "numeroPuntoVenta": 1 } begin # Ejecutamos la request al web service # # consultarUltimoComprobanteAutorizado es un metodo # de wsct, esto debes cambiarlo por el metodo que # quieras utilizar result = genericWebService.executeRequest("consultarUltimoComprobanteAutorizado", data) # Mostramos el resultado puts result unless result["arrayErrores"] # Checkeamos si devolvio error en el resultado. # # arrayErrores es especifico de este web service. # Esto deberas adaptarlo al web service que estes integrando err = result["arrayErrores"]["codigoDescripcion"].is_a?(Array) ? result["arrayErrores"]["codigoDescripcion"][0] : result["arrayErrores"]["codigoDescripcion"] raise "(#{err["codigo"]}) #{err["descripcion"]}" rescue => e # Mostramos el error puts e end Copiar # Nombre del web service. # # El nombre por el cual se llama al web service en AFIP. # Esto lo podes encontrar en el manual correspondiente. # Por ej. el de factura electronica se llama "wsfe", el de # comprobantes T se llama "wsct" servicio = "wsct" # Creamos el web service genericWebService = afip.webService(servicio) # Este es un ejemplo de como utilizar el wsct para # obtener el ultimo comprobante autorizado # # Aqui veras como obtener un Token Authorizataion # para el web service que acabamos de crear y como # ejecutar un request basico # Obtenemos el Token Authorizataion ta = genericWebService.getTokenAuthorization() # Preparamos los datos que nos pide el web service # # Este ejemplo es especifico para el wsct. En el manual # del web service que quieras utilizar encontraras que # datos requiere cada metodo data = { "authRequest": { "token": ta["token"], "sign": ta["sign"], "cuitRepresentada": afip.CUIT }, "codigoTipoComprobante": 195, "numeroPuntoVenta": 1 } try: # Ejecutamos la request al web service # # consultarUltimoComprobanteAutorizado es un metodo # de wsct, esto debes cambiarlo por el metodo que # quieras utilizar result = genericWebService.executeRequest("consultarUltimoComprobanteAutorizado", data)['consultarUltimoComprobanteAutorizadoReturn'] if result.get("arrayErrores"): # Checkeamos si devolvio error en el resultado. # # arrayErrores es especifico de este web service. # Esto deberas adaptarlo al web service que estes integrando err = result["arrayErrores"]["codigoDescripcion"][0] if type(result["arrayErrores"]["codigoDescripcion"]) in (tuple, list) else result["arrayErrores"]["codigoDescripcion"] raise Exception("(%s) %s" % (err["codigo"], err["descripcion"])) # Mostramos el resultado print(result) except Exception as e: # Mostramos el error print(e) Copiar { "environment": "dev", "method": "consultarUltimoComprobanteAutorizado", "wsid": "wsct", "params": { "authRequest": { "token": "{{token}}", "sign": "{{sign}}", "cuitRepresentada": "20409378472" }, "codigoTipoComprobante": 195, "numeroPuntoVenta": 1 } } --- # Constatación de Comprobantes | Afip SDK ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/constatacion-de-comprobantes#requisitos-previos) Requisitos previos Para poder usar esta guía, primero necesitarás: * [Integrar Afip SDK en tu proyecto](https://docs.afipsdk.com/#integracion) * * * [https://www.afip.gob.ar/ws/WSCDCV1/WSCDC\_manual\_desarrollador\_v.2.pdfarrow-up-right](https://www.afip.gob.ar/ws/WSCDCV1/WSCDC_manual_desarrollador_v.2.pdf) chevron-rightIdentificador wscdc[hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/constatacion-de-comprobantes#identificador-wscdc) Producción ![Produccion](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-e50b587a9cf870c8397ff9b21f4a341b10472f93%252F6.png%3Falt%3Dmedia&width=388&dpr=3&quality=100&sign=a1ee5e05&sv=2) Desarrollo ![Desarrollo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-8ff3c7c9479f350f446989420e9d9ba86d48e087%252F6.png%3Falt%3Dmedia&width=300&dpr=3&quality=100&sign=e4ce3a77&sv=2) ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/constatacion-de-comprobantes#paso-1-crear-una-instancia-del-web-service) **Paso 1 - Crear una instancia del web service** Node PHP Ruby Python API Copiar const ws = afip.WebService('wscdc'); Copiar $ws = $afip->WebService('wscdc'); Copiar ws = afip.webService("wscdc") Copiar ws = afip.webService("wscdc") No se requiere ninguna acción adicional. ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/constatacion-de-comprobantes#paso-2-preparar-los-datos-para-la-solicitud) **Paso 2 - Preparar los datos para la solicitud** En la [Referencia de API de Constatación de Comprobantesarrow-up-right](https://afipsdk.com/docs/api-reference/web-services/wscdc/) pueden encontrar los métodos disponibles. En este ejemplo vamos a usar los datos para el método `ComprobanteConstatar` Node PHP Ruby Python API Copiar // Obtenemos el TA const ta = await ws.getTokenAuthorization(); // Preparamos los datos const data = { 'Auth': { 'Token': ta.token, 'Sign': ta.sign, 'Cuit': afip.CUIT }, 'CmpReq': { 'CbteModo': 'CAE', 'CuitEmisor': 20000000001, 'PtoVta': 1, 'CbteTipo': 1, 'CbteNro': 2, 'CbteFch': 20101014, 'ImpTotal': 300.8, 'CodAutorizacion': '60428000005029', 'DocTipoReceptor': '80', 'DocNroReceptor': '300000000007' } }; No se requiere ninguna acción adicional. ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/constatacion-de-comprobantes#paso-3-ejecutamos-la-solicitud) **Paso 3 - Ejecutamos la solicitud** Node PHP Ruby Python API **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** [AnteriorFactura MiPyMEchevron-left](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-mipyme) [SiguienteCarta de Porte Electrónicachevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/carta-de-porte-electronica) Última actualización hace 7 meses * [Requisitos previos](https://docs.afipsdk.com/siguientes-pasos/web-services/constatacion-de-comprobantes#requisitos-previos) * [Paso 1 - Crear una instancia del web service](https://docs.afipsdk.com/siguientes-pasos/web-services/constatacion-de-comprobantes#paso-1-crear-una-instancia-del-web-service) * [Paso 2 - Preparar los datos para la solicitud](https://docs.afipsdk.com/siguientes-pasos/web-services/constatacion-de-comprobantes#paso-2-preparar-los-datos-para-la-solicitud) * [Paso 3 - Ejecutamos la solicitud](https://docs.afipsdk.com/siguientes-pasos/web-services/constatacion-de-comprobantes#paso-3-ejecutamos-la-solicitud) Copiar // Obtenemos el TA $ta = $ws->GetTokenAuthorization(); // Preparamos los datos $data = array( 'Auth' => array( 'Token' => $ta->token, 'Sign' => $ta->sign, 'Cuit' => $afip->CUIT ), 'CmpReq' => array( 'CbteModo' => 'CAE', 'CuitEmisor' => 20000000001, 'PtoVta' => 1, 'CbteTipo' => 1, 'CbteNro' => 2, 'CbteFch' => 20101014, 'ImpTotal' => 300.8, 'CodAutorizacion' => '60428000005029', 'DocTipoReceptor' => '80', 'DocNroReceptor' => '300000000007' ) ); Copiar # Obtenemos el TA ta = ws.getTokenAuthorization # Preparamos los datos data = { "Auth": { "Token": ta["token"], "Sign": ta["sign"], "Cuit": afip.CUIT }, "CmpReq": { "CbteModo": "CAE", "CuitEmisor": 20000000001, "PtoVta": 1, "CbteTipo": 1, "CbteNro": 2, "CbteFch": 20101014, "ImpTotal": 300.8, "CodAutorizacion": "60428000005029", "DocTipoReceptor": "80", "DocNroReceptor": "300000000007" } } Copiar # Obtenemos el TA ta = ws.getTokenAuthorization() # Preparamos los datos data = { "Auth": { "Token": ta["token"], "Sign": ta["sign"], "Cuit": afip.CUIT }, "CmpReq": { "CbteModo": "CAE", "CuitEmisor": 20000000001, "PtoVta": 1, "CbteTipo": 1, "CbteNro": 2, "CbteFch": 20101014, "ImpTotal": 300.8, "CodAutorizacion": "60428000005029", "DocTipoReceptor": "80", "DocNroReceptor": "300000000007" } } Copiar const res = await ws.executeRequest('ComprobanteConstatar', data); console.log(res); Copiar $res = $ws->ExecuteRequest('ComprobanteConstatar', $data); var_dump($res); Copiar res = ws.executeRequest("ComprobanteConstatar", data) puts res Copiar res = ws.executeRequest("ComprobanteConstatar", data) print(res) Copiar { "environment": "dev", "method": "ComprobanteConstatar", "wsid": "wscdc", "params": { "Auth": { "Token": "{{token}}", "Sign": "{{sign}}", "Cuit": "20409378472" }, "CmpReq": { "CbteModo": "CAE", "CuitEmisor": 20000000001, "PtoVta": 1, "CbteTipo": 1, "CbteNro": 2, "CbteFch": 20101014, "ImpTotal": 300.8, "CodAutorizacion": "60428000005029", "DocTipoReceptor": "80", "DocNroReceptor": "300000000007" } } } --- # Padrón de constancia de inscripción | Afip SDK ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/padron-de-constancia-de-inscripcion#requisitos-previos) Requisitos previos Para poder usar esta guía, primero necesitarás: * [Integrar Afip SDK en tu proyecto](https://docs.afipsdk.com/#integracion) * * * La especificación de este Web Service se encuentra disponible en [https://www.afip.gob.ar/ws/WSCI/manual-ws-sr-ws-constancia-inscripcion-v3.4.pdfarrow-up-right](https://www.afip.gob.ar/ws/WSCI/manual-ws-sr-ws-constancia-inscripcion-v3.4.pdf) chevron-rightIdentificador ws\_sr\_constancia\_inscripcion[hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/padron-de-constancia-de-inscripcion#identificador-ws_sr_constancia_inscripcion) Producción ![Produccion](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-8b7c29ffa587dca49a93ee27570e2afa7f1568ac%252F2.png%3Falt%3Dmedia&width=415&dpr=3&quality=100&sign=c2bce715&sv=2) Desarrollo ![Desarrollo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-cc3f52a09854d4c2322a0916397f1160c70a8d07%252F2.png%3Falt%3Dmedia&width=300&dpr=3&quality=100&sign=ad6fc64f&sv=2) ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/padron-de-constancia-de-inscripcion#obtener-datos-del-contribuyente) **Obtener datos del contribuyente** Nos devolverá un objeto con los detalles o `null` en caso de no existir en el padrón. Node PHP Ruby Python API Copiar // CUIT del contribuyente const taxId = 20111111111; const taxpayerDetails = await afip.RegisterInscriptionProof.getTaxpayerDetails(taxId); Copiar // CUIT del contribuyente $tax_id = 20111111111; $taxpayer_details = $afip->RegisterInscriptionProof->GetTaxpayerDetails($tax_id); Copiar # CUIT del contribuyente tax_id = 20111111111 taxpayer_details = afip.RegisterInscriptionProof.getTaxpayerDetails(tax_id) Copiar # CUIT del contribuyente tax_id = 20111111111 taxpayer_details = afip.RegisterInscriptionProof.getTaxpayerDetails(tax_id) **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** Copiar { "environment": "dev", "method": "getPersona_v2", "wsid": "ws_sr_constancia_inscripcion", "params": { "token": "{{token}}", "sign": "{{sign}}", "cuitRepresentada": "20409378472", "idPersona" : 20111111111 } } ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/padron-de-constancia-de-inscripcion#obtener-datos-de-multiples-contribuyentes) **Obtener datos de múltiples contribuyentes** Node PHP Ruby Python API Copiar // CUITs de los contribuyentes const taxIds = [20111111111, 20111111112]; const taxpayersDetails = await afip.RegisterInscriptionProof.getTaxpayersDetails(taxIds); Copiar // CUITs de los contribuyentes $tax_ids = Array(20111111111, 20111111112); $taxpayers_details = $afip->RegisterInscriptionProof->GetTaxpayersDetails($tax_ids); Copiar # CUITs de los contribuyentes tax_ids = [20111111111, 20111111112] taxpayers_details = afip.RegisterInscriptionProof.getTaxpayersDetails(tax_ids) Copiar # CUITs de los contribuyentes tax_ids = [20111111111, 20111111112] taxpayers_details = afip.RegisterInscriptionProof.getTaxpayersDetails(tax_ids) **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** Copiar { "environment": "dev", "method": "getPersonaList_v2", "wsid": "ws_sr_constancia_inscripcion", "params": { "token": "{{token}}", "sign": "{{sign}}", "cuitRepresentada": "20409378472", "idPersona" : [\ 20111111111,\ 20111111112\ ] } } ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/padron-de-constancia-de-inscripcion#obtener-estado-del-servidor) **Obtener estado del servidor** circle-exclamation No te confíes mucho de este método, ARCA siempre devuelve que esta todo bien incluso cuando hay algo fallando. Node PHP Ruby Python API **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** [AnteriorNota de Débito electrónica Cchevron-left](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/nota-de-debito-electronica-c) [SiguientePadrón alcance 10chevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/padron-alcance-10) Última actualización hace 9 meses * [Requisitos previos](https://docs.afipsdk.com/siguientes-pasos/web-services/padron-de-constancia-de-inscripcion#requisitos-previos) * [Obtener datos del contribuyente](https://docs.afipsdk.com/siguientes-pasos/web-services/padron-de-constancia-de-inscripcion#obtener-datos-del-contribuyente) * [Obtener datos de múltiples contribuyentes](https://docs.afipsdk.com/siguientes-pasos/web-services/padron-de-constancia-de-inscripcion#obtener-datos-de-multiples-contribuyentes) * [Obtener estado del servidor](https://docs.afipsdk.com/siguientes-pasos/web-services/padron-de-constancia-de-inscripcion#obtener-estado-del-servidor) Copiar const serverStatus = await afip.RegisterInscriptionProof.getServerStatus(); console.log('Este es el estado del servidor:'); console.log(serverStatus); Copiar $server_status = $afip->RegisterInscriptionProof->GetServerStatus(); echo 'Este es el estado del servidor:'; echo '
';
    print_r($server_status);
    echo '
'; Copiar server_status = afip.RegisterInscriptionProof.getServerStatus puts "Este es el estado del servidor:" puts server_status Copiar server_status = afip.RegisterInscriptionProof.getServerStatus() print("Este es el estado del servidor:") print(server_status) Copiar { "environment": "dev", "method": "dummy", "wsid": "ws_sr_constancia_inscripcion", "params": {} } --- # Remito cárnico | Afip SDK ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/remito-carnico#requisitos-previos) Requisitos previos Para poder usar esta guía, primero necesitarás: * [Integrar Afip SDK en tu proyecto](https://docs.afipsdk.com/#integracion) * * * [https://www.afip.gob.ar/ws/remitoElecCarnico/Manual\_Desarrollador\_WSREMCARNE\_v3\_6.pdfarrow-up-right](https://www.afip.gob.ar/ws/remitoElecCarnico/Manual_Desarrollador_WSREMCARNE_v3_6.pdf) chevron-rightIdentificador wsremcarne[hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/remito-carnico#identificador-wsremcarne) Producción ![Produccion](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-7802dc7235f529779be698c7a7b8c8c011b209df%252F10.png%3Falt%3Dmedia&width=506&dpr=3&quality=100&sign=5f739c3a&sv=2) Desarrollo ![Desarrollo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-25d3eb822e1be73b114a2acc1bc46daf38bee20b%252F10.png%3Falt%3Dmedia&width=300&dpr=3&quality=100&sign=354516d7&sv=2) ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/remito-carnico#paso-1-crear-una-instancia-del-web-service) **Paso 1 - Crear una instancia del web service** Node PHP Ruby Python API Copiar const ws = afip.WebService('wsremcarne'); Copiar $ws = $afip->WebService('wsremcarne'); Copiar ws = afip.webService("wsremcarne") Copiar ws = afip.webService("wsremcarne") No se requiere ninguna acción adicional. ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/remito-carnico#paso-2-preparar-lo-datos-para-la-solicitud) **Paso 2 - Preparar lo datos para la solicitud** En la [Referencia de API de Remito Cárnicoarrow-up-right](https://afipsdk.com/docs/api-reference/web-services/wsremcarne/) pueden encontrar los métodos disponibles En este ejemplo vamos a usar los datos para el método `generarRemito` Node PHP Ruby Python API Copiar // Obtenemos el TA const ta = await ws.getTokenAuthorization(); // Preparamos los datos const data = { 'authRequest': { 'token': ta.token, 'sign': ta.sign, 'cuitRepresentada': afip.CUIT, }, 'idReq': 410, 'remito': { 'tipoComprobante': 995, 'tipoMovimiento': 'ENV', 'categoriaEmisor': 1, 'puntoEmision': 9000, 'cuitTitularMercaderia': 11111111111, 'tipoReceptor': 'MI', 'categoriaReceptor': 3, 'cuitReceptor': 22222222222, 'codDomDestino': 3, 'viaje': { 'cuitTransportista': 33333333333, 'cuitConductor': 44444444444, 'fechaInicioViaje': '2019-02-14', 'distanciaKm': 670, 'vehiculo': { 'dominioVehiculo': 'ARF458' } }, 'arrayMercaderias': [\ {\ 'orden': 1,\ 'codTipoProd': 6.24,\ 'tropa': 121,\ 'kilos': 50,\ 'unidades': 4,\ },\ {\ 'orden': 2,\ 'codTipoProd': 6.9,\ 'tropa': 121,\ 'kilos': 50,\ 'unidades': 0,\ }\ ] } }; No se requiere ninguna acción adicional. ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/remito-carnico#paso-3-ejecutamos-la-solicitud) **Paso 3 - Ejecutamos la solicitud** Node PHP Ruby Python API **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** [AnteriorFactura de Exportaciónchevron-left](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-de-exportacion) [SiguienteOtro web servicechevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/otro-web-service) Última actualización hace 7 meses * [Requisitos previos](https://docs.afipsdk.com/siguientes-pasos/web-services/remito-carnico#requisitos-previos) * [Paso 1 - Crear una instancia del web service](https://docs.afipsdk.com/siguientes-pasos/web-services/remito-carnico#paso-1-crear-una-instancia-del-web-service) * [Paso 2 - Preparar lo datos para la solicitud](https://docs.afipsdk.com/siguientes-pasos/web-services/remito-carnico#paso-2-preparar-lo-datos-para-la-solicitud) * [Paso 3 - Ejecutamos la solicitud](https://docs.afipsdk.com/siguientes-pasos/web-services/remito-carnico#paso-3-ejecutamos-la-solicitud) Copiar // Obtenemos el TA $ta = $ws->GetTokenAuthorization(); // Preparamos los datos $data = array( 'authRequest' => array( 'token' => $ta->token, 'sign' => $ta->sign, 'cuitRepresentada' => $afip->CUIT, ), 'idReq' => 410, 'remito' => array( 'tipoComprobante' => 995, 'tipoMovimiento' => 'ENV', 'categoriaEmisor' => 1, 'puntoEmision' => 9000, 'cuitTitularMercaderia' => 11111111111, 'tipoReceptor' => 'MI', 'categoriaReceptor' => 3, 'cuitReceptor' => 22222222222, 'codDomDestino' => 3, 'viaje' => array( 'cuitTransportista' => 33333333333, 'cuitConductor' => 44444444444, 'fechaInicioViaje' => '2019-02-14', 'distanciaKm' => 670, 'vehiculo' => array( 'dominioVehiculo' => 'ARF458' ) ), 'arrayMercaderias' => array( array( 'orden' => 1, 'codTipoProd' => 6.24, 'tropa' => 121, 'kilos' => 50, 'unidades' => 4, ), array( 'orden' => 2, 'codTipoProd' => 6.9, 'tropa' => 121, 'kilos' => 50, 'unidades' => 0, ) ) ) ); Copiar # Obtenemos el TA ta = ws.getTokenAuthorization # Preparamos los datos data = { "authRequest": { "token": ta["token"], "sign": ta["sign"], "cuitRepresentada": afip.CUIT }, "idReq": 410, "remito": { "tipoComprobante": 995, "tipoMovimiento": "ENV", "categoriaEmisor": 1, "puntoEmision": 9000, "cuitTitularMercaderia": 11111111111, "tipoReceptor": "MI", "categoriaReceptor": 3, "cuitReceptor": 22222222222, "codDomDestino": 3, "viaje": { "cuitTransportista": 33333333333, "cuitConductor": 44444444444, "fechaInicioViaje": "2019-02-14", "distanciaKm": 670, "vehiculo": { "dominioVehiculo": "ARF458" } }, "arrayMercaderias": [\ {\ "orden": 1,\ "codTipoProd": 6.24,\ "tropa": 121,\ "kilos": 50,\ "unidades": 4\ },\ {\ "orden": 2,\ "codTipoProd": 6.9,\ "tropa": 121,\ "kilos": 50,\ "unidades": 0\ }\ ] } } Copiar # Obtenemos el TA ta = ws.getTokenAuthorization() # Preparamos los datos data = { "authRequest": { "token": ta["token"], "sign": ta["sign"], "cuitRepresentada": afip.CUIT }, "idReq": 410, "remito": { "tipoComprobante": 995, "tipoMovimiento": "ENV", "categoriaEmisor": 1, "puntoEmision": 9000, "cuitTitularMercaderia": 11111111111, "tipoReceptor": "MI", "categoriaReceptor": 3, "cuitReceptor": 22222222222, "codDomDestino": 3, "viaje": { "cuitTransportista": 33333333333, "cuitConductor": 44444444444, "fechaInicioViaje": "2019-02-14", "distanciaKm": 670, "vehiculo": { "dominioVehiculo": "ARF458" } }, "arrayMercaderias": [\ {\ "orden": 1,\ "codTipoProd": 6.24,\ "tropa": 121,\ "kilos": 50,\ "unidades": 4\ },\ {\ "orden": 2,\ "codTipoProd": 6.9,\ "tropa": 121,\ "kilos": 50,\ "unidades": 0\ }\ ] } } Copiar const res = await ws.executeRequest('generarRemito', data); console.log(res); Copiar $res = $ws->ExecuteRequest('generarRemito', $data); var_dump($res); Copiar res = ws.executeRequest("generarRemito", data) puts res Copiar res = ws.executeRequest("generarRemito", data) print(res) Copiar { "environment": "dev", "method": "generarRemito", "wsid": "wsremcarne", "params": { "authRequest": { "token": "{{token}}", "sign": "{{sign}}", "cuitRepresentada": "20409378472" }, "idReq": 410, "remito": { "tipoComprobante": 995, "tipoMovimiento": "ENV", "categoriaEmisor": 1, "puntoEmision": 9000, "cuitTitularMercaderia": 11111111111, "tipoReceptor": "MI", "categoriaReceptor": 3, "cuitReceptor": 22222222222, "codDomDestino": 3, "viaje": { "cuitTransportista": 33333333333, "cuitConductor": 44444444444, "fechaInicioViaje": "2019-02-14", "distanciaKm": 670, "vehiculo": { "dominioVehiculo": "ARF458" } }, "arrayMercaderias": [\ {\ "orden": 1,\ "codTipoProd": 6.24,\ "tropa": 121,\ "kilos": 50,\ "unidades": 4\ },\ {\ "orden": 2,\ "codTipoProd": 6.9,\ "tropa": 121,\ "kilos": 50,\ "unidades": 0\ }\ ] } } } --- # Código QR | Afip SDK [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/codigo-qr#paso-1-armar-el-texto-que-lleva-el-qr) Paso 1 - Armar el texto que lleva el QR ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- El texto del QR se arma siguiendo la siguiente especificación [https://www.afip.gob.ar/fe/qr/documentos/QRespecificaciones.pdfarrow-up-right](https://www.afip.gob.ar/fe/qr/documentos/QRespecificaciones.pdf) [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/codigo-qr#paso-2-generar-la-imagen-del-qr) Paso 2 - Generar la imagen del QR ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- Una vez tenemos el texto para el QR nos queda generar la imagen, esto se puede hacer con cualquier librería Open Source Node PHP Ruby Python API [https://www.npmjs.com/package/qrcodewww.npmjs.comchevron-right](https://www.npmjs.com/package/qrcode) [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fgithub.com%2Ffluidicon.png&width=20&dpr=3&quality=100&sign=b29cf9f1&sv=2)GitHub - endroid/qr-code: PHP QR Code library that helps you create QR codes in a jiffyGitHubchevron-right](https://github.com/endroid/qr-code) [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fgithub.com%2Ffluidicon.png&width=20&dpr=3&quality=100&sign=b29cf9f1&sv=2)GitHub - whomwah/rqrcode: A Ruby library that encodes QR CodesGitHubchevron-right](https://github.com/whomwah/rqrcode) [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fgithub.com%2Ffluidicon.png&width=20&dpr=3&quality=100&sign=b29cf9f1&sv=2)GitHub - heuer/segno: Python QR Code and Micro QR Code encoderGitHubchevron-right](https://github.com/heuer/segno) Esto dependerá del lenguaje o plataforma que estén utilizando. Eso es todo, este QR se lo agregas al comprobante que le presentes al cliente [AnteriorCrear PDFchevron-left](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/crear-pdf) [SiguienteFactura Achevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/factura-a) Última actualización hace 1 año * [Paso 1 - Armar el texto que lleva el QR](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/codigo-qr#paso-1-armar-el-texto-que-lleva-el-qr) * [Paso 2 - Generar la imagen del QR](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/codigo-qr#paso-2-generar-la-imagen-del-qr) --- # Factura C | Afip SDK Node PHP Ruby Python API Copiar (async () => { /** * Numero del punto de venta **/ const punto_de_venta = 1; /** * Tipo de factura **/ const tipo_de_factura = 11; // 11 = Factura C /** * Número de la ultima Factura C **/ const last_voucher = await afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_factura); /** * Concepto de la factura * * Opciones: * * 1 = Productos * 2 = Servicios * 3 = Productos y Servicios **/ const concepto = 1; /** * Tipo de documento del comprador * * Opciones: * * 80 = CUIT * 86 = CUIL * 96 = DNI * 99 = Consumidor Final **/ const tipo_de_documento = 80; /** * Numero de documento del comprador (0 para consumidor final) **/ const numero_de_documento = 33693450239; /** * Numero de factura **/ const numero_de_factura = last_voucher+1; /** * Fecha de la factura en formato aaaa-mm-dd (hasta 10 dias antes y 10 dias despues) **/ const fecha = new Date(Date.now() - ((new Date()).getTimezoneOffset() * 60000)).toISOString().split('T')[0]; /** * Importe de la Factura **/ const importe_total = 100; /** * Condición frente al IVA del receptor * * 1 = IVA Responsable Inscripto * 4 = IVA Sujeto Exento * 5 = Consumidor Final * 6 = Responsable Monotributo * 7 = Sujeto No Categorizado * 8 = Proveedor del Exterior * 9 = Cliente del Exterior * 10 = IVA Liberado – Ley N° 19.640 * 13 = Monotributista Social * 15 = IVA No Alcanzado * 16 = Monotributo Trabajador Independiente Promovido **/ const condicion_iva_receptor = 6; /** * Los siguientes campos solo son obligatorios para los conceptos 2 y 3 **/ let fecha_servicio_desde = null, fecha_servicio_hasta = null, fecha_vencimiento_pago = null; if (concepto === 2 || concepto === 3) { /** * Fecha de inicio de servicio en formato aaaammdd **/ const fecha_servicio_desde = 20191213; /** * Fecha de fin de servicio en formato aaaammdd **/ const fecha_servicio_hasta = 20191213; /** * Fecha de vencimiento del pago en formato aaaammdd **/ const fecha_vencimiento_pago = 20191213; } const data = { 'CantReg' : 1, // Cantidad de facturas a registrar 'PtoVta' : punto_de_venta, 'CbteTipo' : tipo_de_factura, 'Concepto' : concepto, 'DocTipo' : tipo_de_documento, 'DocNro' : numero_de_documento, 'CbteDesde' : numero_de_factura, 'CbteHasta' : numero_de_factura, 'CbteFch' : parseInt(fecha.replace(/-/g, '')), 'FchServDesde' : fecha_servicio_desde, 'FchServHasta' : fecha_servicio_hasta, 'FchVtoPago' : fecha_vencimiento_pago, 'ImpTotal' : importe_total, 'ImpTotConc': 0, // Importe neto no gravado 'ImpNeto' : importe_total, 'ImpOpEx' : 0, 'ImpIVA' : 0, 'ImpTrib' : 0, //Importe total de tributos 'MonId' : 'PES', //Tipo de moneda usada en la factura ('PES' = pesos argentinos) 'MonCotiz' : 1, // Cotización de la moneda usada (1 para pesos argentinos) 'CondicionIVAReceptorId' : condicion_iva_receptor, }; /** * Creamos la Factura **/ const res = await afip.ElectronicBilling.createVoucher(data); /** * Mostramos por pantalla los datos de la nueva Factura **/ console.log({ 'cae' : res.CAE, //CAE asignado a la Factura 'vencimiento' : res.CAEFchVto //Fecha de vencimiento del CAE }); })() **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** [AnteriorFactura Bchevron-left](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/factura-b) [SiguienteNota de Crédito Achevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/nota-de-credito-a) Última actualización hace 8 meses Copiar /** * Numero del punto de venta **/ $punto_de_venta = 1; /** * Tipo de factura **/ $tipo_de_comprobante = 11; // 11 = Factura C /** * Número de la ultima Factura C **/ $last_voucher = $afip->ElectronicBilling->GetLastVoucher($punto_de_venta, $tipo_de_comprobante); /** * Concepto de la factura * * Opciones: * * 1 = Productos * 2 = Servicios * 3 = Productos y Servicios **/ $concepto = 1; /** * Tipo de documento del comprador * * Opciones: * * 80 = CUIT * 86 = CUIL * 96 = DNI * 99 = Consumidor Final **/ $tipo_de_documento = 80; /** * Numero de documento del comprador (0 para consumidor final) **/ $numero_de_documento = 33693450239; /** * Numero de comprobante **/ $numero_de_factura = $last_voucher+1; /** * Fecha de la factura en formato aaaa-mm-dd (hasta 10 dias antes y 10 dias despues) **/ $fecha = date('Y-m-d'); /** * Importe de la Factura **/ $importe_total = 100; /** * Condición frente al IVA del receptor * * Opciones: * * 1 = IVA Responsable Inscripto * 4 = IVA Sujeto Exento * 5 = Consumidor Final * 6 = Responsable Monotributo * 7 = Sujeto No Categorizado * 8 = Proveedor del Exterior * 9 = Cliente del Exterior * 10 = IVA Liberado – Ley N° 19.640 * 13 = Monotributista Social * 15 = IVA No Alcanzado * 16 = Monotributo Trabajador Independiente Promovido **/ $condicion_iva_receptor = 6; /** * Los siguientes campos solo son obligatorios para los conceptos 2 y 3 **/ if ($concepto === 2 || $concepto === 3) { /** * Fecha de inicio de servicio en formato aaaammdd **/ $fecha_servicio_desde = intval(date('Ymd')); /** * Fecha de fin de servicio en formato aaaammdd **/ $fecha_servicio_hasta = intval(date('Ymd')); /** * Fecha de vencimiento del pago en formato aaaammdd **/ $fecha_vencimiento_pago = intval(date('Ymd')); } else { $fecha_servicio_desde = null; $fecha_servicio_hasta = null; $fecha_vencimiento_pago = null; } $data = array( 'CantReg' => 1, // Cantidad de facturas a registrar 'PtoVta' => $punto_de_venta, 'CbteTipo' => $tipo_de_comprobante, 'Concepto' => $concepto, 'DocTipo' => $tipo_de_documento, 'DocNro' => $numero_de_documento, 'CbteDesde' => $numero_de_factura, 'CbteHasta' => $numero_de_factura, 'CbteFch' => intval(str_replace('-', '', $fecha)), 'FchServDesde' => $fecha_servicio_desde, 'FchServHasta' => $fecha_servicio_hasta, 'FchVtoPago' => $fecha_vencimiento_pago, 'ImpTotal' => $importe_total, 'ImpTotConc'=> 0, // Importe neto no gravado 'ImpNeto' => $importe_total, // Importe neto 'ImpOpEx' => 0, // Importe exento al IVA 'ImpIVA' => 0, // Importe de IVA 'ImpTrib' => 0, //Importe total de tributos 'MonId' => 'PES', //Tipo de moneda usada en la factura ('PES' = pesos argentinos) 'MonCotiz' => 1, // Cotización de la moneda usada (1 para pesos argentinos) 'CondicionIVAReceptorId' => $condicion_iva_receptor, ); /** * Creamos la Factura **/ $res = $afip->ElectronicBilling->CreateVoucher($data); /** * Mostramos por pantalla los datos de la nueva Factura **/ var_dump(array( 'cae' => $res['CAE'], //CAE asignado a la Factura 'vencimiento' => $res['CAEFchVto'] //Fecha de vencimiento del CAE )); Copiar require "date" # Numero del punto de venta punto_de_venta = 1 # Tipo de factura tipo_de_factura = 11 # 11 = Factura c # Número de la ultima Factura c last_voucher = afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_factura) # Concepto de la factura # # Opciones: # # 1 = Productos # 2 = Servicios # 3 = Productos y Servicios concepto = 1 # Tipo de documento del comprador # # Opciones: # # 80 = CUIT # 86 = CUIL # 96 = DNI # 99 = Consumidor Final tipo_de_documento = 80 # Numero de documento del comprador (0 para consumidor final) numero_de_documento = 33693450239 # Numero de factura numero_de_factura = last_voucher+1 # Fecha de la factura en formato aaaammdd (hasta 10 dias antes y 10 dias despues) fecha = Time.now.strftime("%Y%m%d").to_i # Importe de la Factura importe_total = 100 # Condición frente al IVA del receptor # # Opciones: # # 1 = IVA Responsable Inscripto # 4 = IVA Sujeto Exento # 5 = Consumidor Final # 6 = Responsable Monotributo # 7 = Sujeto No Categorizado # 8 = Proveedor del Exterior # 9 = Cliente del Exterior # 10 = IVA Liberado – Ley N° 19.640 # 13 = Monotributista Social # 15 = IVA No Alcanzado # 16 = Monotributo Trabajador Independiente Promovido condicion_iva_receptor = 6 # Los siguientes campos solo son obligatorios para los conceptos 2 y 3 if concepto == 2 || concepto == 3 # Fecha de inicio de servicio en formato aaaammdd fecha_servicio_desde = Time.now.strftime("%Y%m%d").to_i # Fecha de fin de servicio en formato aaaammdd fecha_servicio_hasta = Time.now.strftime("%Y%m%d").to_i # Fecha de vencimiento del pago en formato aaaammdd fecha_vencimiento_pago = Time.now.strftime("%Y%m%d").to_i else fecha_servicio_desde = nil fecha_servicio_hasta = nil fecha_vencimiento_pago = nil end data = { "CantReg": 1, # Cantidad de facturas a registrar "PtoVta": punto_de_venta, "CbteTipo": tipo_de_factura, "Concepto": concepto, "DocTipo": tipo_de_documento, "DocNro": numero_de_documento, "CbteDesde": numero_de_factura, "CbteHasta": numero_de_factura, "CbteFch": fecha, "FchServDesde": fecha_servicio_desde, "FchServHasta": fecha_servicio_hasta, "FchVtoPago": fecha_vencimiento_pago, "ImpTotal": importe_total, "ImpTotConc": 0, # Importe neto no gravado "ImpNeto": importe_total, "ImpOpEx": 0, "ImpIVA": 0, "ImpTrib": 0, # Importe total de tributos "MonId": "PES", # Tipo de moneda usada en la factura ("PES" = pesos argentinos) "MonCotiz": 1, # Cotización de la moneda usada (1 para pesos argentinos) "CondicionIVAReceptorId" : condicion_iva_receptor } # Creamos la Factura res = afip.ElectronicBilling.createVoucher(data) # Mostramos por pantalla los datos de la nueva Factura puts { "cae": res["CAE"], # CAE asignado a la Factura "vencimiento": res["CAEFchVto"] # Fecha de vencimiento del CAE } Copiar from datetime import datetime # Numero del punto de venta punto_de_venta = 1 # Tipo de factura tipo_de_factura = 11 # 11 = Factura c # Número de la ultima Factura c last_voucher = afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_factura) # Concepto de la factura # # Opciones: # # 1 = Productos # 2 = Servicios # 3 = Productos y Servicios concepto = 1 # Tipo de documento del comprador # # Opciones: # # 80 = CUIT # 86 = CUIL # 96 = DNI # 99 = Consumidor Final tipo_de_documento = 80 # Numero de documento del comprador (0 para consumidor final) numero_de_documento = 33693450239 # Numero de factura numero_de_factura = last_voucher+1 # Fecha de la factura en formato aaaammdd (hasta 10 dias antes y 10 dias despues) fecha = int(datetime.today().strftime("%Y%m%d")) # Importe de la Factura importe_total = 100 # Condición frente al IVA del receptor # # Opciones: # # 1 = IVA Responsable Inscripto # 4 = IVA Sujeto Exento # 5 = Consumidor Final # 6 = Responsable Monotributo # 7 = Sujeto No Categorizado # 8 = Proveedor del Exterior # 9 = Cliente del Exterior # 10 = IVA Liberado – Ley N° 19.640 # 13 = Monotributista Social # 15 = IVA No Alcanzado # 16 = Monotributo Trabajador Independiente Promovido condicion_iva_receptor = 6 # Los siguientes campos solo son obligatorios para los conceptos 2 y 3 if concepto == 2 or concepto == 3: # Fecha de inicio de servicio en formato aaaammdd fecha_servicio_desde = int(datetime.today().strftime("%Y%m%d")) # Fecha de fin de servicio en formato aaaammdd fecha_servicio_hasta = int(datetime.today().strftime("%Y%m%d")) # Fecha de vencimiento del pago en formato aaaammdd fecha_vencimiento_pago = int(datetime.today().strftime("%Y%m%d")) else: fecha_servicio_desde = None fecha_servicio_hasta = None fecha_vencimiento_pago = None data = { "CantReg": 1, # Cantidad de facturas a registrar "PtoVta": punto_de_venta, "CbteTipo": tipo_de_factura, "Concepto": concepto, "DocTipo": tipo_de_documento, "DocNro": numero_de_documento, "CbteDesde": numero_de_factura, "CbteHasta": numero_de_factura, "CbteFch": fecha, "FchServDesde": fecha_servicio_desde, "FchServHasta": fecha_servicio_hasta, "FchVtoPago": fecha_vencimiento_pago, "ImpTotal": importe_total, "ImpTotConc": 0, # Importe neto no gravado "ImpNeto": importe_total, "ImpOpEx": 0, "ImpIVA": 0, "ImpTrib": 0, # Importe total de tributos "MonId": "PES", # Tipo de moneda usada en la factura ("PES" = pesos argentinos) "MonCotiz": 1, # Cotización de la moneda usada (1 para pesos argentinos) "CondicionIVAReceptorId" : condicion_iva_receptor } # Creamos la Factura res = afip.ElectronicBilling.createVoucher(data) # Mostramos por pantalla los datos de la nueva Factura print({ "cae": res["CAE"], # CAE asignado a la Factura "vencimiento": res["CAEFchVto"] # Fecha de vencimiento del CAE }) Copiar { "environment": "dev", "method": "FECAESolicitar", "wsid": "wsfe", "params": { "Auth" : { "Token": "{{token}}", "Sign": "{{sign}}", "Cuit": "20409378472" }, "FeCAEReq" : { "FeCabReq": { "CantReg": 1, "PtoVta": 1, "CbteTipo": 11 }, "FeDetReq": { "FECAEDetRequest": { "Concepto": 1, "DocTipo": 80, "DocNro": 33693450239, "CbteDesde": 327, "CbteHasta": 327, "CbteFch": 20240314, "FchServDesde": null, "FchServHasta": null, "FchVtoPago": null, "ImpTotal": 100, "ImpTotConc": 0, "ImpNeto": 100, "ImpOpEx": 0, "ImpIVA": 0, "ImpTrib": 0, "MonId": "PES", "MonCotiz": 1, "CondicionIVAReceptorId": 6 } } } } } --- # Nota de Débito C | Afip SDK Node PHP Ruby Python API Copiar (async () => { /** * Numero del punto de venta **/ const punto_de_venta = 1; /** * Tipo de factura **/ const tipo_de_nota = 12; // 12 = Nota de Débito C /** * Número de la ultima Nota de Débito C **/ const last_voucher = await afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_nota); /** * Numero del punto de venta de la Factura * asociada a la Nota de Débito **/ const punto_factura_asociada = 1; /** * Tipo de Factura asociada a la Nota de Débito **/ const tipo_factura_asociada = 11; // 11 = Factura C /** * Numero de Factura asociada a la Nota de Débito **/ const numero_factura_asociada = 1; /** * Concepto de la factura * * Opciones: * * 1 = Productos * 2 = Servicios * 3 = Productos y Servicios **/ const concepto = 1; /** * Tipo de documento del comprador * * Opciones: * * 80 = CUIT * 86 = CUIL * 96 = DNI * 99 = Consumidor Final **/ const tipo_de_documento = 80; /** * Numero de documento del comprador (0 para consumidor final) **/ const numero_de_documento = 33693450239; /** * Numero de Nota de Débito **/ const numero_de_nota = last_voucher+1; /** * Fecha de la Nota de Débito en formato aaaa-mm-dd (hasta 10 dias antes y 10 dias despues) **/ const fecha = new Date(Date.now() - ((new Date()).getTimezoneOffset() * 60000)).toISOString().split('T')[0]; /** * Importe de la Nota de Débito **/ const importe_total = 100; /** * Condición frente al IVA del receptor * * 1 = IVA Responsable Inscripto * 4 = IVA Sujeto Exento * 5 = Consumidor Final * 6 = Responsable Monotributo * 7 = Sujeto No Categorizado * 8 = Proveedor del Exterior * 9 = Cliente del Exterior * 10 = IVA Liberado – Ley N° 19.640 * 13 = Monotributista Social * 15 = IVA No Alcanzado * 16 = Monotributo Trabajador Independiente Promovido **/ const condicion_iva_receptor = 6; /** * Los siguientes campos solo son obligatorios para los conceptos 2 y 3 **/ let fecha_servicio_desde = null, fecha_servicio_hasta = null, fecha_vencimiento_pago = null; if (concepto === 2 || concepto === 3) { /** * Fecha de inicio de servicio en formato aaaammdd **/ const fecha_servicio_desde = 20191213; /** * Fecha de fin de servicio en formato aaaammdd **/ const fecha_servicio_hasta = 20191213; /** * Fecha de vencimiento del pago en formato aaaammdd **/ const fecha_vencimiento_pago = 20191213; } const data = { 'CantReg' : 1, // Cantidad de Notas de Crédito a registrar 'PtoVta' : punto_de_venta, 'CbteTipo' : tipo_de_nota, 'Concepto' : concepto, 'DocTipo' : tipo_de_documento, 'DocNro' : numero_de_documento, 'CbteDesde' : numero_de_nota, 'CbteHasta' : numero_de_nota, 'CbteFch' : parseInt(fecha.replace(/-/g, '')), 'FchServDesde' : fecha_servicio_desde, 'FchServHasta' : fecha_servicio_hasta, 'FchVtoPago' : fecha_vencimiento_pago, 'ImpTotal' : importe_total, 'ImpTotConc': 0, // Importe neto no gravado 'ImpNeto' : importe_total, 'ImpOpEx' : 0, 'ImpIVA' : 0, 'ImpTrib' : 0, //Importe total de tributos 'MonId' : 'PES', //Tipo de moneda usada ('PES' = pesos argentinos) 'MonCotiz' : 1, // Cotización de la moneda usada (1 para pesos argentinos) 'CondicionIVAReceptorId' : condicion_iva_receptor, 'CbtesAsoc' : [ //Factura asociada\ {\ 'Tipo' : tipo_factura_asociada,\ 'PtoVta' : punto_factura_asociada,\ 'Nro' : numero_factura_asociada,\ }\ ] }; /** * Creamos la Factura **/ const res = await afip.ElectronicBilling.createVoucher(data); /** * Mostramos por pantalla los datos de la nueva Factura **/ console.log({ 'cae' : res.CAE, //CAE asignado a la Factura 'vencimiento' : res.CAEFchVto //Fecha de vencimiento del CAE }); })() **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** [AnteriorNota de Débito Bchevron-left](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/nota-de-debito-b) [SiguienteFactura de Crédito electrónica Achevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/factura-de-credito-electronica-a) Última actualización hace 7 días Copiar /** * Numero del punto de venta **/ $punto_de_venta = 1; /** * Tipo de Nota de Débito **/ $tipo_de_nota = 12; // 12 = Nota de Débito C /** * Número de la ultima Nota de Débito C **/ $last_voucher = $afip->ElectronicBilling->GetLastVoucher($punto_de_venta, $tipo_de_nota); /** * Numero del punto de venta de la Factura * asociada a la Nota de Débito **/ $punto_factura_asociada = 1; /** * Tipo de Factura asociada a la Nota de Débito **/ $tipo_factura_asociada = 11; // 11 = Factura C /** * Numero de Factura asociada a la Nota de Débito **/ $numero_factura_asociada = 1; /** * Concepto de la Nota de Débito * * Opciones: * * 1 = Productos * 2 = Servicios * 3 = Productos y Servicios **/ $concepto = 1; /** * Tipo de documento del comprador * * Opciones: * * 80 = CUIT * 86 = CUIL * 96 = DNI * 99 = Consumidor Final **/ $tipo_de_documento = 80; /** * Numero de documento del comprador (0 para consumidor final) **/ $numero_de_documento = 33693450239; /** * Numero de comprobante **/ $numero_de_nota = $last_voucher+1; /** * Fecha de la Nota de Débito en formato aaaa-mm-dd (hasta 10 dias antes y 10 dias despues) **/ $fecha = date('Y-m-d'); /** * Importe de la Nota de Débito **/ $importe_total = 100; /** * Condición frente al IVA del receptor * * Opciones: * * 1 = IVA Responsable Inscripto * 4 = IVA Sujeto Exento * 5 = Consumidor Final * 6 = Responsable Monotributo * 7 = Sujeto No Categorizado * 8 = Proveedor del Exterior * 9 = Cliente del Exterior * 10 = IVA Liberado – Ley N° 19.640 * 13 = Monotributista Social * 15 = IVA No Alcanzado * 16 = Monotributo Trabajador Independiente Promovido **/ $condicion_iva_receptor = 6; /** * Los siguientes campos solo son obligatorios para los conceptos 2 y 3 **/ if ($concepto === 2 || $concepto === 3) { /** * Fecha de inicio de servicio en formato aaaammdd **/ $fecha_servicio_desde = intval(date('Ymd')); /** * Fecha de fin de servicio en formato aaaammdd **/ $fecha_servicio_hasta = intval(date('Ymd')); /** * Fecha de vencimiento del pago en formato aaaammdd **/ $fecha_vencimiento_pago = intval(date('Ymd')); } else { $fecha_servicio_desde = null; $fecha_servicio_hasta = null; $fecha_vencimiento_pago = null; } $data = array( 'CantReg' => 1, // Cantidad de Notas de Crédito a registrar 'PtoVta' => $punto_de_venta, 'CbteTipo' => $tipo_de_nota, 'Concepto' => $concepto, 'DocTipo' => $tipo_de_documento, 'DocNro' => $numero_de_documento, 'CbteDesde' => $numero_de_nota, 'CbteHasta' => $numero_de_nota, 'CbteFch' => intval(str_replace('-', '', $fecha)), 'FchServDesde' => $fecha_servicio_desde, 'FchServHasta' => $fecha_servicio_hasta, 'FchVtoPago' => $fecha_vencimiento_pago, 'ImpTotal' => $importe_total, 'ImpTotConc'=> 0, // Importe neto no gravado 'ImpNeto' => $importe_total, // Importe neto 'ImpOpEx' => 0, // Importe exento al IVA 'ImpIVA' => 0, // Importe de IVA 'ImpTrib' => 0, //Importe total de tributos 'MonId' => 'PES', //Tipo de moneda usada en el comprobante ('PES' = pesos argentinos) 'MonCotiz' => 1, // Cotización de la moneda usada (1 para pesos argentinos) 'CondicionIVAReceptorId' => $condicion_iva_receptor, 'CbtesAsoc' => array( //Factura asociada array( 'Tipo' => $tipo_factura_asociada, 'PtoVta' => $punto_factura_asociada, 'Nro' => $numero_factura_asociada, ) ) ); /** * Creamos la Nota de Débito **/ $res = $afip->ElectronicBilling->CreateVoucher($data); /** * Mostramos por pantalla los datos de la nueva Nota de Débito **/ var_dump(array( 'cae' => $res['CAE'], //CAE asignado a la Nota de Débito 'vencimiento' => $res['CAEFchVto'] //Fecha de vencimiento del CAE )); Copiar require "date" # Numero del punto de venta punto_de_venta = 1 # Tipo de factura tipo_de_nota = 12 # 12 = Nota de Débito C # Número de la ultima Nota de Débito C last_voucher = afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_nota) # Numero del punto de venta de la Factura # asociada a la Nota de Débito punto_factura_asociada = 1 # Tipo de Factura asociada a la Nota de Débito tipo_factura_asociada = 11 # 11 = Factura B # Numero de Factura asociada a la Nota de Débito numero_factura_asociada = 1 # Concepto de la factura # # Opciones: # # 1 = Productos # 2 = Servicios # 3 = Productos y Servicios concepto = 1 # Tipo de documento del comprador # # Opciones: # # 80 = CUIT # 86 = CUIL # 96 = DNI # 99 = Consumidor Final tipo_de_documento = 80 # Numero de documento del comprador (0 para consumidor final) numero_de_documento = 33693450239 # Numero de Nota de Débito numero_de_nota = last_voucher+1 # Fecha de la Nota de Débito en formato aaaammdd (hasta 10 dias antes y 10 dias despues) fecha = Time.now.strftime("%Y%m%d").to_i # Importe de la Nota de Débito importe_total = 100 # Condición frente al IVA del receptor # # Opciones: # # 1 = IVA Responsable Inscripto # 4 = IVA Sujeto Exento # 5 = Consumidor Final # 6 = Responsable Monotributo # 7 = Sujeto No Categorizado # 8 = Proveedor del Exterior # 9 = Cliente del Exterior # 10 = IVA Liberado – Ley N° 19.640 # 13 = Monotributista Social # 15 = IVA No Alcanzado # 16 = Monotributo Trabajador Independiente Promovido condicion_iva_receptor = 6 # Los siguientes campos solo son obligatorios para los conceptos 2 y 3 if concepto == 2 || concepto == 3 # Fecha de inicio de servicio en formato aaaammdd fecha_servicio_desde = 20191213 # Fecha de fin de servicio en formato aaaammdd fecha_servicio_hasta = 20191213 # Fecha de vencimiento del pago en formato aaaammdd fecha_vencimiento_pago = 20191213 else fecha_servicio_desde = nil fecha_servicio_hasta = nil fecha_vencimiento_pago = nil end data = { "CantReg": 1, # Cantidad de Notas de Crédito a registrar "PtoVta": punto_de_venta, "CbteTipo": tipo_de_nota, "Concepto": concepto, "DocTipo": tipo_de_documento, "DocNro": numero_de_documento, "CbteDesde": numero_de_nota, "CbteHasta": numero_de_nota, "CbteFch": fecha, "FchServDesde": fecha_servicio_desde, "FchServHasta": fecha_servicio_hasta, "FchVtoPago": fecha_vencimiento_pago, "ImpTotal": importe_total, "ImpTotConc": 0, # Importe neto no gravado "ImpNeto": importe_total, "ImpOpEx": 0, "ImpIVA": 0, "ImpTrib": 0, # Importe total de tributos "MonId": "PES", # Tipo de moneda usada ("PES" = pesos argentinos) "MonCotiz": 1, # Cotización de la moneda usada (1 para pesos argentinos) "CondicionIVAReceptorId" : condicion_iva_receptor, "CbtesAsoc": [ # Factura asociada\ {\ "Tipo": tipo_factura_asociada,\ "PtoVta": punto_factura_asociada,\ "Nro": numero_factura_asociada,\ }\ ] } # Creamos la Factura res = afip.ElectronicBilling.createVoucher(data) # Mostramos por pantalla los datos de la nueva Factura puts { "cae": res["CAE"], # CAE asignado a la Factura "vencimiento": res["CAEFchVto"] # Fecha de vencimiento del CAE } Copiar from datetime import datetime # Numero del punto de venta punto_de_venta = 1 # Tipo de factura tipo_de_nota = 12 # 12 = Nota de Débito C # Número de la ultima Nota de Débito C last_voucher = afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_nota) # Numero del punto de venta de la Factura # asociada a la Nota de Débito punto_factura_asociada = 1 # Tipo de Factura asociada a la Nota de Débito tipo_factura_asociada = 11 # 11 = Factura B # Numero de Factura asociada a la Nota de Débito numero_factura_asociada = 1 # Concepto de la factura # # Opciones: # # 1 = Productos # 2 = Servicios # 3 = Productos y Servicios concepto = 1 # Tipo de documento del comprador # # Opciones: # # 80 = CUIT # 86 = CUIL # 96 = DNI # 99 = Consumidor Final tipo_de_documento = 80 # Numero de documento del comprador (0 para consumidor final) numero_de_documento = 33693450239 # Numero de Nota de Débito numero_de_nota = last_voucher+1 # Fecha de la Nota de Débito en formato aaaammdd (hasta 10 dias antes y 10 dias despues) fecha = int(datetime.today().strftime("%Y%m%d")) # Importe de la Nota de Débito importe_total = 100 # Condición frente al IVA del receptor # # Opciones: # # 1 = IVA Responsable Inscripto # 4 = IVA Sujeto Exento # 5 = Consumidor Final # 6 = Responsable Monotributo # 7 = Sujeto No Categorizado # 8 = Proveedor del Exterior # 9 = Cliente del Exterior # 10 = IVA Liberado – Ley N° 19.640 # 13 = Monotributista Social # 15 = IVA No Alcanzado # 16 = Monotributo Trabajador Independiente Promovido condicion_iva_receptor = 6 # Los siguientes campos solo son obligatorios para los conceptos 2 y 3 if concepto == 2 or concepto == 3: # Fecha de inicio de servicio en formato aaaammdd fecha_servicio_desde = 20191213 # Fecha de fin de servicio en formato aaaammdd fecha_servicio_hasta = 20191213 # Fecha de vencimiento del pago en formato aaaammdd fecha_vencimiento_pago = 20191213 else: fecha_servicio_desde = None fecha_servicio_hasta = None fecha_vencimiento_pago = None data = { "CantReg": 1, # Cantidad de Notas de Crédito a registrar "PtoVta": punto_de_venta, "CbteTipo": tipo_de_nota, "Concepto": concepto, "DocTipo": tipo_de_documento, "DocNro": numero_de_documento, "CbteDesde": numero_de_nota, "CbteHasta": numero_de_nota, "CbteFch": fecha, "FchServDesde": fecha_servicio_desde, "FchServHasta": fecha_servicio_hasta, "FchVtoPago": fecha_vencimiento_pago, "ImpTotal": importe_total, "ImpTotConc": 0, # Importe neto no gravado "ImpNeto": importe_total, "ImpOpEx": 0, "ImpIVA": 0, "ImpTrib": 0, # Importe total de tributos "MonId": "PES", # Tipo de moneda usada ("PES" = pesos argentinos) "MonCotiz": 1, # Cotización de la moneda usada (1 para pesos argentinos) "CondicionIVAReceptorId" : condicion_iva_receptor, "CbtesAsoc": [ # Factura asociada\ {\ "Tipo": tipo_factura_asociada,\ "PtoVta": punto_factura_asociada,\ "Nro": numero_factura_asociada,\ }\ ] } # Creamos la Factura res = afip.ElectronicBilling.createVoucher(data) # Mostramos por pantalla los datos de la nueva Factura print({ "cae": res["CAE"], # CAE asignado a la Factura "vencimiento": res["CAEFchVto"] # Fecha de vencimiento del CAE }) Copiar { "environment": "dev", "method": "FECAESolicitar", "wsid": "wsfe", "params": { "Auth": { "Token": "{{token}}", "Sign": "{{sign}}", "Cuit": "20409378472" }, "FeCAEReq": { "FeCabReq": { "CantReg": 1, "PtoVta": 1, "CbteTipo": 12 }, "FeDetReq": { "FECAEDetRequest": { "Concepto": 1, "DocTipo": 80, "DocNro": 33693450239, "CbteDesde": 9, "CbteHasta": 9, "CbteFch": 20240314, "FchServDesde": null, "FchServHasta": null, "FchVtoPago": null, "ImpTotal": 100, "ImpTotConc": 0, "ImpNeto": 100, "ImpOpEx": 0, "ImpIVA": 0, "ImpTrib": 0, "MonId": "PES", "MonCotiz": 1, "CondicionIVAReceptorId": 6, "CbtesAsoc": { "CbteAsoc": [\ {\ "Tipo": 11,\ "PtoVta": 1,\ "Nro": 1\ }\ ] } } } } } } --- # Factura B | Afip SDK Node PHP Ruby Python API Copiar (async () => { /** * Numero del punto de venta **/ const punto_de_venta = 1; /** * Tipo de factura **/ const tipo_de_factura = 6; // 6 = Factura B /** * Número de la ultima Factura B **/ const last_voucher = await afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_factura); /** * Concepto de la factura * * Opciones: * * 1 = Productos * 2 = Servicios * 3 = Productos y Servicios **/ const concepto = 1; /** * Tipo de documento del comprador * * Opciones: * * 80 = CUIT * 86 = CUIL * 96 = DNI * 99 = Consumidor Final **/ const tipo_de_documento = 99; /** * Numero de documento del comprador (0 para consumidor final) **/ const numero_de_documento = 0; /** * Numero de factura **/ const numero_de_factura = last_voucher+1; /** * Fecha de la factura en formato aaaa-mm-dd (hasta 10 dias antes y 10 dias despues) **/ const fecha = new Date(Date.now() - ((new Date()).getTimezoneOffset() * 60000)).toISOString().split('T')[0]; /** * Importe sujeto al IVA (sin icluir IVA) **/ const importe_gravado = 100; /** * Importe exento al IVA **/ const importe_exento_iva = 0; /** * Importe de IVA **/ const importe_iva = 21; /** * Condición frente al IVA del receptor * * 1 = IVA Responsable Inscripto * 4 = IVA Sujeto Exento * 5 = Consumidor Final * 6 = Responsable Monotributo * 7 = Sujeto No Categorizado * 8 = Proveedor del Exterior * 9 = Cliente del Exterior * 10 = IVA Liberado – Ley N° 19.640 * 13 = Monotributista Social * 15 = IVA No Alcanzado * 16 = Monotributo Trabajador Independiente Promovido **/ const condicion_iva_receptor = 5; /** * Los siguientes campos solo son obligatorios para los conceptos 2 y 3 **/ let fecha_servicio_desde = null, fecha_servicio_hasta = null, fecha_vencimiento_pago = null; if (concepto === 2 || concepto === 3) { /** * Fecha de inicio de servicio en formato aaaammdd **/ const fecha_servicio_desde = 20191213; /** * Fecha de fin de servicio en formato aaaammdd **/ const fecha_servicio_hasta = 20191213; /** * Fecha de vencimiento del pago en formato aaaammdd **/ const fecha_vencimiento_pago = 20191213; } const data = { 'CantReg' : 1, // Cantidad de facturas a registrar 'PtoVta' : punto_de_venta, 'CbteTipo' : tipo_de_factura, 'Concepto' : concepto, 'DocTipo' : tipo_de_documento, 'DocNro' : numero_de_documento, 'CbteDesde' : numero_de_factura, 'CbteHasta' : numero_de_factura, 'CbteFch' : parseInt(fecha.replace(/-/g, '')), 'FchServDesde' : fecha_servicio_desde, 'FchServHasta' : fecha_servicio_hasta, 'FchVtoPago' : fecha_vencimiento_pago, 'ImpTotal' : importe_gravado + importe_iva + importe_exento_iva, 'ImpTotConc': 0, // Importe neto no gravado 'ImpNeto' : importe_gravado, 'ImpOpEx' : importe_exento_iva, 'ImpIVA' : importe_iva, 'ImpTrib' : 0, //Importe total de tributos 'MonId' : 'PES', //Tipo de moneda usada en la factura ('PES' = pesos argentinos) 'MonCotiz' : 1, // Cotización de la moneda usada (1 para pesos argentinos) 'CondicionIVAReceptorId' : condicion_iva_receptor, 'Iva' : [ // Alícuotas asociadas a la factura\ {\ 'Id' : 5, // Id del tipo de IVA (5 = 21%)\ 'BaseImp' : importe_gravado,\ 'Importe' : importe_iva \ }\ ] }; /** * Creamos la Factura **/ const res = await afip.ElectronicBilling.createVoucher(data); /** * Mostramos por pantalla los datos de la nueva Factura **/ console.log({ 'cae' : res.CAE, //CAE asignado a la Factura 'vencimiento' : res.CAEFchVto //Fecha de vencimiento del CAE }); })() **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** [AnteriorFactura Achevron-left](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/factura-a) [SiguienteFactura Cchevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/factura-c) Última actualización hace 8 meses Copiar /** * Numero del punto de venta **/ $punto_de_venta = 1; /** * Tipo de factura **/ $tipo_de_factura = 6; // 6 = Factura B /** * Número de la ultima Factura B **/ $last_voucher = $afip->ElectronicBilling->GetLastVoucher($punto_de_venta, $tipo_de_factura); /** * Concepto de la factura * * Opciones: * * 1 = Productos * 2 = Servicios * 3 = Productos y Servicios **/ $concepto = 1; /** * Tipo de documento del comprador * * Opciones: * * 80 = CUIT * 86 = CUIL * 96 = DNI * 99 = Consumidor Final **/ $tipo_de_documento = 99; /** * Numero de documento del comprador (0 para consumidor final) **/ $numero_de_documento = 0; /** * Numero de factura **/ $numero_de_factura = $last_voucher+1; /** * Fecha de la factura en formato aaaa-mm-dd (hasta 10 dias antes y 10 dias despues) **/ $fecha = date('Y-m-d'); /** * Importe sujeto al IVA (sin icluir IVA) **/ $importe_gravado = 100; /** * Importe exento al IVA **/ $importe_exento_iva = 0; /** * Importe de IVA **/ $importe_iva = 21; /** * Condición frente al IVA del receptor * * Opciones: * * 1 = IVA Responsable Inscripto * 4 = IVA Sujeto Exento * 5 = Consumidor Final * 6 = Responsable Monotributo * 7 = Sujeto No Categorizado * 8 = Proveedor del Exterior * 9 = Cliente del Exterior * 10 = IVA Liberado – Ley N° 19.640 * 13 = Monotributista Social * 15 = IVA No Alcanzado * 16 = Monotributo Trabajador Independiente Promovido **/ $condicion_iva_receptor = 5; /** * Los siguientes campos solo son obligatorios para los conceptos 2 y 3 **/ if ($concepto === 2 || $concepto === 3) { /** * Fecha de inicio de servicio en formato aaaammdd **/ $fecha_servicio_desde = intval(date('Ymd')); /** * Fecha de fin de servicio en formato aaaammdd **/ $fecha_servicio_hasta = intval(date('Ymd')); /** * Fecha de vencimiento del pago en formato aaaammdd **/ $fecha_vencimiento_pago = intval(date('Ymd')); } else { $fecha_servicio_desde = null; $fecha_servicio_hasta = null; $fecha_vencimiento_pago = null; } $data = array( 'CantReg' => 1, // Cantidad de facturas a registrar 'PtoVta' => $punto_de_venta, 'CbteTipo' => $tipo_de_factura, 'Concepto' => $concepto, 'DocTipo' => $tipo_de_documento, 'DocNro' => $numero_de_documento, 'CbteDesde' => $numero_de_factura, 'CbteHasta' => $numero_de_factura, 'CbteFch' => intval(str_replace('-', '', $fecha)), 'FchServDesde' => $fecha_servicio_desde, 'FchServHasta' => $fecha_servicio_hasta, 'FchVtoPago' => $fecha_vencimiento_pago, 'ImpTotal' => $importe_gravado + $importe_iva + $importe_exento_iva, 'ImpTotConc'=> 0, // Importe neto no gravado 'ImpNeto' => $importe_gravado, 'ImpOpEx' => $importe_exento_iva, 'ImpIVA' => $importe_iva, 'ImpTrib' => 0, //Importe total de tributos 'MonId' => 'PES', //Tipo de moneda usada en la factura ('PES' = pesos argentinos) 'MonCotiz' => 1, // Cotización de la moneda usada (1 para pesos argentinos) 'CondicionIVAReceptorId' => $condicion_iva_receptor, 'Iva' => array(// Alícuotas asociadas al factura array( 'Id' => 5, // Id del tipo de IVA (5 = 21%) 'BaseImp' => $importe_gravado, 'Importe' => $importe_iva ) ), ); /** * Creamos la Factura **/ $res = $afip->ElectronicBilling->CreateVoucher($data); /** * Mostramos por pantalla los datos de la nueva Factura **/ var_dump(array( 'cae' => $res['CAE'], //CAE asignado a la Factura 'vencimiento' => $res['CAEFchVto'] //Fecha de vencimiento del CAE )); Copiar require "date" # Numero del punto de venta punto_de_venta = 1 # Tipo de factura tipo_de_factura = 6 # 6 = Factura B # Número de la ultima Factura B last_voucher = afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_factura) # Concepto de la factura # # Opciones: # # 1 = Productos # 2 = Servicios # 3 = Productos y Servicios concepto = 1 # Tipo de documento del comprador # # Opciones: # # 80 = CUIT # 86 = CUIL # 96 = DNI # 99 = Consumidor Final tipo_de_documento = 99 # Numero de documento del comprador (0 para consumidor final) numero_de_documento = 0 # Numero de factura numero_de_factura = last_voucher+1 # Fecha de la factura en formato aaaammdd (hasta 10 dias antes y 10 dias despues) fecha = Time.now.strftime("%Y%m%d").to_i # Importe sujeto al IVA (sin icluir IVA) importe_gravado = 100 # Importe exento al IVA importe_exento_iva = 0 # Importe de IVA importe_iva = 21 # Condición frente al IVA del receptor # # Opciones: # # 1 = IVA Responsable Inscripto # 4 = IVA Sujeto Exento # 5 = Consumidor Final # 6 = Responsable Monotributo # 7 = Sujeto No Categorizado # 8 = Proveedor del Exterior # 9 = Cliente del Exterior # 10 = IVA Liberado – Ley N° 19.640 # 13 = Monotributista Social # 15 = IVA No Alcanzado # 16 = Monotributo Trabajador Independiente Promovido condicion_iva_receptor = 5 # Los siguientes campos solo son obligatorios para los conceptos 2 y 3 if concepto == 2 || concepto == 3 # Fecha de inicio de servicio en formato aaaammdd fecha_servicio_desde = Time.now.strftime("%Y%m%d").to_i # Fecha de fin de servicio en formato aaaammdd fecha_servicio_hasta = Time.now.strftime("%Y%m%d").to_i # Fecha de vencimiento del pago en formato aaaammdd fecha_vencimiento_pago = Time.now.strftime("%Y%m%d").to_i else fecha_servicio_desde = nil fecha_servicio_hasta = nil fecha_vencimiento_pago = nil end data = { "CantReg": 1, # Cantidad de facturas a registrar "PtoVta": punto_de_venta, "CbteTipo": tipo_de_factura, "Concepto": concepto, "DocTipo": tipo_de_documento, "DocNro": numero_de_documento, "CbteDesde": numero_de_factura, "CbteHasta": numero_de_factura, "CbteFch": fecha, "FchServDesde": fecha_servicio_desde, "FchServHasta": fecha_servicio_hasta, "FchVtoPago": fecha_vencimiento_pago, "ImpTotal": importe_gravado + importe_iva + importe_exento_iva, "ImpTotConc": 0, # Importe neto no gravado "ImpNeto": importe_gravado, "ImpOpEx": importe_exento_iva, "ImpIVA": importe_iva, "ImpTrib": 0, # Importe total de tributos "MonId": "PES", # Tipo de moneda usada en la factura ("PES" = pesos argentinos) "MonCotiz": 1, # Cotización de la moneda usada (1 para pesos argentinos) "CondicionIVAReceptorId" : condicion_iva_receptor, "Iva": [ # Alícuotas asociadas al factura\ {\ "Id": 5, # Id del tipo de IVA (5 = 21%)\ "BaseImp": importe_gravado,\ "Importe": importe_iva \ }\ ] } # Creamos la Factura res = afip.ElectronicBilling.createVoucher(data) # Mostramos por pantalla los datos de la nueva Factura puts { "cae": res["CAE"], # CAE asignado a la Factura "vencimiento": res["CAEFchVto"] # Fecha de vencimiento del CAE } Copiar from datetime import datetime # Numero del punto de venta punto_de_venta = 1 # Tipo de factura tipo_de_factura = 6 # 6 = Factura B # Número de la ultima Factura B last_voucher = afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_factura) # Concepto de la factura # # Opciones: # # 1 = Productos # 2 = Servicios # 3 = Productos y Servicios concepto = 1 # Tipo de documento del comprador # # Opciones: # # 80 = CUIT # 86 = CUIL # 96 = DNI # 99 = Consumidor Final tipo_de_documento = 99 # Numero de documento del comprador (0 para consumidor final) numero_de_documento = 0 # Numero de factura numero_de_factura = last_voucher+1 # Fecha de la factura en formato aaaammdd (hasta 10 dias antes y 10 dias despues) fecha = int(datetime.today().strftime("%Y%m%d")) # Importe sujeto al IVA (sin icluir IVA) importe_gravado = 100 # Importe exento al IVA importe_exento_iva = 0 # Importe de IVA importe_iva = 21 # Condición frente al IVA del receptor # # Opciones: # # 1 = IVA Responsable Inscripto # 4 = IVA Sujeto Exento # 5 = Consumidor Final # 6 = Responsable Monotributo # 7 = Sujeto No Categorizado # 8 = Proveedor del Exterior # 9 = Cliente del Exterior # 10 = IVA Liberado – Ley N° 19.640 # 13 = Monotributista Social # 15 = IVA No Alcanzado # 16 = Monotributo Trabajador Independiente Promovido condicion_iva_receptor = 5 # Los siguientes campos solo son obligatorios para los conceptos 2 y 3 if concepto == 2 or concepto == 3: # Fecha de inicio de servicio en formato aaaammdd fecha_servicio_desde = int(datetime.today().strftime("%Y%m%d")) # Fecha de fin de servicio en formato aaaammdd fecha_servicio_hasta = int(datetime.today().strftime("%Y%m%d")) # Fecha de vencimiento del pago en formato aaaammdd fecha_vencimiento_pago = int(datetime.today().strftime("%Y%m%d")) else: fecha_servicio_desde = None fecha_servicio_hasta = None fecha_vencimiento_pago = None data = { "CantReg": 1, # Cantidad de facturas a registrar "PtoVta": punto_de_venta, "CbteTipo": tipo_de_factura, "Concepto": concepto, "DocTipo": tipo_de_documento, "DocNro": numero_de_documento, "CbteDesde": numero_de_factura, "CbteHasta": numero_de_factura, "CbteFch": fecha, "FchServDesde": fecha_servicio_desde, "FchServHasta": fecha_servicio_hasta, "FchVtoPago": fecha_vencimiento_pago, "ImpTotal": importe_gravado + importe_iva + importe_exento_iva, "ImpTotConc": 0, # Importe neto no gravado "ImpNeto": importe_gravado, "ImpOpEx": importe_exento_iva, "ImpIVA": importe_iva, "ImpTrib": 0, # Importe total de tributos "MonId": "PES", # Tipo de moneda usada en la factura ("PES" = pesos argentinos) "MonCotiz": 1, # Cotización de la moneda usada (1 para pesos argentinos) "CondicionIVAReceptorId" : condicion_iva_receptor, "Iva": [ # Alícuotas asociadas al factura\ {\ "Id": 5, # Id del tipo de IVA (5 = 21%)\ "BaseImp": importe_gravado,\ "Importe": importe_iva \ }\ ] } # Creamos la Factura res = afip.ElectronicBilling.createVoucher(data) # Mostramos por pantalla los datos de la nueva Factura print({ "cae": res["CAE"], # CAE asignado a la Factura "vencimiento": res["CAEFchVto"] # Fecha de vencimiento del CAE }) Copiar { "environment": "dev", "method": "FECAESolicitar", "wsid": "wsfe", "params": { "Auth" : { "Token": "{{token}}", "Sign": "{{sign}}", "Cuit": "20409378472" }, "FeCAEReq" : { "FeCabReq": { "CantReg": 1, "PtoVta": 1, "CbteTipo": 6 }, "FeDetReq": { "FECAEDetRequest": { "Concepto": 1, "DocTipo": 99, "DocNro": 0, "CbteDesde": 865, "CbteHasta": 865, "CbteFch": 20240314, "FchServDesde": null, "FchServHasta": null, "FchVtoPago": null, "ImpTotal": 121, "ImpTotConc": 0, "ImpNeto": 100, "ImpOpEx": 0, "ImpIVA": 21, "ImpTrib": 0, "MonId": "PES", "MonCotiz": 1, "CondicionIVAReceptorId": 5, "Iva": { "AlicIva": [\ {\ "Id": 5,\ "BaseImp": 100,\ "Importe": 21\ }\ ] } } } } } } --- # Factura A | Afip SDK Node PHP Ruby Python API Copiar (async () => { /** * Numero del punto de venta **/ const punto_de_venta = 1; /** * Tipo de factura **/ const tipo_de_factura = 1; // 1 = Factura A /** * Número de la ultima Factura A **/ const last_voucher = await afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_factura); /** * Concepto de la factura * * Opciones: * * 1 = Productos * 2 = Servicios * 3 = Productos y Servicios **/ const concepto = 1; /** * Tipo de documento del comprador * * Opciones: * * 80 = CUIT * 86 = CUIL * 96 = DNI * 99 = Consumidor Final **/ const tipo_de_documento = 80; /** * Numero de documento del comprador (0 para consumidor final) **/ const numero_de_documento = 33693450239; /** * Numero de factura **/ const numero_de_factura = last_voucher+1; /** * Fecha de la factura en formato aaaa-mm-dd (hasta 10 dias antes y 10 dias despues) **/ const fecha = new Date(Date.now() - ((new Date()).getTimezoneOffset() * 60000)).toISOString().split('T')[0]; /** * Importe sujeto al IVA (sin icluir IVA) **/ const importe_gravado = 100; /** * Importe exento al IVA **/ const importe_exento_iva = 0; /** * Importe de IVA **/ const importe_iva = 21; /** * Condición frente al IVA del receptor * * 1 = IVA Responsable Inscripto * 4 = IVA Sujeto Exento * 5 = Consumidor Final * 6 = Responsable Monotributo * 7 = Sujeto No Categorizado * 8 = Proveedor del Exterior * 9 = Cliente del Exterior * 10 = IVA Liberado – Ley N° 19.640 * 13 = Monotributista Social * 15 = IVA No Alcanzado * 16 = Monotributo Trabajador Independiente Promovido **/ const condicion_iva_receptor = 1; /** * Los siguientes campos solo son obligatorios para los conceptos 2 y 3 **/ let fecha_servicio_desde = null, fecha_servicio_hasta = null, fecha_vencimiento_pago = null; if (concepto === 2 || concepto === 3) { /** * Fecha de inicio de servicio en formato aaaammdd **/ const fecha_servicio_desde = 20191213; /** * Fecha de fin de servicio en formato aaaammdd **/ const fecha_servicio_hasta = 20191213; /** * Fecha de vencimiento del pago en formato aaaammdd **/ const fecha_vencimiento_pago = 20191213; } const data = { 'CantReg' : 1, // Cantidad de facturas a registrar 'PtoVta' : punto_de_venta, 'CbteTipo' : tipo_de_factura, 'Concepto' : concepto, 'DocTipo' : tipo_de_documento, 'DocNro' : numero_de_documento, 'CbteDesde' : numero_de_factura, 'CbteHasta' : numero_de_factura, 'CbteFch' : parseInt(fecha.replace(/-/g, '')), 'FchServDesde' : fecha_servicio_desde, 'FchServHasta' : fecha_servicio_hasta, 'FchVtoPago' : fecha_vencimiento_pago, 'ImpTotal' : importe_gravado + importe_iva + importe_exento_iva, 'ImpTotConc': 0, // Importe neto no gravado 'ImpNeto' : importe_gravado, 'ImpOpEx' : importe_exento_iva, 'ImpIVA' : importe_iva, 'ImpTrib' : 0, //Importe total de tributos 'MonId' : 'PES', //Tipo de moneda usada en la factura ('PES' = pesos argentinos) 'MonCotiz' : 1, // Cotización de la moneda usada (1 para pesos argentinos) 'CondicionIVAReceptorId' : condicion_iva_receptor, 'Iva' : [ // Alícuotas asociadas a la factura\ {\ 'Id' : 5, // Id del tipo de IVA (5 = 21%)\ 'BaseImp' : importe_gravado,\ 'Importe' : importe_iva \ }\ ] }; /** * Creamos la Factura **/ const res = await afip.ElectronicBilling.createVoucher(data); /** * Mostramos por pantalla los datos de la nueva Factura **/ console.log({ 'cae' : res.CAE, //CAE asignado a la Factura 'vencimiento' : res.CAEFchVto //Fecha de vencimiento del CAE }); })() **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** [AnteriorCódigo QRchevron-left](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/codigo-qr) [SiguienteFactura Bchevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/factura-b) Última actualización hace 8 meses Copiar /** * Numero del punto de venta **/ $punto_de_venta = 1; /** * Tipo de factura **/ $tipo_de_factura = 1; // 1 = Factura A /** * Número de la ultima Factura A **/ $last_voucher = $afip->ElectronicBilling->GetLastVoucher($punto_de_venta, $tipo_de_factura); /** * Concepto de la factura * * Opciones: * * 1 = Productos * 2 = Servicios * 3 = Productos y Servicios **/ $concepto = 1; /** * Tipo de documento del comprador * * Opciones: * * 80 = CUIT * 86 = CUIL * 96 = DNI * 99 = Consumidor Final **/ $tipo_de_documento = 80; /** * Numero de documento del comprador (0 para consumidor final) **/ $numero_de_documento = 33693450239; /** * Numero de factura **/ $numero_de_factura = $last_voucher+1; /** * Fecha de la factura en formato aaaa-mm-dd (hasta 10 dias antes y 10 dias despues) **/ $fecha = date('Y-m-d'); /** * Importe sujeto al IVA (sin icluir IVA) **/ $importe_gravado = 100; /** * Importe exento al IVA **/ $importe_exento_iva = 0; /** * Importe de IVA **/ $importe_iva = 21; /** * Condición frente al IVA del receptor * * Opciones: * * 1 = IVA Responsable Inscripto * 4 = IVA Sujeto Exento * 5 = Consumidor Final * 6 = Responsable Monotributo * 7 = Sujeto No Categorizado * 8 = Proveedor del Exterior * 9 = Cliente del Exterior * 10 = IVA Liberado – Ley N° 19.640 * 13 = Monotributista Social * 15 = IVA No Alcanzado * 16 = Monotributo Trabajador Independiente Promovido **/ $condicion_iva_receptor = 1; /** * Los siguientes campos solo son obligatorios para los conceptos 2 y 3 **/ if ($concepto === 2 || $concepto === 3) { /** * Fecha de inicio de servicio en formato aaaammdd **/ $fecha_servicio_desde = intval(date('Ymd')); /** * Fecha de fin de servicio en formato aaaammdd **/ $fecha_servicio_hasta = intval(date('Ymd')); /** * Fecha de vencimiento del pago en formato aaaammdd **/ $fecha_vencimiento_pago = intval(date('Ymd')); } else { $fecha_servicio_desde = null; $fecha_servicio_hasta = null; $fecha_vencimiento_pago = null; } $data = array( 'CantReg' => 1, // Cantidad de facturas a registrar 'PtoVta' => $punto_de_venta, 'CbteTipo' => $tipo_de_factura, 'Concepto' => $concepto, 'DocTipo' => $tipo_de_documento, 'DocNro' => $numero_de_documento, 'CbteDesde' => $numero_de_factura, 'CbteHasta' => $numero_de_factura, 'CbteFch' => intval(str_replace('-', '', $fecha)), 'FchServDesde' => $fecha_servicio_desde, 'FchServHasta' => $fecha_servicio_hasta, 'FchVtoPago' => $fecha_vencimiento_pago, 'ImpTotal' => $importe_gravado + $importe_iva + $importe_exento_iva, 'ImpTotConc'=> 0, // Importe neto no gravado 'ImpNeto' => $importe_gravado, 'ImpOpEx' => $importe_exento_iva, 'ImpIVA' => $importe_iva, 'ImpTrib' => 0, //Importe total de tributos 'MonId' => 'PES', //Tipo de moneda usada en la factura ('PES' = pesos argentinos) 'MonCotiz' => 1, // Cotización de la moneda usada (1 para pesos argentinos) 'CondicionIVAReceptorId' => $condicion_iva_receptor, 'Iva' => array(// Alícuotas asociadas al factura array( 'Id' => 5, // Id del tipo de IVA (5 = 21%) 'BaseImp' => $importe_gravado, 'Importe' => $importe_iva ) ), ); /** * Creamos la Factura **/ $res = $afip->ElectronicBilling->CreateVoucher($data); /** * Mostramos por pantalla los datos de la nueva Factura **/ var_dump(array( 'cae' => $res['CAE'], //CAE asignado a la Factura 'vencimiento' => $res['CAEFchVto'] //Fecha de vencimiento del CAE )); Copiar require "date" # Numero del punto de venta punto_de_venta = 1 # Tipo de factura tipo_de_factura = 1 # 1 = Factura A # Número de la ultima Factura A last_voucher = afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_factura) # Concepto de la factura # # Opciones: # # 1 = Productos # 2 = Servicios # 3 = Productos y Servicios concepto = 1 # Tipo de documento del comprador # # Opciones: # # 80 = CUIT # 86 = CUIL # 96 = DNI # 99 = Consumidor Final tipo_de_documento = 80 # Numero de documento del comprador (0 para consumidor final) numero_de_documento = 33693450239 # Numero de factura numero_de_factura = last_voucher+1 # Fecha de la factura en formato aaaammdd (hasta 10 dias antes y 10 dias despues) fecha = Time.now.strftime("%Y%m%d").to_i # Importe sujeto al IVA (sin icluir IVA) importe_gravado = 100 # Importe exento al IVA importe_exento_iva = 0 # Importe de IVA importe_iva = 21 # Condición frente al IVA del receptor # # Opciones: # # 1 = IVA Responsable Inscripto # 4 = IVA Sujeto Exento # 5 = Consumidor Final # 6 = Responsable Monotributo # 7 = Sujeto No Categorizado # 8 = Proveedor del Exterior # 9 = Cliente del Exterior # 10 = IVA Liberado – Ley N° 19.640 # 13 = Monotributista Social # 15 = IVA No Alcanzado # 16 = Monotributo Trabajador Independiente Promovido condicion_iva_receptor = 1 # Los siguientes campos solo son obligatorios para los conceptos 2 y 3 if concepto == 2 || concepto == 3 # Fecha de inicio de servicio en formato aaaammdd fecha_servicio_desde = Time.now.strftime("%Y%m%d").to_i # Fecha de fin de servicio en formato aaaammdd fecha_servicio_hasta = Time.now.strftime("%Y%m%d").to_i # Fecha de vencimiento del pago en formato aaaammdd fecha_vencimiento_pago = Time.now.strftime("%Y%m%d").to_i else fecha_servicio_desde = nil fecha_servicio_hasta = nil fecha_vencimiento_pago = nil end data = { "CantReg": 1, # Cantidad de facturas a registrar "PtoVta": punto_de_venta, "CbteTipo": tipo_de_factura, "Concepto": concepto, "DocTipo": tipo_de_documento, "DocNro": numero_de_documento, "CbteDesde": numero_de_factura, "CbteHasta": numero_de_factura, "CbteFch": fecha, "FchServDesde": fecha_servicio_desde, "FchServHasta": fecha_servicio_hasta, "FchVtoPago": fecha_vencimiento_pago, "ImpTotal": importe_gravado + importe_iva + importe_exento_iva, "ImpTotConc": 0, # Importe neto no gravado "ImpNeto": importe_gravado, "ImpOpEx": importe_exento_iva, "ImpIVA": importe_iva, "ImpTrib": 0, # Importe total de tributos "MonId": "PES", # Tipo de moneda usada en la factura ("PES" = pesos argentinos) "MonCotiz": 1, # Cotización de la moneda usada (1 para pesos argentinos) "CondicionIVAReceptorId" : condicion_iva_receptor, "Iva": [ # Alícuotas asociadas al factura\ {\ "Id": 5, # Id del tipo de IVA (5 = 21%)\ "BaseImp": importe_gravado,\ "Importe": importe_iva \ }\ ] } # Creamos la Factura res = afip.ElectronicBilling.createVoucher(data) # Mostramos por pantalla los datos de la nueva Factura puts { "cae": res["CAE"], # CAE asignado a la Factura "vencimiento": res["CAEFchVto"] # Fecha de vencimiento del CAE } Copiar from datetime import datetime # Numero del punto de venta punto_de_venta = 1 # Tipo de factura tipo_de_factura = 1 # 1 = Factura A # Número de la ultima Factura A last_voucher = afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_factura) # Concepto de la factura # # Opciones: # # 1 = Productos # 2 = Servicios # 3 = Productos y Servicios concepto = 1 # Tipo de documento del comprador # # Opciones: # # 80 = CUIT # 86 = CUIL # 96 = DNI # 99 = Consumidor Final tipo_de_documento = 80 # Numero de documento del comprador (0 para consumidor final) numero_de_documento = 33693450239 # Numero de factura numero_de_factura = last_voucher+1 # Fecha de la factura en formato aaaammdd (hasta 10 dias antes y 10 dias despues) fecha = int(datetime.today().strftime("%Y%m%d")) # Importe sujeto al IVA (sin icluir IVA) importe_gravado = 100 # Importe exento al IVA importe_exento_iva = 0 # Importe de IVA importe_iva = 21 # Condición frente al IVA del receptor # # Opciones: # # 1 = IVA Responsable Inscripto # 4 = IVA Sujeto Exento # 5 = Consumidor Final # 6 = Responsable Monotributo # 7 = Sujeto No Categorizado # 8 = Proveedor del Exterior # 9 = Cliente del Exterior # 10 = IVA Liberado – Ley N° 19.640 # 13 = Monotributista Social # 15 = IVA No Alcanzado # 16 = Monotributo Trabajador Independiente Promovido condicion_iva_receptor = 1 # Los siguientes campos solo son obligatorios para los conceptos 2 y 3 if concepto == 2 or concepto == 3: # Fecha de inicio de servicio en formato aaaammdd fecha_servicio_desde = int(datetime.today().strftime("%Y%m%d")) # Fecha de fin de servicio en formato aaaammdd fecha_servicio_hasta = int(datetime.today().strftime("%Y%m%d")) # Fecha de vencimiento del pago en formato aaaammdd fecha_vencimiento_pago = int(datetime.today().strftime("%Y%m%d")) else: fecha_servicio_desde = None fecha_servicio_hasta = None fecha_vencimiento_pago = None data = { "CantReg": 1, # Cantidad de facturas a registrar "PtoVta": punto_de_venta, "CbteTipo": tipo_de_factura, "Concepto": concepto, "DocTipo": tipo_de_documento, "DocNro": numero_de_documento, "CbteDesde": numero_de_factura, "CbteHasta": numero_de_factura, "CbteFch": fecha, "FchServDesde": fecha_servicio_desde, "FchServHasta": fecha_servicio_hasta, "FchVtoPago": fecha_vencimiento_pago, "ImpTotal": importe_gravado + importe_iva + importe_exento_iva, "ImpTotConc": 0, # Importe neto no gravado "ImpNeto": importe_gravado, "ImpOpEx": importe_exento_iva, "ImpIVA": importe_iva, "ImpTrib": 0, # Importe total de tributos "MonId": "PES", # Tipo de moneda usada en la factura ("PES" = pesos argentinos) "MonCotiz": 1, # Cotización de la moneda usada (1 para pesos argentinos) "CondicionIVAReceptorId" : condicion_iva_receptor, "Iva": [ # Alícuotas asociadas al factura\ {\ "Id": 5, # Id del tipo de IVA (5 = 21%)\ "BaseImp": importe_gravado,\ "Importe": importe_iva \ }\ ] } # Creamos la Factura res = afip.ElectronicBilling.createVoucher(data) # Mostramos por pantalla los datos de la nueva Factura print({ "cae": res["CAE"], # CAE asignado a la Factura "vencimiento": res["CAEFchVto"] # Fecha de vencimiento del CAE }) Copiar { "environment": "dev", "method": "FECAESolicitar", "wsid": "wsfe", "params": { "Auth" : { "Token": "{{token}}", "Sign": "{{sign}}", "Cuit": "20409378472" }, "FeCAEReq" : { "FeCabReq": { "CantReg": 1, "PtoVta": 1, "CbteTipo": 1 }, "FeDetReq": { "FECAEDetRequest": { "Concepto": 1, "DocTipo": 80, "DocNro": 33693450239, "CbteDesde": 483, "CbteHasta": 483, "CbteFch": 20240314, "FchServDesde": null, "FchServHasta": null, "FchVtoPago": null, "ImpTotal": 121, "ImpTotConc": 0, "ImpNeto": 100, "ImpOpEx": 0, "ImpIVA": 21, "ImpTrib": 0, "MonId": "PES", "MonCotiz": 1, "CondicionIVAReceptorId": 1, "Iva": { "AlicIva": [\ {\ "Id": 5,\ "BaseImp": 100,\ "Importe": 21\ }\ ] } } } } } } --- # Nota de Crédito C | Afip SDK Node PHP Ruby Python API Copiar (async () => { /** * Numero del punto de venta **/ const punto_de_venta = 1; /** * Tipo de factura **/ const tipo_de_nota = 13; // 13 = Nota de Crédito C /** * Número de la ultima Nota de Crédito C **/ const last_voucher = await afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_nota); /** * Numero del punto de venta de la Factura * asociada a la Nota de Crédito **/ const punto_factura_asociada = 1; /** * Tipo de Factura asociada a la Nota de Crédito **/ const tipo_factura_asociada = 11; // 11 = Factura C /** * Numero de Factura asociada a la Nota de Crédito **/ const numero_factura_asociada = 1; /** * Concepto de la factura * * Opciones: * * 1 = Productos * 2 = Servicios * 3 = Productos y Servicios **/ const concepto = 1; /** * Tipo de documento del comprador * * Opciones: * * 80 = CUIT * 86 = CUIL * 96 = DNI * 99 = Consumidor Final **/ const tipo_de_documento = 80; /** * Numero de documento del comprador (0 para consumidor final) **/ const numero_de_documento = 33693450239; /** * Numero de Nota de Crédito **/ const numero_de_nota = last_voucher+1; /** * Fecha de la Nota de Crédito en formato aaaa-mm-dd (hasta 10 dias antes y 10 dias despues) **/ const fecha = new Date(Date.now() - ((new Date()).getTimezoneOffset() * 60000)).toISOString().split('T')[0]; /** * Importe de la Nota de Crédito **/ const importe_total = 100; /** * Condición frente al IVA del receptor * * 1 = IVA Responsable Inscripto * 4 = IVA Sujeto Exento * 5 = Consumidor Final * 6 = Responsable Monotributo * 7 = Sujeto No Categorizado * 8 = Proveedor del Exterior * 9 = Cliente del Exterior * 10 = IVA Liberado – Ley N° 19.640 * 13 = Monotributista Social * 15 = IVA No Alcanzado * 16 = Monotributo Trabajador Independiente Promovido **/ const condicion_iva_receptor = 6; /** * Los siguientes campos solo son obligatorios para los conceptos 2 y 3 **/ let fecha_servicio_desde = null, fecha_servicio_hasta = null, fecha_vencimiento_pago = null; if (concepto === 2 || concepto === 3) { /** * Fecha de inicio de servicio en formato aaaammdd **/ const fecha_servicio_desde = 20191213; /** * Fecha de fin de servicio en formato aaaammdd **/ const fecha_servicio_hasta = 20191213; /** * Fecha de vencimiento del pago en formato aaaammdd **/ const fecha_vencimiento_pago = 20191213; } const data = { 'CantReg' : 1, // Cantidad de Notas de Crédito a registrar 'PtoVta' : punto_de_venta, 'CbteTipo' : tipo_de_nota, 'Concepto' : concepto, 'DocTipo' : tipo_de_documento, 'DocNro' : numero_de_documento, 'CbteDesde' : numero_de_nota, 'CbteHasta' : numero_de_nota, 'CbteFch' : parseInt(fecha.replace(/-/g, '')), 'FchServDesde' : fecha_servicio_desde, 'FchServHasta' : fecha_servicio_hasta, 'FchVtoPago' : fecha_vencimiento_pago, 'ImpTotal' : importe_total, 'ImpTotConc': 0, // Importe neto no gravado 'ImpNeto' : importe_total, 'ImpOpEx' : 0, 'ImpIVA' : 0, 'ImpTrib' : 0, //Importe total de tributos 'MonId' : 'PES', //Tipo de moneda usada ('PES' = pesos argentinos) 'MonCotiz' : 1, // Cotización de la moneda usada (1 para pesos argentinos) 'CondicionIVAReceptorId' : condicion_iva_receptor, 'CbtesAsoc' : [ //Factura asociada\ {\ 'Tipo' : tipo_factura_asociada,\ 'PtoVta' : punto_factura_asociada,\ 'Nro' : numero_factura_asociada,\ }\ ] }; /** * Creamos la Factura **/ const res = await afip.ElectronicBilling.createVoucher(data); /** * Mostramos por pantalla los datos de la nueva Factura **/ console.log({ 'cae' : res.CAE, //CAE asignado a la Factura 'vencimiento' : res.CAEFchVto //Fecha de vencimiento del CAE }); })() **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** [AnteriorNota de Crédito Bchevron-left](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/nota-de-credito-b) [SiguienteNota de Débito Achevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/nota-de-debito-a) Última actualización hace 8 meses Copiar /** * Numero del punto de venta **/ $punto_de_venta = 1; /** * Tipo de Nota de Crédito **/ $tipo_de_nota = 13; // 13 = Nota de Crédito C /** * Número de la ultima Nota de Crédito C **/ $last_voucher = $afip->ElectronicBilling->GetLastVoucher($punto_de_venta, $tipo_de_nota); /** * Numero del punto de venta de la Factura * asociada a la Nota de Crédito **/ $punto_factura_asociada = 1; /** * Tipo de Factura asociada a la Nota de Crédito **/ $tipo_factura_asociada = 11; // 11 = Factura C /** * Numero de Factura asociada a la Nota de Crédito **/ $numero_factura_asociada = 1; /** * Concepto de la Nota de Crédito * * Opciones: * * 1 = Productos * 2 = Servicios * 3 = Productos y Servicios **/ $concepto = 1; /** * Tipo de documento del comprador * * Opciones: * * 80 = CUIT * 86 = CUIL * 96 = DNI * 99 = Consumidor Final **/ $tipo_de_documento = 80; /** * Numero de documento del comprador (0 para consumidor final) **/ $numero_de_documento = 33693450239; /** * Numero de comprobante **/ $numero_de_nota = $last_voucher+1; /** * Fecha de la Nota de Crédito en formato aaaa-mm-dd (hasta 10 dias antes y 10 dias despues) **/ $fecha = date('Y-m-d'); /** * Importe de la Nota de Crédito **/ $importe_total = 100; /** * Condición frente al IVA del receptor * * Opciones: * * 1 = IVA Responsable Inscripto * 4 = IVA Sujeto Exento * 5 = Consumidor Final * 6 = Responsable Monotributo * 7 = Sujeto No Categorizado * 8 = Proveedor del Exterior * 9 = Cliente del Exterior * 10 = IVA Liberado – Ley N° 19.640 * 13 = Monotributista Social * 15 = IVA No Alcanzado * 16 = Monotributo Trabajador Independiente Promovido **/ $condicion_iva_receptor = 6; /** * Los siguientes campos solo son obligatorios para los conceptos 2 y 3 **/ if ($concepto === 2 || $concepto === 3) { /** * Fecha de inicio de servicio en formato aaaammdd **/ $fecha_servicio_desde = intval(date('Ymd')); /** * Fecha de fin de servicio en formato aaaammdd **/ $fecha_servicio_hasta = intval(date('Ymd')); /** * Fecha de vencimiento del pago en formato aaaammdd **/ $fecha_vencimiento_pago = intval(date('Ymd')); } else { $fecha_servicio_desde = null; $fecha_servicio_hasta = null; $fecha_vencimiento_pago = null; } $data = array( 'CantReg' => 1, // Cantidad de Notas de Crédito a registrar 'PtoVta' => $punto_de_venta, 'CbteTipo' => $tipo_de_nota, 'Concepto' => $concepto, 'DocTipo' => $tipo_de_documento, 'DocNro' => $numero_de_documento, 'CbteDesde' => $numero_de_nota, 'CbteHasta' => $numero_de_nota, 'CbteFch' => intval(str_replace('-', '', $fecha)), 'FchServDesde' => $fecha_servicio_desde, 'FchServHasta' => $fecha_servicio_hasta, 'FchVtoPago' => $fecha_vencimiento_pago, 'ImpTotal' => $importe_total, 'ImpTotConc'=> 0, // Importe neto no gravado 'ImpNeto' => $importe_total, // Importe neto 'ImpOpEx' => 0, // Importe exento al IVA 'ImpIVA' => 0, // Importe de IVA 'ImpTrib' => 0, //Importe total de tributos 'MonId' => 'PES', //Tipo de moneda usada en el comprobante ('PES' = pesos argentinos) 'MonCotiz' => 1, // Cotización de la moneda usada (1 para pesos argentinos) 'CondicionIVAReceptorId' => $condicion_iva_receptor, 'CbtesAsoc' => array( //Factura asociada array( 'Tipo' => $tipo_factura_asociada, 'PtoVta' => $punto_factura_asociada, 'Nro' => $numero_factura_asociada, ) ) ); /** * Creamos la Nota de Crédito **/ $res = $afip->ElectronicBilling->CreateVoucher($data); /** * Mostramos por pantalla los datos de la nueva Nota de Crédito **/ var_dump(array( 'cae' => $res['CAE'], //CAE asignado a la Nota de Crédito 'vencimiento' => $res['CAEFchVto'] //Fecha de vencimiento del CAE )); Copiar require "date" # Numero del punto de venta punto_de_venta = 1 # Tipo de factura tipo_de_nota = 13 # 13 = Nota de Crédito C # Número de la ultima Nota de Crédito C last_voucher = afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_nota) # Numero del punto de venta de la Factura # asociada a la Nota de Crédito punto_factura_asociada = 1 # Tipo de Factura asociada a la Nota de Crédito tipo_factura_asociada = 11 # 11 = Factura B # Numero de Factura asociada a la Nota de Crédito numero_factura_asociada = 1 # Concepto de la factura # # Opciones: # # 1 = Productos # 2 = Servicios # 3 = Productos y Servicios concepto = 1 # Tipo de documento del comprador # # Opciones: # # 80 = CUIT # 86 = CUIL # 96 = DNI # 99 = Consumidor Final tipo_de_documento = 80 # Numero de documento del comprador (0 para consumidor final) numero_de_documento = 33693450239 # Numero de Nota de Crédito numero_de_nota = last_voucher+1 # Fecha de la Nota de Crédito en formato aaaammdd (hasta 10 dias antes y 10 dias despues) fecha = Time.now.strftime("%Y%m%d").to_i # Importe de la Nota de Crédito importe_total = 100 # Condición frente al IVA del receptor # # Opciones: # # 1 = IVA Responsable Inscripto # 4 = IVA Sujeto Exento # 5 = Consumidor Final # 6 = Responsable Monotributo # 7 = Sujeto No Categorizado # 8 = Proveedor del Exterior # 9 = Cliente del Exterior # 10 = IVA Liberado – Ley N° 19.640 # 13 = Monotributista Social # 15 = IVA No Alcanzado # 16 = Monotributo Trabajador Independiente Promovido condicion_iva_receptor = 6 # Los siguientes campos solo son obligatorios para los conceptos 2 y 3 if concepto == 2 || concepto == 3 # Fecha de inicio de servicio en formato aaaammdd fecha_servicio_desde = 20191213 # Fecha de fin de servicio en formato aaaammdd fecha_servicio_hasta = 20191213 # Fecha de vencimiento del pago en formato aaaammdd fecha_vencimiento_pago = 20191213 else fecha_servicio_desde = nil fecha_servicio_hasta = nil fecha_vencimiento_pago = nil end data = { "CantReg": 1, # Cantidad de Notas de Crédito a registrar "PtoVta": punto_de_venta, "CbteTipo": tipo_de_nota, "Concepto": concepto, "DocTipo": tipo_de_documento, "DocNro": numero_de_documento, "CbteDesde": numero_de_nota, "CbteHasta": numero_de_nota, "CbteFch": fecha, "FchServDesde": fecha_servicio_desde, "FchServHasta": fecha_servicio_hasta, "FchVtoPago": fecha_vencimiento_pago, "ImpTotal": importe_total, "ImpTotConc": 0, # Importe neto no gravado "ImpNeto": importe_total, "ImpOpEx": 0, "ImpIVA": 0, "ImpTrib": 0, # Importe total de tributos "MonId": "PES", # Tipo de moneda usada ("PES" = pesos argentinos) "MonCotiz": 1, # Cotización de la moneda usada (1 para pesos argentinos) "CondicionIVAReceptorId" : condicion_iva_receptor, "CbtesAsoc": [ # Factura asociada\ {\ "Tipo": tipo_factura_asociada,\ "PtoVta": punto_factura_asociada,\ "Nro": numero_factura_asociada,\ }\ ] } # Creamos la Factura res = afip.ElectronicBilling.createVoucher(data) # Mostramos por pantalla los datos de la nueva Factura puts { "cae": res["CAE"], # CAE asignado a la Factura "vencimiento": res["CAEFchVto"] # Fecha de vencimiento del CAE } Copiar from datetime import datetime # Numero del punto de venta punto_de_venta = 1 # Tipo de factura tipo_de_nota = 13 # 13 = Nota de Crédito C # Número de la ultima Nota de Crédito C last_voucher = afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_nota) # Numero del punto de venta de la Factura # asociada a la Nota de Crédito punto_factura_asociada = 1 # Tipo de Factura asociada a la Nota de Crédito tipo_factura_asociada = 11 # 11 = Factura B # Numero de Factura asociada a la Nota de Crédito numero_factura_asociada = 1 # Concepto de la factura # # Opciones: # # 1 = Productos # 2 = Servicios # 3 = Productos y Servicios concepto = 1 # Tipo de documento del comprador # # Opciones: # # 80 = CUIT # 86 = CUIL # 96 = DNI # 99 = Consumidor Final tipo_de_documento = 80 # Numero de documento del comprador (0 para consumidor final) numero_de_documento = 33693450239 # Numero de Nota de Crédito numero_de_nota = last_voucher+1 # Fecha de la Nota de Crédito en formato aaaammdd (hasta 10 dias antes y 10 dias despues) fecha = int(datetime.today().strftime("%Y%m%d")) # Importe de la Nota de Crédito importe_total = 100 # Condición frente al IVA del receptor # # Opciones: # # 1 = IVA Responsable Inscripto # 4 = IVA Sujeto Exento # 5 = Consumidor Final # 6 = Responsable Monotributo # 7 = Sujeto No Categorizado # 8 = Proveedor del Exterior # 9 = Cliente del Exterior # 10 = IVA Liberado – Ley N° 19.640 # 13 = Monotributista Social # 15 = IVA No Alcanzado # 16 = Monotributo Trabajador Independiente Promovido condicion_iva_receptor = 6 # Los siguientes campos solo son obligatorios para los conceptos 2 y 3 if concepto == 2 or concepto == 3: # Fecha de inicio de servicio en formato aaaammdd fecha_servicio_desde = 20191213 # Fecha de fin de servicio en formato aaaammdd fecha_servicio_hasta = 20191213 # Fecha de vencimiento del pago en formato aaaammdd fecha_vencimiento_pago = 20191213 else: fecha_servicio_desde = None fecha_servicio_hasta = None fecha_vencimiento_pago = None data = { "CantReg": 1, # Cantidad de Notas de Crédito a registrar "PtoVta": punto_de_venta, "CbteTipo": tipo_de_nota, "Concepto": concepto, "DocTipo": tipo_de_documento, "DocNro": numero_de_documento, "CbteDesde": numero_de_nota, "CbteHasta": numero_de_nota, "CbteFch": fecha, "FchServDesde": fecha_servicio_desde, "FchServHasta": fecha_servicio_hasta, "FchVtoPago": fecha_vencimiento_pago, "ImpTotal": importe_total, "ImpTotConc": 0, # Importe neto no gravado "ImpNeto": importe_total, "ImpOpEx": 0, "ImpIVA": 0, "ImpTrib": 0, # Importe total de tributos "MonId": "PES", # Tipo de moneda usada ("PES" = pesos argentinos) "MonCotiz": 1, # Cotización de la moneda usada (1 para pesos argentinos) "CondicionIVAReceptorId" : condicion_iva_receptor, "CbtesAsoc": [ # Factura asociada\ {\ "Tipo": tipo_factura_asociada,\ "PtoVta": punto_factura_asociada,\ "Nro": numero_factura_asociada,\ }\ ] } # Creamos la Factura res = afip.ElectronicBilling.createVoucher(data) # Mostramos por pantalla los datos de la nueva Factura print({ "cae": res["CAE"], # CAE asignado a la Factura "vencimiento": res["CAEFchVto"] # Fecha de vencimiento del CAE }) Copiar { "environment": "dev", "method": "FECAESolicitar", "wsid": "wsfe", "params": { "Auth": { "Token": "{{token}}", "Sign": "{{sign}}", "Cuit": "20409378472" }, "FeCAEReq": { "FeCabReq": { "CantReg": 1, "PtoVta": 1, "CbteTipo": 13 }, "FeDetReq": { "FECAEDetRequest": { "Concepto": 1, "DocTipo": 80, "DocNro": 33693450239, "CbteDesde": 9, "CbteHasta": 9, "CbteFch": 20240314, "FchServDesde": null, "FchServHasta": null, "FchVtoPago": null, "ImpTotal": 100, "ImpTotConc": 0, "ImpNeto": 100, "ImpOpEx": 0, "ImpIVA": 0, "ImpTrib": 0, "MonId": "PES", "MonCotiz": 1, "CondicionIVAReceptorId": 6, "CbtesAsoc": { "CbteAsoc": [\ {\ "Tipo": 11,\ "PtoVta": 1,\ "Nro": 1\ }\ ] } } } } } } --- # Nota de Crédito electrónica C | Afip SDK Node PHP Ruby Python API Copiar (async () => { /** * Numero del punto de venta **/ const punto_de_venta = 1; /** * Tipo de factura **/ const tipo_de_nota = 213; // 213 = Nota de Crédito electrónica MiPyME C /** * Número de la ultima Nota de Crédito electrónica MiPyME C **/ const last_voucher = await afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_nota); /** * Numero del punto de venta de la Factura * asociada a la Nota de Crédito **/ const punto_factura_asociada = 1; /** * Tipo de Factura asociada a la Nota de Crédito **/ const tipo_factura_asociada = 11; // 11 = Factura C /** * Numero de Factura asociada a la Nota de Crédito **/ const numero_factura_asociada = 1; /** * Concepto de la factura * * Opciones: * * 1 = Productos * 2 = Servicios * 3 = Productos y Servicios **/ const concepto = 1; /** * Tipo de documento del comprador * * Opciones: * * 80 = CUIT * 86 = CUIL * 96 = DNI * 99 = Consumidor Final **/ const tipo_de_documento = 80; /** * Numero de documento del comprador (0 para consumidor final) **/ const numero_de_documento = 33693450239; /** * Numero de Nota de Crédito **/ const numero_de_nota = last_voucher+1; /** * Fecha de la Nota de Crédito en formato aaaa-mm-dd (hasta 10 dias antes y 10 dias despues) **/ const fecha = new Date(Date.now() - ((new Date()).getTimezoneOffset() * 60000)).toISOString().split('T')[0]; /** * Importe de la Nota de Crédito **/ const importe_total = 100; /** * Condición frente al IVA del receptor * * 1 = IVA Responsable Inscripto * 4 = IVA Sujeto Exento * 5 = Consumidor Final * 6 = Responsable Monotributo * 7 = Sujeto No Categorizado * 8 = Proveedor del Exterior * 9 = Cliente del Exterior * 10 = IVA Liberado – Ley N° 19.640 * 13 = Monotributista Social * 15 = IVA No Alcanzado * 16 = Monotributo Trabajador Independiente Promovido **/ const condicion_iva_receptor = 6; /** * Los siguientes campos solo son obligatorios para los conceptos 2 y 3 **/ let fecha_servicio_desde = null, fecha_servicio_hasta = null, fecha_vencimiento_pago = null; if (concepto === 2 || concepto === 3) { /** * Fecha de inicio de servicio en formato aaaammdd **/ const fecha_servicio_desde = 20191213; /** * Fecha de fin de servicio en formato aaaammdd **/ const fecha_servicio_hasta = 20191213; /** * Fecha de vencimiento del pago en formato aaaammdd **/ const fecha_vencimiento_pago = 20191213; } const data = { 'CantReg' : 1, // Cantidad de Notas de Crédito a registrar 'PtoVta' : punto_de_venta, 'CbteTipo' : tipo_de_nota, 'Concepto' : concepto, 'DocTipo' : tipo_de_documento, 'DocNro' : numero_de_documento, 'CbteDesde' : numero_de_nota, 'CbteHasta' : numero_de_nota, 'CbteFch' : parseInt(fecha.replace(/-/g, '')), 'FchServDesde' : fecha_servicio_desde, 'FchServHasta' : fecha_servicio_hasta, 'FchVtoPago' : fecha_vencimiento_pago, 'ImpTotal' : importe_total, 'ImpTotConc': 0, // Importe neto no gravado 'ImpNeto' : importe_total, 'ImpOpEx' : 0, 'ImpIVA' : 0, 'ImpTrib' : 0, //Importe total de tributos 'MonId' : 'PES', //Tipo de moneda usada ('PES' = pesos argentinos) 'MonCotiz' : 1, // Cotización de la moneda usada (1 para pesos argentinos) 'CondicionIVAReceptorId' : condicion_iva_receptor, 'CbtesAsoc' : [ //Factura asociada\ {\ 'Tipo' : tipo_factura_asociada,\ 'PtoVta' : punto_factura_asociada,\ 'Nro' : numero_factura_asociada,\ }\ ] }; /** * Creamos la Factura **/ const res = await afip.ElectronicBilling.createVoucher(data); /** * Mostramos por pantalla los datos de la nueva Factura **/ console.log({ 'cae' : res.CAE, //CAE asignado a la Factura 'vencimiento' : res.CAEFchVto //Fecha de vencimiento del CAE }); })() **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** [AnteriorNota de Crédito electrónica Bchevron-left](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/nota-de-credito-electronica-b) [SiguienteNota de Débito electrónica Achevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/nota-de-debito-electronica-a) Última actualización hace 7 días Copiar /** * Numero del punto de venta **/ $punto_de_venta = 1; /** * Tipo de Nota de Crédito **/ $tipo_de_nota = 213; // 213 = Nota de Crédito electrónica MiPyME C /** * Número de la ultima Nota de Crédito electrónica MiPyME C **/ $last_voucher = $afip->ElectronicBilling->GetLastVoucher($punto_de_venta, $tipo_de_nota); /** * Numero del punto de venta de la Factura * asociada a la Nota de Crédito **/ $punto_factura_asociada = 1; /** * Tipo de Factura asociada a la Nota de Crédito **/ $tipo_factura_asociada = 11; // 11 = Factura C /** * Numero de Factura asociada a la Nota de Crédito **/ $numero_factura_asociada = 1; /** * Concepto de la Nota de Crédito * * Opciones: * * 1 = Productos * 2 = Servicios * 3 = Productos y Servicios **/ $concepto = 1; /** * Tipo de documento del comprador * * Opciones: * * 80 = CUIT * 86 = CUIL * 96 = DNI * 99 = Consumidor Final **/ $tipo_de_documento = 80; /** * Numero de documento del comprador (0 para consumidor final) **/ $numero_de_documento = 33693450239; /** * Numero de comprobante **/ $numero_de_nota = $last_voucher+1; /** * Fecha de la Nota de Crédito en formato aaaa-mm-dd (hasta 10 dias antes y 10 dias despues) **/ $fecha = date('Y-m-d'); /** * Importe de la Nota de Crédito **/ $importe_total = 100; /** * Condición frente al IVA del receptor * * Opciones: * * 1 = IVA Responsable Inscripto * 4 = IVA Sujeto Exento * 5 = Consumidor Final * 6 = Responsable Monotributo * 7 = Sujeto No Categorizado * 8 = Proveedor del Exterior * 9 = Cliente del Exterior * 10 = IVA Liberado – Ley N° 19.640 * 13 = Monotributista Social * 15 = IVA No Alcanzado * 16 = Monotributo Trabajador Independiente Promovido **/ $condicion_iva_receptor = 6; /** * Los siguientes campos solo son obligatorios para los conceptos 2 y 3 **/ if ($concepto === 2 || $concepto === 3) { /** * Fecha de inicio de servicio en formato aaaammdd **/ $fecha_servicio_desde = intval(date('Ymd')); /** * Fecha de fin de servicio en formato aaaammdd **/ $fecha_servicio_hasta = intval(date('Ymd')); /** * Fecha de vencimiento del pago en formato aaaammdd **/ $fecha_vencimiento_pago = intval(date('Ymd')); } else { $fecha_servicio_desde = null; $fecha_servicio_hasta = null; $fecha_vencimiento_pago = null; } $data = array( 'CantReg' => 1, // Cantidad de Notas de Crédito a registrar 'PtoVta' => $punto_de_venta, 'CbteTipo' => $tipo_de_nota, 'Concepto' => $concepto, 'DocTipo' => $tipo_de_documento, 'DocNro' => $numero_de_documento, 'CbteDesde' => $numero_de_nota, 'CbteHasta' => $numero_de_nota, 'CbteFch' => intval(str_replace('-', '', $fecha)), 'FchServDesde' => $fecha_servicio_desde, 'FchServHasta' => $fecha_servicio_hasta, 'FchVtoPago' => $fecha_vencimiento_pago, 'ImpTotal' => $importe_total, 'ImpTotConc'=> 0, // Importe neto no gravado 'ImpNeto' => $importe_total, // Importe neto 'ImpOpEx' => 0, // Importe exento al IVA 'ImpIVA' => 0, // Importe de IVA 'ImpTrib' => 0, //Importe total de tributos 'MonId' => 'PES', //Tipo de moneda usada en el comprobante ('PES' = pesos argentinos) 'MonCotiz' => 1, // Cotización de la moneda usada (1 para pesos argentinos) 'CondicionIVAReceptorId' => $condicion_iva_receptor, 'CbtesAsoc' => array( //Factura asociada array( 'Tipo' => $tipo_factura_asociada, 'PtoVta' => $punto_factura_asociada, 'Nro' => $numero_factura_asociada, ) ) ); /** * Creamos la Nota de Crédito **/ $res = $afip->ElectronicBilling->CreateVoucher($data); /** * Mostramos por pantalla los datos de la nueva Nota de Crédito **/ var_dump(array( 'cae' => $res['CAE'], //CAE asignado a la Nota de Crédito 'vencimiento' => $res['CAEFchVto'] //Fecha de vencimiento del CAE )); Copiar require "date" # Numero del punto de venta punto_de_venta = 1 # Tipo de factura tipo_de_nota = 213 # 213 = Nota de Crédito electrónica MiPyME C # Número de la ultima Nota de Crédito electrónica MiPyME C last_voucher = afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_nota) # Numero del punto de venta de la Factura # asociada a la Nota de Crédito punto_factura_asociada = 1 # Tipo de Factura asociada a la Nota de Crédito tipo_factura_asociada = 11 # 11 = Factura B # Numero de Factura asociada a la Nota de Crédito numero_factura_asociada = 1 # Concepto de la factura # # Opciones: # # 1 = Productos # 2 = Servicios # 3 = Productos y Servicios concepto = 1 # Tipo de documento del comprador # # Opciones: # # 80 = CUIT # 86 = CUIL # 96 = DNI # 99 = Consumidor Final tipo_de_documento = 80 # Numero de documento del comprador (0 para consumidor final) numero_de_documento = 33693450239 # Numero de Nota de Crédito numero_de_nota = last_voucher+1 # Fecha de la Nota de Crédito en formato aaaammdd (hasta 10 dias antes y 10 dias despues) fecha = Time.now.strftime("%Y%m%d").to_i # Importe de la Nota de Crédito importe_total = 100 # Condición frente al IVA del receptor # # Opciones: # # 1 = IVA Responsable Inscripto # 4 = IVA Sujeto Exento # 5 = Consumidor Final # 6 = Responsable Monotributo # 7 = Sujeto No Categorizado # 8 = Proveedor del Exterior # 9 = Cliente del Exterior # 10 = IVA Liberado – Ley N° 19.640 # 13 = Monotributista Social # 15 = IVA No Alcanzado # 16 = Monotributo Trabajador Independiente Promovido condicion_iva_receptor = 6 # Los siguientes campos solo son obligatorios para los conceptos 2 y 3 if concepto == 2 || concepto == 3 # Fecha de inicio de servicio en formato aaaammdd fecha_servicio_desde = 20191213 # Fecha de fin de servicio en formato aaaammdd fecha_servicio_hasta = 20191213 # Fecha de vencimiento del pago en formato aaaammdd fecha_vencimiento_pago = 20191213 else fecha_servicio_desde = nil fecha_servicio_hasta = nil fecha_vencimiento_pago = nil end data = { "CantReg": 1, # Cantidad de Notas de Crédito a registrar "PtoVta": punto_de_venta, "CbteTipo": tipo_de_nota, "Concepto": concepto, "DocTipo": tipo_de_documento, "DocNro": numero_de_documento, "CbteDesde": numero_de_nota, "CbteHasta": numero_de_nota, "CbteFch": fecha, "FchServDesde": fecha_servicio_desde, "FchServHasta": fecha_servicio_hasta, "FchVtoPago": fecha_vencimiento_pago, "ImpTotal": importe_total, "ImpTotConc": 0, # Importe neto no gravado "ImpNeto": importe_total, "ImpOpEx": 0, "ImpIVA": 0, "ImpTrib": 0, # Importe total de tributos "MonId": "PES", # Tipo de moneda usada ("PES" = pesos argentinos) "MonCotiz": 1, # Cotización de la moneda usada (1 para pesos argentinos) "CondicionIVAReceptorId" : condicion_iva_receptor, "CbtesAsoc": [ # Factura asociada\ {\ "Tipo": tipo_factura_asociada,\ "PtoVta": punto_factura_asociada,\ "Nro": numero_factura_asociada,\ }\ ] } # Creamos la Factura res = afip.ElectronicBilling.createVoucher(data) # Mostramos por pantalla los datos de la nueva Factura puts { "cae": res["CAE"], # CAE asignado a la Factura "vencimiento": res["CAEFchVto"] # Fecha de vencimiento del CAE } Copiar from datetime import datetime # Numero del punto de venta punto_de_venta = 1 # Tipo de factura tipo_de_nota = 213 # 213 = Nota de Crédito electrónica MiPyME C # Número de la ultima Nota de Crédito electrónica MiPyME C last_voucher = afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_nota) # Numero del punto de venta de la Factura # asociada a la Nota de Crédito punto_factura_asociada = 1 # Tipo de Factura asociada a la Nota de Crédito tipo_factura_asociada = 11 # 11 = Factura B # Numero de Factura asociada a la Nota de Crédito numero_factura_asociada = 1 # Concepto de la factura # # Opciones: # # 1 = Productos # 2 = Servicios # 3 = Productos y Servicios concepto = 1 # Tipo de documento del comprador # # Opciones: # # 80 = CUIT # 86 = CUIL # 96 = DNI # 99 = Consumidor Final tipo_de_documento = 80 # Numero de documento del comprador (0 para consumidor final) numero_de_documento = 33693450239 # Numero de Nota de Crédito numero_de_nota = last_voucher+1 # Fecha de la Nota de Crédito en formato aaaammdd (hasta 10 dias antes y 10 dias despues) fecha = int(datetime.today().strftime("%Y%m%d")) # Importe de la Nota de Crédito importe_total = 100 # Condición frente al IVA del receptor # # Opciones: # # 1 = IVA Responsable Inscripto # 4 = IVA Sujeto Exento # 5 = Consumidor Final # 6 = Responsable Monotributo # 7 = Sujeto No Categorizado # 8 = Proveedor del Exterior # 9 = Cliente del Exterior # 10 = IVA Liberado – Ley N° 19.640 # 13 = Monotributista Social # 15 = IVA No Alcanzado # 16 = Monotributo Trabajador Independiente Promovido condicion_iva_receptor = 6 # Los siguientes campos solo son obligatorios para los conceptos 2 y 3 if concepto == 2 or concepto == 3: # Fecha de inicio de servicio en formato aaaammdd fecha_servicio_desde = 20191213 # Fecha de fin de servicio en formato aaaammdd fecha_servicio_hasta = 20191213 # Fecha de vencimiento del pago en formato aaaammdd fecha_vencimiento_pago = 20191213 else: fecha_servicio_desde = None fecha_servicio_hasta = None fecha_vencimiento_pago = None data = { "CantReg": 1, # Cantidad de Notas de Crédito a registrar "PtoVta": punto_de_venta, "CbteTipo": tipo_de_nota, "Concepto": concepto, "DocTipo": tipo_de_documento, "DocNro": numero_de_documento, "CbteDesde": numero_de_nota, "CbteHasta": numero_de_nota, "CbteFch": fecha, "FchServDesde": fecha_servicio_desde, "FchServHasta": fecha_servicio_hasta, "FchVtoPago": fecha_vencimiento_pago, "ImpTotal": importe_total, "ImpTotConc": 0, # Importe neto no gravado "ImpNeto": importe_total, "ImpOpEx": 0, "ImpIVA": 0, "ImpTrib": 0, # Importe total de tributos "MonId": "PES", # Tipo de moneda usada ("PES" = pesos argentinos) "MonCotiz": 1, # Cotización de la moneda usada (1 para pesos argentinos) "CondicionIVAReceptorId" : condicion_iva_receptor, "CbtesAsoc": [ # Factura asociada\ {\ "Tipo": tipo_factura_asociada,\ "PtoVta": punto_factura_asociada,\ "Nro": numero_factura_asociada,\ }\ ] } # Creamos la Factura res = afip.ElectronicBilling.createVoucher(data) # Mostramos por pantalla los datos de la nueva Factura print({ "cae": res["CAE"], # CAE asignado a la Factura "vencimiento": res["CAEFchVto"] # Fecha de vencimiento del CAE }) Copiar { "environment": "dev", "method": "FECAESolicitar", "wsid": "wsfe", "params": { "Auth": { "Token": "{{token}}", "Sign": "{{sign}}", "Cuit": "20409378472" }, "FeCAEReq": { "FeCabReq": { "CantReg": 1, "PtoVta": 1, "CbteTipo": 213 }, "FeDetReq": { "FECAEDetRequest": { "Concepto": 1, "DocTipo": 80, "DocNro": 33693450239, "CbteDesde": 9, "CbteHasta": 9, "CbteFch": 20240314, "FchServDesde": null, "FchServHasta": null, "FchVtoPago": null, "ImpTotal": 100, "ImpTotConc": 0, "ImpNeto": 100, "ImpOpEx": 0, "ImpIVA": 0, "ImpTrib": 0, "MonId": "PES", "MonCotiz": 1, "CondicionIVAReceptorId": 6, "CbtesAsoc": { "CbteAsoc": [\ {\ "Tipo": 11,\ "PtoVta": 1,\ "Nro": 1\ }\ ] } } } } } } --- # Nota de Débito A | Afip SDK Node PHP Ruby Python API Copiar (async () => { /** * Numero del punto de venta **/ const punto_de_venta = 1; /** * Tipo de factura **/ const tipo_de_nota = 2; // 2 = Nota de Débito A /** * Número de la ultima Nota de Débito A **/ const last_voucher = await afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_nota); /** * Numero del punto de venta de la Factura * asociada a la Nota de Débito **/ const punto_factura_asociada = 1; /** * Tipo de Factura asociada a la Nota de Débito **/ const tipo_factura_asociada = 1; // 1 = Factura A /** * Numero de Factura asociada a la Nota de Débito **/ const numero_factura_asociada = 1; /** * Concepto de la factura * * Opciones: * * 1 = Productos * 2 = Servicios * 3 = Productos y Servicios **/ const concepto = 1; /** * Tipo de documento del comprador * * Opciones: * * 80 = CUIT * 86 = CUIL * 96 = DNI * 99 = Consumidor Final **/ const tipo_de_documento = 80; /** * Numero de documento del comprador (0 para consumidor final) **/ const numero_de_documento = 33693450239; /** * Numero de Nota de Débito **/ const numero_de_nota = last_voucher+1; /** * Fecha de la Nota de Débito en formato aaaa-mm-dd (hasta 10 dias antes y 10 dias despues) **/ const fecha = new Date(Date.now() - ((new Date()).getTimezoneOffset() * 60000)).toISOString().split('T')[0]; /** * Importe sujeto al IVA (sin icluir IVA) **/ const importe_gravado = 100; /** * Importe exento al IVA **/ const importe_exento_iva = 0; /** * Importe de IVA **/ const importe_iva = 21; /** * Condición frente al IVA del receptor * * 1 = IVA Responsable Inscripto * 4 = IVA Sujeto Exento * 5 = Consumidor Final * 6 = Responsable Monotributo * 7 = Sujeto No Categorizado * 8 = Proveedor del Exterior * 9 = Cliente del Exterior * 10 = IVA Liberado – Ley N° 19.640 * 13 = Monotributista Social * 15 = IVA No Alcanzado * 16 = Monotributo Trabajador Independiente Promovido **/ const condicion_iva_receptor = 1; /** * Los siguientes campos solo son obligatorios para los conceptos 2 y 3 **/ let fecha_servicio_desde = null, fecha_servicio_hasta = null, fecha_vencimiento_pago = null; if (concepto === 2 || concepto === 3) { /** * Fecha de inicio de servicio en formato aaaammdd **/ const fecha_servicio_desde = 20191213; /** * Fecha de fin de servicio en formato aaaammdd **/ const fecha_servicio_hasta = 20191213; /** * Fecha de vencimiento del pago en formato aaaammdd **/ const fecha_vencimiento_pago = 20191213; } const data = { 'CantReg' : 1, // Cantidad de Notas de Crédito a registrar 'PtoVta' : punto_de_venta, 'CbteTipo' : tipo_de_nota, 'Concepto' : concepto, 'DocTipo' : tipo_de_documento, 'DocNro' : numero_de_documento, 'CbteDesde' : numero_de_nota, 'CbteHasta' : numero_de_nota, 'CbteFch' : parseInt(fecha.replace(/-/g, '')), 'FchServDesde' : fecha_servicio_desde, 'FchServHasta' : fecha_servicio_hasta, 'FchVtoPago' : fecha_vencimiento_pago, 'ImpTotal' : importe_gravado + importe_iva + importe_exento_iva, 'ImpTotConc': 0, // Importe neto no gravado 'ImpNeto' : importe_gravado, 'ImpOpEx' : importe_exento_iva, 'ImpIVA' : importe_iva, 'ImpTrib' : 0, //Importe total de tributos 'MonId' : 'PES', //Tipo de moneda usada ('PES' = pesos argentinos) 'MonCotiz' : 1, // Cotización de la moneda usada (1 para pesos argentinos) 'CondicionIVAReceptorId' : condicion_iva_receptor, 'CbtesAsoc' : [ //Factura asociada\ {\ 'Tipo' : tipo_factura_asociada,\ 'PtoVta' : punto_factura_asociada,\ 'Nro' : numero_factura_asociada,\ }\ ], 'Iva' : [ // Alícuotas asociadas a la Nota de Débito\ {\ 'Id' : 5, // Id del tipo de IVA (5 = 21%)\ 'BaseImp' : importe_gravado,\ 'Importe' : importe_iva \ }\ ] }; /** * Creamos la Factura **/ const res = await afip.ElectronicBilling.createVoucher(data); /** * Mostramos por pantalla los datos de la nueva Factura **/ console.log({ 'cae' : res.CAE, //CAE asignado a la Factura 'vencimiento' : res.CAEFchVto //Fecha de vencimiento del CAE }); })() **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** [AnteriorNota de Crédito Cchevron-left](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/nota-de-credito-c) [SiguienteNota de Débito Bchevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/nota-de-debito-b) Última actualización hace 7 días Copiar /** * Numero del punto de venta **/ $punto_de_venta = 1; /** * Tipo de Nota de Débito **/ $tipo_de_nota = 2; // 2 = Nota de Débito A /** * Número de la ultima Nota de Débito A **/ $last_voucher = $afip->ElectronicBilling->GetLastVoucher($punto_de_venta, $tipo_de_nota); /** * Numero del punto de venta de la Factura * asociada a la Nota de Débito **/ $punto_factura_asociada = 1; /** * Tipo de Factura asociada a la Nota de Débito **/ $tipo_factura_asociada = 1; // 1 = Factura A /** * Numero de Factura asociada a la Nota de Débito **/ $numero_factura_asociada = 1; /** * Concepto de la Nota de Débito * * Opciones: * * 1 = Productos * 2 = Servicios * 3 = Productos y Servicios **/ $concepto = 1; /** * Tipo de documento del comprador * * Opciones: * * 80 = CUIT * 86 = CUIL * 96 = DNI * 99 = Consumidor Final **/ $tipo_de_documento = 80; /** * Numero de documento del comprador (0 para consumidor final) **/ $numero_de_documento = 33693450239; /** * Numero de Nota de Débito **/ $numero_de_nota = $last_voucher+1; /** * Fecha de la Nota de Débito en formato aaaa-mm-dd (hasta 10 dias antes y 10 dias despues) **/ $fecha = date('Y-m-d'); /** * Importe sujeto al IVA (sin icluir IVA) **/ $importe_gravado = 100; /** * Importe exento al IVA **/ $importe_exento_iva = 0; /** * Importe de IVA **/ $importe_iva = 21; /** * Condición frente al IVA del receptor * * Opciones: * * 1 = IVA Responsable Inscripto * 4 = IVA Sujeto Exento * 5 = Consumidor Final * 6 = Responsable Monotributo * 7 = Sujeto No Categorizado * 8 = Proveedor del Exterior * 9 = Cliente del Exterior * 10 = IVA Liberado – Ley N° 19.640 * 13 = Monotributista Social * 15 = IVA No Alcanzado * 16 = Monotributo Trabajador Independiente Promovido **/ $condicion_iva_receptor = 1; /** * Los siguientes campos solo son obligatorios para los conceptos 2 y 3 **/ if ($concepto === 2 || $concepto === 3) { /** * Fecha de inicio de servicio en formato aaaammdd **/ $fecha_servicio_desde = intval(date('Ymd')); /** * Fecha de fin de servicio en formato aaaammdd **/ $fecha_servicio_hasta = intval(date('Ymd')); /** * Fecha de vencimiento del pago en formato aaaammdd **/ $fecha_vencimiento_pago = intval(date('Ymd')); } else { $fecha_servicio_desde = null; $fecha_servicio_hasta = null; $fecha_vencimiento_pago = null; } $data = array( 'CantReg' => 1, // Cantidad de Notas de Crédito a registrar 'PtoVta' => $punto_de_venta, 'CbteTipo' => $tipo_de_nota, 'Concepto' => $concepto, 'DocTipo' => $tipo_de_documento, 'DocNro' => $numero_de_documento, 'CbteDesde' => $numero_de_nota, 'CbteHasta' => $numero_de_nota, 'CbteFch' => intval(str_replace('-', '', $fecha)), 'FchServDesde' => $fecha_servicio_desde, 'FchServHasta' => $fecha_servicio_hasta, 'FchVtoPago' => $fecha_vencimiento_pago, 'ImpTotal' => $importe_gravado + $importe_iva + $importe_exento_iva, 'ImpTotConc'=> 0, // Importe neto no gravado 'ImpNeto' => $importe_gravado, 'ImpOpEx' => $importe_exento_iva, 'ImpIVA' => $importe_iva, 'ImpTrib' => 0, //Importe total de tributos 'MonId' => 'PES', //Tipo de moneda usada en la Nota de Débito ('PES' = pesos argentinos) 'MonCotiz' => 1, // Cotización de la moneda usada (1 para pesos argentinos) 'CondicionIVAReceptorId' => $condicion_iva_receptor, 'CbtesAsoc' => array( //Factura asociada array( 'Tipo' => $tipo_factura_asociada, 'PtoVta' => $punto_factura_asociada, 'Nro' => $numero_factura_asociada, ) ), 'Iva' => array( // Alícuotas asociadas a la Nota de Débito array( 'Id' => 5, // Id del tipo de IVA (5 = 21%) 'BaseImp' => $importe_gravado, 'Importe' => $importe_iva ) ), ); /** * Creamos la Nota de Débito **/ $res = $afip->ElectronicBilling->CreateVoucher($data); /** * Mostramos por pantalla los datos de la nueva Nota de Débito **/ var_dump(array( 'cae' => $res['CAE'], //CAE asignado a la Nota de Débito 'vencimiento' => $res['CAEFchVto'] //Fecha de vencimiento del CAE )); Copiar require "date" # Numero del punto de venta punto_de_venta = 1 # Tipo de factura tipo_de_nota = 2 # 2 = Nota de Débito A # Número de la ultima Nota de Débito A last_voucher = afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_nota) # Numero del punto de venta de la Factura # asociada a la Nota de Débito punto_factura_asociada = 1 # Tipo de Factura asociada a la Nota de Débito tipo_factura_asociada = 1 # 1 = Factura A # Numero de Factura asociada a la Nota de Débito numero_factura_asociada = 1 # Concepto de la factura # # Opciones: # # 1 = Productos # 2 = Servicios # 3 = Productos y Servicios concepto = 1 # Tipo de documento del comprador # # Opciones: # # 80 = CUIT # 86 = CUIL # 96 = DNI # 99 = Consumidor Final tipo_de_documento = 80 # Numero de documento del comprador (0 para consumidor final) numero_de_documento = 33693450239 # Numero de Nota de Débito numero_de_nota = last_voucher+1 # Fecha de la Nota de Débito en formato aaaammdd (hasta 10 dias antes y 10 dias despues) fecha = Time.now.strftime("%Y%m%d").to_i # Importe sujeto al IVA (sin icluir IVA) importe_gravado = 100 # Importe exento al IVA importe_exento_iva = 0 # Importe de IVA importe_iva = 21 # Condición frente al IVA del receptor # # Opciones: # # 1 = IVA Responsable Inscripto # 4 = IVA Sujeto Exento # 5 = Consumidor Final # 6 = Responsable Monotributo # 7 = Sujeto No Categorizado # 8 = Proveedor del Exterior # 9 = Cliente del Exterior # 10 = IVA Liberado – Ley N° 19.640 # 13 = Monotributista Social # 15 = IVA No Alcanzado # 16 = Monotributo Trabajador Independiente Promovido condicion_iva_receptor = 1 # Los siguientes campos solo son obligatorios para los conceptos 2 y 3 if concepto == 2 || concepto == 3 # Fecha de inicio de servicio en formato aaaammdd fecha_servicio_desde = 20191213 # Fecha de fin de servicio en formato aaaammdd fecha_servicio_hasta = 20191213 # Fecha de vencimiento del pago en formato aaaammdd fecha_vencimiento_pago = 20191213 else fecha_servicio_desde = nil fecha_servicio_hasta = nil fecha_vencimiento_pago = nil end data = { "CantReg": 1, # Cantidad de Notas de Crédito a registrar "PtoVta": punto_de_venta, "CbteTipo": tipo_de_nota, "Concepto": concepto, "DocTipo": tipo_de_documento, "DocNro": numero_de_documento, "CbteDesde": numero_de_nota, "CbteHasta": numero_de_nota, "CbteFch": fecha, "FchServDesde": fecha_servicio_desde, "FchServHasta": fecha_servicio_hasta, "FchVtoPago": fecha_vencimiento_pago, "ImpTotal": importe_gravado + importe_iva + importe_exento_iva, "ImpTotConc": 0, # Importe neto no gravado "ImpNeto": importe_gravado, "ImpOpEx": importe_exento_iva, "ImpIVA": importe_iva, "ImpTrib": 0, # Importe total de tributos "MonId": "PES", # Tipo de moneda usada ("PES" = pesos argentinos) "MonCotiz": 1, # Cotización de la moneda usada (1 para pesos argentinos) "CondicionIVAReceptorId" : condicion_iva_receptor, "CbtesAsoc": [ # Factura asociada\ {\ "Tipo": tipo_factura_asociada,\ "PtoVta": punto_factura_asociada,\ "Nro": numero_factura_asociada,\ }\ ], "Iva": [ # Alícuotas asociadas a la Nota de Débito\ {\ "Id": 5, # Id del tipo de IVA (5 = 21%)\ "BaseImp": importe_gravado,\ "Importe": importe_iva \ }\ ] } # Creamos la Factura res = afip.ElectronicBilling.createVoucher(data) # Mostramos por pantalla los datos de la nueva Factura puts { "cae": res["CAE"], # CAE asignado a la Factura "vencimiento": res["CAEFchVto"] # Fecha de vencimiento del CAE } Copiar from datetime import datetime # Numero del punto de venta punto_de_venta = 1 # Tipo de factura tipo_de_nota = 2 # 2 = Nota de Débito A # Número de la ultima Nota de Débito A last_voucher = afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_nota) # Numero del punto de venta de la Factura # asociada a la Nota de Débito punto_factura_asociada = 1 # Tipo de Factura asociada a la Nota de Débito tipo_factura_asociada = 1 # 1 = Factura A # Numero de Factura asociada a la Nota de Débito numero_factura_asociada = 1 # Concepto de la factura # # Opciones: # # 1 = Productos # 2 = Servicios # 3 = Productos y Servicios concepto = 1 # Tipo de documento del comprador # # Opciones: # # 80 = CUIT # 86 = CUIL # 96 = DNI # 99 = Consumidor Final tipo_de_documento = 80 # Numero de documento del comprador (0 para consumidor final) numero_de_documento = 33693450239 # Numero de Nota de Débito numero_de_nota = last_voucher+1 # Fecha de la Nota de Débito en formato aaaammdd (hasta 10 dias antes y 10 dias despues) fecha = int(datetime.today().strftime("%Y%m%d")) # Importe sujeto al IVA (sin icluir IVA) importe_gravado = 100 # Importe exento al IVA importe_exento_iva = 0 # Importe de IVA importe_iva = 21 # Condición frente al IVA del receptor # # Opciones: # # 1 = IVA Responsable Inscripto # 4 = IVA Sujeto Exento # 5 = Consumidor Final # 6 = Responsable Monotributo # 7 = Sujeto No Categorizado # 8 = Proveedor del Exterior # 9 = Cliente del Exterior # 10 = IVA Liberado – Ley N° 19.640 # 13 = Monotributista Social # 15 = IVA No Alcanzado # 16 = Monotributo Trabajador Independiente Promovido condicion_iva_receptor = 1 # Los siguientes campos solo son obligatorios para los conceptos 2 y 3 if concepto == 2 or concepto == 3: # Fecha de inicio de servicio en formato aaaammdd fecha_servicio_desde = 20191213 # Fecha de fin de servicio en formato aaaammdd fecha_servicio_hasta = 20191213 # Fecha de vencimiento del pago en formato aaaammdd fecha_vencimiento_pago = 20191213 else: fecha_servicio_desde = None fecha_servicio_hasta = None fecha_vencimiento_pago = None data = { "CantReg": 1, # Cantidad de Notas de Crédito a registrar "PtoVta": punto_de_venta, "CbteTipo": tipo_de_nota, "Concepto": concepto, "DocTipo": tipo_de_documento, "DocNro": numero_de_documento, "CbteDesde": numero_de_nota, "CbteHasta": numero_de_nota, "CbteFch": fecha, "FchServDesde": fecha_servicio_desde, "FchServHasta": fecha_servicio_hasta, "FchVtoPago": fecha_vencimiento_pago, "ImpTotal": importe_gravado + importe_iva + importe_exento_iva, "ImpTotConc": 0, # Importe neto no gravado "ImpNeto": importe_gravado, "ImpOpEx": importe_exento_iva, "ImpIVA": importe_iva, "ImpTrib": 0, # Importe total de tributos "MonId": "PES", # Tipo de moneda usada ("PES" = pesos argentinos) "MonCotiz": 1, # Cotización de la moneda usada (1 para pesos argentinos) "CondicionIVAReceptorId" : condicion_iva_receptor, "CbtesAsoc": [ # Factura asociada\ {\ "Tipo": tipo_factura_asociada,\ "PtoVta": punto_factura_asociada,\ "Nro": numero_factura_asociada,\ }\ ], "Iva": [ # Alícuotas asociadas a la Nota de Débito\ {\ "Id": 5, # Id del tipo de IVA (5 = 21%)\ "BaseImp": importe_gravado,\ "Importe": importe_iva \ }\ ] } # Creamos la Factura res = afip.ElectronicBilling.createVoucher(data) # Mostramos por pantalla los datos de la nueva Factura print({ "cae": res["CAE"], # CAE asignado a la Factura "vencimiento": res["CAEFchVto"] # Fecha de vencimiento del CAE }) Copiar { "environment": "dev", "method": "FECAESolicitar", "wsid": "wsfe", "params": { "Auth": { "Token": "{{token}}", "Sign": "{{sign}}", "Cuit": "20409378472" }, "FeCAEReq": { "FeCabReq": { "CantReg": 1, "PtoVta": 1, "CbteTipo": 2 }, "FeDetReq": { "FECAEDetRequest": { "Concepto": 1, "DocTipo": 80, "DocNro": 33693450239, "CbteDesde": 30, "CbteHasta": 30, "CbteFch": 20240314, "FchServDesde": null, "FchServHasta": null, "FchVtoPago": null, "ImpTotal": 121, "ImpTotConc": 0, "ImpNeto": 100, "ImpOpEx": 0, "ImpIVA": 21, "ImpTrib": 0, "MonId": "PES", "MonCotiz": 1, "CondicionIVAReceptorId": 1, "CbtesAsoc": { "CbteAsoc": [\ {\ "Tipo": 1,\ "PtoVta": 1,\ "Nro": 1\ }\ ] }, "Iva": { "AlicIva": [\ {\ "Id": 5,\ "BaseImp": 100,\ "Importe": 21\ }\ ] } } } } } } --- # Nota de Débito electrónica C | Afip SDK Node PHP Ruby Python API Copiar (async () => { /** * Numero del punto de venta **/ const punto_de_venta = 1; /** * Tipo de factura **/ const tipo_de_nota = 212; // 212 = Nota de Débito electrónica MiPyME C /** * Número de la ultima Nota de Débito electrónica MiPyME C **/ const last_voucher = await afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_nota); /** * Numero del punto de venta de la Factura * asociada a la Nota de Débito **/ const punto_factura_asociada = 1; /** * Tipo de Factura asociada a la Nota de Débito **/ const tipo_factura_asociada = 11; // 11 = Factura C /** * Numero de Factura asociada a la Nota de Débito **/ const numero_factura_asociada = 1; /** * Concepto de la factura * * Opciones: * * 1 = Productos * 2 = Servicios * 3 = Productos y Servicios **/ const concepto = 1; /** * Tipo de documento del comprador * * Opciones: * * 80 = CUIT * 86 = CUIL * 96 = DNI * 99 = Consumidor Final **/ const tipo_de_documento = 80; /** * Numero de documento del comprador (0 para consumidor final) **/ const numero_de_documento = 33693450239; /** * Numero de Nota de Débito **/ const numero_de_nota = last_voucher+1; /** * Fecha de la Nota de Débito en formato aaaa-mm-dd (hasta 10 dias antes y 10 dias despues) **/ const fecha = new Date(Date.now() - ((new Date()).getTimezoneOffset() * 60000)).toISOString().split('T')[0]; /** * Importe de la Nota de Débito **/ const importe_total = 100; /** * Condición frente al IVA del receptor * * 1 = IVA Responsable Inscripto * 4 = IVA Sujeto Exento * 5 = Consumidor Final * 6 = Responsable Monotributo * 7 = Sujeto No Categorizado * 8 = Proveedor del Exterior * 9 = Cliente del Exterior * 10 = IVA Liberado – Ley N° 19.640 * 13 = Monotributista Social * 15 = IVA No Alcanzado * 16 = Monotributo Trabajador Independiente Promovido **/ const condicion_iva_receptor = 6; /** * Los siguientes campos solo son obligatorios para los conceptos 2 y 3 **/ let fecha_servicio_desde = null, fecha_servicio_hasta = null, fecha_vencimiento_pago = null; if (concepto === 2 || concepto === 3) { /** * Fecha de inicio de servicio en formato aaaammdd **/ const fecha_servicio_desde = 20191213; /** * Fecha de fin de servicio en formato aaaammdd **/ const fecha_servicio_hasta = 20191213; /** * Fecha de vencimiento del pago en formato aaaammdd **/ const fecha_vencimiento_pago = 20191213; } const data = { 'CantReg' : 1, // Cantidad de Notas de Crédito a registrar 'PtoVta' : punto_de_venta, 'CbteTipo' : tipo_de_nota, 'Concepto' : concepto, 'DocTipo' : tipo_de_documento, 'DocNro' : numero_de_documento, 'CbteDesde' : numero_de_nota, 'CbteHasta' : numero_de_nota, 'CbteFch' : parseInt(fecha.replace(/-/g, '')), 'FchServDesde' : fecha_servicio_desde, 'FchServHasta' : fecha_servicio_hasta, 'FchVtoPago' : fecha_vencimiento_pago, 'ImpTotal' : importe_total, 'ImpTotConc': 0, // Importe neto no gravado 'ImpNeto' : importe_total, 'ImpOpEx' : 0, 'ImpIVA' : 0, 'ImpTrib' : 0, //Importe total de tributos 'MonId' : 'PES', //Tipo de moneda usada ('PES' = pesos argentinos) 'MonCotiz' : 1, // Cotización de la moneda usada (1 para pesos argentinos) 'CondicionIVAReceptorId' : condicion_iva_receptor, 'CbtesAsoc' : [ //Factura asociada\ {\ 'Tipo' : tipo_factura_asociada,\ 'PtoVta' : punto_factura_asociada,\ 'Nro' : numero_factura_asociada,\ }\ ] }; /** * Creamos la Factura **/ const res = await afip.ElectronicBilling.createVoucher(data); /** * Mostramos por pantalla los datos de la nueva Factura **/ console.log({ 'cae' : res.CAE, //CAE asignado a la Factura 'vencimiento' : res.CAEFchVto //Fecha de vencimiento del CAE }); })() **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** [AnteriorNota de Débito electrónica Bchevron-left](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/nota-de-debito-electronica-b) [SiguientePadrón de constancia de inscripciónchevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/padron-de-constancia-de-inscripcion) Última actualización hace 7 días Copiar /** * Numero del punto de venta **/ $punto_de_venta = 1; /** * Tipo de Nota de Débito **/ $tipo_de_nota = 212; // 212 = Nota de Débito electrónica MiPyME C /** * Número de la ultima Nota de Débito electrónica MiPyME C **/ $last_voucher = $afip->ElectronicBilling->GetLastVoucher($punto_de_venta, $tipo_de_nota); /** * Numero del punto de venta de la Factura * asociada a la Nota de Débito **/ $punto_factura_asociada = 1; /** * Tipo de Factura asociada a la Nota de Débito **/ $tipo_factura_asociada = 11; // 11 = Factura C /** * Numero de Factura asociada a la Nota de Débito **/ $numero_factura_asociada = 1; /** * Concepto de la Nota de Débito * * Opciones: * * 1 = Productos * 2 = Servicios * 3 = Productos y Servicios **/ $concepto = 1; /** * Tipo de documento del comprador * * Opciones: * * 80 = CUIT * 86 = CUIL * 96 = DNI * 99 = Consumidor Final **/ $tipo_de_documento = 80; /** * Numero de documento del comprador (0 para consumidor final) **/ $numero_de_documento = 33693450239; /** * Numero de comprobante **/ $numero_de_nota = $last_voucher+1; /** * Fecha de la Nota de Débito en formato aaaa-mm-dd (hasta 10 dias antes y 10 dias despues) **/ $fecha = date('Y-m-d'); /** * Importe de la Nota de Débito **/ $importe_total = 100; /** * Condición frente al IVA del receptor * * Opciones: * * 1 = IVA Responsable Inscripto * 4 = IVA Sujeto Exento * 5 = Consumidor Final * 6 = Responsable Monotributo * 7 = Sujeto No Categorizado * 8 = Proveedor del Exterior * 9 = Cliente del Exterior * 10 = IVA Liberado – Ley N° 19.640 * 13 = Monotributista Social * 15 = IVA No Alcanzado * 16 = Monotributo Trabajador Independiente Promovido **/ $condicion_iva_receptor = 6; /** * Los siguientes campos solo son obligatorios para los conceptos 2 y 3 **/ if ($concepto === 2 || $concepto === 3) { /** * Fecha de inicio de servicio en formato aaaammdd **/ $fecha_servicio_desde = intval(date('Ymd')); /** * Fecha de fin de servicio en formato aaaammdd **/ $fecha_servicio_hasta = intval(date('Ymd')); /** * Fecha de vencimiento del pago en formato aaaammdd **/ $fecha_vencimiento_pago = intval(date('Ymd')); } else { $fecha_servicio_desde = null; $fecha_servicio_hasta = null; $fecha_vencimiento_pago = null; } $data = array( 'CantReg' => 1, // Cantidad de Notas de Crédito a registrar 'PtoVta' => $punto_de_venta, 'CbteTipo' => $tipo_de_nota, 'Concepto' => $concepto, 'DocTipo' => $tipo_de_documento, 'DocNro' => $numero_de_documento, 'CbteDesde' => $numero_de_nota, 'CbteHasta' => $numero_de_nota, 'CbteFch' => intval(str_replace('-', '', $fecha)), 'FchServDesde' => $fecha_servicio_desde, 'FchServHasta' => $fecha_servicio_hasta, 'FchVtoPago' => $fecha_vencimiento_pago, 'ImpTotal' => $importe_total, 'ImpTotConc'=> 0, // Importe neto no gravado 'ImpNeto' => $importe_total, // Importe neto 'ImpOpEx' => 0, // Importe exento al IVA 'ImpIVA' => 0, // Importe de IVA 'ImpTrib' => 0, //Importe total de tributos 'MonId' => 'PES', //Tipo de moneda usada en el comprobante ('PES' = pesos argentinos) 'MonCotiz' => 1, // Cotización de la moneda usada (1 para pesos argentinos) 'CondicionIVAReceptorId' => $condicion_iva_receptor, 'CbtesAsoc' => array( //Factura asociada array( 'Tipo' => $tipo_factura_asociada, 'PtoVta' => $punto_factura_asociada, 'Nro' => $numero_factura_asociada, ) ) ); /** * Creamos la Nota de Débito **/ $res = $afip->ElectronicBilling->CreateVoucher($data); /** * Mostramos por pantalla los datos de la nueva Nota de Débito **/ var_dump(array( 'cae' => $res['CAE'], //CAE asignado a la Nota de Débito 'vencimiento' => $res['CAEFchVto'] //Fecha de vencimiento del CAE )); Copiar require "date" # Numero del punto de venta punto_de_venta = 1 # Tipo de factura tipo_de_nota = 212 # 212 = Nota de Débito electrónica MiPyME C # Número de la ultima Nota de Débito electrónica MiPyME C last_voucher = afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_nota) # Numero del punto de venta de la Factura # asociada a la Nota de Débito punto_factura_asociada = 1 # Tipo de Factura asociada a la Nota de Débito tipo_factura_asociada = 11 # 11 = Factura B # Numero de Factura asociada a la Nota de Débito numero_factura_asociada = 1 # Concepto de la factura # # Opciones: # # 1 = Productos # 2 = Servicios # 3 = Productos y Servicios concepto = 1 # Tipo de documento del comprador # # Opciones: # # 80 = CUIT # 86 = CUIL # 96 = DNI # 99 = Consumidor Final tipo_de_documento = 80 # Numero de documento del comprador (0 para consumidor final) numero_de_documento = 33693450239 # Numero de Nota de Débito numero_de_nota = last_voucher+1 # Fecha de la Nota de Débito en formato aaaammdd (hasta 10 dias antes y 10 dias despues) fecha = Time.now.strftime("%Y%m%d").to_i # Importe de la Nota de Débito importe_total = 100 # Condición frente al IVA del receptor # # Opciones: # # 1 = IVA Responsable Inscripto # 4 = IVA Sujeto Exento # 5 = Consumidor Final # 6 = Responsable Monotributo # 7 = Sujeto No Categorizado # 8 = Proveedor del Exterior # 9 = Cliente del Exterior # 10 = IVA Liberado – Ley N° 19.640 # 13 = Monotributista Social # 15 = IVA No Alcanzado # 16 = Monotributo Trabajador Independiente Promovido condicion_iva_receptor = 6 # Los siguientes campos solo son obligatorios para los conceptos 2 y 3 if concepto == 2 || concepto == 3 # Fecha de inicio de servicio en formato aaaammdd fecha_servicio_desde = 20191213 # Fecha de fin de servicio en formato aaaammdd fecha_servicio_hasta = 20191213 # Fecha de vencimiento del pago en formato aaaammdd fecha_vencimiento_pago = 20191213 else fecha_servicio_desde = nil fecha_servicio_hasta = nil fecha_vencimiento_pago = nil end data = { "CantReg": 1, # Cantidad de Notas de Crédito a registrar "PtoVta": punto_de_venta, "CbteTipo": tipo_de_nota, "Concepto": concepto, "DocTipo": tipo_de_documento, "DocNro": numero_de_documento, "CbteDesde": numero_de_nota, "CbteHasta": numero_de_nota, "CbteFch": fecha, "FchServDesde": fecha_servicio_desde, "FchServHasta": fecha_servicio_hasta, "FchVtoPago": fecha_vencimiento_pago, "ImpTotal": importe_total, "ImpTotConc": 0, # Importe neto no gravado "ImpNeto": importe_total, "ImpOpEx": 0, "ImpIVA": 0, "ImpTrib": 0, # Importe total de tributos "MonId": "PES", # Tipo de moneda usada ("PES" = pesos argentinos) "MonCotiz": 1, # Cotización de la moneda usada (1 para pesos argentinos) "CondicionIVAReceptorId" : condicion_iva_receptor, "CbtesAsoc": [ # Factura asociada\ {\ "Tipo": tipo_factura_asociada,\ "PtoVta": punto_factura_asociada,\ "Nro": numero_factura_asociada,\ }\ ] } # Creamos la Factura res = afip.ElectronicBilling.createVoucher(data) # Mostramos por pantalla los datos de la nueva Factura puts { "cae": res["CAE"], # CAE asignado a la Factura "vencimiento": res["CAEFchVto"] # Fecha de vencimiento del CAE } Copiar from datetime import datetime # Numero del punto de venta punto_de_venta = 1 # Tipo de factura tipo_de_nota = 212 # 212 = Nota de Débito electrónica MiPyME C # Número de la ultima Nota de Débito electrónica MiPyME C last_voucher = afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_nota) # Numero del punto de venta de la Factura # asociada a la Nota de Débito punto_factura_asociada = 1 # Tipo de Factura asociada a la Nota de Débito tipo_factura_asociada = 11 # 11 = Factura B # Numero de Factura asociada a la Nota de Débito numero_factura_asociada = 1 # Concepto de la factura # # Opciones: # # 1 = Productos # 2 = Servicios # 3 = Productos y Servicios concepto = 1 # Tipo de documento del comprador # # Opciones: # # 80 = CUIT # 86 = CUIL # 96 = DNI # 99 = Consumidor Final tipo_de_documento = 80 # Numero de documento del comprador (0 para consumidor final) numero_de_documento = 33693450239 # Numero de Nota de Débito numero_de_nota = last_voucher+1 # Fecha de la Nota de Débito en formato aaaammdd (hasta 10 dias antes y 10 dias despues) fecha = int(datetime.today().strftime("%Y%m%d")) # Importe de la Nota de Débito importe_total = 100 # Condición frente al IVA del receptor # # Opciones: # # 1 = IVA Responsable Inscripto # 4 = IVA Sujeto Exento # 5 = Consumidor Final # 6 = Responsable Monotributo # 7 = Sujeto No Categorizado # 8 = Proveedor del Exterior # 9 = Cliente del Exterior # 10 = IVA Liberado – Ley N° 19.640 # 13 = Monotributista Social # 15 = IVA No Alcanzado # 16 = Monotributo Trabajador Independiente Promovido condicion_iva_receptor = 6 # Los siguientes campos solo son obligatorios para los conceptos 2 y 3 if concepto == 2 or concepto == 3: # Fecha de inicio de servicio en formato aaaammdd fecha_servicio_desde = 20191213 # Fecha de fin de servicio en formato aaaammdd fecha_servicio_hasta = 20191213 # Fecha de vencimiento del pago en formato aaaammdd fecha_vencimiento_pago = 20191213 else: fecha_servicio_desde = None fecha_servicio_hasta = None fecha_vencimiento_pago = None data = { "CantReg": 1, # Cantidad de Notas de Crédito a registrar "PtoVta": punto_de_venta, "CbteTipo": tipo_de_nota, "Concepto": concepto, "DocTipo": tipo_de_documento, "DocNro": numero_de_documento, "CbteDesde": numero_de_nota, "CbteHasta": numero_de_nota, "CbteFch": fecha, "FchServDesde": fecha_servicio_desde, "FchServHasta": fecha_servicio_hasta, "FchVtoPago": fecha_vencimiento_pago, "ImpTotal": importe_total, "ImpTotConc": 0, # Importe neto no gravado "ImpNeto": importe_total, "ImpOpEx": 0, "ImpIVA": 0, "ImpTrib": 0, # Importe total de tributos "MonId": "PES", # Tipo de moneda usada ("PES" = pesos argentinos) "MonCotiz": 1, # Cotización de la moneda usada (1 para pesos argentinos) "CondicionIVAReceptorId" : condicion_iva_receptor, "CbtesAsoc": [ # Factura asociada\ {\ "Tipo": tipo_factura_asociada,\ "PtoVta": punto_factura_asociada,\ "Nro": numero_factura_asociada,\ }\ ] } # Creamos la Factura res = afip.ElectronicBilling.createVoucher(data) # Mostramos por pantalla los datos de la nueva Factura print({ "cae": res["CAE"], # CAE asignado a la Factura "vencimiento": res["CAEFchVto"] # Fecha de vencimiento del CAE }) Copiar { "environment": "dev", "method": "FECAESolicitar", "wsid": "wsfe", "params": { "Auth": { "Token": "{{token}}", "Sign": "{{sign}}", "Cuit": "20409378472" }, "FeCAEReq": { "FeCabReq": { "CantReg": 1, "PtoVta": 1, "CbteTipo": 212 }, "FeDetReq": { "FECAEDetRequest": { "Concepto": 1, "DocTipo": 80, "DocNro": 33693450239, "CbteDesde": 9, "CbteHasta": 9, "CbteFch": 20240314, "FchServDesde": null, "FchServHasta": null, "FchVtoPago": null, "ImpTotal": 100, "ImpTotConc": 0, "ImpNeto": 100, "ImpOpEx": 0, "ImpIVA": 0, "ImpTrib": 0, "MonId": "PES", "MonCotiz": 1, "CondicionIVAReceptorId": 6, "CbtesAsoc": { "CbteAsoc": [\ {\ "Tipo": 11,\ "PtoVta": 1,\ "Nro": 1\ }\ ] } } } } } } --- # Nota de Débito B | Afip SDK Node PHP Ruby Python API Copiar (async () => { /** * Numero del punto de venta **/ const punto_de_venta = 1; /** * Tipo de factura **/ const tipo_de_nota = 7; // 7 = Nota de Débito B /** * Número de la ultima Nota de Débito B **/ const last_voucher = await afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_nota); /** * Numero del punto de venta de la Factura * asociada a la Nota de Débito **/ const punto_factura_asociada = 1; /** * Tipo de Factura asociada a la Nota de Débito **/ const tipo_factura_asociada = 6; // 6 = Factura B /** * Numero de Factura asociada a la Nota de Débito **/ const numero_factura_asociada = 1; /** * Concepto de la factura * * Opciones: * * 1 = Productos * 2 = Servicios * 3 = Productos y Servicios **/ const concepto = 1; /** * Tipo de documento del comprador * * Opciones: * * 80 = CUIT * 86 = CUIL * 96 = DNI * 99 = Consumidor Final **/ const tipo_de_documento = 99; /** * Numero de documento del comprador (0 para consumidor final) **/ const numero_de_documento = 0; /** * Numero de Nota de Débito **/ const numero_de_nota = last_voucher+1; /** * Fecha de la Nota de Débito en formato aaaa-mm-dd (hasta 10 dias antes y 10 dias despues) **/ const fecha = new Date(Date.now() - ((new Date()).getTimezoneOffset() * 60000)).toISOString().split('T')[0]; /** * Importe sujeto al IVA (sin icluir IVA) **/ const importe_gravado = 100; /** * Importe exento al IVA **/ const importe_exento_iva = 0; /** * Importe de IVA **/ const importe_iva = 21; /** * Condición frente al IVA del receptor * * 1 = IVA Responsable Inscripto * 4 = IVA Sujeto Exento * 5 = Consumidor Final * 6 = Responsable Monotributo * 7 = Sujeto No Categorizado * 8 = Proveedor del Exterior * 9 = Cliente del Exterior * 10 = IVA Liberado – Ley N° 19.640 * 13 = Monotributista Social * 15 = IVA No Alcanzado * 16 = Monotributo Trabajador Independiente Promovido **/ const condicion_iva_receptor = 5; /** * Los siguientes campos solo son obligatorios para los conceptos 2 y 3 **/ let fecha_servicio_desde = null, fecha_servicio_hasta = null, fecha_vencimiento_pago = null; if (concepto === 2 || concepto === 3) { /** * Fecha de inicio de servicio en formato aaaammdd **/ const fecha_servicio_desde = 20191213; /** * Fecha de fin de servicio en formato aaaammdd **/ const fecha_servicio_hasta = 20191213; /** * Fecha de vencimiento del pago en formato aaaammdd **/ const fecha_vencimiento_pago = 20191213; } const data = { 'CantReg' : 1, // Cantidad de Notas de Crédito a registrar 'PtoVta' : punto_de_venta, 'CbteTipo' : tipo_de_nota, 'Concepto' : concepto, 'DocTipo' : tipo_de_documento, 'DocNro' : numero_de_documento, 'CbteDesde' : numero_de_nota, 'CbteHasta' : numero_de_nota, 'CbteFch' : parseInt(fecha.replace(/-/g, '')), 'FchServDesde' : fecha_servicio_desde, 'FchServHasta' : fecha_servicio_hasta, 'FchVtoPago' : fecha_vencimiento_pago, 'ImpTotal' : importe_gravado + importe_iva + importe_exento_iva, 'ImpTotConc': 0, // Importe neto no gravado 'ImpNeto' : importe_gravado, 'ImpOpEx' : importe_exento_iva, 'ImpIVA' : importe_iva, 'ImpTrib' : 0, //Importe total de tributos 'MonId' : 'PES', //Tipo de moneda usada ('PES' = pesos argentinos) 'MonCotiz' : 1, // Cotización de la moneda usada (1 para pesos argentinos) 'CondicionIVAReceptorId' : condicion_iva_receptor, 'CbtesAsoc' : [ //Factura asociada\ {\ 'Tipo' : tipo_factura_asociada,\ 'PtoVta' : punto_factura_asociada,\ 'Nro' : numero_factura_asociada,\ }\ ], 'Iva' : [ // Alícuotas asociadas a la Nota de Débito\ {\ 'Id' : 5, // Id del tipo de IVA (5 = 21%)\ 'BaseImp' : importe_gravado,\ 'Importe' : importe_iva \ }\ ] }; /** * Creamos la Factura **/ const res = await afip.ElectronicBilling.createVoucher(data); /** * Mostramos por pantalla los datos de la nueva Factura **/ console.log({ 'cae' : res.CAE, //CAE asignado a la Factura 'vencimiento' : res.CAEFchVto //Fecha de vencimiento del CAE }); })() **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** [AnteriorNota de Débito Achevron-left](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/nota-de-debito-a) [SiguienteNota de Débito Cchevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/nota-de-debito-c) Última actualización hace 7 días Copiar /** * Numero del punto de venta **/ $punto_de_venta = 1; /** * Tipo de Nota de Débito **/ $tipo_de_nota = 7; // 7 = Nota de Débito B /** * Número de la ultima Nota de Débito B **/ $last_voucher = $afip->ElectronicBilling->GetLastVoucher($punto_de_venta, $tipo_de_nota); /** * Numero del punto de venta de la Factura * asociada a la Nota de Débito **/ $punto_factura_asociada = 1; /** * Tipo de Factura asociada a la Nota de Débito **/ $tipo_factura_asociada = 6; // 6 = Factura B /** * Numero de Factura asociada a la Nota de Débito **/ $numero_factura_asociada = 1; /** * Concepto de la Nota de Débito * * Opciones: * * 1 = Productos * 2 = Servicios * 3 = Productos y Servicios **/ $concepto = 1; /** * Tipo de documento del comprador * * Opciones: * * 80 = CUIT * 86 = CUIL * 96 = DNI * 99 = Consumidor Final **/ $tipo_de_documento = 99; /** * Numero de documento del comprador (0 para consumidor final) **/ $numero_de_documento = 0; /** * Numero de Nota de Débito **/ $numero_de_nota = $last_voucher+1; /** * Fecha de la Nota de Débito en formato aaaa-mm-dd (hasta 10 dias antes y 10 dias despues) **/ $fecha = date('Y-m-d'); /** * Importe sujeto al IVA (sin icluir IVA) **/ $importe_gravado = 100; /** * Importe exento al IVA **/ $importe_exento_iva = 0; /** * Importe de IVA **/ $importe_iva = 21; /** * Condición frente al IVA del receptor * * Opciones: * * 1 = IVA Responsable Inscripto * 4 = IVA Sujeto Exento * 5 = Consumidor Final * 6 = Responsable Monotributo * 7 = Sujeto No Categorizado * 8 = Proveedor del Exterior * 9 = Cliente del Exterior * 10 = IVA Liberado – Ley N° 19.640 * 13 = Monotributista Social * 15 = IVA No Alcanzado * 16 = Monotributo Trabajador Independiente Promovido **/ $condicion_iva_receptor = 5; /** * Los siguientes campos solo son obligatorios para los conceptos 2 y 3 **/ if ($concepto === 2 || $concepto === 3) { /** * Fecha de inicio de servicio en formato aaaammdd **/ $fecha_servicio_desde = intval(date('Ymd')); /** * Fecha de fin de servicio en formato aaaammdd **/ $fecha_servicio_hasta = intval(date('Ymd')); /** * Fecha de vencimiento del pago en formato aaaammdd **/ $fecha_vencimiento_pago = intval(date('Ymd')); } else { $fecha_servicio_desde = null; $fecha_servicio_hasta = null; $fecha_vencimiento_pago = null; } $data = array( 'CantReg' => 1, // Cantidad de Notas de Crédito a registrar 'PtoVta' => $punto_de_venta, 'CbteTipo' => $tipo_de_nota, 'Concepto' => $concepto, 'DocTipo' => $tipo_de_documento, 'DocNro' => $numero_de_documento, 'CbteDesde' => $numero_de_nota, 'CbteHasta' => $numero_de_nota, 'CbteFch' => intval(str_replace('-', '', $fecha)), 'FchServDesde' => $fecha_servicio_desde, 'FchServHasta' => $fecha_servicio_hasta, 'FchVtoPago' => $fecha_vencimiento_pago, 'ImpTotal' => $importe_gravado + $importe_iva + $importe_exento_iva, 'ImpTotConc'=> 0, // Importe neto no gravado 'ImpNeto' => $importe_gravado, 'ImpOpEx' => $importe_exento_iva, 'ImpIVA' => $importe_iva, 'ImpTrib' => 0, //Importe total de tributos 'MonId' => 'PES', //Tipo de moneda usada en la Nota de Débito ('PES' = pesos argentinos) 'MonCotiz' => 1, // Cotización de la moneda usada (1 para pesos argentinos) 'CondicionIVAReceptorId' => $condicion_iva_receptor, 'CbtesAsoc' => array( //Factura asociada array( 'Tipo' => $tipo_factura_asociada, 'PtoVta' => $punto_factura_asociada, 'Nro' => $numero_factura_asociada, ) ), 'Iva' => array(// Alícuotas asociadas a la Nota de Débito array( 'Id' => 5, // Id del tipo de IVA (5 = 21%) 'BaseImp' => $importe_gravado, 'Importe' => $importe_iva ) ), ); /** * Creamos la Nota de Débito **/ $res = $afip->ElectronicBilling->CreateVoucher($data); /** * Mostramos por pantalla los datos de la nueva Nota de Débito **/ var_dump(array( 'cae' => $res['CAE'], //CAE asignado a la Nota de Débito 'vencimiento' => $res['CAEFchVto'] //Fecha de vencimiento del CAE )); Copiar require "date" # Numero del punto de venta punto_de_venta = 1 # Tipo de factura tipo_de_nota = 7 # 7 = Nota de Débito B # Número de la ultima Nota de Débito B last_voucher = afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_nota) # Numero del punto de venta de la Factura # asociada a la Nota de Débito punto_factura_asociada = 1 # Tipo de Factura asociada a la Nota de Débito tipo_factura_asociada = 6 # 6 = Factura B # Numero de Factura asociada a la Nota de Débito numero_factura_asociada = 1 # Concepto de la factura # # Opciones: # # 1 = Productos # 2 = Servicios # 3 = Productos y Servicios concepto = 1 # Tipo de documento del comprador # # Opciones: # # 80 = CUIT # 86 = CUIL # 96 = DNI # 99 = Consumidor Final tipo_de_documento = 99 # Numero de documento del comprador (0 para consumidor final) numero_de_documento = 0 # Numero de Nota de Débito numero_de_nota = last_voucher+1 # Fecha de la Nota de Débito en formato aaaammdd (hasta 10 dias antes y 10 dias despues) fecha = Time.now.strftime("%Y%m%d").to_i # Importe sujeto al IVA (sin icluir IVA) importe_gravado = 100 # Importe exento al IVA importe_exento_iva = 0 # Importe de IVA importe_iva = 21 # Condición frente al IVA del receptor # # Opciones: # # 1 = IVA Responsable Inscripto # 4 = IVA Sujeto Exento # 5 = Consumidor Final # 6 = Responsable Monotributo # 7 = Sujeto No Categorizado # 8 = Proveedor del Exterior # 9 = Cliente del Exterior # 10 = IVA Liberado – Ley N° 19.640 # 13 = Monotributista Social # 15 = IVA No Alcanzado # 16 = Monotributo Trabajador Independiente Promovido condicion_iva_receptor = 5 # Los siguientes campos solo son obligatorios para los conceptos 2 y 3 if concepto == 2 || concepto == 3 # Fecha de inicio de servicio en formato aaaammdd fecha_servicio_desde = 20191213 # Fecha de fin de servicio en formato aaaammdd fecha_servicio_hasta = 20191213 # Fecha de vencimiento del pago en formato aaaammdd fecha_vencimiento_pago = 20191213 else fecha_servicio_desde = nil fecha_servicio_hasta = nil fecha_vencimiento_pago = nil end data = { "CantReg": 1, # Cantidad de Notas de Crédito a registrar "PtoVta": punto_de_venta, "CbteTipo": tipo_de_nota, "Concepto": concepto, "DocTipo": tipo_de_documento, "DocNro": numero_de_documento, "CbteDesde": numero_de_nota, "CbteHasta": numero_de_nota, "CbteFch": fecha, "FchServDesde": fecha_servicio_desde, "FchServHasta": fecha_servicio_hasta, "FchVtoPago": fecha_vencimiento_pago, "ImpTotal": importe_gravado + importe_iva + importe_exento_iva, "ImpTotConc": 0, # Importe neto no gravado "ImpNeto": importe_gravado, "ImpOpEx": importe_exento_iva, "ImpIVA": importe_iva, "ImpTrib": 0, # Importe total de tributos "MonId": "PES", # Tipo de moneda usada ("PES" = pesos argentinos) "MonCotiz": 1, # Cotización de la moneda usada (1 para pesos argentinos) "CondicionIVAReceptorId" : condicion_iva_receptor, "CbtesAsoc": [ # Factura asociada\ {\ "Tipo": tipo_factura_asociada,\ "PtoVta": punto_factura_asociada,\ "Nro": numero_factura_asociada,\ }\ ], "Iva": [ # Alícuotas asociadas a la Nota de Débito\ {\ "Id": 5, # Id del tipo de IVA (5 = 21%)\ "BaseImp": importe_gravado,\ "Importe": importe_iva \ }\ ] } # Creamos la Factura res = afip.ElectronicBilling.createVoucher(data) # Mostramos por pantalla los datos de la nueva Factura puts { "cae": res["CAE"], # CAE asignado a la Factura "vencimiento": res["CAEFchVto"] # Fecha de vencimiento del CAE } Copiar from datetime import datetime # Numero del punto de venta punto_de_venta = 1 # Tipo de factura tipo_de_nota = 7 # 7 = Nota de Débito B # Número de la ultima Nota de Débito B last_voucher = afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_nota) # Numero del punto de venta de la Factura # asociada a la Nota de Débito punto_factura_asociada = 1 # Tipo de Factura asociada a la Nota de Débito tipo_factura_asociada = 6 # 6 = Factura B # Numero de Factura asociada a la Nota de Débito numero_factura_asociada = 1 # Concepto de la factura # # Opciones: # # 1 = Productos # 2 = Servicios # 3 = Productos y Servicios concepto = 1 # Tipo de documento del comprador # # Opciones: # # 80 = CUIT # 86 = CUIL # 96 = DNI # 99 = Consumidor Final tipo_de_documento = 99 # Numero de documento del comprador (0 para consumidor final) numero_de_documento = 0 # Numero de Nota de Débito numero_de_nota = last_voucher+1 # Fecha de la Nota de Débito en formato aaaammdd (hasta 10 dias antes y 10 dias despues) fecha = int(datetime.today().strftime("%Y%m%d")) # Importe sujeto al IVA (sin icluir IVA) importe_gravado = 100 # Importe exento al IVA importe_exento_iva = 0 # Importe de IVA importe_iva = 21 # Condición frente al IVA del receptor # # Opciones: # # 1 = IVA Responsable Inscripto # 4 = IVA Sujeto Exento # 5 = Consumidor Final # 6 = Responsable Monotributo # 7 = Sujeto No Categorizado # 8 = Proveedor del Exterior # 9 = Cliente del Exterior # 10 = IVA Liberado – Ley N° 19.640 # 13 = Monotributista Social # 15 = IVA No Alcanzado # 16 = Monotributo Trabajador Independiente Promovido condicion_iva_receptor = 5 # Los siguientes campos solo son obligatorios para los conceptos 2 y 3 if concepto == 2 or concepto == 3: # Fecha de inicio de servicio en formato aaaammdd fecha_servicio_desde = 20191213 # Fecha de fin de servicio en formato aaaammdd fecha_servicio_hasta = 20191213 # Fecha de vencimiento del pago en formato aaaammdd fecha_vencimiento_pago = 20191213 else: fecha_servicio_desde = None fecha_servicio_hasta = None fecha_vencimiento_pago = None data = { "CantReg": 1, # Cantidad de Notas de Crédito a registrar "PtoVta": punto_de_venta, "CbteTipo": tipo_de_nota, "Concepto": concepto, "DocTipo": tipo_de_documento, "DocNro": numero_de_documento, "CbteDesde": numero_de_nota, "CbteHasta": numero_de_nota, "CbteFch": fecha, "FchServDesde": fecha_servicio_desde, "FchServHasta": fecha_servicio_hasta, "FchVtoPago": fecha_vencimiento_pago, "ImpTotal": importe_gravado + importe_iva + importe_exento_iva, "ImpTotConc": 0, # Importe neto no gravado "ImpNeto": importe_gravado, "ImpOpEx": importe_exento_iva, "ImpIVA": importe_iva, "ImpTrib": 0, # Importe total de tributos "MonId": "PES", # Tipo de moneda usada ("PES" = pesos argentinos) "MonCotiz": 1, # Cotización de la moneda usada (1 para pesos argentinos) "CondicionIVAReceptorId" : condicion_iva_receptor, "CbtesAsoc": [ # Factura asociada\ {\ "Tipo": tipo_factura_asociada,\ "PtoVta": punto_factura_asociada,\ "Nro": numero_factura_asociada,\ }\ ], "Iva": [ # Alícuotas asociadas a la Nota de Débito\ {\ "Id": 5, # Id del tipo de IVA (5 = 21%)\ "BaseImp": importe_gravado,\ "Importe": importe_iva \ }\ ] } # Creamos la Factura res = afip.ElectronicBilling.createVoucher(data) # Mostramos por pantalla los datos de la nueva Factura print({ "cae": res["CAE"], # CAE asignado a la Factura "vencimiento": res["CAEFchVto"] # Fecha de vencimiento del CAE }) Copiar { "environment": "dev", "method": "FECAESolicitar", "wsid": "wsfe", "params": { "Auth": { "Token": "{{token}}", "Sign": "{{sign}}", "Cuit": "20409378472" }, "FeCAEReq": { "FeCabReq": { "CantReg": 1, "PtoVta": 1, "CbteTipo": 7 }, "FeDetReq": { "FECAEDetRequest": { "Concepto": 1, "DocTipo": 99, "DocNro": 0, "CbteDesde": 15, "CbteHasta": 15, "CbteFch": 20240314, "FchServDesde": null, "FchServHasta": null, "FchVtoPago": null, "ImpTotal": 121, "ImpTotConc": 0, "ImpNeto": 100, "ImpOpEx": 0, "ImpIVA": 21, "ImpTrib": 0, "MonId": "PES", "MonCotiz": 1, "CondicionIVAReceptorId": 5, "CbtesAsoc": { "CbteAsoc": [\ {\ "Tipo": 6,\ "PtoVta": 1,\ "Nro": 1\ }\ ] }, "Iva": { "AlicIva": [\ {\ "Id": 5,\ "BaseImp": 100,\ "Importe": 21\ }\ ] } } } } } } --- # Nota de Crédito A | Afip SDK Node PHP Ruby Python API Copiar (async () => { /** * Numero del punto de venta **/ const punto_de_venta = 1; /** * Tipo de factura **/ const tipo_de_nota = 3; // 3 = Nota de Crédito A /** * Número de la ultima Nota de Crédito A **/ const last_voucher = await afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_nota); /** * Numero del punto de venta de la Factura * asociada a la Nota de Crédito **/ const punto_factura_asociada = 1; /** * Tipo de Factura asociada a la Nota de Crédito **/ const tipo_factura_asociada = 1; // 1 = Factura A /** * Numero de Factura asociada a la Nota de Crédito **/ const numero_factura_asociada = 1; /** * Concepto de la factura * * Opciones: * * 1 = Productos * 2 = Servicios * 3 = Productos y Servicios **/ const concepto = 1; /** * Tipo de documento del comprador * * Opciones: * * 80 = CUIT * 86 = CUIL * 96 = DNI * 99 = Consumidor Final **/ const tipo_de_documento = 80; /** * Numero de documento del comprador (0 para consumidor final) **/ const numero_de_documento = 33693450239; /** * Numero de Nota de Crédito **/ const numero_de_nota = last_voucher+1; /** * Fecha de la Nota de Crédito en formato aaaa-mm-dd (hasta 10 dias antes y 10 dias despues) **/ const fecha = new Date(Date.now() - ((new Date()).getTimezoneOffset() * 60000)).toISOString().split('T')[0]; /** * Importe sujeto al IVA (sin icluir IVA) **/ const importe_gravado = 100; /** * Importe exento al IVA **/ const importe_exento_iva = 0; /** * Importe de IVA **/ const importe_iva = 21; /** * Condición frente al IVA del receptor * * 1 = IVA Responsable Inscripto * 4 = IVA Sujeto Exento * 5 = Consumidor Final * 6 = Responsable Monotributo * 7 = Sujeto No Categorizado * 8 = Proveedor del Exterior * 9 = Cliente del Exterior * 10 = IVA Liberado – Ley N° 19.640 * 13 = Monotributista Social * 15 = IVA No Alcanzado * 16 = Monotributo Trabajador Independiente Promovido **/ const condicion_iva_receptor = 1; /** * Los siguientes campos solo son obligatorios para los conceptos 2 y 3 **/ let fecha_servicio_desde = null, fecha_servicio_hasta = null, fecha_vencimiento_pago = null; if (concepto === 2 || concepto === 3) { /** * Fecha de inicio de servicio en formato aaaammdd **/ const fecha_servicio_desde = 20191213; /** * Fecha de fin de servicio en formato aaaammdd **/ const fecha_servicio_hasta = 20191213; /** * Fecha de vencimiento del pago en formato aaaammdd **/ const fecha_vencimiento_pago = 20191213; } const data = { 'CantReg' : 1, // Cantidad de Notas de Crédito a registrar 'PtoVta' : punto_de_venta, 'CbteTipo' : tipo_de_nota, 'Concepto' : concepto, 'DocTipo' : tipo_de_documento, 'DocNro' : numero_de_documento, 'CbteDesde' : numero_de_nota, 'CbteHasta' : numero_de_nota, 'CbteFch' : parseInt(fecha.replace(/-/g, '')), 'FchServDesde' : fecha_servicio_desde, 'FchServHasta' : fecha_servicio_hasta, 'FchVtoPago' : fecha_vencimiento_pago, 'ImpTotal' : importe_gravado + importe_iva + importe_exento_iva, 'ImpTotConc': 0, // Importe neto no gravado 'ImpNeto' : importe_gravado, 'ImpOpEx' : importe_exento_iva, 'ImpIVA' : importe_iva, 'ImpTrib' : 0, //Importe total de tributos 'MonId' : 'PES', //Tipo de moneda usada ('PES' = pesos argentinos) 'MonCotiz' : 1, // Cotización de la moneda usada (1 para pesos argentinos) 'CondicionIVAReceptorId' : condicion_iva_receptor, 'CbtesAsoc' : [ //Factura asociada\ {\ 'Tipo' : tipo_factura_asociada,\ 'PtoVta' : punto_factura_asociada,\ 'Nro' : numero_factura_asociada,\ }\ ], 'Iva' : [ // Alícuotas asociadas a la Nota de Crédito\ {\ 'Id' : 5, // Id del tipo de IVA (5 = 21%)\ 'BaseImp' : importe_gravado,\ 'Importe' : importe_iva \ }\ ] }; /** * Creamos la Factura **/ const res = await afip.ElectronicBilling.createVoucher(data); /** * Mostramos por pantalla los datos de la nueva Factura **/ console.log({ 'cae' : res.CAE, //CAE asignado a la Factura 'vencimiento' : res.CAEFchVto //Fecha de vencimiento del CAE }); })() **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** [AnteriorFactura Cchevron-left](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/factura-c) [SiguienteNota de Crédito Bchevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/nota-de-credito-b) Última actualización hace 8 meses Copiar /** * Numero del punto de venta **/ $punto_de_venta = 1; /** * Tipo de Nota de Crédito **/ $tipo_de_nota = 3; // 3 = Nota de Crédito A /** * Número de la ultima Nota de Crédito A **/ $last_voucher = $afip->ElectronicBilling->GetLastVoucher($punto_de_venta, $tipo_de_nota); /** * Numero del punto de venta de la Factura * asociada a la Nota de Crédito **/ $punto_factura_asociada = 1; /** * Tipo de Factura asociada a la Nota de Crédito **/ $tipo_factura_asociada = 1; // 1 = Factura A /** * Numero de Factura asociada a la Nota de Crédito **/ $numero_factura_asociada = 1; /** * Concepto de la Nota de Crédito * * Opciones: * * 1 = Productos * 2 = Servicios * 3 = Productos y Servicios **/ $concepto = 1; /** * Tipo de documento del comprador * * Opciones: * * 80 = CUIT * 86 = CUIL * 96 = DNI * 99 = Consumidor Final **/ $tipo_de_documento = 80; /** * Numero de documento del comprador (0 para consumidor final) **/ $numero_de_documento = 33693450239; /** * Numero de Nota de Crédito **/ $numero_de_nota = $last_voucher+1; /** * Fecha de la Nota de Crédito en formato aaaa-mm-dd (hasta 10 dias antes y 10 dias despues) **/ $fecha = date('Y-m-d'); /** * Importe sujeto al IVA (sin icluir IVA) **/ $importe_gravado = 100; /** * Importe exento al IVA **/ $importe_exento_iva = 0; /** * Importe de IVA **/ $importe_iva = 21; /** * Condición frente al IVA del receptor * * Opciones: * * 1 = IVA Responsable Inscripto * 4 = IVA Sujeto Exento * 5 = Consumidor Final * 6 = Responsable Monotributo * 7 = Sujeto No Categorizado * 8 = Proveedor del Exterior * 9 = Cliente del Exterior * 10 = IVA Liberado – Ley N° 19.640 * 13 = Monotributista Social * 15 = IVA No Alcanzado * 16 = Monotributo Trabajador Independiente Promovido **/ $condicion_iva_receptor = 1; /** * Los siguientes campos solo son obligatorios para los conceptos 2 y 3 **/ if ($concepto === 2 || $concepto === 3) { /** * Fecha de inicio de servicio en formato aaaammdd **/ $fecha_servicio_desde = intval(date('Ymd')); /** * Fecha de fin de servicio en formato aaaammdd **/ $fecha_servicio_hasta = intval(date('Ymd')); /** * Fecha de vencimiento del pago en formato aaaammdd **/ $fecha_vencimiento_pago = intval(date('Ymd')); } else { $fecha_servicio_desde = null; $fecha_servicio_hasta = null; $fecha_vencimiento_pago = null; } $data = array( 'CantReg' => 1, // Cantidad de Notas de Crédito a registrar 'PtoVta' => $punto_de_venta, 'CbteTipo' => $tipo_de_nota, 'Concepto' => $concepto, 'DocTipo' => $tipo_de_documento, 'DocNro' => $numero_de_documento, 'CbteDesde' => $numero_de_nota, 'CbteHasta' => $numero_de_nota, 'CbteFch' => intval(str_replace('-', '', $fecha)), 'FchServDesde' => $fecha_servicio_desde, 'FchServHasta' => $fecha_servicio_hasta, 'FchVtoPago' => $fecha_vencimiento_pago, 'ImpTotal' => $importe_gravado + $importe_iva + $importe_exento_iva, 'ImpTotConc'=> 0, // Importe neto no gravado 'ImpNeto' => $importe_gravado, 'ImpOpEx' => $importe_exento_iva, 'ImpIVA' => $importe_iva, 'ImpTrib' => 0, //Importe total de tributos 'MonId' => 'PES', //Tipo de moneda usada en la Nota de Crédito ('PES' = pesos argentinos) 'MonCotiz' => 1, // Cotización de la moneda usada (1 para pesos argentinos) 'CondicionIVAReceptorId' => $condicion_iva_receptor, 'CbtesAsoc' => array( //Factura asociada array( 'Tipo' => $tipo_factura_asociada, 'PtoVta' => $punto_factura_asociada, 'Nro' => $numero_factura_asociada, ) ), 'Iva' => array( // Alícuotas asociadas a la Nota de Crédito array( 'Id' => 5, // Id del tipo de IVA (5 = 21%) 'BaseImp' => $importe_gravado, 'Importe' => $importe_iva ) ), ); /** * Creamos la Nota de Crédito **/ $res = $afip->ElectronicBilling->CreateVoucher($data); /** * Mostramos por pantalla los datos de la nueva Nota de Crédito **/ var_dump(array( 'cae' => $res['CAE'], //CAE asignado a la Nota de Crédito 'vencimiento' => $res['CAEFchVto'] //Fecha de vencimiento del CAE )); Copiar require "date" # Numero del punto de venta punto_de_venta = 1 # Tipo de factura tipo_de_nota = 3 # 3 = Nota de Crédito A # Número de la ultima Nota de Crédito A last_voucher = afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_nota) # Numero del punto de venta de la Factura # asociada a la Nota de Crédito punto_factura_asociada = 1 # Tipo de Factura asociada a la Nota de Crédito tipo_factura_asociada = 1 # 1 = Factura A # Numero de Factura asociada a la Nota de Crédito numero_factura_asociada = 1 # Concepto de la factura # # Opciones: # # 1 = Productos # 2 = Servicios # 3 = Productos y Servicios concepto = 1 # Tipo de documento del comprador # # Opciones: # # 80 = CUIT # 86 = CUIL # 96 = DNI # 99 = Consumidor Final tipo_de_documento = 80 # Numero de documento del comprador (0 para consumidor final) numero_de_documento = 33693450239 # Numero de Nota de Crédito numero_de_nota = last_voucher+1 # Fecha de la Nota de Crédito en formato aaaammdd (hasta 10 dias antes y 10 dias despues) fecha = Time.now.strftime("%Y%m%d").to_i # Importe sujeto al IVA (sin icluir IVA) importe_gravado = 100 # Importe exento al IVA importe_exento_iva = 0 # Importe de IVA importe_iva = 21 # Condición frente al IVA del receptor # # Opciones: # # 1 = IVA Responsable Inscripto # 4 = IVA Sujeto Exento # 5 = Consumidor Final # 6 = Responsable Monotributo # 7 = Sujeto No Categorizado # 8 = Proveedor del Exterior # 9 = Cliente del Exterior # 10 = IVA Liberado – Ley N° 19.640 # 13 = Monotributista Social # 15 = IVA No Alcanzado # 16 = Monotributo Trabajador Independiente Promovido condicion_iva_receptor = 1 # Los siguientes campos solo son obligatorios para los conceptos 2 y 3 if concepto == 2 || concepto == 3 # Fecha de inicio de servicio en formato aaaammdd fecha_servicio_desde = 20191213 # Fecha de fin de servicio en formato aaaammdd fecha_servicio_hasta = 20191213 # Fecha de vencimiento del pago en formato aaaammdd fecha_vencimiento_pago = 20191213 else fecha_servicio_desde = nil fecha_servicio_hasta = nil fecha_vencimiento_pago = nil end data = { "CantReg": 1, # Cantidad de Notas de Crédito a registrar "PtoVta": punto_de_venta, "CbteTipo": tipo_de_nota, "Concepto": concepto, "DocTipo": tipo_de_documento, "DocNro": numero_de_documento, "CbteDesde": numero_de_nota, "CbteHasta": numero_de_nota, "CbteFch": fecha, "FchServDesde": fecha_servicio_desde, "FchServHasta": fecha_servicio_hasta, "FchVtoPago": fecha_vencimiento_pago, "ImpTotal": importe_gravado + importe_iva + importe_exento_iva, "ImpTotConc": 0, # Importe neto no gravado "ImpNeto": importe_gravado, "ImpOpEx": importe_exento_iva, "ImpIVA": importe_iva, "ImpTrib": 0, # Importe total de tributos "MonId": "PES", # Tipo de moneda usada ("PES" = pesos argentinos) "MonCotiz": 1, # Cotización de la moneda usada (1 para pesos argentinos) "CondicionIVAReceptorId" : condicion_iva_receptor, "CbtesAsoc": [ # Factura asociada\ {\ "Tipo": tipo_factura_asociada,\ "PtoVta": punto_factura_asociada,\ "Nro": numero_factura_asociada,\ }\ ], "Iva": [ # Alícuotas asociadas a la Nota de Crédito\ {\ "Id": 5, # Id del tipo de IVA (5 = 21%)\ "BaseImp": importe_gravado,\ "Importe": importe_iva \ }\ ] } # Creamos la Factura res = afip.ElectronicBilling.createVoucher(data) # Mostramos por pantalla los datos de la nueva Factura puts { "cae": res["CAE"], # CAE asignado a la Factura "vencimiento": res["CAEFchVto"] # Fecha de vencimiento del CAE } Copiar from datetime import datetime # Numero del punto de venta punto_de_venta = 1 # Tipo de factura tipo_de_nota = 3 # 3 = Nota de Crédito A # Número de la ultima Nota de Crédito A last_voucher = afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_nota) # Numero del punto de venta de la Factura # asociada a la Nota de Crédito punto_factura_asociada = 1 # Tipo de Factura asociada a la Nota de Crédito tipo_factura_asociada = 1 # 1 = Factura A # Numero de Factura asociada a la Nota de Crédito numero_factura_asociada = 1 # Concepto de la factura # # Opciones: # # 1 = Productos # 2 = Servicios # 3 = Productos y Servicios concepto = 1 # Tipo de documento del comprador # # Opciones: # # 80 = CUIT # 86 = CUIL # 96 = DNI # 99 = Consumidor Final tipo_de_documento = 80 # Numero de documento del comprador (0 para consumidor final) numero_de_documento = 33693450239 # Numero de Nota de Crédito numero_de_nota = last_voucher+1 # Fecha de la Nota de Crédito en formato aaaammdd (hasta 10 dias antes y 10 dias despues) fecha = int(datetime.today().strftime("%Y%m%d")) # Importe sujeto al IVA (sin icluir IVA) importe_gravado = 100 # Importe exento al IVA importe_exento_iva = 0 # Importe de IVA importe_iva = 21 # Condición frente al IVA del receptor # # Opciones: # # 1 = IVA Responsable Inscripto # 4 = IVA Sujeto Exento # 5 = Consumidor Final # 6 = Responsable Monotributo # 7 = Sujeto No Categorizado # 8 = Proveedor del Exterior # 9 = Cliente del Exterior # 10 = IVA Liberado – Ley N° 19.640 # 13 = Monotributista Social # 15 = IVA No Alcanzado # 16 = Monotributo Trabajador Independiente Promovido condicion_iva_receptor = 1 # Los siguientes campos solo son obligatorios para los conceptos 2 y 3 if concepto == 2 or concepto == 3: # Fecha de inicio de servicio en formato aaaammdd fecha_servicio_desde = 20191213 # Fecha de fin de servicio en formato aaaammdd fecha_servicio_hasta = 20191213 # Fecha de vencimiento del pago en formato aaaammdd fecha_vencimiento_pago = 20191213 else: fecha_servicio_desde = None fecha_servicio_hasta = None fecha_vencimiento_pago = None data = { "CantReg": 1, # Cantidad de Notas de Crédito a registrar "PtoVta": punto_de_venta, "CbteTipo": tipo_de_nota, "Concepto": concepto, "DocTipo": tipo_de_documento, "DocNro": numero_de_documento, "CbteDesde": numero_de_nota, "CbteHasta": numero_de_nota, "CbteFch": fecha, "FchServDesde": fecha_servicio_desde, "FchServHasta": fecha_servicio_hasta, "FchVtoPago": fecha_vencimiento_pago, "ImpTotal": importe_gravado + importe_iva + importe_exento_iva, "ImpTotConc": 0, # Importe neto no gravado "ImpNeto": importe_gravado, "ImpOpEx": importe_exento_iva, "ImpIVA": importe_iva, "ImpTrib": 0, # Importe total de tributos "MonId": "PES", # Tipo de moneda usada ("PES" = pesos argentinos) "MonCotiz": 1, # Cotización de la moneda usada (1 para pesos argentinos) "CondicionIVAReceptorId" : condicion_iva_receptor, "CbtesAsoc": [ # Factura asociada\ {\ "Tipo": tipo_factura_asociada,\ "PtoVta": punto_factura_asociada,\ "Nro": numero_factura_asociada,\ }\ ], "Iva": [ # Alícuotas asociadas a la Nota de Crédito\ {\ "Id": 5, # Id del tipo de IVA (5 = 21%)\ "BaseImp": importe_gravado,\ "Importe": importe_iva \ }\ ] } # Creamos la Factura res = afip.ElectronicBilling.createVoucher(data) # Mostramos por pantalla los datos de la nueva Factura print({ "cae": res["CAE"], # CAE asignado a la Factura "vencimiento": res["CAEFchVto"] # Fecha de vencimiento del CAE }) Copiar { "environment": "dev", "method": "FECAESolicitar", "wsid": "wsfe", "params": { "Auth": { "Token": "{{token}}", "Sign": "{{sign}}", "Cuit": "20409378472" }, "FeCAEReq": { "FeCabReq": { "CantReg": 1, "PtoVta": 1, "CbteTipo": 3 }, "FeDetReq": { "FECAEDetRequest": { "Concepto": 1, "DocTipo": 80, "DocNro": 33693450239, "CbteDesde": 30, "CbteHasta": 30, "CbteFch": 20240314, "FchServDesde": null, "FchServHasta": null, "FchVtoPago": null, "ImpTotal": 121, "ImpTotConc": 0, "ImpNeto": 100, "ImpOpEx": 0, "ImpIVA": 21, "ImpTrib": 0, "MonId": "PES", "MonCotiz": 1, "CondicionIVAReceptorId": 1, "CbtesAsoc": { "CbteAsoc": [\ {\ "Tipo": 1,\ "PtoVta": 1,\ "Nro": 1\ }\ ] }, "Iva": { "AlicIva": [\ {\ "Id": 5,\ "BaseImp": 100,\ "Importe": 21\ }\ ] } } } } } } --- # Nota de Crédito B | Afip SDK Node PHP Ruby Python API Copiar (async () => { /** * Numero del punto de venta **/ const punto_de_venta = 1; /** * Tipo de factura **/ const tipo_de_nota = 8; // 8 = Nota de Crédito B /** * Número de la ultima Nota de Crédito B **/ const last_voucher = await afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_nota); /** * Numero del punto de venta de la Factura * asociada a la Nota de Crédito **/ const punto_factura_asociada = 1; /** * Tipo de Factura asociada a la Nota de Crédito **/ const tipo_factura_asociada = 6; // 6 = Factura B /** * Numero de Factura asociada a la Nota de Crédito **/ const numero_factura_asociada = 1; /** * Concepto de la factura * * Opciones: * * 1 = Productos * 2 = Servicios * 3 = Productos y Servicios **/ const concepto = 1; /** * Tipo de documento del comprador * * Opciones: * * 80 = CUIT * 86 = CUIL * 96 = DNI * 99 = Consumidor Final **/ const tipo_de_documento = 99; /** * Numero de documento del comprador (0 para consumidor final) **/ const numero_de_documento = 0; /** * Numero de Nota de Crédito **/ const numero_de_nota = last_voucher+1; /** * Fecha de la Nota de Crédito en formato aaaa-mm-dd (hasta 10 dias antes y 10 dias despues) **/ const fecha = new Date(Date.now() - ((new Date()).getTimezoneOffset() * 60000)).toISOString().split('T')[0]; /** * Importe sujeto al IVA (sin icluir IVA) **/ const importe_gravado = 100; /** * Importe exento al IVA **/ const importe_exento_iva = 0; /** * Importe de IVA **/ const importe_iva = 21; /** * Condición frente al IVA del receptor * * 1 = IVA Responsable Inscripto * 4 = IVA Sujeto Exento * 5 = Consumidor Final * 6 = Responsable Monotributo * 7 = Sujeto No Categorizado * 8 = Proveedor del Exterior * 9 = Cliente del Exterior * 10 = IVA Liberado – Ley N° 19.640 * 13 = Monotributista Social * 15 = IVA No Alcanzado * 16 = Monotributo Trabajador Independiente Promovido **/ const condicion_iva_receptor = 5; /** * Los siguientes campos solo son obligatorios para los conceptos 2 y 3 **/ let fecha_servicio_desde = null, fecha_servicio_hasta = null, fecha_vencimiento_pago = null; if (concepto === 2 || concepto === 3) { /** * Fecha de inicio de servicio en formato aaaammdd **/ const fecha_servicio_desde = 20191213; /** * Fecha de fin de servicio en formato aaaammdd **/ const fecha_servicio_hasta = 20191213; /** * Fecha de vencimiento del pago en formato aaaammdd **/ const fecha_vencimiento_pago = 20191213; } const data = { 'CantReg' : 1, // Cantidad de Notas de Crédito a registrar 'PtoVta' : punto_de_venta, 'CbteTipo' : tipo_de_nota, 'Concepto' : concepto, 'DocTipo' : tipo_de_documento, 'DocNro' : numero_de_documento, 'CbteDesde' : numero_de_nota, 'CbteHasta' : numero_de_nota, 'CbteFch' : parseInt(fecha.replace(/-/g, '')), 'FchServDesde' : fecha_servicio_desde, 'FchServHasta' : fecha_servicio_hasta, 'FchVtoPago' : fecha_vencimiento_pago, 'ImpTotal' : importe_gravado + importe_iva + importe_exento_iva, 'ImpTotConc': 0, // Importe neto no gravado 'ImpNeto' : importe_gravado, 'ImpOpEx' : importe_exento_iva, 'ImpIVA' : importe_iva, 'ImpTrib' : 0, //Importe total de tributos 'MonId' : 'PES', //Tipo de moneda usada ('PES' = pesos argentinos) 'MonCotiz' : 1, // Cotización de la moneda usada (1 para pesos argentinos) 'CondicionIVAReceptorId' : condicion_iva_receptor, 'CbtesAsoc' : [ //Factura asociada\ {\ 'Tipo' : tipo_factura_asociada,\ 'PtoVta' : punto_factura_asociada,\ 'Nro' : numero_factura_asociada,\ }\ ], 'Iva' : [ // Alícuotas asociadas a la Nota de Crédito\ {\ 'Id' : 5, // Id del tipo de IVA (5 = 21%)\ 'BaseImp' : importe_gravado,\ 'Importe' : importe_iva \ }\ ] }; /** * Creamos la Factura **/ const res = await afip.ElectronicBilling.createVoucher(data); /** * Mostramos por pantalla los datos de la nueva Factura **/ console.log({ 'cae' : res.CAE, //CAE asignado a la Factura 'vencimiento' : res.CAEFchVto //Fecha de vencimiento del CAE }); })() **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** [AnteriorNota de Crédito Achevron-left](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/nota-de-credito-a) [SiguienteNota de Crédito Cchevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/nota-de-credito-c) Última actualización hace 8 meses Copiar /** * Numero del punto de venta **/ $punto_de_venta = 1; /** * Tipo de Nota de Crédito **/ $tipo_de_nota = 8; // 8 = Nota de Crédito B /** * Número de la ultima Nota de Crédito B **/ $last_voucher = $afip->ElectronicBilling->GetLastVoucher($punto_de_venta, $tipo_de_nota); /** * Numero del punto de venta de la Factura * asociada a la Nota de Crédito **/ $punto_factura_asociada = 1; /** * Tipo de Factura asociada a la Nota de Crédito **/ $tipo_factura_asociada = 6; // 6 = Factura B /** * Numero de Factura asociada a la Nota de Crédito **/ $numero_factura_asociada = 1; /** * Concepto de la Nota de Crédito * * Opciones: * * 1 = Productos * 2 = Servicios * 3 = Productos y Servicios **/ $concepto = 1; /** * Tipo de documento del comprador * * Opciones: * * 80 = CUIT * 86 = CUIL * 96 = DNI * 99 = Consumidor Final **/ $tipo_de_documento = 99; /** * Numero de documento del comprador (0 para consumidor final) **/ $numero_de_documento = 0; /** * Numero de Nota de Crédito **/ $numero_de_nota = $last_voucher+1; /** * Fecha de la Nota de Crédito en formato aaaa-mm-dd (hasta 10 dias antes y 10 dias despues) **/ $fecha = date('Y-m-d'); /** * Importe sujeto al IVA (sin icluir IVA) **/ $importe_gravado = 100; /** * Importe exento al IVA **/ $importe_exento_iva = 0; /** * Importe de IVA **/ $importe_iva = 21; /** * Condición frente al IVA del receptor * * Opciones: * * 1 = IVA Responsable Inscripto * 4 = IVA Sujeto Exento * 5 = Consumidor Final * 6 = Responsable Monotributo * 7 = Sujeto No Categorizado * 8 = Proveedor del Exterior * 9 = Cliente del Exterior * 10 = IVA Liberado – Ley N° 19.640 * 13 = Monotributista Social * 15 = IVA No Alcanzado * 16 = Monotributo Trabajador Independiente Promovido **/ $condicion_iva_receptor = 5; /** * Los siguientes campos solo son obligatorios para los conceptos 2 y 3 **/ if ($concepto === 2 || $concepto === 3) { /** * Fecha de inicio de servicio en formato aaaammdd **/ $fecha_servicio_desde = intval(date('Ymd')); /** * Fecha de fin de servicio en formato aaaammdd **/ $fecha_servicio_hasta = intval(date('Ymd')); /** * Fecha de vencimiento del pago en formato aaaammdd **/ $fecha_vencimiento_pago = intval(date('Ymd')); } else { $fecha_servicio_desde = null; $fecha_servicio_hasta = null; $fecha_vencimiento_pago = null; } $data = array( 'CantReg' => 1, // Cantidad de Notas de Crédito a registrar 'PtoVta' => $punto_de_venta, 'CbteTipo' => $tipo_de_nota, 'Concepto' => $concepto, 'DocTipo' => $tipo_de_documento, 'DocNro' => $numero_de_documento, 'CbteDesde' => $numero_de_nota, 'CbteHasta' => $numero_de_nota, 'CbteFch' => intval(str_replace('-', '', $fecha)), 'FchServDesde' => $fecha_servicio_desde, 'FchServHasta' => $fecha_servicio_hasta, 'FchVtoPago' => $fecha_vencimiento_pago, 'ImpTotal' => $importe_gravado + $importe_iva + $importe_exento_iva, 'ImpTotConc'=> 0, // Importe neto no gravado 'ImpNeto' => $importe_gravado, 'ImpOpEx' => $importe_exento_iva, 'ImpIVA' => $importe_iva, 'ImpTrib' => 0, //Importe total de tributos 'MonId' => 'PES', //Tipo de moneda usada en la Nota de Crédito ('PES' = pesos argentinos) 'MonCotiz' => 1, // Cotización de la moneda usada (1 para pesos argentinos) 'CondicionIVAReceptorId' => $condicion_iva_receptor, 'CbtesAsoc' => array( //Factura asociada array( 'Tipo' => $tipo_factura_asociada, 'PtoVta' => $punto_factura_asociada, 'Nro' => $numero_factura_asociada, ) ), 'Iva' => array(// Alícuotas asociadas a la Nota de Crédito array( 'Id' => 5, // Id del tipo de IVA (5 = 21%) 'BaseImp' => $importe_gravado, 'Importe' => $importe_iva ) ), ); /** * Creamos la Nota de Crédito **/ $res = $afip->ElectronicBilling->CreateVoucher($data); /** * Mostramos por pantalla los datos de la nueva Nota de Crédito **/ var_dump(array( 'cae' => $res['CAE'], //CAE asignado a la Nota de Crédito 'vencimiento' => $res['CAEFchVto'] //Fecha de vencimiento del CAE )); Copiar require "date" # Numero del punto de venta punto_de_venta = 1 # Tipo de factura tipo_de_nota = 8 # 8 = Nota de Crédito B # Número de la ultima Nota de Crédito B last_voucher = afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_nota) # Numero del punto de venta de la Factura # asociada a la Nota de Crédito punto_factura_asociada = 1 # Tipo de Factura asociada a la Nota de Crédito tipo_factura_asociada = 6 # 6 = Factura B # Numero de Factura asociada a la Nota de Crédito numero_factura_asociada = 1 # Concepto de la factura # # Opciones: # # 1 = Productos # 2 = Servicios # 3 = Productos y Servicios concepto = 1 # Tipo de documento del comprador # # Opciones: # # 80 = CUIT # 86 = CUIL # 96 = DNI # 99 = Consumidor Final tipo_de_documento = 99 # Numero de documento del comprador (0 para consumidor final) numero_de_documento = 0 # Numero de Nota de Crédito numero_de_nota = last_voucher+1 # Fecha de la Nota de Crédito en formato aaaammdd (hasta 10 dias antes y 10 dias despues) fecha = Time.now.strftime("%Y%m%d").to_i # Importe sujeto al IVA (sin icluir IVA) importe_gravado = 100 # Importe exento al IVA importe_exento_iva = 0 # Importe de IVA importe_iva = 21 # Condición frente al IVA del receptor # # Opciones: # # 1 = IVA Responsable Inscripto # 4 = IVA Sujeto Exento # 5 = Consumidor Final # 6 = Responsable Monotributo # 7 = Sujeto No Categorizado # 8 = Proveedor del Exterior # 9 = Cliente del Exterior # 10 = IVA Liberado – Ley N° 19.640 # 13 = Monotributista Social # 15 = IVA No Alcanzado # 16 = Monotributo Trabajador Independiente Promovido condicion_iva_receptor = 5 # Los siguientes campos solo son obligatorios para los conceptos 2 y 3 if concepto == 2 || concepto == 3 # Fecha de inicio de servicio en formato aaaammdd fecha_servicio_desde = 20191213 # Fecha de fin de servicio en formato aaaammdd fecha_servicio_hasta = 20191213 # Fecha de vencimiento del pago en formato aaaammdd fecha_vencimiento_pago = 20191213 else fecha_servicio_desde = nil fecha_servicio_hasta = nil fecha_vencimiento_pago = nil end data = { "CantReg": 1, # Cantidad de Notas de Crédito a registrar "PtoVta": punto_de_venta, "CbteTipo": tipo_de_nota, "Concepto": concepto, "DocTipo": tipo_de_documento, "DocNro": numero_de_documento, "CbteDesde": numero_de_nota, "CbteHasta": numero_de_nota, "CbteFch": fecha, "FchServDesde": fecha_servicio_desde, "FchServHasta": fecha_servicio_hasta, "FchVtoPago": fecha_vencimiento_pago, "ImpTotal": importe_gravado + importe_iva + importe_exento_iva, "ImpTotConc": 0, # Importe neto no gravado "ImpNeto": importe_gravado, "ImpOpEx": importe_exento_iva, "ImpIVA": importe_iva, "ImpTrib": 0, # Importe total de tributos "MonId": "PES", # Tipo de moneda usada ("PES" = pesos argentinos) "MonCotiz": 1, # Cotización de la moneda usada (1 para pesos argentinos) "CondicionIVAReceptorId" : condicion_iva_receptor, "CbtesAsoc": [ # Factura asociada\ {\ "Tipo": tipo_factura_asociada,\ "PtoVta": punto_factura_asociada,\ "Nro": numero_factura_asociada,\ }\ ], "Iva": [ # Alícuotas asociadas a la Nota de Crédito\ {\ "Id": 5, # Id del tipo de IVA (5 = 21%)\ "BaseImp": importe_gravado,\ "Importe": importe_iva \ }\ ] } # Creamos la Factura res = afip.ElectronicBilling.createVoucher(data) # Mostramos por pantalla los datos de la nueva Factura puts { "cae": res["CAE"], # CAE asignado a la Factura "vencimiento": res["CAEFchVto"] # Fecha de vencimiento del CAE } Copiar from datetime import datetime # Numero del punto de venta punto_de_venta = 1 # Tipo de factura tipo_de_nota = 8 # 8 = Nota de Crédito B # Número de la ultima Nota de Crédito B last_voucher = afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_nota) # Numero del punto de venta de la Factura # asociada a la Nota de Crédito punto_factura_asociada = 1 # Tipo de Factura asociada a la Nota de Crédito tipo_factura_asociada = 6 # 6 = Factura B # Numero de Factura asociada a la Nota de Crédito numero_factura_asociada = 1 # Concepto de la factura # # Opciones: # # 1 = Productos # 2 = Servicios # 3 = Productos y Servicios concepto = 1 # Tipo de documento del comprador # # Opciones: # # 80 = CUIT # 86 = CUIL # 96 = DNI # 99 = Consumidor Final tipo_de_documento = 99 # Numero de documento del comprador (0 para consumidor final) numero_de_documento = 0 # Numero de Nota de Crédito numero_de_nota = last_voucher+1 # Fecha de la Nota de Crédito en formato aaaammdd (hasta 10 dias antes y 10 dias despues) fecha = int(datetime.today().strftime("%Y%m%d")) # Importe sujeto al IVA (sin icluir IVA) importe_gravado = 100 # Importe exento al IVA importe_exento_iva = 0 # Importe de IVA importe_iva = 21 # Condición frente al IVA del receptor # # Opciones: # # 1 = IVA Responsable Inscripto # 4 = IVA Sujeto Exento # 5 = Consumidor Final # 6 = Responsable Monotributo # 7 = Sujeto No Categorizado # 8 = Proveedor del Exterior # 9 = Cliente del Exterior # 10 = IVA Liberado – Ley N° 19.640 # 13 = Monotributista Social # 15 = IVA No Alcanzado # 16 = Monotributo Trabajador Independiente Promovido condicion_iva_receptor = 5 # Los siguientes campos solo son obligatorios para los conceptos 2 y 3 if concepto == 2 or concepto == 3: # Fecha de inicio de servicio en formato aaaammdd fecha_servicio_desde = 20191213 # Fecha de fin de servicio en formato aaaammdd fecha_servicio_hasta = 20191213 # Fecha de vencimiento del pago en formato aaaammdd fecha_vencimiento_pago = 20191213 else: fecha_servicio_desde = None fecha_servicio_hasta = None fecha_vencimiento_pago = None data = { "CantReg": 1, # Cantidad de Notas de Crédito a registrar "PtoVta": punto_de_venta, "CbteTipo": tipo_de_nota, "Concepto": concepto, "DocTipo": tipo_de_documento, "DocNro": numero_de_documento, "CbteDesde": numero_de_nota, "CbteHasta": numero_de_nota, "CbteFch": fecha, "FchServDesde": fecha_servicio_desde, "FchServHasta": fecha_servicio_hasta, "FchVtoPago": fecha_vencimiento_pago, "ImpTotal": importe_gravado + importe_iva + importe_exento_iva, "ImpTotConc": 0, # Importe neto no gravado "ImpNeto": importe_gravado, "ImpOpEx": importe_exento_iva, "ImpIVA": importe_iva, "ImpTrib": 0, # Importe total de tributos "MonId": "PES", # Tipo de moneda usada ("PES" = pesos argentinos) "MonCotiz": 1, # Cotización de la moneda usada (1 para pesos argentinos) "CondicionIVAReceptorId" : condicion_iva_receptor, "CbtesAsoc": [ # Factura asociada\ {\ "Tipo": tipo_factura_asociada,\ "PtoVta": punto_factura_asociada,\ "Nro": numero_factura_asociada,\ }\ ], "Iva": [ # Alícuotas asociadas a la Nota de Crédito\ {\ "Id": 5, # Id del tipo de IVA (5 = 21%)\ "BaseImp": importe_gravado,\ "Importe": importe_iva \ }\ ] } # Creamos la Factura res = afip.ElectronicBilling.createVoucher(data) # Mostramos por pantalla los datos de la nueva Factura print({ "cae": res["CAE"], # CAE asignado a la Factura "vencimiento": res["CAEFchVto"] # Fecha de vencimiento del CAE }) Copiar { "environment": "dev", "method": "FECAESolicitar", "wsid": "wsfe", "params": { "Auth": { "Token": "{{token}}", "Sign": "{{sign}}", "Cuit": "20409378472" }, "FeCAEReq": { "FeCabReq": { "CantReg": 1, "PtoVta": 1, "CbteTipo": 8 }, "FeDetReq": { "FECAEDetRequest": { "Concepto": 1, "DocTipo": 99, "DocNro": 0, "CbteDesde": 15, "CbteHasta": 15, "CbteFch": 20240314, "FchServDesde": null, "FchServHasta": null, "FchVtoPago": null, "ImpTotal": 121, "ImpTotConc": 0, "ImpNeto": 100, "ImpOpEx": 0, "ImpIVA": 21, "ImpTrib": 0, "MonId": "PES", "MonCotiz": 1, "CondicionIVAReceptorId": 5, "CbtesAsoc": { "CbteAsoc": [\ {\ "Tipo": 6,\ "PtoVta": 1,\ "Nro": 1\ }\ ] }, "Iva": { "AlicIva": [\ {\ "Id": 5,\ "BaseImp": 100,\ "Importe": 21\ }\ ] } } } } } } --- # Nota de Crédito electrónica B | Afip SDK Node PHP Ruby Python API Copiar (async () => { /** * Numero del punto de venta **/ const punto_de_venta = 1; /** * Tipo de factura **/ const tipo_de_nota = 208; // 208 = Nota de Crédito electrónica MiPyME B /** * Número de la ultima Nota de Crédito electrónica MiPyME B **/ const last_voucher = await afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_nota); /** * Numero del punto de venta de la Factura * asociada a la Nota de Crédito **/ const punto_factura_asociada = 1; /** * Tipo de Factura asociada a la Nota de Crédito **/ const tipo_factura_asociada = 6; // 6 = Factura B /** * Numero de Factura asociada a la Nota de Crédito **/ const numero_factura_asociada = 1; /** * Concepto de la factura * * Opciones: * * 1 = Productos * 2 = Servicios * 3 = Productos y Servicios **/ const concepto = 1; /** * Tipo de documento del comprador * * Opciones: * * 80 = CUIT * 86 = CUIL * 96 = DNI * 99 = Consumidor Final **/ const tipo_de_documento = 99; /** * Numero de documento del comprador (0 para consumidor final) **/ const numero_de_documento = 0; /** * Numero de Nota de Crédito **/ const numero_de_nota = last_voucher+1; /** * Fecha de la Nota de Crédito en formato aaaa-mm-dd (hasta 10 dias antes y 10 dias despues) **/ const fecha = new Date(Date.now() - ((new Date()).getTimezoneOffset() * 60000)).toISOString().split('T')[0]; /** * Importe sujeto al IVA (sin icluir IVA) **/ const importe_gravado = 100; /** * Importe exento al IVA **/ const importe_exento_iva = 0; /** * Importe de IVA **/ const importe_iva = 21; /** * Condición frente al IVA del receptor * * 1 = IVA Responsable Inscripto * 4 = IVA Sujeto Exento * 5 = Consumidor Final * 6 = Responsable Monotributo * 7 = Sujeto No Categorizado * 8 = Proveedor del Exterior * 9 = Cliente del Exterior * 10 = IVA Liberado – Ley N° 19.640 * 13 = Monotributista Social * 15 = IVA No Alcanzado * 16 = Monotributo Trabajador Independiente Promovido **/ const condicion_iva_receptor = 5; /** * Los siguientes campos solo son obligatorios para los conceptos 2 y 3 **/ let fecha_servicio_desde = null, fecha_servicio_hasta = null, fecha_vencimiento_pago = null; if (concepto === 2 || concepto === 3) { /** * Fecha de inicio de servicio en formato aaaammdd **/ const fecha_servicio_desde = 20191213; /** * Fecha de fin de servicio en formato aaaammdd **/ const fecha_servicio_hasta = 20191213; /** * Fecha de vencimiento del pago en formato aaaammdd **/ const fecha_vencimiento_pago = 20191213; } const data = { 'CantReg' : 1, // Cantidad de Notas de Crédito a registrar 'PtoVta' : punto_de_venta, 'CbteTipo' : tipo_de_nota, 'Concepto' : concepto, 'DocTipo' : tipo_de_documento, 'DocNro' : numero_de_documento, 'CbteDesde' : numero_de_nota, 'CbteHasta' : numero_de_nota, 'CbteFch' : parseInt(fecha.replace(/-/g, '')), 'FchServDesde' : fecha_servicio_desde, 'FchServHasta' : fecha_servicio_hasta, 'FchVtoPago' : fecha_vencimiento_pago, 'ImpTotal' : importe_gravado + importe_iva + importe_exento_iva, 'ImpTotConc': 0, // Importe neto no gravado 'ImpNeto' : importe_gravado, 'ImpOpEx' : importe_exento_iva, 'ImpIVA' : importe_iva, 'ImpTrib' : 0, //Importe total de tributos 'MonId' : 'PES', //Tipo de moneda usada ('PES' = pesos argentinos) 'MonCotiz' : 1, // Cotización de la moneda usada (1 para pesos argentinos) 'CondicionIVAReceptorId' : condicion_iva_receptor, 'CbtesAsoc' : [ //Factura asociada\ {\ 'Tipo' : tipo_factura_asociada,\ 'PtoVta' : punto_factura_asociada,\ 'Nro' : numero_factura_asociada,\ }\ ], 'Iva' : [ // Alícuotas asociadas a la Nota de Crédito\ {\ 'Id' : 5, // Id del tipo de IVA (5 = 21%)\ 'BaseImp' : importe_gravado,\ 'Importe' : importe_iva \ }\ ] }; /** * Creamos la Factura **/ const res = await afip.ElectronicBilling.createVoucher(data); /** * Mostramos por pantalla los datos de la nueva Factura **/ console.log({ 'cae' : res.CAE, //CAE asignado a la Factura 'vencimiento' : res.CAEFchVto //Fecha de vencimiento del CAE }); })() **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** [AnteriorNota de Crédito electrónica Achevron-left](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/nota-de-credito-electronica-a) [SiguienteNota de Crédito electrónica Cchevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/nota-de-credito-electronica-c) Última actualización hace 7 días Copiar /** * Numero del punto de venta **/ $punto_de_venta = 1; /** * Tipo de Nota de Crédito **/ $tipo_de_nota = 208; // 208 = Nota de Crédito electrónica MiPyME B /** * Número de la ultima Nota de Crédito electrónica MiPyME B **/ $last_voucher = $afip->ElectronicBilling->GetLastVoucher($punto_de_venta, $tipo_de_nota); /** * Numero del punto de venta de la Factura * asociada a la Nota de Crédito **/ $punto_factura_asociada = 1; /** * Tipo de Factura asociada a la Nota de Crédito **/ $tipo_factura_asociada = 6; // 6 = Factura B /** * Numero de Factura asociada a la Nota de Crédito **/ $numero_factura_asociada = 1; /** * Concepto de la Nota de Crédito * * Opciones: * * 1 = Productos * 2 = Servicios * 3 = Productos y Servicios **/ $concepto = 1; /** * Tipo de documento del comprador * * Opciones: * * 80 = CUIT * 86 = CUIL * 96 = DNI * 99 = Consumidor Final **/ $tipo_de_documento = 99; /** * Numero de documento del comprador (0 para consumidor final) **/ $numero_de_documento = 0; /** * Numero de Nota de Crédito **/ $numero_de_nota = $last_voucher+1; /** * Fecha de la Nota de Crédito en formato aaaa-mm-dd (hasta 10 dias antes y 10 dias despues) **/ $fecha = date('Y-m-d'); /** * Importe sujeto al IVA (sin icluir IVA) **/ $importe_gravado = 100; /** * Importe exento al IVA **/ $importe_exento_iva = 0; /** * Importe de IVA **/ $importe_iva = 21; /** * Condición frente al IVA del receptor * * Opciones: * * 1 = IVA Responsable Inscripto * 4 = IVA Sujeto Exento * 5 = Consumidor Final * 6 = Responsable Monotributo * 7 = Sujeto No Categorizado * 8 = Proveedor del Exterior * 9 = Cliente del Exterior * 10 = IVA Liberado – Ley N° 19.640 * 13 = Monotributista Social * 15 = IVA No Alcanzado * 16 = Monotributo Trabajador Independiente Promovido **/ $condicion_iva_receptor = 5; /** * Los siguientes campos solo son obligatorios para los conceptos 2 y 3 **/ if ($concepto === 2 || $concepto === 3) { /** * Fecha de inicio de servicio en formato aaaammdd **/ $fecha_servicio_desde = intval(date('Ymd')); /** * Fecha de fin de servicio en formato aaaammdd **/ $fecha_servicio_hasta = intval(date('Ymd')); /** * Fecha de vencimiento del pago en formato aaaammdd **/ $fecha_vencimiento_pago = intval(date('Ymd')); } else { $fecha_servicio_desde = null; $fecha_servicio_hasta = null; $fecha_vencimiento_pago = null; } $data = array( 'CantReg' => 1, // Cantidad de Notas de Crédito a registrar 'PtoVta' => $punto_de_venta, 'CbteTipo' => $tipo_de_nota, 'Concepto' => $concepto, 'DocTipo' => $tipo_de_documento, 'DocNro' => $numero_de_documento, 'CbteDesde' => $numero_de_nota, 'CbteHasta' => $numero_de_nota, 'CbteFch' => intval(str_replace('-', '', $fecha)), 'FchServDesde' => $fecha_servicio_desde, 'FchServHasta' => $fecha_servicio_hasta, 'FchVtoPago' => $fecha_vencimiento_pago, 'ImpTotal' => $importe_gravado + $importe_iva + $importe_exento_iva, 'ImpTotConc'=> 0, // Importe neto no gravado 'ImpNeto' => $importe_gravado, 'ImpOpEx' => $importe_exento_iva, 'ImpIVA' => $importe_iva, 'ImpTrib' => 0, //Importe total de tributos 'MonId' => 'PES', //Tipo de moneda usada en la Nota de Crédito ('PES' = pesos argentinos) 'MonCotiz' => 1, // Cotización de la moneda usada (1 para pesos argentinos) 'CondicionIVAReceptorId' => $condicion_iva_receptor, 'CbtesAsoc' => array( //Factura asociada array( 'Tipo' => $tipo_factura_asociada, 'PtoVta' => $punto_factura_asociada, 'Nro' => $numero_factura_asociada, ) ), 'Iva' => array(// Alícuotas asociadas a la Nota de Crédito array( 'Id' => 5, // Id del tipo de IVA (5 = 21%) 'BaseImp' => $importe_gravado, 'Importe' => $importe_iva ) ), ); /** * Creamos la Nota de Crédito **/ $res = $afip->ElectronicBilling->CreateVoucher($data); /** * Mostramos por pantalla los datos de la nueva Nota de Crédito **/ var_dump(array( 'cae' => $res['CAE'], //CAE asignado a la Nota de Crédito 'vencimiento' => $res['CAEFchVto'] //Fecha de vencimiento del CAE )); Copiar require "date" # Numero del punto de venta punto_de_venta = 1 # Tipo de factura tipo_de_nota = 208 # 208 = Nota de Crédito electrónica MiPyME B # Número de la ultima Nota de Crédito electrónica MiPyME B last_voucher = afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_nota) # Numero del punto de venta de la Factura # asociada a la Nota de Crédito punto_factura_asociada = 1 # Tipo de Factura asociada a la Nota de Crédito tipo_factura_asociada = 6 # 6 = Factura B # Numero de Factura asociada a la Nota de Crédito numero_factura_asociada = 1 # Concepto de la factura # # Opciones: # # 1 = Productos # 2 = Servicios # 3 = Productos y Servicios concepto = 1 # Tipo de documento del comprador # # Opciones: # # 80 = CUIT # 86 = CUIL # 96 = DNI # 99 = Consumidor Final tipo_de_documento = 99 # Numero de documento del comprador (0 para consumidor final) numero_de_documento = 0 # Numero de Nota de Crédito numero_de_nota = last_voucher+1 # Fecha de la Nota de Crédito en formato aaaammdd (hasta 10 dias antes y 10 dias despues) fecha = Time.now.strftime("%Y%m%d").to_i # Importe sujeto al IVA (sin icluir IVA) importe_gravado = 100 # Importe exento al IVA importe_exento_iva = 0 # Importe de IVA importe_iva = 21 # Condición frente al IVA del receptor # # Opciones: # # 1 = IVA Responsable Inscripto # 4 = IVA Sujeto Exento # 5 = Consumidor Final # 6 = Responsable Monotributo # 7 = Sujeto No Categorizado # 8 = Proveedor del Exterior # 9 = Cliente del Exterior # 10 = IVA Liberado – Ley N° 19.640 # 13 = Monotributista Social # 15 = IVA No Alcanzado # 16 = Monotributo Trabajador Independiente Promovido condicion_iva_receptor = 5 # Los siguientes campos solo son obligatorios para los conceptos 2 y 3 if concepto == 2 || concepto == 3 # Fecha de inicio de servicio en formato aaaammdd fecha_servicio_desde = 20191213 # Fecha de fin de servicio en formato aaaammdd fecha_servicio_hasta = 20191213 # Fecha de vencimiento del pago en formato aaaammdd fecha_vencimiento_pago = 20191213 else fecha_servicio_desde = nil fecha_servicio_hasta = nil fecha_vencimiento_pago = nil end data = { "CantReg": 1, # Cantidad de Notas de Crédito a registrar "PtoVta": punto_de_venta, "CbteTipo": tipo_de_nota, "Concepto": concepto, "DocTipo": tipo_de_documento, "DocNro": numero_de_documento, "CbteDesde": numero_de_nota, "CbteHasta": numero_de_nota, "CbteFch": fecha, "FchServDesde": fecha_servicio_desde, "FchServHasta": fecha_servicio_hasta, "FchVtoPago": fecha_vencimiento_pago, "ImpTotal": importe_gravado + importe_iva + importe_exento_iva, "ImpTotConc": 0, # Importe neto no gravado "ImpNeto": importe_gravado, "ImpOpEx": importe_exento_iva, "ImpIVA": importe_iva, "ImpTrib": 0, # Importe total de tributos "MonId": "PES", # Tipo de moneda usada ("PES" = pesos argentinos) "MonCotiz": 1, # Cotización de la moneda usada (1 para pesos argentinos) "CondicionIVAReceptorId" : condicion_iva_receptor, "CbtesAsoc": [ # Factura asociada\ {\ "Tipo": tipo_factura_asociada,\ "PtoVta": punto_factura_asociada,\ "Nro": numero_factura_asociada,\ }\ ], "Iva": [ # Alícuotas asociadas a la Nota de Crédito\ {\ "Id": 5, # Id del tipo de IVA (5 = 21%)\ "BaseImp": importe_gravado,\ "Importe": importe_iva \ }\ ] } # Creamos la Factura res = afip.ElectronicBilling.createVoucher(data) # Mostramos por pantalla los datos de la nueva Factura puts { "cae": res["CAE"], # CAE asignado a la Factura "vencimiento": res["CAEFchVto"] # Fecha de vencimiento del CAE } Copiar from datetime import datetime # Numero del punto de venta punto_de_venta = 1 # Tipo de factura tipo_de_nota = 208 # 208 = Nota de Crédito electrónica MiPyME B # Número de la ultima Nota de Crédito electrónica MiPyME B last_voucher = afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_nota) # Numero del punto de venta de la Factura # asociada a la Nota de Crédito punto_factura_asociada = 1 # Tipo de Factura asociada a la Nota de Crédito tipo_factura_asociada = 6 # 6 = Factura B # Numero de Factura asociada a la Nota de Crédito numero_factura_asociada = 1 # Concepto de la factura # # Opciones: # # 1 = Productos # 2 = Servicios # 3 = Productos y Servicios concepto = 1 # Tipo de documento del comprador # # Opciones: # # 80 = CUIT # 86 = CUIL # 96 = DNI # 99 = Consumidor Final tipo_de_documento = 99 # Numero de documento del comprador (0 para consumidor final) numero_de_documento = 0 # Numero de Nota de Crédito numero_de_nota = last_voucher+1 # Fecha de la Nota de Crédito en formato aaaammdd (hasta 10 dias antes y 10 dias despues) fecha = int(datetime.today().strftime("%Y%m%d")) # Importe sujeto al IVA (sin icluir IVA) importe_gravado = 100 # Importe exento al IVA importe_exento_iva = 0 # Importe de IVA importe_iva = 21 # Condición frente al IVA del receptor # # Opciones: # # 1 = IVA Responsable Inscripto # 4 = IVA Sujeto Exento # 5 = Consumidor Final # 6 = Responsable Monotributo # 7 = Sujeto No Categorizado # 8 = Proveedor del Exterior # 9 = Cliente del Exterior # 10 = IVA Liberado – Ley N° 19.640 # 13 = Monotributista Social # 15 = IVA No Alcanzado # 16 = Monotributo Trabajador Independiente Promovido condicion_iva_receptor = 5 # Los siguientes campos solo son obligatorios para los conceptos 2 y 3 if concepto == 2 or concepto == 3: # Fecha de inicio de servicio en formato aaaammdd fecha_servicio_desde = 20191213 # Fecha de fin de servicio en formato aaaammdd fecha_servicio_hasta = 20191213 # Fecha de vencimiento del pago en formato aaaammdd fecha_vencimiento_pago = 20191213 else: fecha_servicio_desde = None fecha_servicio_hasta = None fecha_vencimiento_pago = None data = { "CantReg": 1, # Cantidad de Notas de Crédito a registrar "PtoVta": punto_de_venta, "CbteTipo": tipo_de_nota, "Concepto": concepto, "DocTipo": tipo_de_documento, "DocNro": numero_de_documento, "CbteDesde": numero_de_nota, "CbteHasta": numero_de_nota, "CbteFch": fecha, "FchServDesde": fecha_servicio_desde, "FchServHasta": fecha_servicio_hasta, "FchVtoPago": fecha_vencimiento_pago, "ImpTotal": importe_gravado + importe_iva + importe_exento_iva, "ImpTotConc": 0, # Importe neto no gravado "ImpNeto": importe_gravado, "ImpOpEx": importe_exento_iva, "ImpIVA": importe_iva, "ImpTrib": 0, # Importe total de tributos "MonId": "PES", # Tipo de moneda usada ("PES" = pesos argentinos) "MonCotiz": 1, # Cotización de la moneda usada (1 para pesos argentinos) "CondicionIVAReceptorId" : condicion_iva_receptor, "CbtesAsoc": [ # Factura asociada\ {\ "Tipo": tipo_factura_asociada,\ "PtoVta": punto_factura_asociada,\ "Nro": numero_factura_asociada,\ }\ ], "Iva": [ # Alícuotas asociadas a la Nota de Crédito\ {\ "Id": 5, # Id del tipo de IVA (5 = 21%)\ "BaseImp": importe_gravado,\ "Importe": importe_iva \ }\ ] } # Creamos la Factura res = afip.ElectronicBilling.createVoucher(data) # Mostramos por pantalla los datos de la nueva Factura print({ "cae": res["CAE"], # CAE asignado a la Factura "vencimiento": res["CAEFchVto"] # Fecha de vencimiento del CAE }) Copiar { "environment": "dev", "method": "FECAESolicitar", "wsid": "wsfe", "params": { "Auth": { "Token": "{{token}}", "Sign": "{{sign}}", "Cuit": "20409378472" }, "FeCAEReq": { "FeCabReq": { "CantReg": 1, "PtoVta": 1, "CbteTipo": 208 }, "FeDetReq": { "FECAEDetRequest": { "Concepto": 1, "DocTipo": 99, "DocNro": 0, "CbteDesde": 15, "CbteHasta": 15, "CbteFch": 20240314, "FchServDesde": null, "FchServHasta": null, "FchVtoPago": null, "ImpTotal": 121, "ImpTotConc": 0, "ImpNeto": 100, "ImpOpEx": 0, "ImpIVA": 21, "ImpTrib": 0, "MonId": "PES", "MonCotiz": 1, "CondicionIVAReceptorId": 5, "CbtesAsoc": { "CbteAsoc": [\ {\ "Tipo": 6,\ "PtoVta": 1,\ "Nro": 1\ }\ ] }, "Iva": { "AlicIva": [\ {\ "Id": 5,\ "BaseImp": 100,\ "Importe": 21\ }\ ] } } } } } } --- # Nota de Débito electrónica A | Afip SDK Node PHP Ruby Python API Copiar (async () => { /** * Numero del punto de venta **/ const punto_de_venta = 1; /** * Tipo de factura **/ const tipo_de_nota = 202; // 202 = Nota de Débito electrónica MiPyME A /** * Número de la ultima Nota de Débito electrónica MiPyME A **/ const last_voucher = await afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_nota); /** * Numero del punto de venta de la Factura * asociada a la Nota de Débito **/ const punto_factura_asociada = 1; /** * Tipo de Factura asociada a la Nota de Débito **/ const tipo_factura_asociada = 1; // 1 = Factura A /** * Numero de Factura asociada a la Nota de Débito **/ const numero_factura_asociada = 1; /** * Concepto de la factura * * Opciones: * * 1 = Productos * 2 = Servicios * 3 = Productos y Servicios **/ const concepto = 1; /** * Tipo de documento del comprador * * Opciones: * * 80 = CUIT * 86 = CUIL * 96 = DNI * 99 = Consumidor Final **/ const tipo_de_documento = 80; /** * Numero de documento del comprador (0 para consumidor final) **/ const numero_de_documento = 33693450239; /** * Numero de Nota de Débito **/ const numero_de_nota = last_voucher+1; /** * Fecha de la Nota de Débito en formato aaaa-mm-dd (hasta 10 dias antes y 10 dias despues) **/ const fecha = new Date(Date.now() - ((new Date()).getTimezoneOffset() * 60000)).toISOString().split('T')[0]; /** * Importe sujeto al IVA (sin icluir IVA) **/ const importe_gravado = 100; /** * Importe exento al IVA **/ const importe_exento_iva = 0; /** * Importe de IVA **/ const importe_iva = 21; /** * Condición frente al IVA del receptor * * 1 = IVA Responsable Inscripto * 4 = IVA Sujeto Exento * 5 = Consumidor Final * 6 = Responsable Monotributo * 7 = Sujeto No Categorizado * 8 = Proveedor del Exterior * 9 = Cliente del Exterior * 10 = IVA Liberado – Ley N° 19.640 * 13 = Monotributista Social * 15 = IVA No Alcanzado * 16 = Monotributo Trabajador Independiente Promovido **/ const condicion_iva_receptor = 1; /** * Los siguientes campos solo son obligatorios para los conceptos 2 y 3 **/ let fecha_servicio_desde = null, fecha_servicio_hasta = null, fecha_vencimiento_pago = null; if (concepto === 2 || concepto === 3) { /** * Fecha de inicio de servicio en formato aaaammdd **/ const fecha_servicio_desde = 20191213; /** * Fecha de fin de servicio en formato aaaammdd **/ const fecha_servicio_hasta = 20191213; /** * Fecha de vencimiento del pago en formato aaaammdd **/ const fecha_vencimiento_pago = 20191213; } const data = { 'CantReg' : 1, // Cantidad de Notas de Crédito a registrar 'PtoVta' : punto_de_venta, 'CbteTipo' : tipo_de_nota, 'Concepto' : concepto, 'DocTipo' : tipo_de_documento, 'DocNro' : numero_de_documento, 'CbteDesde' : numero_de_nota, 'CbteHasta' : numero_de_nota, 'CbteFch' : parseInt(fecha.replace(/-/g, '')), 'FchServDesde' : fecha_servicio_desde, 'FchServHasta' : fecha_servicio_hasta, 'FchVtoPago' : fecha_vencimiento_pago, 'ImpTotal' : importe_gravado + importe_iva + importe_exento_iva, 'ImpTotConc': 0, // Importe neto no gravado 'ImpNeto' : importe_gravado, 'ImpOpEx' : importe_exento_iva, 'ImpIVA' : importe_iva, 'ImpTrib' : 0, //Importe total de tributos 'MonId' : 'PES', //Tipo de moneda usada ('PES' = pesos argentinos) 'MonCotiz' : 1, // Cotización de la moneda usada (1 para pesos argentinos) 'CondicionIVAReceptorId' : condicion_iva_receptor, 'CbtesAsoc' : [ //Factura asociada\ {\ 'Tipo' : tipo_factura_asociada,\ 'PtoVta' : punto_factura_asociada,\ 'Nro' : numero_factura_asociada,\ }\ ], 'Iva' : [ // Alícuotas asociadas a la Nota de Débito\ {\ 'Id' : 5, // Id del tipo de IVA (5 = 21%)\ 'BaseImp' : importe_gravado,\ 'Importe' : importe_iva \ }\ ] }; /** * Creamos la Factura **/ const res = await afip.ElectronicBilling.createVoucher(data); /** * Mostramos por pantalla los datos de la nueva Factura **/ console.log({ 'cae' : res.CAE, //CAE asignado a la Factura 'vencimiento' : res.CAEFchVto //Fecha de vencimiento del CAE }); })() **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** [AnteriorNota de Crédito electrónica Cchevron-left](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/nota-de-credito-electronica-c) [SiguienteNota de Débito electrónica Bchevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/nota-de-debito-electronica-b) Última actualización hace 7 días Copiar /** * Numero del punto de venta **/ $punto_de_venta = 1; /** * Tipo de Nota de Débito **/ $tipo_de_nota = 202; // 202 = Nota de Débito electrónica MiPyME A /** * Número de la ultima Nota de Débito electrónica MiPyME A **/ $last_voucher = $afip->ElectronicBilling->GetLastVoucher($punto_de_venta, $tipo_de_nota); /** * Numero del punto de venta de la Factura * asociada a la Nota de Débito **/ $punto_factura_asociada = 1; /** * Tipo de Factura asociada a la Nota de Débito **/ $tipo_factura_asociada = 1; // 1 = Factura A /** * Numero de Factura asociada a la Nota de Débito **/ $numero_factura_asociada = 1; /** * Concepto de la Nota de Débito * * Opciones: * * 1 = Productos * 2 = Servicios * 3 = Productos y Servicios **/ $concepto = 1; /** * Tipo de documento del comprador * * Opciones: * * 80 = CUIT * 86 = CUIL * 96 = DNI * 99 = Consumidor Final **/ $tipo_de_documento = 80; /** * Numero de documento del comprador (0 para consumidor final) **/ $numero_de_documento = 33693450239; /** * Numero de Nota de Débito **/ $numero_de_nota = $last_voucher+1; /** * Fecha de la Nota de Débito en formato aaaa-mm-dd (hasta 10 dias antes y 10 dias despues) **/ $fecha = date('Y-m-d'); /** * Importe sujeto al IVA (sin icluir IVA) **/ $importe_gravado = 100; /** * Importe exento al IVA **/ $importe_exento_iva = 0; /** * Importe de IVA **/ $importe_iva = 21; /** * Condición frente al IVA del receptor * * Opciones: * * 1 = IVA Responsable Inscripto * 4 = IVA Sujeto Exento * 5 = Consumidor Final * 6 = Responsable Monotributo * 7 = Sujeto No Categorizado * 8 = Proveedor del Exterior * 9 = Cliente del Exterior * 10 = IVA Liberado – Ley N° 19.640 * 13 = Monotributista Social * 15 = IVA No Alcanzado * 16 = Monotributo Trabajador Independiente Promovido **/ $condicion_iva_receptor = 1; /** * Los siguientes campos solo son obligatorios para los conceptos 2 y 3 **/ if ($concepto === 2 || $concepto === 3) { /** * Fecha de inicio de servicio en formato aaaammdd **/ $fecha_servicio_desde = intval(date('Ymd')); /** * Fecha de fin de servicio en formato aaaammdd **/ $fecha_servicio_hasta = intval(date('Ymd')); /** * Fecha de vencimiento del pago en formato aaaammdd **/ $fecha_vencimiento_pago = intval(date('Ymd')); } else { $fecha_servicio_desde = null; $fecha_servicio_hasta = null; $fecha_vencimiento_pago = null; } $data = array( 'CantReg' => 1, // Cantidad de Notas de Crédito a registrar 'PtoVta' => $punto_de_venta, 'CbteTipo' => $tipo_de_nota, 'Concepto' => $concepto, 'DocTipo' => $tipo_de_documento, 'DocNro' => $numero_de_documento, 'CbteDesde' => $numero_de_nota, 'CbteHasta' => $numero_de_nota, 'CbteFch' => intval(str_replace('-', '', $fecha)), 'FchServDesde' => $fecha_servicio_desde, 'FchServHasta' => $fecha_servicio_hasta, 'FchVtoPago' => $fecha_vencimiento_pago, 'ImpTotal' => $importe_gravado + $importe_iva + $importe_exento_iva, 'ImpTotConc'=> 0, // Importe neto no gravado 'ImpNeto' => $importe_gravado, 'ImpOpEx' => $importe_exento_iva, 'ImpIVA' => $importe_iva, 'ImpTrib' => 0, //Importe total de tributos 'MonId' => 'PES', //Tipo de moneda usada en la Nota de Débito ('PES' = pesos argentinos) 'MonCotiz' => 1, // Cotización de la moneda usada (1 para pesos argentinos) 'CondicionIVAReceptorId' => $condicion_iva_receptor, 'CbtesAsoc' => array( //Factura asociada array( 'Tipo' => $tipo_factura_asociada, 'PtoVta' => $punto_factura_asociada, 'Nro' => $numero_factura_asociada, ) ), 'Iva' => array( // Alícuotas asociadas a la Nota de Débito array( 'Id' => 5, // Id del tipo de IVA (5 = 21%) 'BaseImp' => $importe_gravado, 'Importe' => $importe_iva ) ), ); /** * Creamos la Nota de Débito **/ $res = $afip->ElectronicBilling->CreateVoucher($data); /** * Mostramos por pantalla los datos de la nueva Nota de Débito **/ var_dump(array( 'cae' => $res['CAE'], //CAE asignado a la Nota de Débito 'vencimiento' => $res['CAEFchVto'] //Fecha de vencimiento del CAE )); Copiar require "date" # Numero del punto de venta punto_de_venta = 1 # Tipo de factura tipo_de_nota = 202 # 202 = Nota de Débito electrónica MiPyME A # Número de la ultima Nota de Débito electrónica MiPyME A last_voucher = afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_nota) # Numero del punto de venta de la Factura # asociada a la Nota de Débito punto_factura_asociada = 1 # Tipo de Factura asociada a la Nota de Débito tipo_factura_asociada = 1 # 1 = Factura A # Numero de Factura asociada a la Nota de Débito numero_factura_asociada = 1 # Concepto de la factura # # Opciones: # # 1 = Productos # 2 = Servicios # 3 = Productos y Servicios concepto = 1 # Tipo de documento del comprador # # Opciones: # # 80 = CUIT # 86 = CUIL # 96 = DNI # 99 = Consumidor Final tipo_de_documento = 80 # Numero de documento del comprador (0 para consumidor final) numero_de_documento = 33693450239 # Numero de Nota de Débito numero_de_nota = last_voucher+1 # Fecha de la Nota de Débito en formato aaaammdd (hasta 10 dias antes y 10 dias despues) fecha = Time.now.strftime("%Y%m%d").to_i # Importe sujeto al IVA (sin icluir IVA) importe_gravado = 100 # Importe exento al IVA importe_exento_iva = 0 # Importe de IVA importe_iva = 21 # Condición frente al IVA del receptor # # Opciones: # # 1 = IVA Responsable Inscripto # 4 = IVA Sujeto Exento # 5 = Consumidor Final # 6 = Responsable Monotributo # 7 = Sujeto No Categorizado # 8 = Proveedor del Exterior # 9 = Cliente del Exterior # 10 = IVA Liberado – Ley N° 19.640 # 13 = Monotributista Social # 15 = IVA No Alcanzado # 16 = Monotributo Trabajador Independiente Promovido condicion_iva_receptor = 1 # Los siguientes campos solo son obligatorios para los conceptos 2 y 3 if concepto == 2 || concepto == 3 # Fecha de inicio de servicio en formato aaaammdd fecha_servicio_desde = 20191213 # Fecha de fin de servicio en formato aaaammdd fecha_servicio_hasta = 20191213 # Fecha de vencimiento del pago en formato aaaammdd fecha_vencimiento_pago = 20191213 else fecha_servicio_desde = nil fecha_servicio_hasta = nil fecha_vencimiento_pago = nil end data = { "CantReg": 1, # Cantidad de Notas de Crédito a registrar "PtoVta": punto_de_venta, "CbteTipo": tipo_de_nota, "Concepto": concepto, "DocTipo": tipo_de_documento, "DocNro": numero_de_documento, "CbteDesde": numero_de_nota, "CbteHasta": numero_de_nota, "CbteFch": fecha, "FchServDesde": fecha_servicio_desde, "FchServHasta": fecha_servicio_hasta, "FchVtoPago": fecha_vencimiento_pago, "ImpTotal": importe_gravado + importe_iva + importe_exento_iva, "ImpTotConc": 0, # Importe neto no gravado "ImpNeto": importe_gravado, "ImpOpEx": importe_exento_iva, "ImpIVA": importe_iva, "ImpTrib": 0, # Importe total de tributos "MonId": "PES", # Tipo de moneda usada ("PES" = pesos argentinos) "MonCotiz": 1, # Cotización de la moneda usada (1 para pesos argentinos) "CondicionIVAReceptorId" : condicion_iva_receptor, "CbtesAsoc": [ # Factura asociada\ {\ "Tipo": tipo_factura_asociada,\ "PtoVta": punto_factura_asociada,\ "Nro": numero_factura_asociada,\ }\ ], "Iva": [ # Alícuotas asociadas a la Nota de Débito\ {\ "Id": 5, # Id del tipo de IVA (5 = 21%)\ "BaseImp": importe_gravado,\ "Importe": importe_iva \ }\ ] } # Creamos la Factura res = afip.ElectronicBilling.createVoucher(data) # Mostramos por pantalla los datos de la nueva Factura puts { "cae": res["CAE"], # CAE asignado a la Factura "vencimiento": res["CAEFchVto"] # Fecha de vencimiento del CAE } Copiar from datetime import datetime # Numero del punto de venta punto_de_venta = 1 # Tipo de factura tipo_de_nota = 202 # 202 = Nota de Débito electrónica MiPyME A # Número de la ultima Nota de Débito electrónica MiPyME A last_voucher = afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_nota) # Numero del punto de venta de la Factura # asociada a la Nota de Débito punto_factura_asociada = 1 # Tipo de Factura asociada a la Nota de Débito tipo_factura_asociada = 1 # 1 = Factura A # Numero de Factura asociada a la Nota de Débito numero_factura_asociada = 1 # Concepto de la factura # # Opciones: # # 1 = Productos # 2 = Servicios # 3 = Productos y Servicios concepto = 1 # Tipo de documento del comprador # # Opciones: # # 80 = CUIT # 86 = CUIL # 96 = DNI # 99 = Consumidor Final tipo_de_documento = 80 # Numero de documento del comprador (0 para consumidor final) numero_de_documento = 33693450239 # Numero de Nota de Débito numero_de_nota = last_voucher+1 # Fecha de la Nota de Débito en formato aaaammdd (hasta 10 dias antes y 10 dias despues) fecha = int(datetime.today().strftime("%Y%m%d")) # Importe sujeto al IVA (sin icluir IVA) importe_gravado = 100 # Importe exento al IVA importe_exento_iva = 0 # Importe de IVA importe_iva = 21 # Condición frente al IVA del receptor # # Opciones: # # 1 = IVA Responsable Inscripto # 4 = IVA Sujeto Exento # 5 = Consumidor Final # 6 = Responsable Monotributo # 7 = Sujeto No Categorizado # 8 = Proveedor del Exterior # 9 = Cliente del Exterior # 10 = IVA Liberado – Ley N° 19.640 # 13 = Monotributista Social # 15 = IVA No Alcanzado # 16 = Monotributo Trabajador Independiente Promovido condicion_iva_receptor = 1 # Los siguientes campos solo son obligatorios para los conceptos 2 y 3 if concepto == 2 or concepto == 3: # Fecha de inicio de servicio en formato aaaammdd fecha_servicio_desde = 20191213 # Fecha de fin de servicio en formato aaaammdd fecha_servicio_hasta = 20191213 # Fecha de vencimiento del pago en formato aaaammdd fecha_vencimiento_pago = 20191213 else: fecha_servicio_desde = None fecha_servicio_hasta = None fecha_vencimiento_pago = None data = { "CantReg": 1, # Cantidad de Notas de Crédito a registrar "PtoVta": punto_de_venta, "CbteTipo": tipo_de_nota, "Concepto": concepto, "DocTipo": tipo_de_documento, "DocNro": numero_de_documento, "CbteDesde": numero_de_nota, "CbteHasta": numero_de_nota, "CbteFch": fecha, "FchServDesde": fecha_servicio_desde, "FchServHasta": fecha_servicio_hasta, "FchVtoPago": fecha_vencimiento_pago, "ImpTotal": importe_gravado + importe_iva + importe_exento_iva, "ImpTotConc": 0, # Importe neto no gravado "ImpNeto": importe_gravado, "ImpOpEx": importe_exento_iva, "ImpIVA": importe_iva, "ImpTrib": 0, # Importe total de tributos "MonId": "PES", # Tipo de moneda usada ("PES" = pesos argentinos) "MonCotiz": 1, # Cotización de la moneda usada (1 para pesos argentinos) "CondicionIVAReceptorId" : condicion_iva_receptor, "CbtesAsoc": [ # Factura asociada\ {\ "Tipo": tipo_factura_asociada,\ "PtoVta": punto_factura_asociada,\ "Nro": numero_factura_asociada,\ }\ ], "Iva": [ # Alícuotas asociadas a la Nota de Débito\ {\ "Id": 5, # Id del tipo de IVA (5 = 21%)\ "BaseImp": importe_gravado,\ "Importe": importe_iva \ }\ ] } # Creamos la Factura res = afip.ElectronicBilling.createVoucher(data) # Mostramos por pantalla los datos de la nueva Factura print({ "cae": res["CAE"], # CAE asignado a la Factura "vencimiento": res["CAEFchVto"] # Fecha de vencimiento del CAE }) Copiar { "environment": "dev", "method": "FECAESolicitar", "wsid": "wsfe", "params": { "Auth": { "Token": "{{token}}", "Sign": "{{sign}}", "Cuit": "20409378472" }, "FeCAEReq": { "FeCabReq": { "CantReg": 1, "PtoVta": 1, "CbteTipo": 202 }, "FeDetReq": { "FECAEDetRequest": { "Concepto": 1, "DocTipo": 80, "DocNro": 33693450239, "CbteDesde": 30, "CbteHasta": 30, "CbteFch": 20240314, "FchServDesde": null, "FchServHasta": null, "FchVtoPago": null, "ImpTotal": 121, "ImpTotConc": 0, "ImpNeto": 100, "ImpOpEx": 0, "ImpIVA": 21, "ImpTrib": 0, "MonId": "PES", "MonCotiz": 1, "CondicionIVAReceptorId": 1, "CbtesAsoc": { "CbteAsoc": [\ {\ "Tipo": 1,\ "PtoVta": 1,\ "Nro": 1\ }\ ] }, "Iva": { "AlicIva": [\ {\ "Id": 5,\ "BaseImp": 100,\ "Importe": 21\ }\ ] } } } } } } --- # Nota de Crédito electrónica A | Afip SDK Node PHP Ruby Python API Copiar (async () => { /** * Numero del punto de venta **/ const punto_de_venta = 1; /** * Tipo de factura **/ const tipo_de_nota = 203; // 203 = Nota de Crédito electrónica MiPyME A /** * Número de la ultima Nota de Crédito electrónica MiPyME A **/ const last_voucher = await afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_nota); /** * Numero del punto de venta de la Factura * asociada a la Nota de Crédito **/ const punto_factura_asociada = 1; /** * Tipo de Factura asociada a la Nota de Crédito **/ const tipo_factura_asociada = 1; // 1 = Factura A /** * Numero de Factura asociada a la Nota de Crédito **/ const numero_factura_asociada = 1; /** * Concepto de la factura * * Opciones: * * 1 = Productos * 2 = Servicios * 3 = Productos y Servicios **/ const concepto = 1; /** * Tipo de documento del comprador * * Opciones: * * 80 = CUIT * 86 = CUIL * 96 = DNI * 99 = Consumidor Final **/ const tipo_de_documento = 80; /** * Numero de documento del comprador (0 para consumidor final) **/ const numero_de_documento = 33693450239; /** * Numero de Nota de Crédito **/ const numero_de_nota = last_voucher+1; /** * Fecha de la Nota de Crédito en formato aaaa-mm-dd (hasta 10 dias antes y 10 dias despues) **/ const fecha = new Date(Date.now() - ((new Date()).getTimezoneOffset() * 60000)).toISOString().split('T')[0]; /** * Importe sujeto al IVA (sin icluir IVA) **/ const importe_gravado = 100; /** * Importe exento al IVA **/ const importe_exento_iva = 0; /** * Importe de IVA **/ const importe_iva = 21; /** * Condición frente al IVA del receptor * * 1 = IVA Responsable Inscripto * 4 = IVA Sujeto Exento * 5 = Consumidor Final * 6 = Responsable Monotributo * 7 = Sujeto No Categorizado * 8 = Proveedor del Exterior * 9 = Cliente del Exterior * 10 = IVA Liberado – Ley N° 19.640 * 13 = Monotributista Social * 15 = IVA No Alcanzado * 16 = Monotributo Trabajador Independiente Promovido **/ const condicion_iva_receptor = 1; /** * Los siguientes campos solo son obligatorios para los conceptos 2 y 3 **/ let fecha_servicio_desde = null, fecha_servicio_hasta = null, fecha_vencimiento_pago = null; if (concepto === 2 || concepto === 3) { /** * Fecha de inicio de servicio en formato aaaammdd **/ const fecha_servicio_desde = 20191213; /** * Fecha de fin de servicio en formato aaaammdd **/ const fecha_servicio_hasta = 20191213; /** * Fecha de vencimiento del pago en formato aaaammdd **/ const fecha_vencimiento_pago = 20191213; } const data = { 'CantReg' : 1, // Cantidad de Notas de Crédito a registrar 'PtoVta' : punto_de_venta, 'CbteTipo' : tipo_de_nota, 'Concepto' : concepto, 'DocTipo' : tipo_de_documento, 'DocNro' : numero_de_documento, 'CbteDesde' : numero_de_nota, 'CbteHasta' : numero_de_nota, 'CbteFch' : parseInt(fecha.replace(/-/g, '')), 'FchServDesde' : fecha_servicio_desde, 'FchServHasta' : fecha_servicio_hasta, 'FchVtoPago' : fecha_vencimiento_pago, 'ImpTotal' : importe_gravado + importe_iva + importe_exento_iva, 'ImpTotConc': 0, // Importe neto no gravado 'ImpNeto' : importe_gravado, 'ImpOpEx' : importe_exento_iva, 'ImpIVA' : importe_iva, 'ImpTrib' : 0, //Importe total de tributos 'MonId' : 'PES', //Tipo de moneda usada ('PES' = pesos argentinos) 'MonCotiz' : 1, // Cotización de la moneda usada (1 para pesos argentinos) 'CondicionIVAReceptorId' : condicion_iva_receptor, 'CbtesAsoc' : [ //Factura asociada\ {\ 'Tipo' : tipo_factura_asociada,\ 'PtoVta' : punto_factura_asociada,\ 'Nro' : numero_factura_asociada,\ }\ ], 'Iva' : [ // Alícuotas asociadas a la Nota de Crédito\ {\ 'Id' : 5, // Id del tipo de IVA (5 = 21%)\ 'BaseImp' : importe_gravado,\ 'Importe' : importe_iva \ }\ ] }; /** * Creamos la Factura **/ const res = await afip.ElectronicBilling.createVoucher(data); /** * Mostramos por pantalla los datos de la nueva Factura **/ console.log({ 'cae' : res.CAE, //CAE asignado a la Factura 'vencimiento' : res.CAEFchVto //Fecha de vencimiento del CAE }); })() **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** [AnteriorFactura de Crédito electrónica Cchevron-left](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/factura-de-credito-electronica-c) [SiguienteNota de Crédito electrónica Bchevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/nota-de-credito-electronica-b) Última actualización hace 7 días Copiar /** * Numero del punto de venta **/ $punto_de_venta = 1; /** * Tipo de Nota de Crédito **/ $tipo_de_nota = 203; // 203 = Nota de Crédito electrónica MiPyME A /** * Número de la ultima Nota de Crédito electrónica MiPyME A **/ $last_voucher = $afip->ElectronicBilling->GetLastVoucher($punto_de_venta, $tipo_de_nota); /** * Numero del punto de venta de la Factura * asociada a la Nota de Crédito **/ $punto_factura_asociada = 1; /** * Tipo de Factura asociada a la Nota de Crédito **/ $tipo_factura_asociada = 1; // 1 = Factura A /** * Numero de Factura asociada a la Nota de Crédito **/ $numero_factura_asociada = 1; /** * Concepto de la Nota de Crédito * * Opciones: * * 1 = Productos * 2 = Servicios * 3 = Productos y Servicios **/ $concepto = 1; /** * Tipo de documento del comprador * * Opciones: * * 80 = CUIT * 86 = CUIL * 96 = DNI * 99 = Consumidor Final **/ $tipo_de_documento = 80; /** * Numero de documento del comprador (0 para consumidor final) **/ $numero_de_documento = 33693450239; /** * Numero de Nota de Crédito **/ $numero_de_nota = $last_voucher+1; /** * Fecha de la Nota de Crédito en formato aaaa-mm-dd (hasta 10 dias antes y 10 dias despues) **/ $fecha = date('Y-m-d'); /** * Importe sujeto al IVA (sin icluir IVA) **/ $importe_gravado = 100; /** * Importe exento al IVA **/ $importe_exento_iva = 0; /** * Importe de IVA **/ $importe_iva = 21; /** * Condición frente al IVA del receptor * * Opciones: * * 1 = IVA Responsable Inscripto * 4 = IVA Sujeto Exento * 5 = Consumidor Final * 6 = Responsable Monotributo * 7 = Sujeto No Categorizado * 8 = Proveedor del Exterior * 9 = Cliente del Exterior * 10 = IVA Liberado – Ley N° 19.640 * 13 = Monotributista Social * 15 = IVA No Alcanzado * 16 = Monotributo Trabajador Independiente Promovido **/ $condicion_iva_receptor = 1; /** * Los siguientes campos solo son obligatorios para los conceptos 2 y 3 **/ if ($concepto === 2 || $concepto === 3) { /** * Fecha de inicio de servicio en formato aaaammdd **/ $fecha_servicio_desde = intval(date('Ymd')); /** * Fecha de fin de servicio en formato aaaammdd **/ $fecha_servicio_hasta = intval(date('Ymd')); /** * Fecha de vencimiento del pago en formato aaaammdd **/ $fecha_vencimiento_pago = intval(date('Ymd')); } else { $fecha_servicio_desde = null; $fecha_servicio_hasta = null; $fecha_vencimiento_pago = null; } $data = array( 'CantReg' => 1, // Cantidad de Notas de Crédito a registrar 'PtoVta' => $punto_de_venta, 'CbteTipo' => $tipo_de_nota, 'Concepto' => $concepto, 'DocTipo' => $tipo_de_documento, 'DocNro' => $numero_de_documento, 'CbteDesde' => $numero_de_nota, 'CbteHasta' => $numero_de_nota, 'CbteFch' => intval(str_replace('-', '', $fecha)), 'FchServDesde' => $fecha_servicio_desde, 'FchServHasta' => $fecha_servicio_hasta, 'FchVtoPago' => $fecha_vencimiento_pago, 'ImpTotal' => $importe_gravado + $importe_iva + $importe_exento_iva, 'ImpTotConc'=> 0, // Importe neto no gravado 'ImpNeto' => $importe_gravado, 'ImpOpEx' => $importe_exento_iva, 'ImpIVA' => $importe_iva, 'ImpTrib' => 0, //Importe total de tributos 'MonId' => 'PES', //Tipo de moneda usada en la Nota de Crédito ('PES' = pesos argentinos) 'MonCotiz' => 1, // Cotización de la moneda usada (1 para pesos argentinos) 'CondicionIVAReceptorId' => $condicion_iva_receptor, 'CbtesAsoc' => array( //Factura asociada array( 'Tipo' => $tipo_factura_asociada, 'PtoVta' => $punto_factura_asociada, 'Nro' => $numero_factura_asociada, ) ), 'Iva' => array( // Alícuotas asociadas a la Nota de Crédito array( 'Id' => 5, // Id del tipo de IVA (5 = 21%) 'BaseImp' => $importe_gravado, 'Importe' => $importe_iva ) ), ); /** * Creamos la Nota de Crédito **/ $res = $afip->ElectronicBilling->CreateVoucher($data); /** * Mostramos por pantalla los datos de la nueva Nota de Crédito **/ var_dump(array( 'cae' => $res['CAE'], //CAE asignado a la Nota de Crédito 'vencimiento' => $res['CAEFchVto'] //Fecha de vencimiento del CAE )); Copiar require "date" # Numero del punto de venta punto_de_venta = 1 # Tipo de factura tipo_de_nota = 203 # 203 = Nota de Crédito electrónica MiPyME A # Número de la ultima Nota de Crédito electrónica MiPyME A last_voucher = afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_nota) # Numero del punto de venta de la Factura # asociada a la Nota de Crédito punto_factura_asociada = 1 # Tipo de Factura asociada a la Nota de Crédito tipo_factura_asociada = 1 # 1 = Factura A # Numero de Factura asociada a la Nota de Crédito numero_factura_asociada = 1 # Concepto de la factura # # Opciones: # # 1 = Productos # 2 = Servicios # 3 = Productos y Servicios concepto = 1 # Tipo de documento del comprador # # Opciones: # # 80 = CUIT # 86 = CUIL # 96 = DNI # 99 = Consumidor Final tipo_de_documento = 80 # Numero de documento del comprador (0 para consumidor final) numero_de_documento = 33693450239 # Numero de Nota de Crédito numero_de_nota = last_voucher+1 # Fecha de la Nota de Crédito en formato aaaammdd (hasta 10 dias antes y 10 dias despues) fecha = Time.now.strftime("%Y%m%d").to_i # Importe sujeto al IVA (sin icluir IVA) importe_gravado = 100 # Importe exento al IVA importe_exento_iva = 0 # Importe de IVA importe_iva = 21 # Condición frente al IVA del receptor # # Opciones: # # 1 = IVA Responsable Inscripto # 4 = IVA Sujeto Exento # 5 = Consumidor Final # 6 = Responsable Monotributo # 7 = Sujeto No Categorizado # 8 = Proveedor del Exterior # 9 = Cliente del Exterior # 10 = IVA Liberado – Ley N° 19.640 # 13 = Monotributista Social # 15 = IVA No Alcanzado # 16 = Monotributo Trabajador Independiente Promovido condicion_iva_receptor = 1 # Los siguientes campos solo son obligatorios para los conceptos 2 y 3 if concepto == 2 || concepto == 3 # Fecha de inicio de servicio en formato aaaammdd fecha_servicio_desde = 20191213 # Fecha de fin de servicio en formato aaaammdd fecha_servicio_hasta = 20191213 # Fecha de vencimiento del pago en formato aaaammdd fecha_vencimiento_pago = 20191213 else fecha_servicio_desde = nil fecha_servicio_hasta = nil fecha_vencimiento_pago = nil end data = { "CantReg": 1, # Cantidad de Notas de Crédito a registrar "PtoVta": punto_de_venta, "CbteTipo": tipo_de_nota, "Concepto": concepto, "DocTipo": tipo_de_documento, "DocNro": numero_de_documento, "CbteDesde": numero_de_nota, "CbteHasta": numero_de_nota, "CbteFch": fecha, "FchServDesde": fecha_servicio_desde, "FchServHasta": fecha_servicio_hasta, "FchVtoPago": fecha_vencimiento_pago, "ImpTotal": importe_gravado + importe_iva + importe_exento_iva, "ImpTotConc": 0, # Importe neto no gravado "ImpNeto": importe_gravado, "ImpOpEx": importe_exento_iva, "ImpIVA": importe_iva, "ImpTrib": 0, # Importe total de tributos "MonId": "PES", # Tipo de moneda usada ("PES" = pesos argentinos) "MonCotiz": 1, # Cotización de la moneda usada (1 para pesos argentinos) "CondicionIVAReceptorId" : condicion_iva_receptor, "CbtesAsoc": [ # Factura asociada\ {\ "Tipo": tipo_factura_asociada,\ "PtoVta": punto_factura_asociada,\ "Nro": numero_factura_asociada,\ }\ ], "Iva": [ # Alícuotas asociadas a la Nota de Crédito\ {\ "Id": 5, # Id del tipo de IVA (5 = 21%)\ "BaseImp": importe_gravado,\ "Importe": importe_iva \ }\ ] } # Creamos la Factura res = afip.ElectronicBilling.createVoucher(data) # Mostramos por pantalla los datos de la nueva Factura puts { "cae": res["CAE"], # CAE asignado a la Factura "vencimiento": res["CAEFchVto"] # Fecha de vencimiento del CAE } Copiar from datetime import datetime # Numero del punto de venta punto_de_venta = 1 # Tipo de factura tipo_de_nota = 203 # 203 = Nota de Crédito electrónica MiPyME A # Número de la ultima Nota de Crédito electrónica MiPyME A last_voucher = afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_nota) # Numero del punto de venta de la Factura # asociada a la Nota de Crédito punto_factura_asociada = 1 # Tipo de Factura asociada a la Nota de Crédito tipo_factura_asociada = 1 # 1 = Factura A # Numero de Factura asociada a la Nota de Crédito numero_factura_asociada = 1 # Concepto de la factura # # Opciones: # # 1 = Productos # 2 = Servicios # 3 = Productos y Servicios concepto = 1 # Tipo de documento del comprador # # Opciones: # # 80 = CUIT # 86 = CUIL # 96 = DNI # 99 = Consumidor Final tipo_de_documento = 80 # Numero de documento del comprador (0 para consumidor final) numero_de_documento = 33693450239 # Numero de Nota de Crédito numero_de_nota = last_voucher+1 # Fecha de la Nota de Crédito en formato aaaammdd (hasta 10 dias antes y 10 dias despues) fecha = int(datetime.today().strftime("%Y%m%d")) # Importe sujeto al IVA (sin icluir IVA) importe_gravado = 100 # Importe exento al IVA importe_exento_iva = 0 # Importe de IVA importe_iva = 21 # Condición frente al IVA del receptor # # Opciones: # # 1 = IVA Responsable Inscripto # 4 = IVA Sujeto Exento # 5 = Consumidor Final # 6 = Responsable Monotributo # 7 = Sujeto No Categorizado # 8 = Proveedor del Exterior # 9 = Cliente del Exterior # 10 = IVA Liberado – Ley N° 19.640 # 13 = Monotributista Social # 15 = IVA No Alcanzado # 16 = Monotributo Trabajador Independiente Promovido condicion_iva_receptor = 1 # Los siguientes campos solo son obligatorios para los conceptos 2 y 3 if concepto == 2 or concepto == 3: # Fecha de inicio de servicio en formato aaaammdd fecha_servicio_desde = 20191213 # Fecha de fin de servicio en formato aaaammdd fecha_servicio_hasta = 20191213 # Fecha de vencimiento del pago en formato aaaammdd fecha_vencimiento_pago = 20191213 else: fecha_servicio_desde = None fecha_servicio_hasta = None fecha_vencimiento_pago = None data = { "CantReg": 1, # Cantidad de Notas de Crédito a registrar "PtoVta": punto_de_venta, "CbteTipo": tipo_de_nota, "Concepto": concepto, "DocTipo": tipo_de_documento, "DocNro": numero_de_documento, "CbteDesde": numero_de_nota, "CbteHasta": numero_de_nota, "CbteFch": fecha, "FchServDesde": fecha_servicio_desde, "FchServHasta": fecha_servicio_hasta, "FchVtoPago": fecha_vencimiento_pago, "ImpTotal": importe_gravado + importe_iva + importe_exento_iva, "ImpTotConc": 0, # Importe neto no gravado "ImpNeto": importe_gravado, "ImpOpEx": importe_exento_iva, "ImpIVA": importe_iva, "ImpTrib": 0, # Importe total de tributos "MonId": "PES", # Tipo de moneda usada ("PES" = pesos argentinos) "MonCotiz": 1, # Cotización de la moneda usada (1 para pesos argentinos) "CondicionIVAReceptorId" : condicion_iva_receptor, "CbtesAsoc": [ # Factura asociada\ {\ "Tipo": tipo_factura_asociada,\ "PtoVta": punto_factura_asociada,\ "Nro": numero_factura_asociada,\ }\ ], "Iva": [ # Alícuotas asociadas a la Nota de Crédito\ {\ "Id": 5, # Id del tipo de IVA (5 = 21%)\ "BaseImp": importe_gravado,\ "Importe": importe_iva \ }\ ] } # Creamos la Factura res = afip.ElectronicBilling.createVoucher(data) # Mostramos por pantalla los datos de la nueva Factura print({ "cae": res["CAE"], # CAE asignado a la Factura "vencimiento": res["CAEFchVto"] # Fecha de vencimiento del CAE }) Copiar { "environment": "dev", "method": "FECAESolicitar", "wsid": "wsfe", "params": { "Auth": { "Token": "{{token}}", "Sign": "{{sign}}", "Cuit": "20409378472" }, "FeCAEReq": { "FeCabReq": { "CantReg": 1, "PtoVta": 1, "CbteTipo": 203 }, "FeDetReq": { "FECAEDetRequest": { "Concepto": 1, "DocTipo": 80, "DocNro": 33693450239, "CbteDesde": 30, "CbteHasta": 30, "CbteFch": 20240314, "FchServDesde": null, "FchServHasta": null, "FchVtoPago": null, "ImpTotal": 121, "ImpTotConc": 0, "ImpNeto": 100, "ImpOpEx": 0, "ImpIVA": 21, "ImpTrib": 0, "MonId": "PES", "MonCotiz": 1, "CondicionIVAReceptorId": 1, "CbtesAsoc": { "CbteAsoc": [\ {\ "Tipo": 1,\ "PtoVta": 1,\ "Nro": 1\ }\ ] }, "Iva": { "AlicIva": [\ {\ "Id": 5,\ "BaseImp": 100,\ "Importe": 21\ }\ ] } } } } } } --- # Nota de Débito electrónica B | Afip SDK Node PHP Ruby Python API Copiar (async () => { /** * Numero del punto de venta **/ const punto_de_venta = 1; /** * Tipo de factura **/ const tipo_de_nota = 207; // 207 = Nota de Débito electrónica MiPyME B /** * Número de la ultima Nota de Débito electrónica MiPyME B **/ const last_voucher = await afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_nota); /** * Numero del punto de venta de la Factura * asociada a la Nota de Débito **/ const punto_factura_asociada = 1; /** * Tipo de Factura asociada a la Nota de Débito **/ const tipo_factura_asociada = 6; // 6 = Factura B /** * Numero de Factura asociada a la Nota de Débito **/ const numero_factura_asociada = 1; /** * Concepto de la factura * * Opciones: * * 1 = Productos * 2 = Servicios * 3 = Productos y Servicios **/ const concepto = 1; /** * Tipo de documento del comprador * * Opciones: * * 80 = CUIT * 86 = CUIL * 96 = DNI * 99 = Consumidor Final **/ const tipo_de_documento = 99; /** * Numero de documento del comprador (0 para consumidor final) **/ const numero_de_documento = 0; /** * Numero de Nota de Débito **/ const numero_de_nota = last_voucher+1; /** * Fecha de la Nota de Débito en formato aaaa-mm-dd (hasta 10 dias antes y 10 dias despues) **/ const fecha = new Date(Date.now() - ((new Date()).getTimezoneOffset() * 60000)).toISOString().split('T')[0]; /** * Importe sujeto al IVA (sin icluir IVA) **/ const importe_gravado = 100; /** * Importe exento al IVA **/ const importe_exento_iva = 0; /** * Importe de IVA **/ const importe_iva = 21; /** * Condición frente al IVA del receptor * * 1 = IVA Responsable Inscripto * 4 = IVA Sujeto Exento * 5 = Consumidor Final * 6 = Responsable Monotributo * 7 = Sujeto No Categorizado * 8 = Proveedor del Exterior * 9 = Cliente del Exterior * 10 = IVA Liberado – Ley N° 19.640 * 13 = Monotributista Social * 15 = IVA No Alcanzado * 16 = Monotributo Trabajador Independiente Promovido **/ const condicion_iva_receptor = 5; /** * Los siguientes campos solo son obligatorios para los conceptos 2 y 3 **/ let fecha_servicio_desde = null, fecha_servicio_hasta = null, fecha_vencimiento_pago = null; if (concepto === 2 || concepto === 3) { /** * Fecha de inicio de servicio en formato aaaammdd **/ const fecha_servicio_desde = 20191213; /** * Fecha de fin de servicio en formato aaaammdd **/ const fecha_servicio_hasta = 20191213; /** * Fecha de vencimiento del pago en formato aaaammdd **/ const fecha_vencimiento_pago = 20191213; } const data = { 'CantReg' : 1, // Cantidad de Notas de Crédito a registrar 'PtoVta' : punto_de_venta, 'CbteTipo' : tipo_de_nota, 'Concepto' : concepto, 'DocTipo' : tipo_de_documento, 'DocNro' : numero_de_documento, 'CbteDesde' : numero_de_nota, 'CbteHasta' : numero_de_nota, 'CbteFch' : parseInt(fecha.replace(/-/g, '')), 'FchServDesde' : fecha_servicio_desde, 'FchServHasta' : fecha_servicio_hasta, 'FchVtoPago' : fecha_vencimiento_pago, 'ImpTotal' : importe_gravado + importe_iva + importe_exento_iva, 'ImpTotConc': 0, // Importe neto no gravado 'ImpNeto' : importe_gravado, 'ImpOpEx' : importe_exento_iva, 'ImpIVA' : importe_iva, 'ImpTrib' : 0, //Importe total de tributos 'MonId' : 'PES', //Tipo de moneda usada ('PES' = pesos argentinos) 'MonCotiz' : 1, // Cotización de la moneda usada (1 para pesos argentinos) 'CondicionIVAReceptorId' : condicion_iva_receptor, 'CbtesAsoc' : [ //Factura asociada\ {\ 'Tipo' : tipo_factura_asociada,\ 'PtoVta' : punto_factura_asociada,\ 'Nro' : numero_factura_asociada,\ }\ ], 'Iva' : [ // Alícuotas asociadas a la Nota de Débito\ {\ 'Id' : 5, // Id del tipo de IVA (5 = 21%)\ 'BaseImp' : importe_gravado,\ 'Importe' : importe_iva \ }\ ] }; /** * Creamos la Factura **/ const res = await afip.ElectronicBilling.createVoucher(data); /** * Mostramos por pantalla los datos de la nueva Factura **/ console.log({ 'cae' : res.CAE, //CAE asignado a la Factura 'vencimiento' : res.CAEFchVto //Fecha de vencimiento del CAE }); })() **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** [AnteriorNota de Débito electrónica Achevron-left](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/nota-de-debito-electronica-a) [SiguienteNota de Débito electrónica Cchevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/nota-de-debito-electronica-c) Última actualización hace 7 días Copiar /** * Numero del punto de venta **/ $punto_de_venta = 1; /** * Tipo de Nota de Débito **/ $tipo_de_nota = 207; // 207 = Nota de Débito electrónica MiPyME B /** * Número de la ultima Nota de Débito electrónica MiPyME B **/ $last_voucher = $afip->ElectronicBilling->GetLastVoucher($punto_de_venta, $tipo_de_nota); /** * Numero del punto de venta de la Factura * asociada a la Nota de Débito **/ $punto_factura_asociada = 1; /** * Tipo de Factura asociada a la Nota de Débito **/ $tipo_factura_asociada = 6; // 6 = Factura B /** * Numero de Factura asociada a la Nota de Débito **/ $numero_factura_asociada = 1; /** * Concepto de la Nota de Débito * * Opciones: * * 1 = Productos * 2 = Servicios * 3 = Productos y Servicios **/ $concepto = 1; /** * Tipo de documento del comprador * * Opciones: * * 80 = CUIT * 86 = CUIL * 96 = DNI * 99 = Consumidor Final **/ $tipo_de_documento = 99; /** * Numero de documento del comprador (0 para consumidor final) **/ $numero_de_documento = 0; /** * Numero de Nota de Débito **/ $numero_de_nota = $last_voucher+1; /** * Fecha de la Nota de Débito en formato aaaa-mm-dd (hasta 10 dias antes y 10 dias despues) **/ $fecha = date('Y-m-d'); /** * Importe sujeto al IVA (sin icluir IVA) **/ $importe_gravado = 100; /** * Importe exento al IVA **/ $importe_exento_iva = 0; /** * Importe de IVA **/ $importe_iva = 21; /** * Condición frente al IVA del receptor * * Opciones: * * 1 = IVA Responsable Inscripto * 4 = IVA Sujeto Exento * 5 = Consumidor Final * 6 = Responsable Monotributo * 7 = Sujeto No Categorizado * 8 = Proveedor del Exterior * 9 = Cliente del Exterior * 10 = IVA Liberado – Ley N° 19.640 * 13 = Monotributista Social * 15 = IVA No Alcanzado * 16 = Monotributo Trabajador Independiente Promovido **/ $condicion_iva_receptor = 5; /** * Los siguientes campos solo son obligatorios para los conceptos 2 y 3 **/ if ($concepto === 2 || $concepto === 3) { /** * Fecha de inicio de servicio en formato aaaammdd **/ $fecha_servicio_desde = intval(date('Ymd')); /** * Fecha de fin de servicio en formato aaaammdd **/ $fecha_servicio_hasta = intval(date('Ymd')); /** * Fecha de vencimiento del pago en formato aaaammdd **/ $fecha_vencimiento_pago = intval(date('Ymd')); } else { $fecha_servicio_desde = null; $fecha_servicio_hasta = null; $fecha_vencimiento_pago = null; } $data = array( 'CantReg' => 1, // Cantidad de Notas de Crédito a registrar 'PtoVta' => $punto_de_venta, 'CbteTipo' => $tipo_de_nota, 'Concepto' => $concepto, 'DocTipo' => $tipo_de_documento, 'DocNro' => $numero_de_documento, 'CbteDesde' => $numero_de_nota, 'CbteHasta' => $numero_de_nota, 'CbteFch' => intval(str_replace('-', '', $fecha)), 'FchServDesde' => $fecha_servicio_desde, 'FchServHasta' => $fecha_servicio_hasta, 'FchVtoPago' => $fecha_vencimiento_pago, 'ImpTotal' => $importe_gravado + $importe_iva + $importe_exento_iva, 'ImpTotConc'=> 0, // Importe neto no gravado 'ImpNeto' => $importe_gravado, 'ImpOpEx' => $importe_exento_iva, 'ImpIVA' => $importe_iva, 'ImpTrib' => 0, //Importe total de tributos 'MonId' => 'PES', //Tipo de moneda usada en la Nota de Débito ('PES' = pesos argentinos) 'MonCotiz' => 1, // Cotización de la moneda usada (1 para pesos argentinos) 'CondicionIVAReceptorId' => $condicion_iva_receptor, 'CbtesAsoc' => array( //Factura asociada array( 'Tipo' => $tipo_factura_asociada, 'PtoVta' => $punto_factura_asociada, 'Nro' => $numero_factura_asociada, ) ), 'Iva' => array(// Alícuotas asociadas a la Nota de Débito array( 'Id' => 5, // Id del tipo de IVA (5 = 21%) 'BaseImp' => $importe_gravado, 'Importe' => $importe_iva ) ), ); /** * Creamos la Nota de Débito **/ $res = $afip->ElectronicBilling->CreateVoucher($data); /** * Mostramos por pantalla los datos de la nueva Nota de Débito **/ var_dump(array( 'cae' => $res['CAE'], //CAE asignado a la Nota de Débito 'vencimiento' => $res['CAEFchVto'] //Fecha de vencimiento del CAE )); Copiar require "date" # Numero del punto de venta punto_de_venta = 1 # Tipo de factura tipo_de_nota = 207 # 207 = Nota de Débito electrónica MiPyME B # Número de la ultima Nota de Débito electrónica MiPyME B last_voucher = afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_nota) # Numero del punto de venta de la Factura # asociada a la Nota de Débito punto_factura_asociada = 1 # Tipo de Factura asociada a la Nota de Débito tipo_factura_asociada = 6 # 6 = Factura B # Numero de Factura asociada a la Nota de Débito numero_factura_asociada = 1 # Concepto de la factura # # Opciones: # # 1 = Productos # 2 = Servicios # 3 = Productos y Servicios concepto = 1 # Tipo de documento del comprador # # Opciones: # # 80 = CUIT # 86 = CUIL # 96 = DNI # 99 = Consumidor Final tipo_de_documento = 99 # Numero de documento del comprador (0 para consumidor final) numero_de_documento = 0 # Numero de Nota de Débito numero_de_nota = last_voucher+1 # Fecha de la Nota de Débito en formato aaaammdd (hasta 10 dias antes y 10 dias despues) fecha = Time.now.strftime("%Y%m%d").to_i # Importe sujeto al IVA (sin icluir IVA) importe_gravado = 100 # Importe exento al IVA importe_exento_iva = 0 # Importe de IVA importe_iva = 21 # Condición frente al IVA del receptor # # Opciones: # # 1 = IVA Responsable Inscripto # 4 = IVA Sujeto Exento # 5 = Consumidor Final # 6 = Responsable Monotributo # 7 = Sujeto No Categorizado # 8 = Proveedor del Exterior # 9 = Cliente del Exterior # 10 = IVA Liberado – Ley N° 19.640 # 13 = Monotributista Social # 15 = IVA No Alcanzado # 16 = Monotributo Trabajador Independiente Promovido condicion_iva_receptor = 5 # Los siguientes campos solo son obligatorios para los conceptos 2 y 3 if concepto == 2 || concepto == 3 # Fecha de inicio de servicio en formato aaaammdd fecha_servicio_desde = 20191213 # Fecha de fin de servicio en formato aaaammdd fecha_servicio_hasta = 20191213 # Fecha de vencimiento del pago en formato aaaammdd fecha_vencimiento_pago = 20191213 else fecha_servicio_desde = nil fecha_servicio_hasta = nil fecha_vencimiento_pago = nil end data = { "CantReg": 1, # Cantidad de Notas de Crédito a registrar "PtoVta": punto_de_venta, "CbteTipo": tipo_de_nota, "Concepto": concepto, "DocTipo": tipo_de_documento, "DocNro": numero_de_documento, "CbteDesde": numero_de_nota, "CbteHasta": numero_de_nota, "CbteFch": fecha, "FchServDesde": fecha_servicio_desde, "FchServHasta": fecha_servicio_hasta, "FchVtoPago": fecha_vencimiento_pago, "ImpTotal": importe_gravado + importe_iva + importe_exento_iva, "ImpTotConc": 0, # Importe neto no gravado "ImpNeto": importe_gravado, "ImpOpEx": importe_exento_iva, "ImpIVA": importe_iva, "ImpTrib": 0, # Importe total de tributos "MonId": "PES", # Tipo de moneda usada ("PES" = pesos argentinos) "MonCotiz": 1, # Cotización de la moneda usada (1 para pesos argentinos) "CondicionIVAReceptorId" : condicion_iva_receptor, "CbtesAsoc": [ # Factura asociada\ {\ "Tipo": tipo_factura_asociada,\ "PtoVta": punto_factura_asociada,\ "Nro": numero_factura_asociada,\ }\ ], "Iva": [ # Alícuotas asociadas a la Nota de Débito\ {\ "Id": 5, # Id del tipo de IVA (5 = 21%)\ "BaseImp": importe_gravado,\ "Importe": importe_iva \ }\ ] } # Creamos la Factura res = afip.ElectronicBilling.createVoucher(data) # Mostramos por pantalla los datos de la nueva Factura puts { "cae": res["CAE"], # CAE asignado a la Factura "vencimiento": res["CAEFchVto"] # Fecha de vencimiento del CAE } Copiar from datetime import datetime # Numero del punto de venta punto_de_venta = 1 # Tipo de factura tipo_de_nota = 207 # 207 = Nota de Débito electrónica MiPyME B # Número de la ultima Nota de Débito electrónica MiPyME B last_voucher = afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_nota) # Numero del punto de venta de la Factura # asociada a la Nota de Débito punto_factura_asociada = 1 # Tipo de Factura asociada a la Nota de Débito tipo_factura_asociada = 6 # 6 = Factura B # Numero de Factura asociada a la Nota de Débito numero_factura_asociada = 1 # Concepto de la factura # # Opciones: # # 1 = Productos # 2 = Servicios # 3 = Productos y Servicios concepto = 1 # Tipo de documento del comprador # # Opciones: # # 80 = CUIT # 86 = CUIL # 96 = DNI # 99 = Consumidor Final tipo_de_documento = 99 # Numero de documento del comprador (0 para consumidor final) numero_de_documento = 0 # Numero de Nota de Débito numero_de_nota = last_voucher+1 # Fecha de la Nota de Débito en formato aaaammdd (hasta 10 dias antes y 10 dias despues) fecha = int(datetime.today().strftime("%Y%m%d")) # Importe sujeto al IVA (sin icluir IVA) importe_gravado = 100 # Importe exento al IVA importe_exento_iva = 0 # Importe de IVA importe_iva = 21 # Condición frente al IVA del receptor # # Opciones: # # 1 = IVA Responsable Inscripto # 4 = IVA Sujeto Exento # 5 = Consumidor Final # 6 = Responsable Monotributo # 7 = Sujeto No Categorizado # 8 = Proveedor del Exterior # 9 = Cliente del Exterior # 10 = IVA Liberado – Ley N° 19.640 # 13 = Monotributista Social # 15 = IVA No Alcanzado # 16 = Monotributo Trabajador Independiente Promovido condicion_iva_receptor = 5 # Los siguientes campos solo son obligatorios para los conceptos 2 y 3 if concepto == 2 or concepto == 3: # Fecha de inicio de servicio en formato aaaammdd fecha_servicio_desde = 20191213 # Fecha de fin de servicio en formato aaaammdd fecha_servicio_hasta = 20191213 # Fecha de vencimiento del pago en formato aaaammdd fecha_vencimiento_pago = 20191213 else: fecha_servicio_desde = None fecha_servicio_hasta = None fecha_vencimiento_pago = None data = { "CantReg": 1, # Cantidad de Notas de Crédito a registrar "PtoVta": punto_de_venta, "CbteTipo": tipo_de_nota, "Concepto": concepto, "DocTipo": tipo_de_documento, "DocNro": numero_de_documento, "CbteDesde": numero_de_nota, "CbteHasta": numero_de_nota, "CbteFch": fecha, "FchServDesde": fecha_servicio_desde, "FchServHasta": fecha_servicio_hasta, "FchVtoPago": fecha_vencimiento_pago, "ImpTotal": importe_gravado + importe_iva + importe_exento_iva, "ImpTotConc": 0, # Importe neto no gravado "ImpNeto": importe_gravado, "ImpOpEx": importe_exento_iva, "ImpIVA": importe_iva, "ImpTrib": 0, # Importe total de tributos "MonId": "PES", # Tipo de moneda usada ("PES" = pesos argentinos) "MonCotiz": 1, # Cotización de la moneda usada (1 para pesos argentinos) "CondicionIVAReceptorId" : condicion_iva_receptor, "CbtesAsoc": [ # Factura asociada\ {\ "Tipo": tipo_factura_asociada,\ "PtoVta": punto_factura_asociada,\ "Nro": numero_factura_asociada,\ }\ ], "Iva": [ # Alícuotas asociadas a la Nota de Débito\ {\ "Id": 5, # Id del tipo de IVA (5 = 21%)\ "BaseImp": importe_gravado,\ "Importe": importe_iva \ }\ ] } # Creamos la Factura res = afip.ElectronicBilling.createVoucher(data) # Mostramos por pantalla los datos de la nueva Factura print({ "cae": res["CAE"], # CAE asignado a la Factura "vencimiento": res["CAEFchVto"] # Fecha de vencimiento del CAE }) Copiar { "environment": "dev", "method": "FECAESolicitar", "wsid": "wsfe", "params": { "Auth": { "Token": "{{token}}", "Sign": "{{sign}}", "Cuit": "20409378472" }, "FeCAEReq": { "FeCabReq": { "CantReg": 1, "PtoVta": 1, "CbteTipo": 207 }, "FeDetReq": { "FECAEDetRequest": { "Concepto": 1, "DocTipo": 99, "DocNro": 0, "CbteDesde": 15, "CbteHasta": 15, "CbteFch": 20240314, "FchServDesde": null, "FchServHasta": null, "FchVtoPago": null, "ImpTotal": 121, "ImpTotConc": 0, "ImpNeto": 100, "ImpOpEx": 0, "ImpIVA": 21, "ImpTrib": 0, "MonId": "PES", "MonCotiz": 1, "CondicionIVAReceptorId": 5, "CbtesAsoc": { "CbteAsoc": [\ {\ "Tipo": 6,\ "PtoVta": 1,\ "Nro": 1\ }\ ] }, "Iva": { "AlicIva": [\ {\ "Id": 5,\ "BaseImp": 100,\ "Importe": 21\ }\ ] } } } } } } --- # Factura de Crédito electrónica C | Afip SDK Node PHP Ruby Python API Copiar (async () => { /** * Numero del punto de venta **/ const punto_de_venta = 1; /** * Tipo de factura **/ const tipo_de_factura = 211; // 211 = Factura de Crédito electrónica MiPyMEs (FCE) C /** * Número de la ultima Factura de Crédito electrónica MiPyMEs (FCE) C **/ const last_voucher = await afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_factura); /** * Concepto de la factura * * Opciones: * * 1 = Productos * 2 = Servicios * 3 = Productos y Servicios **/ const concepto = 1; /** * Tipo de documento del comprador * * Opciones: * * 80 = CUIT * 86 = CUIL * 96 = DNI * 99 = Consumidor Final **/ const tipo_de_documento = 80; /** * Numero de documento del comprador (0 para consumidor final) **/ const numero_de_documento = 30679928879; /** * Numero de factura **/ const numero_de_factura = last_voucher+1; /** * Numero de CBU del cliente * Es requerido para realizar una factura de crédito electrónica **/ const CBU = '1234567890123456789012'; /** * Tipo de Transferencia * Es requerido para realizar una factura de crédito electrónica * SCA = 'TRANSFERENCIA AL SISTEMA DE CIRCULACION ABIERTA' * ADC = 'AGENTE DE DEPOSITO COLECTIVO' **/ const transferencia = 'ADC'; /** * Fecha de la factura en formato aaaa-mm-dd (hasta 10 dias antes y 10 dias despues) **/ const fecha = new Date(Date.now() - ((new Date()).getTimezoneOffset() * 60000)).toISOString().split('T')[0]; /** * Fecha de vencimiento del pago en formato aaaa-mm-dd **/ const fecha_vencimiento_pago = new Date(Date.now() - ((new Date()).getTimezoneOffset() * 60000)).toISOString().split('T')[0]; /** * Importe de la Factura **/ const importe_total = 100000; /** * Condición frente al IVA del receptor * * 1 = IVA Responsable Inscripto * 4 = IVA Sujeto Exento * 5 = Consumidor Final * 6 = Responsable Monotributo * 7 = Sujeto No Categorizado * 8 = Proveedor del Exterior * 9 = Cliente del Exterior * 10 = IVA Liberado – Ley N° 19.640 * 13 = Monotributista Social * 15 = IVA No Alcanzado * 16 = Monotributo Trabajador Independiente Promovido **/ const condicion_iva_receptor = 6; /** * Los siguientes campos solo son obligatorios para los conceptos 2 y 3 **/ let fecha_servicio_desde = null, fecha_servicio_hasta = null; if (concepto === 2 || concepto === 3) { /** * Fecha de inicio de servicio en formato aaaammdd **/ const fecha_servicio_desde = 20191213; /** * Fecha de fin de servicio en formato aaaammdd **/ const fecha_servicio_hasta = 20191213; } const data = { 'CantReg' : 1, // Cantidad de facturas a registrar 'PtoVta' : punto_de_venta, 'CbteTipo' : tipo_de_factura, 'Concepto' : concepto, 'DocTipo' : tipo_de_documento, 'DocNro' : numero_de_documento, 'CbteDesde' : numero_de_factura, 'CbteHasta' : numero_de_factura, 'CbteFch' : parseInt(fecha.replace(/-/g, '')), 'FchServDesde' : fecha_servicio_desde, 'FchServHasta' : fecha_servicio_hasta, 'FchVtoPago' : parseInt(fecha_vencimiento_pago.replace(/-/g, '')), 'ImpTotal' : importe_total, 'ImpTotConc': 0, // Importe neto no gravado 'ImpNeto' : importe_total, 'ImpOpEx' : 0, 'ImpIVA' : 0, 'ImpTrib' : 0, //Importe total de tributos 'MonId' : 'PES', //Tipo de moneda usada en la factura ('PES' = pesos argentinos) 'MonCotiz' : 1, // Cotización de la moneda usada (1 para pesos argentinos) 'CondicionIVAReceptorId' : condicion_iva_receptor, 'Opcionales' : [ // (Opcional) Alícuotas asociadas al comprobante\ {\ 'Id' : 2101, // ID del campo opcion opcional (2101 = CBU)\ 'Valor' : CBU\ },\ {\ 'Id': 27, // ID del campo opcion opcional (27 = Transferencia)\ 'Valor': transferencia\ }\ ], }; /** * Creamos la Factura **/ const res = await afip.ElectronicBilling.createVoucher(data); /** * Mostramos por pantalla los datos de la nueva Factura **/ console.log({ 'cae' : res.CAE, //CAE asignado a la Factura 'vencimiento' : res.CAEFchVto //Fecha de vencimiento del CAE }); })() **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** [AnteriorFactura de Crédito electrónica Bchevron-left](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/factura-de-credito-electronica-b) [SiguienteNota de Crédito electrónica Achevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/nota-de-credito-electronica-a) Última actualización hace 8 meses Copiar /** * Numero del punto de venta **/ $punto_de_venta = 1; /** * Tipo de factura **/ $tipo_de_factura = 211; // 211 = Factura de Crédito electrónica MiPyMEs (FCE) C /** * Número de la ultima Factura de Crédito electrónica MiPyMEs (FCE) C **/ $last_voucher = $afip->ElectronicBilling->GetLastVoucher($punto_de_venta, $tipo_de_factura); /** * Concepto de la factura * * Opciones: * * 1 = Productos * 2 = Servicios * 3 = Productos y Servicios **/ $concepto = 1; /** * Tipo de documento del comprador * * Opciones: * * 80 = CUIT * 86 = CUIL * 96 = DNI * 99 = Consumidor Final **/ $tipo_de_documento = 80; /** * Numero de documento del comprador (0 para consumidor final) **/ $numero_de_documento = 30679928879; /** * Numero de factura **/ $numero_de_factura = $last_voucher+1; /** * Numero de CBU del cliente * Es requerido para realizar una factura de crédito electrónica **/ $CBU = '1234567890123456789012'; /** * Tipo de Transferencia * Es requerido para realizar una factura de crédito electrónica * SCA = 'TRANSFERENCIA AL SISTEMA DE CIRCULACION ABIERTA' * ADC = 'AGENTE DE DEPOSITO COLECTIVO' **/ $transferencia = 'ADC'; /** * Fecha de la factura en formato aaaa-mm-dd (hasta 10 dias antes y 10 dias despues) **/ $fecha = date('Y-m-d'); /** * Fecha de vencimiento del pago en formato aaaa-mm-dd **/ $fecha_vencimiento_pago = date('Y-m-d'); /** * Importe de la Factura **/ $importe_total = 100000; /** * Condición frente al IVA del receptor * * Opciones: * * 1 = IVA Responsable Inscripto * 4 = IVA Sujeto Exento * 5 = Consumidor Final * 6 = Responsable Monotributo * 7 = Sujeto No Categorizado * 8 = Proveedor del Exterior * 9 = Cliente del Exterior * 10 = IVA Liberado – Ley N° 19.640 * 13 = Monotributista Social * 15 = IVA No Alcanzado * 16 = Monotributo Trabajador Independiente Promovido **/ $condicion_iva_receptor = 6; /** * Los siguientes campos solo son obligatorios para los conceptos 2 y 3 **/ if ($concepto === 2 || $concepto === 3) { /** * Fecha de inicio de servicio en formato aaaammdd **/ $fecha_servicio_desde = intval(date('Ymd')); /** * Fecha de fin de servicio en formato aaaammdd **/ $fecha_servicio_hasta = intval(date('Ymd')); } else { $fecha_servicio_desde = null; $fecha_servicio_hasta = null; } $data = array( 'CantReg' => 1, // Cantidad de facturas a registrar 'PtoVta' => $punto_de_venta, 'CbteTipo' => $tipo_de_factura, 'Concepto' => $concepto, 'DocTipo' => $tipo_de_documento, 'DocNro' => $numero_de_documento, 'CbteDesde' => $numero_de_factura, 'CbteHasta' => $numero_de_factura, 'CbteFch' => intval(str_replace('-', '', $fecha)), 'FchServDesde' => $fecha_servicio_desde, 'FchServHasta' => $fecha_servicio_hasta, 'FchVtoPago' => intval(str_replace('-', '', $fecha_vencimiento_pago)), 'ImpTotal' => $importe_total, 'ImpTotConc'=> 0, // Importe neto no gravado 'ImpNeto' => $importe_total, // Importe neto 'ImpOpEx' => 0, // Importe exento al IVA 'ImpIVA' => 0, // Importe de IVA 'ImpTrib' => 0, //Importe total de tributos 'MonId' => 'PES', //Tipo de moneda usada en la factura ('PES' = pesos argentinos) 'MonCotiz' => 1, // Cotización de la moneda usada (1 para pesos argentinos) 'CondicionIVAReceptorId' => $condicion_iva_receptor, 'Opcionales' => array( // (Opcional) Alícuotas asociadas al comprobante array( 'Id' => 2101, // ID del campo opcion opcional (2101 = CBU) 'Valor' => $CBU ), array( 'Id' => 27, // ID del campo opcion opcional (27 = Transferencia) 'Valor' => $transferencia ) ), ); /** * Creamos la Factura **/ $res = $afip->ElectronicBilling->CreateVoucher($data); /** * Mostramos por pantalla los datos de la nueva Factura **/ var_dump(array( 'cae' => $res['CAE'], //CAE asignado a la Factura 'vencimiento' => $res['CAEFchVto'] //Fecha de vencimiento del CAE )); Copiar require "date" # Numero del punto de venta punto_de_venta = 1 # Tipo de factura tipo_de_factura = 211 # 211 = Factura de Crédito electrónica MiPyMEs (FCE) C # Número de la ultima Factura de Crédito electrónica MiPyMEs (FCE) C last_voucher = afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_factura) # Concepto de la factura # # Opciones: # # 1 = Productos # 2 = Servicios # 3 = Productos y Servicios concepto = 1 # Tipo de documento del comprador # # Opciones: # # 80 = CUIT # 86 = CUIL # 96 = DNI # 99 = Consumidor Final tipo_de_documento = 80 # Numero de documento del comprador (0 para consumidor final) numero_de_documento = 30679928879 # Numero de factura numero_de_factura = last_voucher+1 # Numero de CBU del cliente # Es requerido para realizar una factura de crédito electrónica CBU = '1234567890123456789012' # Tipo de Transferencia # Es requerido para realizar una factura de crédito electrónica # SCA = 'TRANSFERENCIA AL SISTEMA DE CIRCULACION ABIERTA' # ADC = 'AGENTE DE DEPOSITO COLECTIVO' transferencia = 'ADC' # Fecha de la factura en formato aaaammdd (hasta 10 dias antes y 10 dias despues) fecha = Time.now.strftime("%Y%m%d").to_i # Fecha de vencimiento del pago en formato aaaa-mm-dd fecha_vencimiento_pago = Time.now.strftime("%Y%m%d").to_i # Importe de la Factura importe_total = 100000 # Condición frente al IVA del receptor # # Opciones: # # 1 = IVA Responsable Inscripto # 4 = IVA Sujeto Exento # 5 = Consumidor Final # 6 = Responsable Monotributo # 7 = Sujeto No Categorizado # 8 = Proveedor del Exterior # 9 = Cliente del Exterior # 10 = IVA Liberado – Ley N° 19.640 # 13 = Monotributista Social # 15 = IVA No Alcanzado # 16 = Monotributo Trabajador Independiente Promovido condicion_iva_receptor = 6 # Los siguientes campos solo son obligatorios para los conceptos 2 y 3 if concepto == 2 || concepto == 3 # Fecha de inicio de servicio en formato aaaammdd fecha_servicio_desde = 20191213 # Fecha de fin de servicio en formato aaaammdd fecha_servicio_hasta = 20191213 else fecha_servicio_desde = nil fecha_servicio_hasta = nil end data = { "CantReg": 1, # Cantidad de facturas a registrar "PtoVta": punto_de_venta, "CbteTipo": tipo_de_factura, "Concepto": concepto, "DocTipo": tipo_de_documento, "DocNro": numero_de_documento, "CbteDesde": numero_de_factura, "CbteHasta": numero_de_factura, "CbteFch": fecha, "FchServDesde": fecha_servicio_desde, "FchServHasta": fecha_servicio_hasta, "FchVtoPago": fecha, "ImpTotal": importe_total, "ImpTotConc": 0, # Importe neto no gravado "ImpNeto": importe_total, "ImpOpEx": 0, "ImpIVA": 0, "ImpTrib": 0, #Importe total de tributos "MonId": "PES", #Tipo de moneda usada en la factura ("PES" = pesos argentinos) "MonCotiz": 1, # Cotización de la moneda usada (1 para pesos argentinos) "CondicionIVAReceptorId" : condicion_iva_receptor, "Opcionales": [ # (Opcional) Alícuotas asociadas al comprobante\ {\ "Id": 2101, # ID del campo opcion opcional (2101 = CBU)\ "Valor": CBU\ },\ {\ "Id": 27, # ID del campo opcion opcional (27 = Transferencia)\ "Valor": transferencia\ }\ ] } # Creamos la Factura res = afip.ElectronicBilling.createVoucher(data) puts { "cae" : res["CAE"], # CAE asignado a la Factura "vencimiento" : res["CAEFchVto"] # Fecha de vencimiento del CAE } Copiar from datetime import datetime # Numero del punto de venta punto_de_venta = 1 # Tipo de factura tipo_de_factura = 211 # 211 = Factura de Crédito electrónica MiPyMEs (FCE) C # Número de la ultima Factura de Crédito electrónica MiPyMEs (FCE) C last_voucher = afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_factura) # Concepto de la factura # # Opciones: # # 1 = Productos # 2 = Servicios # 3 = Productos y Servicios concepto = 1 # Tipo de documento del comprador # # Opciones: # # 80 = CUIT # 86 = CUIL # 96 = DNI # 99 = Consumidor Final tipo_de_documento = 80 # Numero de documento del comprador (0 para consumidor final) numero_de_documento = 30679928879 # Numero de factura numero_de_factura = last_voucher+1 # Numero de CBU del cliente # Es requerido para realizar una factura de crédito electrónica CBU = '1234567890123456789012' # Tipo de Transferencia # Es requerido para realizar una factura de crédito electrónica # SCA = 'TRANSFERENCIA AL SISTEMA DE CIRCULACION ABIERTA' # ADC = 'AGENTE DE DEPOSITO COLECTIVO' transferencia = 'ADC' # Fecha de la factura en formato aaaammdd (hasta 10 dias antes y 10 dias despues) fecha = int(datetime.today().strftime("%Y%m%d")) # Fecha de vencimiento del pago en formato aaaa-mm-dd fecha_vencimiento_pago = int(datetime.today().strftime("%Y%m%d")) # Importe de la Factura importe_total = 100000 # Condición frente al IVA del receptor # # Opciones: # # 1 = IVA Responsable Inscripto # 4 = IVA Sujeto Exento # 5 = Consumidor Final # 6 = Responsable Monotributo # 7 = Sujeto No Categorizado # 8 = Proveedor del Exterior # 9 = Cliente del Exterior # 10 = IVA Liberado – Ley N° 19.640 # 13 = Monotributista Social # 15 = IVA No Alcanzado # 16 = Monotributo Trabajador Independiente Promovido condicion_iva_receptor = 6 # Los siguientes campos solo son obligatorios para los conceptos 2 y 3 if concepto == 2 or concepto == 3: # Fecha de inicio de servicio en formato aaaammdd fecha_servicio_desde = 20191213 # Fecha de fin de servicio en formato aaaammdd fecha_servicio_hasta = 20191213 else: fecha_servicio_desde = None fecha_servicio_hasta = None data = { "CantReg": 1, # Cantidad de facturas a registrar "PtoVta": punto_de_venta, "CbteTipo": tipo_de_factura, "Concepto": concepto, "DocTipo": tipo_de_documento, "DocNro": numero_de_documento, "CbteDesde": numero_de_factura, "CbteHasta": numero_de_factura, "CbteFch": fecha, "FchServDesde": fecha_servicio_desde, "FchServHasta": fecha_servicio_hasta, "FchVtoPago": fecha, "ImpTotal": importe_total, "ImpTotConc": 0, # Importe neto no gravado "ImpNeto": importe_total, "ImpOpEx": 0, "ImpIVA": 0, "ImpTrib": 0, #Importe total de tributos "MonId": "PES", #Tipo de moneda usada en la factura ("PES" = pesos argentinos) "MonCotiz": 1, # Cotización de la moneda usada (1 para pesos argentinos) "CondicionIVAReceptorId" : condicion_iva_receptor, "Opcionales": [ # (Opcional) Alícuotas asociadas al comprobante\ {\ "Id": 2101, # ID del campo opcion opcional (2101 = CBU)\ "Valor": CBU\ },\ {\ "Id": 27, # ID del campo opcion opcional (27 = Transferencia)\ "Valor": transferencia\ }\ ] } # Creamos la Factura res = afip.ElectronicBilling.createVoucher(data) print({ "cae" : res["CAE"], # CAE asignado a la Factura "vencimiento" : res["CAEFchVto"] # Fecha de vencimiento del CAE }) Copiar { "environment": "dev", "method": "FECAESolicitar", "wsid": "wsfe", "params": { "Auth": { "Token": "{{token}}", "Sign": "{{sign}}", "Cuit": "20409378472" }, "FeCAEReq": { "FeCabReq": { "CantReg": 1, "PtoVta": 1, "CbteTipo": 211 }, "FeDetReq": { "FECAEDetRequest": { "Concepto": 1, "DocTipo": 80, "DocNro": 30679928879, "CbteDesde": 3, "CbteHasta": 3, "CbteFch": 20240314, "FchServDesde": null, "FchServHasta": null, "FchVtoPago": 20240314, "ImpTotal": 100000, "ImpTotConc": 0, "ImpNeto": 100000, "ImpOpEx": 0, "ImpIVA": 0, "ImpTrib": 0, "MonId": "PES", "MonCotiz": 1, "CondicionIVAReceptorId": 6, "Opcionales": { "Opcional": [\ {\ "Id": 2101,\ "Valor": "1234567890123456789012"\ },\ {\ "Id": 27,\ "Valor": "ADC"\ }\ ] } } } } } } --- # Factura de Crédito electrónica A | Afip SDK Node PHP Ruby Python API Copiar (async () => { /** * Numero del punto de venta **/ const punto_de_venta = 1; /** * Tipo de factura **/ const tipo_de_factura = 201; // 201 = Factura de Crédito electrónica MiPyMEs (FCE) A /** * Número de la ultima Factura de Crédito electrónica MiPyMEs (FCE) A **/ const last_voucher = await afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_factura); /** * Concepto de la factura * * Opciones: * * 1 = Productos * 2 = Servicios * 3 = Productos y Servicios **/ const concepto = 1; /** * Tipo de documento del comprador * * Opciones: * * 80 = CUIT * 86 = CUIL * 96 = DNI * 99 = Consumidor Final **/ const tipo_de_documento = 80; /** * Numero de documento del comprador (0 para consumidor final) **/ const numero_de_documento = 30679928879; /** * Numero de factura **/ const numero_de_factura = last_voucher+1; /** * Numero de CBU del cliente * Es requerido para realizar una factura de crédito electrónica **/ const CBU = '1234567890123456789012'; /** * Tipo de Transferencia * Es requerido para realizar una factura de crédito electrónica * SCA = 'TRANSFERENCIA AL SISTEMA DE CIRCULACION ABIERTA' * ADC = 'AGENTE DE DEPOSITO COLECTIVO' **/ const transferencia = 'ADC'; /** * Fecha de la factura en formato aaaa-mm-dd (hasta 10 dias antes y 10 dias despues) **/ const fecha = new Date(Date.now() - ((new Date()).getTimezoneOffset() * 60000)).toISOString().split('T')[0]; /** * Fecha de vencimiento del pago en formato aaaa-mm-dd **/ const fecha_vencimiento_pago = new Date(Date.now() - ((new Date()).getTimezoneOffset() * 60000)).toISOString().split('T')[0]; /** * Importe sujeto al IVA (sin icluir IVA) **/ const importe_gravado = 100000; /** * Importe exento al IVA **/ const importe_exento_iva = 0; /** * Importe de IVA **/ const importe_iva = 21000; /** * Condición frente al IVA del receptor * * 1 = IVA Responsable Inscripto * 4 = IVA Sujeto Exento * 5 = Consumidor Final * 6 = Responsable Monotributo * 7 = Sujeto No Categorizado * 8 = Proveedor del Exterior * 9 = Cliente del Exterior * 10 = IVA Liberado – Ley N° 19.640 * 13 = Monotributista Social * 15 = IVA No Alcanzado * 16 = Monotributo Trabajador Independiente Promovido **/ const condicion_iva_receptor = 1; /** * Los siguientes campos solo son obligatorios para los conceptos 2 y 3 **/ let fecha_servicio_desde = null, fecha_servicio_hasta = null; if (concepto === 2 || concepto === 3) { /** * Fecha de inicio de servicio en formato aaaammdd **/ const fecha_servicio_desde = 20191213; /** * Fecha de fin de servicio en formato aaaammdd **/ const fecha_servicio_hasta = 20191213; } const data = { 'CantReg' : 1, // Cantidad de facturas a registrar 'PtoVta' : punto_de_venta, 'CbteTipo' : tipo_de_factura, 'Concepto' : concepto, 'DocTipo' : tipo_de_documento, 'DocNro' : numero_de_documento, 'CbteDesde' : numero_de_factura, 'CbteHasta' : numero_de_factura, 'CbteFch' : parseInt(fecha.replace(/-/g, '')), 'FchServDesde' : fecha_servicio_desde, 'FchServHasta' : fecha_servicio_hasta, 'FchVtoPago' : parseInt(fecha_vencimiento_pago.replace(/-/g, '')), 'ImpTotal' : importe_gravado + importe_iva + importe_exento_iva, 'ImpTotConc': 0, // Importe neto no gravado 'ImpNeto' : importe_gravado, 'ImpOpEx' : importe_exento_iva, 'ImpIVA' : importe_iva, 'ImpTrib' : 0, //Importe total de tributos 'MonId' : 'PES', //Tipo de moneda usada en la factura ('PES' = pesos argentinos) 'MonCotiz' : 1, // Cotización de la moneda usada (1 para pesos argentinos) 'CondicionIVAReceptorId' : condicion_iva_receptor, 'Iva' : [ // Alícuotas asociadas a la factura\ {\ 'Id' : 5, // Id del tipo de IVA (5 = 21%)\ 'BaseImp' : importe_gravado,\ 'Importe' : importe_iva \ }\ ], 'Opcionales' : [ // (Opcional) Alícuotas asociadas al comprobante\ {\ 'Id' : 2101, // ID del campo opcion opcional (2101 = CBU)\ 'Valor' : CBU\ },\ {\ 'Id': 27, // ID del campo opcion opcional (27 = Transferencia)\ 'Valor': transferencia\ }\ ], }; /** * Creamos la Factura **/ const res = await afip.ElectronicBilling.createVoucher(data); /** * Mostramos por pantalla los datos de la nueva Factura **/ console.log({ 'cae' : res.CAE, //CAE asignado a la Factura 'vencimiento' : res.CAEFchVto //Fecha de vencimiento del CAE }); })() **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** [AnteriorNota de Débito Cchevron-left](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/nota-de-debito-c) [SiguienteFactura de Crédito electrónica Bchevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/factura-de-credito-electronica-b) Última actualización hace 8 meses Copiar /** * Numero del punto de venta **/ $punto_de_venta = 1; /** * Tipo de factura **/ $tipo_de_factura = 201; // 201 = Factura de Crédito electrónica MiPyMEs (FCE) A /** * Número de la ultima Factura de Crédito electrónica MiPyMEs (FCE) A **/ $last_voucher = $afip->ElectronicBilling->GetLastVoucher($punto_de_venta, $tipo_de_factura); /** * Concepto de la factura * * Opciones: * * 1 = Productos * 2 = Servicios * 3 = Productos y Servicios **/ $concepto = 1; /** * Tipo de documento del comprador * * Opciones: * * 80 = CUIT * 86 = CUIL * 96 = DNI * 99 = Consumidor Final **/ $tipo_de_documento = 80; /** * Numero de documento del comprador (0 para consumidor final) **/ $numero_de_documento = 30679928879; /** * Numero de factura **/ $numero_de_factura = $last_voucher+1; /** * Numero de CBU del cliente * Es requerido para realizar una factura de crédito electrónica **/ $CBU = '1234567890123456789012'; /** * Tipo de Transferencia * Es requerido para realizar una factura de crédito electrónica * SCA = 'TRANSFERENCIA AL SISTEMA DE CIRCULACION ABIERTA' * ADC = 'AGENTE DE DEPOSITO COLECTIVO' **/ $transferencia = 'ADC'; /** * Fecha de la factura en formato aaaa-mm-dd (hasta 10 dias antes y 10 dias despues) **/ $fecha = date('Y-m-d'); /** * Fecha de vencimiento del pago en formato aaaa-mm-dd **/ $fecha_vencimiento_pago = date('Y-m-d'); /** * Importe sujeto al IVA (sin icluir IVA) **/ $importe_gravado = 100000; /** * Importe exento al IVA **/ $importe_exento_iva = 0; /** * Importe de IVA **/ $importe_iva = 21000; /** * Condición frente al IVA del receptor * * Opciones: * * 1 = IVA Responsable Inscripto * 4 = IVA Sujeto Exento * 5 = Consumidor Final * 6 = Responsable Monotributo * 7 = Sujeto No Categorizado * 8 = Proveedor del Exterior * 9 = Cliente del Exterior * 10 = IVA Liberado – Ley N° 19.640 * 13 = Monotributista Social * 15 = IVA No Alcanzado * 16 = Monotributo Trabajador Independiente Promovido **/ $condicion_iva_receptor = 1; /** * Los siguientes campos solo son obligatorios para los conceptos 2 y 3 **/ if ($concepto === 2 || $concepto === 3) { /** * Fecha de inicio de servicio en formato aaaammdd **/ $fecha_servicio_desde = intval(date('Ymd')); /** * Fecha de fin de servicio en formato aaaammdd **/ $fecha_servicio_hasta = intval(date('Ymd')); } else { $fecha_servicio_desde = null; $fecha_servicio_hasta = null; } $data = array( 'CantReg' => 1, // Cantidad de facturas a registrar 'PtoVta' => $punto_de_venta, 'CbteTipo' => $tipo_de_factura, 'Concepto' => $concepto, 'DocTipo' => $tipo_de_documento, 'DocNro' => $numero_de_documento, 'CbteDesde' => $numero_de_factura, 'CbteHasta' => $numero_de_factura, 'CbteFch' => intval(str_replace('-', '', $fecha)), 'FchServDesde' => $fecha_servicio_desde, 'FchServHasta' => $fecha_servicio_hasta, 'FchVtoPago' => intval(str_replace('-', '', $fecha_vencimiento_pago)), 'ImpTotal' => $importe_gravado + $importe_iva + $importe_exento_iva, 'ImpTotConc'=> 0, // Importe neto no gravado 'ImpNeto' => $importe_gravado, 'ImpOpEx' => $importe_exento_iva, 'ImpIVA' => $importe_iva, 'ImpTrib' => 0, //Importe total de tributos 'MonId' => 'PES', //Tipo de moneda usada en la factura ('PES' = pesos argentinos) 'MonCotiz' => 1, // Cotización de la moneda usada (1 para pesos argentinos) 'CondicionIVAReceptorId' => $condicion_iva_receptor, 'Iva' => array(// Alícuotas asociadas al factura array( 'Id' => 5, // Id del tipo de IVA (5 = 21%) 'BaseImp' => $importe_gravado, 'Importe' => $importe_iva ) ), 'Opcionales' => array( // (Opcional) Alícuotas asociadas al comprobante array( 'Id' => 2101, // ID del campo opcion opcional (2101 = CBU) 'Valor' => $CBU ), array( 'Id' => 27, // ID del campo opcion opcional (27 = Transferencia) 'Valor' => $transferencia ) ), ); /** * Creamos la Factura **/ $res = $afip->ElectronicBilling->CreateVoucher($data); /** * Mostramos por pantalla los datos de la nueva Factura **/ var_dump(array( 'cae' => $res['CAE'], //CAE asignado a la Factura 'vencimiento' => $res['CAEFchVto'] //Fecha de vencimiento del CAE )); Copiar require "date" # Numero del punto de venta punto_de_venta = 1 # Tipo de factura tipo_de_factura = 201 # 201 = Factura de Crédito electrónica MiPyMEs (FCE) A # Número de la ultima Factura de Crédito electrónica MiPyMEs (FCE) A last_voucher = afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_factura) # Concepto de la factura # # Opciones: # # 1 = Productos # 2 = Servicios # 3 = Productos y Servicios concepto = 1 # Tipo de documento del comprador # # Opciones: # # 80 = CUIT # 86 = CUIL # 96 = DNI # 99 = Consumidor Final tipo_de_documento = 80 # Numero de documento del comprador (0 para consumidor final) numero_de_documento = 30679928879 # Numero de factura numero_de_factura = last_voucher+1 # Numero de CBU del cliente # Es requerido para realizar una factura de crédito electrónica CBU = '1234567890123456789012' # Tipo de Transferencia # Es requerido para realizar una factura de crédito electrónica # SCA = 'TRANSFERENCIA AL SISTEMA DE CIRCULACION ABIERTA' # ADC = 'AGENTE DE DEPOSITO COLECTIVO' transferencia = 'ADC' # Fecha de la factura en formato aaaammdd (hasta 10 dias antes y 10 dias despues) fecha = Time.now.strftime("%Y%m%d").to_i # Fecha de vencimiento del pago en formato aaaa-mm-dd fecha_vencimiento_pago = Time.now.strftime("%Y%m%d").to_i # Importe sujeto al IVA (sin icluir IVA) importe_gravado = 100000 # Importe exento al IVA importe_exento_iva = 0 # Importe de IVA importe_iva = 21000 # Condición frente al IVA del receptor # # Opciones: # # 1 = IVA Responsable Inscripto # 4 = IVA Sujeto Exento # 5 = Consumidor Final # 6 = Responsable Monotributo # 7 = Sujeto No Categorizado # 8 = Proveedor del Exterior # 9 = Cliente del Exterior # 10 = IVA Liberado – Ley N° 19.640 # 13 = Monotributista Social # 15 = IVA No Alcanzado # 16 = Monotributo Trabajador Independiente Promovido condicion_iva_receptor = 1 # Los siguientes campos solo son obligatorios para los conceptos 2 y 3 if concepto == 2 || concepto == 3 # Fecha de inicio de servicio en formato aaaammdd fecha_servicio_desde = 20191213 # Fecha de fin de servicio en formato aaaammdd fecha_servicio_hasta = 20191213 else fecha_servicio_desde = nil fecha_servicio_hasta = nil end data = { "CantReg": 1, # Cantidad de facturas a registrar "PtoVta": punto_de_venta, "CbteTipo": tipo_de_factura, "Concepto": concepto, "DocTipo": tipo_de_documento, "DocNro": numero_de_documento, "CbteDesde": numero_de_factura, "CbteHasta": numero_de_factura, "CbteFch": fecha, "FchServDesde": fecha_servicio_desde, "FchServHasta": fecha_servicio_hasta, "FchVtoPago": fecha, "ImpTotal": importe_gravado + importe_iva + importe_exento_iva, "ImpTotConc": 0, # Importe neto no gravado "ImpNeto": importe_gravado, "ImpOpEx": importe_exento_iva, "ImpIVA": importe_iva, "ImpTrib": 0, #Importe total de tributos "MonId": "PES", #Tipo de moneda usada en la factura ("PES" = pesos argentinos) "MonCotiz": 1, # Cotización de la moneda usada (1 para pesos argentinos) "CondicionIVAReceptorId" : condicion_iva_receptor, "Iva": [ # Alícuotas asociadas a la factura\ {\ "Id": 5, # Id del tipo de IVA (5 = 21%)\ "BaseImp": importe_gravado,\ "Importe": importe_iva \ }\ ], "Opcionales": [ # (Opcional) Alícuotas asociadas al comprobante\ {\ "Id": 2101, # ID del campo opcion opcional (2101 = CBU)\ "Valor": CBU\ },\ {\ "Id": 27, # ID del campo opcion opcional (27 = Transferencia)\ "Valor": transferencia\ }\ ] } # Creamos la Factura res = afip.ElectronicBilling.createVoucher(data) puts { "cae" : res["CAE"], # CAE asignado a la Factura "vencimiento" : res["CAEFchVto"] # Fecha de vencimiento del CAE } Copiar from datetime import datetime # Numero del punto de venta punto_de_venta = 1 # Tipo de factura tipo_de_factura = 201 # 201 = Factura de Crédito electrónica MiPyMEs (FCE) A # Número de la ultima Factura de Crédito electrónica MiPyMEs (FCE) A last_voucher = afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_factura) # Concepto de la factura # # Opciones: # # 1 = Productos # 2 = Servicios # 3 = Productos y Servicios concepto = 1 # Tipo de documento del comprador # # Opciones: # # 80 = CUIT # 86 = CUIL # 96 = DNI # 99 = Consumidor Final tipo_de_documento = 80 # Numero de documento del comprador (0 para consumidor final) numero_de_documento = 30679928879 # Numero de factura numero_de_factura = last_voucher+1 # Numero de CBU del cliente # Es requerido para realizar una factura de crédito electrónica CBU = '1234567890123456789012' # Tipo de Transferencia # Es requerido para realizar una factura de crédito electrónica # SCA = 'TRANSFERENCIA AL SISTEMA DE CIRCULACION ABIERTA' # ADC = 'AGENTE DE DEPOSITO COLECTIVO' transferencia = 'ADC' # Fecha de la factura en formato aaaammdd (hasta 10 dias antes y 10 dias despues) fecha = int(datetime.today().strftime("%Y%m%d")) # Fecha de vencimiento del pago en formato aaaa-mm-dd fecha_vencimiento_pago = int(datetime.today().strftime("%Y%m%d")) # Importe sujeto al IVA (sin icluir IVA) importe_gravado = 100000 # Importe exento al IVA importe_exento_iva = 0 # Importe de IVA importe_iva = 21000 # Condición frente al IVA del receptor # # Opciones: # # 1 = IVA Responsable Inscripto # 4 = IVA Sujeto Exento # 5 = Consumidor Final # 6 = Responsable Monotributo # 7 = Sujeto No Categorizado # 8 = Proveedor del Exterior # 9 = Cliente del Exterior # 10 = IVA Liberado – Ley N° 19.640 # 13 = Monotributista Social # 15 = IVA No Alcanzado # 16 = Monotributo Trabajador Independiente Promovido condicion_iva_receptor = 1 # Los siguientes campos solo son obligatorios para los conceptos 2 y 3 if concepto == 2 or concepto == 3: # Fecha de inicio de servicio en formato aaaammdd fecha_servicio_desde = 20191213 # Fecha de fin de servicio en formato aaaammdd fecha_servicio_hasta = 20191213 else: fecha_servicio_desde = None fecha_servicio_hasta = None data = { "CantReg": 1, # Cantidad de facturas a registrar "PtoVta": punto_de_venta, "CbteTipo": tipo_de_factura, "Concepto": concepto, "DocTipo": tipo_de_documento, "DocNro": numero_de_documento, "CbteDesde": numero_de_factura, "CbteHasta": numero_de_factura, "CbteFch": fecha, "FchServDesde": fecha_servicio_desde, "FchServHasta": fecha_servicio_hasta, "FchVtoPago": fecha, "ImpTotal": importe_gravado + importe_iva + importe_exento_iva, "ImpTotConc": 0, # Importe neto no gravado "ImpNeto": importe_gravado, "ImpOpEx": importe_exento_iva, "ImpIVA": importe_iva, "ImpTrib": 0, #Importe total de tributos "MonId": "PES", #Tipo de moneda usada en la factura ("PES" = pesos argentinos) "MonCotiz": 1, # Cotización de la moneda usada (1 para pesos argentinos) "CondicionIVAReceptorId" : condicion_iva_receptor, "Iva": [ # Alícuotas asociadas a la factura\ {\ "Id": 5, # Id del tipo de IVA (5 = 21%)\ "BaseImp": importe_gravado,\ "Importe": importe_iva \ }\ ], "Opcionales": [ # (Opcional) Alícuotas asociadas al comprobante\ {\ "Id": 2101, # ID del campo opcion opcional (2101 = CBU)\ "Valor": CBU\ },\ {\ "Id": 27, # ID del campo opcion opcional (27 = Transferencia)\ "Valor": transferencia\ }\ ] } # Creamos la Factura res = afip.ElectronicBilling.createVoucher(data) print({ "cae" : res["CAE"], # CAE asignado a la Factura "vencimiento" : res["CAEFchVto"] # Fecha de vencimiento del CAE }) Copiar { "environment": "dev", "method": "FECAESolicitar", "wsid": "wsfe", "params": { "Auth": { "Token": "{{token}}", "Sign": "{{sign}}", "Cuit": "20409378472" }, "FeCAEReq": { "FeCabReq": { "CantReg": 1, "PtoVta": 1, "CbteTipo": 201 }, "FeDetReq": { "FECAEDetRequest": { "Concepto": 1, "DocTipo": 80, "DocNro": 30679928879, "CbteDesde": 4, "CbteHasta": 4, "CbteFch": 20240314, "FchServDesde": null, "FchServHasta": null, "FchVtoPago": 20240314, "ImpTotal": 121000, "ImpTotConc": 0, "ImpNeto": 100000, "ImpOpEx": 0, "ImpIVA": 21000, "ImpTrib": 0, "MonId": "PES", "MonCotiz": 1, "CondicionIVAReceptorId": 1, "Iva": { "AlicIva": [\ {\ "Id": 5,\ "BaseImp": 100000,\ "Importe": 21000\ }\ ] }, "Opcionales": { "Opcional": [\ {\ "Id": 2101,\ "Valor": "1234567890123456789012"\ },\ {\ "Id": 27,\ "Valor": "ADC"\ }\ ] } } } } } } --- # Factura de Crédito electrónica B | Afip SDK Node PHP Ruby Python API Copiar (async () => { /** * Numero del punto de venta **/ const punto_de_venta = 1; /** * Tipo de factura **/ const tipo_de_factura = 206; // 206 = Factura de Crédito electrónica MiPyMEs (FCE) B /** * Número de la ultima Factura de Crédito electrónica MiPyMEs (FCE) B **/ const last_voucher = await afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_factura); /** * Concepto de la factura * * Opciones: * * 1 = Productos * 2 = Servicios * 3 = Productos y Servicios **/ const concepto = 1; /** * Tipo de documento del comprador * * Opciones: * * 80 = CUIT * 86 = CUIL * 96 = DNI * 99 = Consumidor Final **/ const tipo_de_documento = 80; /** * Numero de documento del comprador (0 para consumidor final) **/ const numero_de_documento = 30679928879; /** * Numero de factura **/ const numero_de_factura = last_voucher+1; /** * Numero de CBU del cliente * Es requerido para realizar una factura de crédito electrónica **/ const CBU = '1234567890123456789012'; /** * Tipo de Transferencia * Es requerido para realizar una factura de crédito electrónica * SCA = 'TRANSFERENCIA AL SISTEMA DE CIRCULACION ABIERTA' * ADC = 'AGENTE DE DEPOSITO COLECTIVO' **/ const transferencia = 'ADC'; /** * Fecha de la factura en formato aaaa-mm-dd (hasta 10 dias antes y 10 dias despues) **/ const fecha = new Date(Date.now() - ((new Date()).getTimezoneOffset() * 60000)).toISOString().split('T')[0]; /** * Fecha de vencimiento del pago en formato aaaa-mm-dd **/ const fecha_vencimiento_pago = new Date(Date.now() - ((new Date()).getTimezoneOffset() * 60000)).toISOString().split('T')[0]; /** * Importe sujeto al IVA (sin icluir IVA) **/ const importe_gravado = 100000; /** * Importe exento al IVA **/ const importe_exento_iva = 0; /** * Importe de IVA **/ const importe_iva = 21000; /** * Condición frente al IVA del receptor * * 1 = IVA Responsable Inscripto * 4 = IVA Sujeto Exento * 5 = Consumidor Final * 6 = Responsable Monotributo * 7 = Sujeto No Categorizado * 8 = Proveedor del Exterior * 9 = Cliente del Exterior * 10 = IVA Liberado – Ley N° 19.640 * 13 = Monotributista Social * 15 = IVA No Alcanzado * 16 = Monotributo Trabajador Independiente Promovido **/ const condicion_iva_receptor = 5; /** * Los siguientes campos solo son obligatorios para los conceptos 2 y 3 **/ let fecha_servicio_desde = null, fecha_servicio_hasta = null; if (concepto === 2 || concepto === 3) { /** * Fecha de inicio de servicio en formato aaaammdd **/ const fecha_servicio_desde = 20191213; /** * Fecha de fin de servicio en formato aaaammdd **/ const fecha_servicio_hasta = 20191213; } const data = { 'CantReg' : 1, // Cantidad de facturas a registrar 'PtoVta' : punto_de_venta, 'CbteTipo' : tipo_de_factura, 'Concepto' : concepto, 'DocTipo' : tipo_de_documento, 'DocNro' : numero_de_documento, 'CbteDesde' : numero_de_factura, 'CbteHasta' : numero_de_factura, 'CbteFch' : parseInt(fecha.replace(/-/g, '')), 'FchServDesde' : fecha_servicio_desde, 'FchServHasta' : fecha_servicio_hasta, 'FchVtoPago' : parseInt(fecha_vencimiento_pago.replace(/-/g, '')), 'ImpTotal' : importe_gravado + importe_iva + importe_exento_iva, 'ImpTotConc': 0, // Importe neto no gravado 'ImpNeto' : importe_gravado, 'ImpOpEx' : importe_exento_iva, 'ImpIVA' : importe_iva, 'ImpTrib' : 0, //Importe total de tributos 'MonId' : 'PES', //Tipo de moneda usada en la factura ('PES' = pesos argentinos) 'MonCotiz' : 1, // Cotización de la moneda usada (1 para pesos argentinos) 'CondicionIVAReceptorId' : condicion_iva_receptor, 'Iva' : [ // Alícuotas asociadas a la factura\ {\ 'Id' : 5, // Id del tipo de IVA (5 = 21%)\ 'BaseImp' : importe_gravado,\ 'Importe' : importe_iva \ }\ ], 'Opcionales' : [ // (Opcional) Alícuotas asociadas al comprobante\ {\ 'Id' : 2101, // ID del campo opcion opcional (2101 = CBU)\ 'Valor' : CBU\ },\ {\ 'Id': 27, // ID del campo opcion opcional (27 = Transferencia)\ 'Valor': transferencia\ }\ ], }; /** * Creamos la Factura **/ const res = await afip.ElectronicBilling.createVoucher(data); /** * Mostramos por pantalla los datos de la nueva Factura **/ console.log({ 'cae' : res.CAE, //CAE asignado a la Factura 'vencimiento' : res.CAEFchVto //Fecha de vencimiento del CAE }); })() **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** [AnteriorFactura de Crédito electrónica Achevron-left](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/factura-de-credito-electronica-a) [SiguienteFactura de Crédito electrónica Cchevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/factura-de-credito-electronica-c) Última actualización hace 8 meses Copiar /** * Numero del punto de venta **/ $punto_de_venta = 1; /** * Tipo de factura **/ $tipo_de_factura = 206; // 206 = Factura de Crédito electrónica MiPyMEs (FCE) B /** * Número de la ultima Factura de Crédito electrónica MiPyMEs (FCE) B **/ $last_voucher = $afip->ElectronicBilling->GetLastVoucher($punto_de_venta, $tipo_de_factura); /** * Concepto de la factura * * Opciones: * * 1 = Productos * 2 = Servicios * 3 = Productos y Servicios **/ $concepto = 1; /** * Tipo de documento del comprador * * Opciones: * * 80 = CUIT * 86 = CUIL * 96 = DNI * 99 = Consumidor Final **/ $tipo_de_documento = 80; /** * Numero de documento del comprador (0 para consumidor final) **/ $numero_de_documento = 30679928879; /** * Numero de factura **/ $numero_de_factura = $last_voucher+1; /** * Numero de CBU del cliente * Es requerido para realizar una factura de crédito electrónica **/ $CBU = '1234567890123456789012'; /** * Tipo de Transferencia * Es requerido para realizar una factura de crédito electrónica * SCA = 'TRANSFERENCIA AL SISTEMA DE CIRCULACION ABIERTA' * ADC = 'AGENTE DE DEPOSITO COLECTIVO' **/ $transferencia = 'ADC'; /** * Fecha de la factura en formato aaaa-mm-dd (hasta 10 dias antes y 10 dias despues) **/ $fecha = date('Y-m-d'); /** * Fecha de vencimiento del pago en formato aaaa-mm-dd **/ $fecha_vencimiento_pago = date('Y-m-d'); /** * Importe sujeto al IVA (sin icluir IVA) **/ $importe_gravado = 100000; /** * Importe exento al IVA **/ $importe_exento_iva = 0; /** * Importe de IVA **/ $importe_iva = 21000; /** * Condición frente al IVA del receptor * * Opciones: * * 1 = IVA Responsable Inscripto * 4 = IVA Sujeto Exento * 5 = Consumidor Final * 6 = Responsable Monotributo * 7 = Sujeto No Categorizado * 8 = Proveedor del Exterior * 9 = Cliente del Exterior * 10 = IVA Liberado – Ley N° 19.640 * 13 = Monotributista Social * 15 = IVA No Alcanzado * 16 = Monotributo Trabajador Independiente Promovido **/ $condicion_iva_receptor = 5; /** * Los siguientes campos solo son obligatorios para los conceptos 2 y 3 **/ if ($concepto === 2 || $concepto === 3) { /** * Fecha de inicio de servicio en formato aaaammdd **/ $fecha_servicio_desde = intval(date('Ymd')); /** * Fecha de fin de servicio en formato aaaammdd **/ $fecha_servicio_hasta = intval(date('Ymd')); } else { $fecha_servicio_desde = null; $fecha_servicio_hasta = null; } $data = array( 'CantReg' => 1, // Cantidad de facturas a registrar 'PtoVta' => $punto_de_venta, 'CbteTipo' => $tipo_de_factura, 'Concepto' => $concepto, 'DocTipo' => $tipo_de_documento, 'DocNro' => $numero_de_documento, 'CbteDesde' => $numero_de_factura, 'CbteHasta' => $numero_de_factura, 'CbteFch' => intval(str_replace('-', '', $fecha)), 'FchServDesde' => $fecha_servicio_desde, 'FchServHasta' => $fecha_servicio_hasta, 'FchVtoPago' => intval(str_replace('-', '', $fecha_vencimiento_pago)), 'ImpTotal' => $importe_gravado + $importe_iva + $importe_exento_iva, 'ImpTotConc'=> 0, // Importe neto no gravado 'ImpNeto' => $importe_gravado, 'ImpOpEx' => $importe_exento_iva, 'ImpIVA' => $importe_iva, 'ImpTrib' => 0, //Importe total de tributos 'MonId' => 'PES', //Tipo de moneda usada en la factura ('PES' = pesos argentinos) 'MonCotiz' => 1, // Cotización de la moneda usada (1 para pesos argentinos) 'CondicionIVAReceptorId' => $condicion_iva_receptor, 'Iva' => array(// Alícuotas asociadas al factura array( 'Id' => 5, // Id del tipo de IVA (5 = 21%) 'BaseImp' => $importe_gravado, 'Importe' => $importe_iva ) ), 'Opcionales' => array( // (Opcional) Alícuotas asociadas al comprobante array( 'Id' => 2101, // ID del campo opcion opcional (2101 = CBU) 'Valor' => $CBU ), array( 'Id' => 27, // ID del campo opcion opcional (27 = Transferencia) 'Valor' => $transferencia ) ), ); /** * Creamos la Factura **/ $res = $afip->ElectronicBilling->CreateVoucher($data); /** * Mostramos por pantalla los datos de la nueva Factura **/ var_dump(array( 'cae' => $res['CAE'], //CAE asignado a la Factura 'vencimiento' => $res['CAEFchVto'] //Fecha de vencimiento del CAE )); Copiar require "date" # Numero del punto de venta punto_de_venta = 1 # Tipo de factura tipo_de_factura = 206 # 206 = Factura de Crédito electrónica MiPyMEs (FCE) B # Número de la ultima Factura de Crédito electrónica MiPyMEs (FCE) B last_voucher = afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_factura) # Concepto de la factura # # Opciones: # # 1 = Productos # 2 = Servicios # 3 = Productos y Servicios concepto = 1 # Tipo de documento del comprador # # Opciones: # # 80 = CUIT # 86 = CUIL # 96 = DNI # 99 = Consumidor Final tipo_de_documento = 80 # Numero de documento del comprador (0 para consumidor final) numero_de_documento = 30679928879 # Numero de factura numero_de_factura = last_voucher+1 # Numero de CBU del cliente # Es requerido para realizar una factura de crédito electrónica CBU = '1234567890123456789012' # Tipo de Transferencia # Es requerido para realizar una factura de crédito electrónica # SCA = 'TRANSFERENCIA AL SISTEMA DE CIRCULACION ABIERTA' # ADC = 'AGENTE DE DEPOSITO COLECTIVO' transferencia = 'ADC' # Fecha de la factura en formato aaaammdd (hasta 10 dias antes y 10 dias despues) fecha = Time.now.strftime("%Y%m%d").to_i # Fecha de vencimiento del pago en formato aaaa-mm-dd fecha_vencimiento_pago = Time.now.strftime("%Y%m%d").to_i # Importe sujeto al IVA (sin icluir IVA) importe_gravado = 100000 # Importe exento al IVA importe_exento_iva = 0 # Importe de IVA importe_iva = 21000 # Condición frente al IVA del receptor # # Opciones: # # 1 = IVA Responsable Inscripto # 4 = IVA Sujeto Exento # 5 = Consumidor Final # 6 = Responsable Monotributo # 7 = Sujeto No Categorizado # 8 = Proveedor del Exterior # 9 = Cliente del Exterior # 10 = IVA Liberado – Ley N° 19.640 # 13 = Monotributista Social # 15 = IVA No Alcanzado # 16 = Monotributo Trabajador Independiente Promovido condicion_iva_receptor = 5 # Los siguientes campos solo son obligatorios para los conceptos 2 y 3 if concepto == 2 || concepto == 3 # Fecha de inicio de servicio en formato aaaammdd fecha_servicio_desde = 20191213 # Fecha de fin de servicio en formato aaaammdd fecha_servicio_hasta = 20191213 else fecha_servicio_desde = nil fecha_servicio_hasta = nil end data = { "CantReg": 1, # Cantidad de facturas a registrar "PtoVta": punto_de_venta, "CbteTipo": tipo_de_factura, "Concepto": concepto, "DocTipo": tipo_de_documento, "DocNro": numero_de_documento, "CbteDesde": numero_de_factura, "CbteHasta": numero_de_factura, "CbteFch": fecha, "FchServDesde": fecha_servicio_desde, "FchServHasta": fecha_servicio_hasta, "FchVtoPago": fecha, "ImpTotal": importe_gravado + importe_iva + importe_exento_iva, "ImpTotConc": 0, # Importe neto no gravado "ImpNeto": importe_gravado, "ImpOpEx": importe_exento_iva, "ImpIVA": importe_iva, "ImpTrib": 0, #Importe total de tributos "MonId": "PES", #Tipo de moneda usada en la factura ("PES" = pesos argentinos) "MonCotiz": 1, # Cotización de la moneda usada (1 para pesos argentinos) "CondicionIVAReceptorId" : condicion_iva_receptor, "Iva": [ # Alícuotas asociadas a la factura\ {\ "Id": 5, # Id del tipo de IVA (5 = 21%)\ "BaseImp": importe_gravado,\ "Importe": importe_iva \ }\ ], "Opcionales": [ # (Opcional) Alícuotas asociadas al comprobante\ {\ "Id": 2101, # ID del campo opcion opcional (2101 = CBU)\ "Valor": CBU\ },\ {\ "Id": 27, # ID del campo opcion opcional (27 = Transferencia)\ "Valor": transferencia\ }\ ] } # Creamos la Factura res = afip.ElectronicBilling.createVoucher(data) puts { "cae" : res["CAE"], # CAE asignado a la Factura "vencimiento" : res["CAEFchVto"] # Fecha de vencimiento del CAE } Copiar from datetime import datetime # Numero del punto de venta punto_de_venta = 1 # Tipo de factura tipo_de_factura = 206 # 206 = Factura de Crédito electrónica MiPyMEs (FCE) B # Número de la ultima Factura de Crédito electrónica MiPyMEs (FCE) B last_voucher = afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_factura) # Concepto de la factura # # Opciones: # # 1 = Productos # 2 = Servicios # 3 = Productos y Servicios concepto = 1 # Tipo de documento del comprador # # Opciones: # # 80 = CUIT # 86 = CUIL # 96 = DNI # 99 = Consumidor Final tipo_de_documento = 80 # Numero de documento del comprador (0 para consumidor final) numero_de_documento = 30679928879 # Numero de factura numero_de_factura = last_voucher+1 # Numero de CBU del cliente # Es requerido para realizar una factura de crédito electrónica CBU = '1234567890123456789012' # Tipo de Transferencia # Es requerido para realizar una factura de crédito electrónica # SCA = 'TRANSFERENCIA AL SISTEMA DE CIRCULACION ABIERTA' # ADC = 'AGENTE DE DEPOSITO COLECTIVO' transferencia = 'ADC' # Fecha de la factura en formato aaaammdd (hasta 10 dias antes y 10 dias despues) fecha = int(datetime.today().strftime("%Y%m%d")) # Fecha de vencimiento del pago en formato aaaa-mm-dd fecha_vencimiento_pago = int(datetime.today().strftime("%Y%m%d")) # Importe sujeto al IVA (sin icluir IVA) importe_gravado = 100000 # Importe exento al IVA importe_exento_iva = 0 # Importe de IVA importe_iva = 21000 # Condición frente al IVA del receptor # # Opciones: # # 1 = IVA Responsable Inscripto # 4 = IVA Sujeto Exento # 5 = Consumidor Final # 6 = Responsable Monotributo # 7 = Sujeto No Categorizado # 8 = Proveedor del Exterior # 9 = Cliente del Exterior # 10 = IVA Liberado – Ley N° 19.640 # 13 = Monotributista Social # 15 = IVA No Alcanzado # 16 = Monotributo Trabajador Independiente Promovido condicion_iva_receptor = 5 # Los siguientes campos solo son obligatorios para los conceptos 2 y 3 if concepto == 2 or concepto == 3: # Fecha de inicio de servicio en formato aaaammdd fecha_servicio_desde = 20191213 # Fecha de fin de servicio en formato aaaammdd fecha_servicio_hasta = 20191213 else: fecha_servicio_desde = None fecha_servicio_hasta = None data = { "CantReg": 1, # Cantidad de facturas a registrar "PtoVta": punto_de_venta, "CbteTipo": tipo_de_factura, "Concepto": concepto, "DocTipo": tipo_de_documento, "DocNro": numero_de_documento, "CbteDesde": numero_de_factura, "CbteHasta": numero_de_factura, "CbteFch": fecha, "FchServDesde": fecha_servicio_desde, "FchServHasta": fecha_servicio_hasta, "FchVtoPago": fecha, "ImpTotal": importe_gravado + importe_iva + importe_exento_iva, "ImpTotConc": 0, # Importe neto no gravado "ImpNeto": importe_gravado, "ImpOpEx": importe_exento_iva, "ImpIVA": importe_iva, "ImpTrib": 0, #Importe total de tributos "MonId": "PES", #Tipo de moneda usada en la factura ("PES" = pesos argentinos) "MonCotiz": 1, # Cotización de la moneda usada (1 para pesos argentinos) "CondicionIVAReceptorId" : condicion_iva_receptor, "Iva": [ # Alícuotas asociadas a la factura\ {\ "Id": 5, # Id del tipo de IVA (5 = 21%)\ "BaseImp": importe_gravado,\ "Importe": importe_iva \ }\ ], "Opcionales": [ # (Opcional) Alícuotas asociadas al comprobante\ {\ "Id": 2101, # ID del campo opcion opcional (2101 = CBU)\ "Valor": CBU\ },\ {\ "Id": 27, # ID del campo opcion opcional (27 = Transferencia)\ "Valor": transferencia\ }\ ] } # Creamos la Factura res = afip.ElectronicBilling.createVoucher(data) print({ "cae" : res["CAE"], # CAE asignado a la Factura "vencimiento" : res["CAEFchVto"] # Fecha de vencimiento del CAE }) Copiar { "environment": "dev", "method": "FECAESolicitar", "wsid": "wsfe", "params": { "Auth": { "Token": "{{token}}", "Sign": "{{sign}}", "Cuit": "20409378472" }, "FeCAEReq": { "FeCabReq": { "CantReg": 1, "PtoVta": 1, "CbteTipo": 206 }, "FeDetReq": { "FECAEDetRequest": { "Concepto": 1, "DocTipo": 80, "DocNro": 30679928879, "CbteDesde": 3, "CbteHasta": 3, "CbteFch": 20240314, "FchServDesde": null, "FchServHasta": null, "FchVtoPago": 20240314, "ImpTotal": 121000, "ImpTotConc": 0, "ImpNeto": 100000, "ImpOpEx": 0, "ImpIVA": 21000, "ImpTrib": 0, "MonId": "PES", "MonCotiz": 1, "CondicionIVAReceptorId": 5, "Iva": { "AlicIva": [\ {\ "Id": 5,\ "BaseImp": 100000,\ "Importe": 21000\ }\ ] }, "Opcionales": { "Opcional": [\ {\ "Id": 2101,\ "Valor": "1234567890123456789012"\ },\ {\ "Id": 27,\ "Valor": "ADC"\ }\ ] } } } } } } --- # Factura electrónica | Afip SDK ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica#requisitos-previos) Requisitos previos Para poder usar esta guía, primero necesitarás: * [Integrar Afip SDK en tu proyecto](https://docs.afipsdk.com/#integracion) * * * La especificación de este Web Service se encuentra disponible en [https://www.afip.gob.ar/ws/documentacion/manuales/manual-desarrollador-ARCA-COMPG-v4-0.pdfarrow-up-right](https://www.afip.gob.ar/ws/documentacion/manuales/manual-desarrollador-ARCA-COMPG-v4-0.pdf) chevron-rightIdentificador wsfe[hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica#identificador-wsfe) Producción ![Produccion](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-ea95f48cdc16545f5a35c7dadb77b7ea036430e4%252F1.png%3Falt%3Dmedia&width=184&dpr=3&quality=100&sign=356caa4b&sv=2) Desarrollo ![Desarrollo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2F4026677166-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FVEAVwm5cCW83gSe7NH8Z%252Fuploads%252Fgit-blob-0cc75754eedded94349372ecf0aaf278878e6536%252F1.png%3Falt%3Dmedia&width=300&dpr=3&quality=100&sign=2bb283fc&sv=2) circle-info Aquí hablaremos de comprobante indistintamente si es una factura, nota de crédito, etc. _Si es tu primera vez conectándote con la facturación electrónica de AFIP/ARCA, te recomiendo leer esta guía básica sobre su funcionamiento general:_ [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Conectar tu sistema con la facturación electrónica de ARCAafipsdk.comchevron-right](https://afipsdk.com/blog/conectar-tu-sistema-con-la-facturacion-electronica-de-afip/) * * * ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica#crear-pdf) Crear PDF [Crear PDFchevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/crear-pdf) ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica#obtener-numero-del-ultimo-comprobante-creado) **Obtener número del último comprobante creado** Node PHP Ruby Python API **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica#crear-y-asignar-cae-a-un-comprobante) **Crear y asignar CAE a un comprobante** Node PHP Ruby Python API Debemos utilizar el método `createVoucher` pasándole como parámetro un Objeto con los detalles del comprobante y si queremos tener la respuesta completa enviada por el WS debemos pasarle como segundo parámetro `true`, en caso de no enviarle el segundo parámetro nos devolverá como respuesta `{ CAE : CAE asignado el comprobante, CAEFchVto : Fecha de vencimiento del CAE (yyyy-mm-dd) }`. circle-info Este método acepta mas parámetros, podes encontrar todos los parámetros disponibles [En este ejemploarrow-up-right](https://github.com/AfipSDK/afip.js/blob/master/examples/createVoucher.js) Debemos utilizar el método `CreateVoucher` pasándole como parámetro un Array con los detalles del comprobante y si queremos tener la respuesta completa devuelta por el WS debemos pasarle como segundo parámetro TRUE, en caso de no enviarle el segundo parámetro nos devolverá como respuesta `array(CAE => CAE asignado el comprobante, CAEFchVto => Fecha de vencimiento del CAE (yyyy-mm-dd))`. circle-info Este método acepta mas parámetros, podes encontrar todos los parámetros disponibles [En este ejemploarrow-up-right](https://github.com/AfipSDK/afip.php/blob/master/examples/CreateVoucher.php) Debemos utilizar el método `createVoucher` pasándole como parámetro un Hash con los detalles del comprobante y si queremos tener la respuesta completa devuelta por el WS debemos pasarle como segundo parámetro true, en caso de no enviarle el segundo parámetro nos devolverá como respuesta `{ "CAE": CAE asignado el comprobante, "CAEFchVto" : Fecha de vencimiento del CAE (yyyy-mm-dd) }`. Debemos utilizar el método `createVoucher` pasándole como parámetro un Hash con los detalles del comprobante y si queremos tener la respuesta completa devuelta por el WS debemos pasarle como segundo parámetro true, en caso de no enviarle el segundo parámetro nos devolverá como respuesta `{ "CAE": CAE asignado el comprobante, "CAEFchVto" : Fecha de vencimiento del CAE (yyyy-mm-dd) }`. **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica#crear-y-asignar-cae-a-siguiente-comprobante) **Crear y asignar CAE a siguiente comprobante** Node PHP Ruby Python API Debemos utilizar el método `createNextVoucher` pasándole como parámetro un Objeto con los detalles del comprobante al igual que el método `createVoucher`, nos devolverá como respuesta `{ CAE : CAE asignado al comprobante, CAEFchVto : Fecha de vencimiento del CAE (yyyy-mm-dd), voucher_number : Número asignado al comprobante }`. Debemos utilizar el método `CreateNextVoucher` pasándole como parámetro un Array con los detalles del comprobante al igual que el método `CreateVoucher`, nos devolverá como respuesta `array(CAE => CAE asignado al comprobante, CAEFchVto => Fecha de vencimiento del CAE (yyyy-mm-dd), voucher_number => Número asignado al comprobante)`. Debemos utilizar el método `createNextVoucher` pasándole como parámetro un Hash con los detalles del comprobante al igual que el método `createVoucher`, nos devolverá como respuesta `{ "CAE" : CAE asignado al comprobante, "CAEFchVto" : Fecha de vencimiento del CAE (yyyy-mm-dd), "voucher_number" : Número asignado al comprobante }`. Debemos utilizar el método `createNextVoucher` pasándole como parámetro un Hash con los detalles del comprobante al igual que el método `createVoucher`, nos devolverá como respuesta `{ "CAE" : CAE asignado al comprobante, "CAEFchVto" : Fecha de vencimiento del CAE (yyyy-mm-dd), "voucher_number" : Número asignado al comprobante }`. Se debe llamar al endpoint [Obtener número del último comprobante creado](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica#obtener-numero-del-ultimo-comprobante-creado) , al numero de comprobante que nos devuelve sumarle `1`, y llamar al endpoint [Crear y asignar CAE a un comprobante](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica#crear-y-asignar-cae-a-un-comprobante) ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica#obtener-informacion-de-un-comprobante-ya-emitido) **Obtener información de un comprobante ya emitido** Con este método podemos obtener toda la información relacionada a un comprobante o simplemente saber si el comprobante existe. Node PHP Ruby Python API **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica#crear-caea) **Crear CAEA** Node PHP Ruby Python API **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica#obtener-informacion-de-caea-ya-emitido) **Obtener información de CAEA ya emitido** Node PHP Ruby Python API **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica#obtener-puntos-de-venta-disponibles) **Obtener puntos de venta disponibles** circle-exclamation Es normal recibir un error en testing ya que no existen puntos de venta para testing (siempre se usa `1`) Node PHP Ruby Python API **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica#obtener-tipos-de-comprobantes-disponibles) **Obtener tipos de comprobantes disponibles** Node PHP Ruby Python API **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica#obtener-tipos-de-conceptos-disponibles) **Obtener tipos de conceptos disponibles** Node PHP Ruby Python API **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica#obtener-tipos-de-documentos-disponibles) **Obtener tipos de documentos disponibles** Node PHP Ruby Python API **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica#obtener-tipos-de-alicuotas-disponibles) **Obtener tipos de alícuotas disponibles** Node PHP Ruby Python API **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica#obtener-tipos-de-monedas-disponibles) **Obtener tipos de monedas disponibles** Node PHP Ruby Python API **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica#obtener-cotizacion-de-moneda) Obtener cotización de moneda Node PHP Ruby Python API **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica#obtener-tipos-de-opciones-disponibles-para-el-comprobante) **Obtener tipos de opciones disponibles para el comprobante** Node PHP Ruby Python API **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica#obtener-tipos-de-tributos-disponibles) **Obtener tipos de tributos disponibles** Node PHP Ruby Python API **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica#obtener-tipos-de-condiciones-frente-al-iva-disponibles) **Obtener tipos de** condiciones frente al IVA **disponibles** Node PHP Ruby Python API **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica#transformar-formato-de-fecha-que-utiliza-afip) **Transformar formato de fecha que utiliza AFIP** De `yyyymmdd` a `yyyy-mm-dd` Node PHP Ruby Python API Si lo necesitas, a esto podes implementarlo con el lenguaje que utilices. ### [hashtag](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica#obtener-estado-del-servidor) **Obtener estado del servidor** circle-exclamation No te confíes mucho de este método, ARCA siempre devuelve que esta todo bien incluso cuando hay algo fallando. Node PHP Ruby Python API **Endpoint** `POST` `https://app.afipsdk.com/api/v1/afip/requests` **Ejemplo** [AnteriorWeb serviceschevron-left](https://docs.afipsdk.com/siguientes-pasos/web-services) [SiguienteCrear PDFchevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica/crear-pdf) Última actualización hace 8 meses * [Requisitos previos](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica#requisitos-previos) * [Crear PDF](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica#crear-pdf) * [Obtener número del último comprobante creado](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica#obtener-numero-del-ultimo-comprobante-creado) * [Crear y asignar CAE a un comprobante](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica#crear-y-asignar-cae-a-un-comprobante) * [Crear y asignar CAE a siguiente comprobante](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica#crear-y-asignar-cae-a-siguiente-comprobante) * [Obtener información de un comprobante ya emitido](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica#obtener-informacion-de-un-comprobante-ya-emitido) * [Crear CAEA](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica#crear-caea) * [Obtener información de CAEA ya emitido](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica#obtener-informacion-de-caea-ya-emitido) * [Obtener puntos de venta disponibles](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica#obtener-puntos-de-venta-disponibles) * [Obtener tipos de comprobantes disponibles](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica#obtener-tipos-de-comprobantes-disponibles) * [Obtener tipos de conceptos disponibles](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica#obtener-tipos-de-conceptos-disponibles) * [Obtener tipos de documentos disponibles](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica#obtener-tipos-de-documentos-disponibles) * [Obtener tipos de alícuotas disponibles](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica#obtener-tipos-de-alicuotas-disponibles) * [Obtener tipos de monedas disponibles](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica#obtener-tipos-de-monedas-disponibles) * [Obtener cotización de moneda](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica#obtener-cotizacion-de-moneda) * [Obtener tipos de opciones disponibles para el comprobante](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica#obtener-tipos-de-opciones-disponibles-para-el-comprobante) * [Obtener tipos de tributos disponibles](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica#obtener-tipos-de-tributos-disponibles) * [Obtener tipos de condiciones frente al IVA disponibles](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica#obtener-tipos-de-condiciones-frente-al-iva-disponibles) * [Transformar formato de fecha que utiliza AFIP](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica#transformar-formato-de-fecha-que-utiliza-afip) * [Obtener estado del servidor](https://docs.afipsdk.com/siguientes-pasos/web-services/factura-electronica#obtener-estado-del-servidor) Copiar // Numero de punto de venta const puntoDeVenta = 1; // Tipo de comprobante const tipoDeComprobante = 6; // 6 = Factura B const lastVoucher = await afip.ElectronicBilling.getLastVoucher(puntoDeVenta, tipoDeComprobante); Copiar // Numero de punto de venta $punto_de_venta = 1; // Tipo de comprobante $tipo_de_comprobante = 6; // 6 = Factura B $last_voucher = $afip->ElectronicBilling->GetLastVoucher($punto_de_venta, $tipo_de_comprobante); Copiar # Numero de punto de venta punto_de_venta = 1 # Tipo de comprobante tipo_de_comprobante = 6 # 6 = Factura B last_voucher = afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_comprobante) Copiar # Numero de punto de venta punto_de_venta = 1 # Tipo de comprobante tipo_de_comprobante = 6 # 6 = Factura B last_voucher = afip.ElectronicBilling.getLastVoucher(punto_de_venta, tipo_de_comprobante) Copiar { "environment": "dev", "method": "FECompUltimoAutorizado", "wsid": "wsfe", "params": { "Auth" : { "Token": "{{token}}", "Sign": "{{sign}}", "Cuit": "20409378472" }, "PtoVta" : 1, "CbteTipo" : 6 } } Copiar // Devolver respuesta completa del web service const returnFullResponse = false; const date = new Date(Date.now() - ((new Date()).getTimezoneOffset() * 60000)).toISOString().split('T')[0]; // Info del comprobante let data = { 'CantReg' : 1, // Cantidad de comprobantes a registrar 'PtoVta' : 1, // Punto de venta 'CbteTipo' : 6, // Tipo de comprobante (ver tipos disponibles) 'Concepto' : 1, // Concepto del Comprobante: (1)Productos, (2)Servicios, (3)Productos y Servicios 'DocTipo' : 99, // Tipo de documento del comprador (99 consumidor final, ver tipos disponibles) 'DocNro' : 0, // Número de documento del comprador (0 consumidor final) 'CbteDesde' : 1, // Número de comprobante o numero del primer comprobante en caso de ser mas de uno 'CbteHasta' : 1, // Número de comprobante o numero del último comprobante en caso de ser mas de uno 'CbteFch' : parseInt(date.replace(/-/g, '')), // (Opcional) Fecha del comprobante (yyyymmdd) o fecha actual si es nulo 'ImpTotal' : 121, // Importe total del comprobante 'ImpTotConc' : 0, // Importe neto no gravado 'ImpNeto' : 100, // Importe neto gravado 'ImpOpEx' : 0, // Importe exento de IVA 'ImpIVA' : 21, //Importe total de IVA 'ImpTrib' : 0, //Importe total de tributos 'MonId' : 'PES', //Tipo de moneda usada en el comprobante (ver tipos disponibles)('PES' para pesos argentinos) 'CondicionIVAReceptorId' : 5, // Condición frente al IVA del receptor 'MonCotiz' : 1, // Cotización de la moneda usada (1 para pesos argentinos) 'Iva' : [ // (Opcional) Alícuotas asociadas al comprobante\ {\ 'Id' : 5, // Id del tipo de IVA (5 para 21%)(ver tipos disponibles) \ 'BaseImp' : 100, // Base imponible\ 'Importe' : 21 // Importe \ }\ ], }; const res = await afip.ElectronicBilling.createVoucher(data, returnFullResponse); res['CAE']; //CAE asignado el comprobante res['CAEFchVto']; //Fecha de vencimiento del CAE (yyyy-mm-dd) Copiar // Devolver respuesta completa del web service $return_full_response = FALSE; // Info del comprobante $data = array( 'CantReg' => 1, // Cantidad de comprobantes a registrar 'PtoVta' => 1, // Punto de venta 'CbteTipo' => 6, // Tipo de comprobante (ver tipos disponibles) 'Concepto' => 1, // Concepto del Comprobante: (1)Productos, (2)Servicios, (3)Productos y Servicios 'DocTipo' => 99, // Tipo de documento del comprador (99 consumidor final, ver tipos disponibles) 'DocNro' => 0, // Número de documento del comprador (0 consumidor final) 'CbteDesde' => 1, // Número de comprobante o numero del primer comprobante en caso de ser mas de uno 'CbteHasta' => 1, // Número de comprobante o numero del último comprobante en caso de ser mas de uno 'CbteFch' => intval(date('Ymd')), // (Opcional) Fecha del comprobante (yyyymmdd) o fecha actual si es nulo 'ImpTotal' => 121, // Importe total del comprobante 'ImpTotConc' => 0, // Importe neto no gravado 'ImpNeto' => 100, // Importe neto gravado 'ImpOpEx' => 0, // Importe exento de IVA 'ImpIVA' => 21, //Importe total de IVA 'ImpTrib' => 0, //Importe total de tributos 'MonId' => 'PES', //Tipo de moneda usada en el comprobante (ver tipos disponibles)('PES' para pesos argentinos) 'MonCotiz' => 1, // Cotización de la moneda usada (1 para pesos argentinos) 'CondicionIVAReceptorId' => 5, // Condición frente al IVA del receptor 'Iva' => array( // (Opcional) Alícuotas asociadas al comprobante array( 'Id' => 5, // Id del tipo de IVA (5 para 21%)(ver tipos disponibles) 'BaseImp' => 100, // Base imponible 'Importe' => 21 // Importe ) ), ); $res = $afip->ElectronicBilling->CreateVoucher($data, $return_full_response); $res['CAE']; //CAE asignado el comprobante $res['CAEFchVto']; //Fecha de vencimiento del CAE (yyyy-mm-dd) Copiar # Devolver respuesta completa del web service return_full_response = FALSE # Info del comprobante data = { "CantReg": 1, # Cantidad de comprobantes a registrar "PtoVta": 1, # Punto de venta "CbteTipo": 6, # Tipo de comprobante (ver tipos disponibles) "Concepto": 1, # Concepto del Comprobante: (1)Productos, (2)Servicios, (3)Productos y Servicios "DocTipo": 99, # Tipo de documento del comprador (99 consumidor final, ver tipos disponibles) "DocNro": 0, # Número de documento del comprador (0 consumidor final) "CbteDesde": 1, # Número de comprobante o numero del primer comprobante en caso de ser mas de uno "CbteHasta": 1, # Número de comprobante o numero del último comprobante en caso de ser mas de uno "CbteFch": 20231220, # (Opcional) Fecha del comprobante (yyyymmdd) o fecha actual si es nulo "ImpTotal": 121, # Importe total del comprobante "ImpTotConc": 0, # Importe neto no gravado "ImpNeto": 100, # Importe neto gravado "ImpOpEx": 0, # Importe exento de IVA "ImpIVA": 21, # Importe total de IVA "ImpTrib": 0, # Importe total de tributos "MonId": "PES", # Tipo de moneda usada en el comprobante (ver tipos disponibles)("PES" para pesos argentinos) "MonCotiz": 1, # Cotización de la moneda usada (1 para pesos argentinos) "CondicionIVAReceptorId" : 5, # Condición frente al IVA del receptor "Iva": [ # (Opcional) Alícuotas asociadas al comprobante\ {\ "Id": 5, # Id del tipo de IVA (5 para 21%)(ver tipos disponibles) \ "BaseImp": 100, # Base imponible\ "Importe": 21 # Importe \ }\ ] } res = afip.ElectronicBilling.createVoucher(data, return_full_response) res["CAE"] # CAE asignado el comprobante res["CAEFchVto"] # Fecha de vencimiento del CAE (yyyy-mm-dd) Copiar # Devolver respuesta completa del web service return_full_response = False # Info del comprobante data = { "CantReg": 1, # Cantidad de comprobantes a registrar "PtoVta": 1, # Punto de venta "CbteTipo": 6, # Tipo de comprobante (ver tipos disponibles) "Concepto": 1, # Concepto del Comprobante: (1)Productos, (2)Servicios, (3)Productos y Servicios "DocTipo": 99, # Tipo de documento del comprador (99 consumidor final, ver tipos disponibles) "DocNro": 0, # Número de documento del comprador (0 consumidor final) "CbteDesde": 1, # Número de comprobante o numero del primer comprobante en caso de ser mas de uno "CbteHasta": 1, # Número de comprobante o numero del último comprobante en caso de ser mas de uno "CbteFch": 20231220, # (Opcional) Fecha del comprobante (yyyymmdd) o fecha actual si es nulo "ImpTotal": 121, # Importe total del comprobante "ImpTotConc": 0, # Importe neto no gravado "ImpNeto": 100, # Importe neto gravado "ImpOpEx": 0, # Importe exento de IVA "ImpIVA": 21, # Importe total de IVA "ImpTrib": 0, # Importe total de tributos "MonId": "PES", # Tipo de moneda usada en el comprobante (ver tipos disponibles)("PES" para pesos argentinos) "MonCotiz": 1, # Cotización de la moneda usada (1 para pesos argentinos) "CondicionIVAReceptorId" : 5, # Condición frente al IVA del receptor "Iva": [ # (Opcional) Alícuotas asociadas al comprobante\ {\ "Id": 5, # Id del tipo de IVA (5 para 21%)(ver tipos disponibles) \ "BaseImp": 100, # Base imponible\ "Importe": 21 # Importe \ }\ ] } res = afip.ElectronicBilling.createVoucher(data, return_full_response) res["CAE"] # CAE asignado el comprobante res["CAEFchVto"] # Fecha de vencimiento del CAE (yyyy-mm-dd) Copiar { "environment": "dev", "method": "FECAESolicitar", "wsid": "wsfe", "params": { "Auth" : { "Token": "{{token}}", "Sign": "{{sign}}", "Cuit": "20409378472" }, "FeCAEReq" : { "FeCabReq" : { "CantReg" : 1, "PtoVta" : 1, "CbteTipo" : 6 }, "FeDetReq" : { "FECAEDetRequest" : { "Concepto" : 1, "DocTipo" : 99, "DocNro" : 0, "CbteDesde" : 1, "CbteHasta" : 1, "CbteFch" : 20240313, "ImpTotal" : 121, "ImpTotConc" : 0, "ImpNeto" : 100, "ImpOpEx" : 0, "ImpIVA" : 21, "ImpTrib" : 0, "MonId" : "PES", "MonCotiz" : 1, "CondicionIVAReceptorId" : 5, "Iva" : { "AlicIva": [{\ "Id" : 5,\ "BaseImp" : 100,\ "Importe" : 21\ }] } } } } } } Copiar const res = await afip.ElectronicBilling.createNextVoucher(data); res['CAE']; //CAE asignado el comprobante res['CAEFchVto']; //Fecha de vencimiento del CAE (yyyy-mm-dd) res['voucher_number']; //Número asignado al comprobante Copiar $res = $afip->ElectronicBilling->CreateNextVoucher($data); $res['CAE']; //CAE asignado el comprobante $res['CAEFchVto']; //Fecha de vencimiento del CAE (yyyy-mm-dd) $res['voucher_number']; //Número asignado al comprobante Copiar res = afip.ElectronicBilling.createNextVoucher(data) res["CAE"] # CAE asignado el comprobante res["CAEFchVto"] # Fecha de vencimiento del CAE (yyyy-mm-dd) res["voucher_number"] # Número asignado al comprobante Copiar res = afip.ElectronicBilling.createNextVoucher(data) res["CAE"] # CAE asignado el comprobante res["CAEFchVto"] # Fecha de vencimiento del CAE (yyyy-mm-dd) res["voucher_number"] # Número asignado al comprobante Copiar // Numero de comprobante const numeroDeComprobante = 1; // Numero de punto de venta const puntoDeVenta = 1; // Tipo de comprobante const tipoDeComprobante = 6; // 6 = Factura B const voucherInfo = await afip.ElectronicBilling.getVoucherInfo(numeroDeComprobante, puntoDeVenta, tipoDeComprobante); if(voucherInfo === null){ console.log('El comprobante no existe'); } else{ console.log('Esta es la información del comprobante:'); console.log(voucherInfo); } Copiar // Numero de comprobante $numero_de_comprobante = 1; // Numero de punto de venta $punto_de_venta = 1; // Tipo de comprobante $tipo_de_comprobante = 6; // 6 = Factura B $voucher_info = $afip->ElectronicBilling->GetVoucherInfo($numero_de_comprobante, $punto_de_venta, $tipo_de_comprobante); if($voucher_info === NULL){ echo 'El comprobante no existe'; } else{ echo 'Esta es la información del comprobante:'; echo '
';
        print_r($voucher_info);
        echo '
'; } Copiar # Numero de comprobante numero_de_comprobante = 1 # Numero de punto de venta punto_de_venta = 1 # Tipo de comprobante tipo_de_comprobante = 6 # 6 = Factura B voucher_info = afip.ElectronicBilling.getVoucherInfo(numero_de_comprobante, punto_de_venta, tipo_de_comprobante) puts "Esta es la información del comprobante:" puts voucher_info Copiar # Numero de comprobante numero_de_comprobante = 1 # Numero de punto de venta punto_de_venta = 1 # Tipo de comprobante tipo_de_comprobante = 6 # 6 = Factura B voucher_info = afip.ElectronicBilling.getVoucherInfo(numero_de_comprobante, punto_de_venta, tipo_de_comprobante) print("Esta es la información del comprobante:") print(voucher_info) Copiar { "environment": "dev", "method": "FECompConsultar", "wsid": "wsfe", "params": { "Auth" : { "Token": "{{token}}", "Sign": "{{sign}}", "Cuit": "20409378472" }, "FeCompConsReq" : { "CbteNro" : 10, "PtoVta" : 1, "CbteTipo" : 6 } } } Copiar // Periodo del CAEA. (yyyymm) const periodo = 202307; // Orden del CAEA dentro del periodo. Quincena 1, Quincena 2 const orden = 1; const caeaInfo = await afip.ElectronicBilling.createCAEA(periodo, orden); Copiar // Periodo del CAEA. (yyyymm) $periodo = 202307; // Orden del CAEA dentro del periodo. Quincena 1, Quincena 2 $orden = 1; $caea_info = $afip->ElectronicBilling->CreateCAEA($periodo, $orden); Copiar # Periodo del CAEA. (yyyymm) periodo = 202307 # Orden del CAEA dentro del periodo. Quincena 1, Quincena 2 orden = 1 caea_info = afip.ElectronicBilling.createCAEA(periodo, orden) Copiar # Periodo del CAEA. (yyyymm) periodo = 202307 # Orden del CAEA dentro del periodo. Quincena 1, Quincena 2 orden = 1 caea_info = afip.ElectronicBilling.createCAEA(periodo, orden) Copiar { "environment": "dev", "method": "FECAEASolicitar", "wsid": "wsfe", "params": { "Auth" : { "Token": "{{token}}", "Sign": "{{sign}}", "Cuit": "20409378472" }, "Periodo": 202403, "Orden": 1 } } Copiar // Periodo del CAEA. (yyyymm) const periodo = 202307; // Orden del CAEA dentro del periodo. Quincena 1, Quincena 2 const orden = 1; const caeaInfo = await afip.ElectronicBilling.getCAEA(periodo, orden); Copiar // Periodo del CAEA. (yyyymm) $periodo = 202307; // Orden del CAEA dentro del periodo. Quincena 1, Quincena 2 $orden = 1; $caea_info = $afip->ElectronicBilling->GetCAEA($periodo, $orden); Copiar # Periodo del CAEA. (yyyymm) periodo = 202307 # Orden del CAEA dentro del periodo. Quincena 1, Quincena 2 orden = 1 caea_info = afip.ElectronicBilling.getCAEA(periodo, orden) Copiar # Periodo del CAEA. (yyyymm) periodo = 202307 # Orden del CAEA dentro del periodo. Quincena 1, Quincena 2 orden = 1 caea_info = afip.ElectronicBilling.getCAEA(periodo, orden) Copiar { "environment": "dev", "method": "FECAEAConsultar", "wsid": "wsfe", "params": { "Auth" : { "Token": "{{token}}", "Sign": "{{sign}}", "Cuit": "20409378472" }, "Periodo": 202403, "Orden": 1 } } Copiar const salesPoints = await afip.ElectronicBilling.getSalesPoints() Copiar $sales_points = $afip->ElectronicBilling->GetSalesPoints(); Copiar sales_points = afip.ElectronicBilling.getSalesPoints Copiar sales_points = afip.ElectronicBilling.getSalesPoints() Copiar { "environment": "dev", "method": "FEParamGetPtosVenta", "wsid": "wsfe", "params": { "Auth" : { "Token": "{{token}}", "Sign": "{{sign}}", "Cuit": "20409378472" } } } Copiar const voucherTypes = await afip.ElectronicBilling.getVoucherTypes(); Copiar $voucher_types = $afip->ElectronicBilling->GetVoucherTypes(); Copiar voucher_types = afip.ElectronicBilling.getVoucherTypes Copiar voucher_types = afip.ElectronicBilling.getVoucherTypes() Copiar { "environment": "dev", "method": "FEParamGetTiposCbte", "wsid": "wsfe", "params": { "Auth" : { "Token": "{{token}}", "Sign": "{{sign}}", "Cuit": "20409378472" } } } Copiar const conceptTypes = await afip.ElectronicBilling.getConceptTypes(); Copiar $concept_types = $afip->ElectronicBilling->GetConceptTypes(); Copiar concept_types = afip.ElectronicBilling.getConceptTypes Copiar concept_types = afip.ElectronicBilling.getConceptTypes() Copiar { "environment": "dev", "method": "FEParamGetTiposConcepto", "wsid": "wsfe", "params": { "Auth" : { "Token": "{{token}}", "Sign": "{{sign}}", "Cuit": "20409378472" } } } Copiar const documentTypes = await afip.ElectronicBilling.getDocumentTypes(); Copiar $document_types = $afip->ElectronicBilling->GetDocumentTypes(); Copiar document_types = afip.ElectronicBilling.getDocumentTypes Copiar document_types = afip.ElectronicBilling.getDocumentTypes() Copiar { "environment": "dev", "method": "FEParamGetTiposDoc", "wsid": "wsfe", "params": { "Auth" : { "Token": "{{token}}", "Sign": "{{sign}}", "Cuit": "20409378472" } } } Copiar const aloquotTypes = await afip.ElectronicBilling.getAliquotTypes(); Copiar $aloquot_types = $afip->ElectronicBilling->GetAliquotTypes(); Copiar aloquot_types = afip.ElectronicBilling.getAliquotTypes Copiar aloquot_types = afip.ElectronicBilling.getAliquotTypes() Copiar { "environment": "dev", "method": "FEParamGetTiposIva", "wsid": "wsfe", "params": { "Auth" : { "Token": "{{token}}", "Sign": "{{sign}}", "Cuit": "20409378472" } } } Copiar const currenciesTypes = await afip.ElectronicBilling.getCurrenciesTypes(); Copiar $currencies_types = $afip->ElectronicBilling->GetCurrenciesTypes(); Copiar currencies_types = afip.ElectronicBilling.getCurrenciesTypes Copiar currencies_types = afip.ElectronicBilling.getCurrenciesTypes() Copiar { "environment": "dev", "method": "FEParamGetTiposMonedas", "wsid": "wsfe", "params": { "Auth" : { "Token": "{{token}}", "Sign": "{{sign}}", "Cuit": "20409378472" }, } } Copiar // ID de la moneda a consultar (El ID se obtiene del método para obtener los tipos de monedas) const currencyID = 'DOL' // Fecha de la cotización en formato aaaammdd | Por ej. 20250221 = 21 de febrero de 2025 const rateDate = '20250221'; const exchangeRate = await afip.ElectronicBilling.executeRequest('FEParamGetCotizacion', { MonId: currencyID, FchCotiz: rateDate }) Copiar // ID de la moneda a consultar (El ID se obtiene del método para obtener los tipos de monedas) $currency_id = 'DOL' // Fecha de la cotización en formato aaaammdd | Por ej. 20250221 = 21 de febrero de 2025 $rate_date = '20250221'; $exchange_rate = $afip->ElectronicBilling->ExecuteRequest('FEParamGetCotizacion', array( "MonId" => $currency_id, "FchCotiz" => $rate_date )); Copiar # ID de la moneda a consultar (El ID se obtiene del método para obtener los tipos de monedas) currency_id = 'DOL' # Fecha de la cotización en formato aaaammdd | Por ej. 20250221 = 21 de febrero de 2025 rate_date = '20250221'; exchange_rate = afip.ElectronicBilling.executeRequest('FEParamGetCotizacion', { "MonId": currency_id, "FchCotiz": rate_date }); Copiar # ID de la moneda a consultar (El ID se obtiene del método para obtener los tipos de monedas) currency_id = 'DOL' # Fecha de la cotización en formato aaaammdd | Por ej. 20250221 = 21 de febrero de 2025 rate_date = '20250221'; exchange_rate = afip.ElectronicBilling.executeRequest('FEParamGetCotizacion', { "MonId": currency_id, "FchCotiz": rate_date }); Copiar { "environment": "dev", "method": "FEParamGetCotizacion", "wsid": "wsfe", "params": { "Auth" : { "Token": "{{token}}", "Sign": "{{sign}}", "Cuit": "20409378472" }, "MonId": "DOL", "FchCotiz": "20250221" } } Copiar const optionTypes = await afip.ElectronicBilling.getOptionsTypes(); Copiar $option_types = $afip->ElectronicBilling->GetOptionsTypes(); Copiar option_types = afip.ElectronicBilling.getOptionsTypes Copiar option_types = afip.ElectronicBilling.getOptionsTypes() Copiar { "environment": "dev", "method": "FEParamGetTiposOpcional", "wsid": "wsfe", "params": { "Auth" : { "Token": "{{token}}", "Sign": "{{sign}}", "Cuit": "20409378472" } } } Copiar const taxTypes = await afip.ElectronicBilling.getTaxTypes(); Copiar $tax_types = $afip->ElectronicBilling->GetTaxTypes(); Copiar tax_types = afip.ElectronicBilling.getTaxTypes Copiar tax_types = afip.ElectronicBilling.getTaxTypes() Copiar { "environment": "dev", "method": "FEParamGetTiposTributos", "wsid": "wsfe", "params": { "Auth" : { "Token": "{{token}}", "Sign": "{{sign}}", "Cuit": "20409378472" } } } Copiar const taxConditionTypes = await afip.ElectronicBilling.executeRequest('FEParamGetCondicionIvaReceptor') Copiar $tax_condition_types = $afip->ElectronicBilling->ExecuteRequest('FEParamGetCondicionIvaReceptor'); Copiar tax_condition_types = afip.ElectronicBilling.executeRequest('FEParamGetCondicionIvaReceptor') Copiar tax_condition_types = afip.ElectronicBilling.executeRequest('FEParamGetCondicionIvaReceptor') Copiar { "environment": "dev", "method": "FEParamGetCondicionIvaReceptor", "wsid": "wsfe", "params": { "Auth" : { "Token": "{{token}}", "Sign": "{{sign}}", "Cuit": "20409378472" } } } Copiar const date = afip.ElectronicBilling.formatDate('19970508'); //Nos devuelve 1997-05-08 Copiar $date = $afip->ElectronicBilling->FormatDate('19970508'); //Nos devuelve 1997-05-08 Copiar date = afip.ElectronicBilling.formatDate('19970508') # Nos devuelve 1997-05-08 Copiar date = afip.ElectronicBilling.formatDate('19970508') # Nos devuelve 1997-05-08 Copiar const serverStatus = await afip.ElectronicBilling.getServerStatus(); console.log('Este es el estado del servidor:'); console.log(serverStatus); Copiar $server_status = $afip->ElectronicBilling->GetServerStatus(); echo 'Este es el estado del servidor:'; echo '
';
    print_r($server_status);
    echo '
'; Copiar server_status = afip.ElectronicBilling.getServerStatus puts "Este es el estado del servidor:" puts server_status Copiar server_status = afip.ElectronicBilling.getServerStatus() print("Este es el estado del servidor:") print(server_status) Copiar { "environment": "dev", "method": "FEDummy", "wsid": "wsfe", "params": {} } --- # Node.js | Afip SDK ### [hashtag](https://docs.afipsdk.com/integracion/node.js#requisitos-previos) Requisitos previos Para poder seguir esta guía, primero necesitarás: * [Obtener un access\_token de Afip SDKarrow-up-right](https://app.afipsdk.com/) ### [hashtag](https://docs.afipsdk.com/integracion/node.js#id-1.-instalacion) 1\. Instalación Agregá la librería de Afip SDK en Node.js. npm yarn pnpm Copiar npm install @afipsdk/afip.js Copiar yarn add @afipsdk/afip.js Copiar pnpm add @afipsdk/afip.js ### [hashtag](https://docs.afipsdk.com/integracion/node.js#id-2.-crear-una-instancia-de-la-clase-afip) 2\. Crear una instancia de la clase Afip Para usar los Web Services de ARCA se necesita un certificado digital, pero con Afip SDK podés empezar en modo desarrollo usando el CUIT 20-40937847-2 sin necesidad de uno. Si preferís [usar tu propio certificado](https://docs.afipsdk.com/integracion/node.js#usar-tu-propio-certificado-opcional) , al final te mostramos cómo. server.ts Copiar import Afip from '@afipsdk/afip.js'; const afip = new Afip({ CUIT: 20409378472, access_token: 'TU_ACCESS_TOKEN' // Obtenido de https://app.afipsdk.com }); ### [hashtag](https://docs.afipsdk.com/integracion/node.js#id-3.-llamar-al-metodo-del-web-service-que-necesites) 3\. Llamar al método del Web Service que necesites Con la instancia creada ya podés realizar las llamadas a los Web Services que necesites. [cloudsWeb serviceschevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services) Si el Web Service que necesitás no se encuentra en la lista de la documentación, podés llamarlo siguiendo esta guía: [cloudsOtro web servicechevron-right](https://docs.afipsdk.com/siguientes-pasos/web-services/otro-web-service) Podés usar la referencia de la API para obtener ejemplos de cómo usar los métodos de todos los web services de ARCA. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Referencia de APIafipsdk.comchevron-right](https://afipsdk.com/docs/api-reference/introduction/) También podés usar las guías del blog de Afip SDK para JavaScript: [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Javascript | Blogafipsdk.comchevron-right](https://afipsdk.com/blog/category/Javascript/) Y un proyecto de ejemplo listo para usar: [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fgithub.com%2Ffluidicon.png&width=20&dpr=3&quality=100&sign=b29cf9f1&sv=2)GitHub - AfipSDK/afip-sdk-billing-example-js: Ejemplo de Facturación Electrónica en Node JSGitHubchevron-right](https://github.com/AfipSDK/afip-sdk-billing-example-js) * * * ### [hashtag](https://docs.afipsdk.com/integracion/node.js#usar-tu-propio-certificado-opcional) Usar tu propio certificado (Opcional) Primero, obtenemos el certificado siguiendo esta guía. [![Logo](https://docs.afipsdk.com/~gitbook/image?url=https%3A%2F%2Fafipsdk.com%2Ffaviconx32.png&width=20&dpr=3&quality=100&sign=174fa6ec&sv=2)Obtener el certificado para conectar tu sistema con los web services de ARCAafipsdk.comchevron-right](https://afipsdk.com/blog/como-obtener-certificado-para-web-services-arca/) Y luego lo agregamos a la instancia de la clase Afip. server.ts [AnteriorIntroducciónchevron-left](https://docs.afipsdk.com/) [SiguienteServerlesschevron-right](https://docs.afipsdk.com/integracion/serverless) Última actualización hace 13 días * [Requisitos previos](https://docs.afipsdk.com/integracion/node.js#requisitos-previos) * [1\. Instalación](https://docs.afipsdk.com/integracion/node.js#id-1.-instalacion) * [2\. Crear una instancia de la clase Afip](https://docs.afipsdk.com/integracion/node.js#id-2.-crear-una-instancia-de-la-clase-afip) * [3\. Llamar al método del Web Service que necesites](https://docs.afipsdk.com/integracion/node.js#id-3.-llamar-al-metodo-del-web-service-que-necesites) * [Usar tu propio certificado (Opcional)](https://docs.afipsdk.com/integracion/node.js#usar-tu-propio-certificado-opcional) Copiar import fs from 'fs'; import Afip from '@afipsdk/afip.js'; // Certificado (Puede estar guardado en archivos, DB, etc) const cert = fs.readFileSync('ruta/a/certificado.crt', {encoding: 'utf8'}); // Key (Puede estar guardado en archivos, DB, etc) const key = fs.readFileSync('ruta/a/key.key', {encoding: 'utf8'}); // CUIT del certificado const CUIT = 20111111112; const afip = new Afip({ cert, key, CUIT, access_token: 'TU_ACCESS_TOKEN' // Obtenido de https://app.afipsdk.com }); ---