Afip SDK
GitHubHomeComunidadBlog
  • 📖Documentación
  • Paso a paso
    • 🎯Instalacion
    • ☁️Web services
      • 💵Factura electrónica
        • Crear PDF
        • Código QR
        • Factura A
        • Factura B
        • Factura C
        • Factura de Crédito electrónica A
        • Factura de Crédito electrónica B
        • Factura de Crédito electrónica C
        • Nota de Crédito A
        • Nota de Crédito B
        • Nota de Crédito C
      • 📑Padrón de constancia de inscripción
      • 📑Padrón alcance 10
      • 📑Padrón alcance 13
      • 💸Factura MiPyME
      • 🔎Constatación de Comprobantes
      • ✉️Carta de Porte Electrónica
      • 🏨Comprobantes de Turismo
      • 💸Factura de Exportación
      • 🥩Remito cárnico
      • 🛠️Otro web service
    • 📚Tutoriales página de ARCA
      • 🔑Habilitar administrador de certificados de testing
      • 📜Obtener certificado de testing
      • ✅Autorizar web service de testing
      • 🔑Habilitar administrador de certificados de producción
      • 📜Obtener certificado de producción
      • ✅Autorizar web service de producción
      • 💳Crear punto de venta
      • 🤝Delegar web service
      • 👍Aceptar delegación de web service
    • ⚙️Otros métodos útiles
    • 🚀Ir a producción
  • Ayuda
    • ⁉️Preguntas frecuentes
    • 🐞Errores frecuentes
Con tecnología de GitBook
En esta página

¿Te fue útil?

  1. Paso a paso
  2. Web services
  3. Factura electrónica

Factura A

(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;

	/**
	 * 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)  
		'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
	});
})()
/**
 * 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;

/**
 * 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)  
	'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
));
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

# 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)  
	"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
}
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

# 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)  
	"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
})

Endpoint

POST https://app.afipsdk.com/api/v1/afip/requests

Ejemplo

{
    "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,
                    "Iva": {
                        "AlicIva": [
                            {
                                "Id": 5,
                                "BaseImp": 100,
                                "Importe": 21
                            }
                        ]
                    }
                }
            }
        }
    }
}
AnteriorCódigo QRSiguienteFactura B

Última actualización hace 1 año

¿Te fue útil?

☁️
💵