Librería para usar los Web Services de AFIP con JavaScript
Esta librería facilita la comunicación con los Web Services de AFIP, permitiendo realizar operaciones como facturación electrónica y consultas al padrón de contribuyentes desde aplicaciones JavaScript.
npm install tmn-afip
Para utilizar la librería, necesitarás:
- Un CUIT válido
- Certificado y clave privada emitidos por AFIP
- Tener habilitado el servicio al que deseas conectarte en la página de AFIP
Para obtener un certificado y clave:
- Ingrese a la página de AFIP
- Vaya a "Servicios administrativos" → "Gestión de Certificados Digitales"
- Siga las instrucciones para generar su certificado y clave privada
const Afip = require('tmn-afip');
const afip = new Afip({
CUIT: 20111111112,
production: false,
cert: "cert.pem",
key: "key.pem",
res_folder: "./Afip_res/"
});
// Consultar estado del servidor
async function checkStatus() {
const serverStatus = await afip.ElectronicBilling.getServerStatus();
console.log(serverStatus);
}
// Consultar último comprobante
async function getLastInvoice() {
const lastVoucher = await afip.ElectronicBilling.getLastVoucher({
PtoVta: 1,
CbteTipo: 11
});
console.log(lastVoucher);
}
// Crear factura electrónica
async function createInvoice() {
const date = new Date();
const invoice = {
CantReg: 1,
PtoVta: 1,
CbteTipo: 11,
Concepto: 1,
DocTipo: 99,
DocNro: 0,
CbteDesde: 1,
CbteHasta: 1,
CbteFch: parseInt(date.toISOString().slice(0, 10).replace(/-/g, '')),
ImpTotal: 121,
ImpNeto: 100,
ImpIVA: 21,
FchServDesde: parseInt(date.toISOString().slice(0, 10).replace(/-/g, '')),
FchServHasta: parseInt(date.toISOString().slice(0, 10).replace(/-/g, '')),
FchVtoPago: parseInt(date.toISOString().slice(0, 10).replace(/-/g, '')),
MonId: 'PES',
MonCotiz: 1,
Iva: [
{
Id: 5, // 5 = 21%
BaseImp: 100,
Importe: 21
}
]
};
const result = await afip.ElectronicBilling.createVoucher(invoice);
console.log(result);
}
- Facturación Electrónica (
ElectronicBilling
) - Padrón A13 (
RegisterScopeThirteen
) - Padrón A5 (
RegisterScopeFive
) - Padrón A10 (
RegisterScopeTen
) - Inscripción y Registro (
RegisterInscriptionProof
)
const afip = new Afip({
CUIT: 20111111112,
production: false,
cert: "cert.pem",
key: "key.pem",
res_folder: "./Afip_res/",
ta_folder: "./Token/",
soap_timeout: 20000
});
Las contribuciones son bienvenidas. Por favor, envía tus pull requests a https://github.com/tamnora/afip.js
Para publicar este paquete en npm y usarlo en varios proyectos:
-
Asegúrate de tener una cuenta en npm y estar logueado:
npm login
-
Verifica el contenido del paquete que será publicado:
npm pack --dry-run
-
Actualiza la versión del paquete según corresponda:
npm version patch # Para cambios pequeños npm version minor # Para nuevas características npm version major # Para cambios importantes
npm publish --access public
Si es la primera vez que publicas este paquete, debes usar:
npm publish --access public
Una vez publicado, puedes usar el paquete en cualquier proyecto:
npm install tmn-afip
Después de hacer cambios:
- Actualiza la versión:
npm version patch|minor|major
- Publica nuevamente:
npm publish
Este proyecto está licenciado bajo la Licencia MIT - ver el archivo LICENSE para más detalles.