Factura electrónica
Requisitos previos
Para poder usar esta guía, primero necesitarás:
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.pdf
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:
Crear PDF
Crear PDFObtener número del último comprobante creado
// 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);// 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);# 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)# 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)Endpoint
POST https://app.afipsdk.com/api/v1/afip/requests
Ejemplo
{
"environment": "dev",
"method": "FECompUltimoAutorizado",
"wsid": "wsfe",
"params": {
"Auth" : {
"Token": "{{token}}",
"Sign": "{{sign}}",
"Cuit": "20409378472"
},
"PtoVta" : 1,
"CbteTipo" : 6
}
}Crear y asignar CAE a un comprobante
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) }.
// 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)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)).
// 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)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) }.
# 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)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) }.
# 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)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" : 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
}]
}
}
}
}
}
}Crear y asignar CAE a siguiente comprobante
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 }.
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 comprobanteDebemos 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).
$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 comprobanteDebemos 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 }.
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 comprobanteDebemos 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 }.
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 comprobanteSe debe llamar al endpoint Obtener número del último comprobante creado, al numero de comprobante que nos devuelve sumarle 1, y llamar al endpoint Crear y asignar CAE a un comprobante
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.
// 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);
}// 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 '<pre>';
print_r($voucher_info);
echo '</pre>';
}# 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# 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)Endpoint
POST https://app.afipsdk.com/api/v1/afip/requests
Ejemplo
{
"environment": "dev",
"method": "FECompConsultar",
"wsid": "wsfe",
"params": {
"Auth" : {
"Token": "{{token}}",
"Sign": "{{sign}}",
"Cuit": "20409378472"
},
"FeCompConsReq" : {
"CbteNro" : 10,
"PtoVta" : 1,
"CbteTipo" : 6
}
}
}Crear CAEA
// 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);
// 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);# 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)# 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)Endpoint
POST https://app.afipsdk.com/api/v1/afip/requests
Ejemplo
{
"environment": "dev",
"method": "FECAEASolicitar",
"wsid": "wsfe",
"params": {
"Auth" : {
"Token": "{{token}}",
"Sign": "{{sign}}",
"Cuit": "20409378472"
},
"Periodo": 202403,
"Orden": 1
}
}Obtener información de CAEA ya emitido
// 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);// 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);# 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)# 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)Endpoint
POST https://app.afipsdk.com/api/v1/afip/requests
Ejemplo
{
"environment": "dev",
"method": "FECAEAConsultar",
"wsid": "wsfe",
"params": {
"Auth" : {
"Token": "{{token}}",
"Sign": "{{sign}}",
"Cuit": "20409378472"
},
"Periodo": 202403,
"Orden": 1
}
}Obtener puntos de venta disponibles
Es normal recibir un error en testing ya que no existen puntos de venta para testing (siempre se usa 1)
const salesPoints = await afip.ElectronicBilling.getSalesPoints()$sales_points = $afip->ElectronicBilling->GetSalesPoints();sales_points = afip.ElectronicBilling.getSalesPointssales_points = afip.ElectronicBilling.getSalesPoints()Endpoint
POST https://app.afipsdk.com/api/v1/afip/requests
Ejemplo
{
"environment": "dev",
"method": "FEParamGetPtosVenta",
"wsid": "wsfe",
"params": {
"Auth" : {
"Token": "{{token}}",
"Sign": "{{sign}}",
"Cuit": "20409378472"
}
}
}Obtener tipos de comprobantes disponibles
const voucherTypes = await afip.ElectronicBilling.getVoucherTypes();$voucher_types = $afip->ElectronicBilling->GetVoucherTypes();voucher_types = afip.ElectronicBilling.getVoucherTypesvoucher_types = afip.ElectronicBilling.getVoucherTypes()Endpoint
POST https://app.afipsdk.com/api/v1/afip/requests
Ejemplo
{
"environment": "dev",
"method": "FEParamGetTiposCbte",
"wsid": "wsfe",
"params": {
"Auth" : {
"Token": "{{token}}",
"Sign": "{{sign}}",
"Cuit": "20409378472"
}
}
}Obtener tipos de conceptos disponibles
const conceptTypes = await afip.ElectronicBilling.getConceptTypes();$concept_types = $afip->ElectronicBilling->GetConceptTypes();concept_types = afip.ElectronicBilling.getConceptTypesconcept_types = afip.ElectronicBilling.getConceptTypes()Endpoint
POST https://app.afipsdk.com/api/v1/afip/requests
Ejemplo
{
"environment": "dev",
"method": "FEParamGetTiposConcepto",
"wsid": "wsfe",
"params": {
"Auth" : {
"Token": "{{token}}",
"Sign": "{{sign}}",
"Cuit": "20409378472"
}
}
}Obtener tipos de documentos disponibles
const documentTypes = await afip.ElectronicBilling.getDocumentTypes();$document_types = $afip->ElectronicBilling->GetDocumentTypes();document_types = afip.ElectronicBilling.getDocumentTypesdocument_types = afip.ElectronicBilling.getDocumentTypes()Endpoint
POST https://app.afipsdk.com/api/v1/afip/requests
Ejemplo
{
"environment": "dev",
"method": "FEParamGetTiposDoc",
"wsid": "wsfe",
"params": {
"Auth" : {
"Token": "{{token}}",
"Sign": "{{sign}}",
"Cuit": "20409378472"
}
}
}Obtener tipos de alícuotas disponibles
const aloquotTypes = await afip.ElectronicBilling.getAliquotTypes();$aloquot_types = $afip->ElectronicBilling->GetAliquotTypes();aloquot_types = afip.ElectronicBilling.getAliquotTypesaloquot_types = afip.ElectronicBilling.getAliquotTypes()Endpoint
POST https://app.afipsdk.com/api/v1/afip/requests
Ejemplo
{
"environment": "dev",
"method": "FEParamGetTiposIva",
"wsid": "wsfe",
"params": {
"Auth" : {
"Token": "{{token}}",
"Sign": "{{sign}}",
"Cuit": "20409378472"
}
}
}Obtener tipos de monedas disponibles
const currenciesTypes = await afip.ElectronicBilling.getCurrenciesTypes();$currencies_types = $afip->ElectronicBilling->GetCurrenciesTypes();currencies_types = afip.ElectronicBilling.getCurrenciesTypescurrencies_types = afip.ElectronicBilling.getCurrenciesTypes()Endpoint
POST https://app.afipsdk.com/api/v1/afip/requests
Ejemplo
{
"environment": "dev",
"method": "FEParamGetTiposMonedas",
"wsid": "wsfe",
"params": {
"Auth" : {
"Token": "{{token}}",
"Sign": "{{sign}}",
"Cuit": "20409378472"
},
}
}Obtener cotización de moneda
// 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
})// 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
));# 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
});# 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
});Endpoint
POST https://app.afipsdk.com/api/v1/afip/requests
Ejemplo
{
"environment": "dev",
"method": "FEParamGetCotizacion",
"wsid": "wsfe",
"params": {
"Auth" : {
"Token": "{{token}}",
"Sign": "{{sign}}",
"Cuit": "20409378472"
},
"MonId": "DOL",
"FchCotiz": "20250221"
}
}Obtener tipos de opciones disponibles para el comprobante
const optionTypes = await afip.ElectronicBilling.getOptionsTypes();$option_types = $afip->ElectronicBilling->GetOptionsTypes();option_types = afip.ElectronicBilling.getOptionsTypesoption_types = afip.ElectronicBilling.getOptionsTypes()Endpoint
POST https://app.afipsdk.com/api/v1/afip/requests
Ejemplo
{
"environment": "dev",
"method": "FEParamGetTiposOpcional",
"wsid": "wsfe",
"params": {
"Auth" : {
"Token": "{{token}}",
"Sign": "{{sign}}",
"Cuit": "20409378472"
}
}
}Obtener tipos de tributos disponibles
const taxTypes = await afip.ElectronicBilling.getTaxTypes();$tax_types = $afip->ElectronicBilling->GetTaxTypes();tax_types = afip.ElectronicBilling.getTaxTypestax_types = afip.ElectronicBilling.getTaxTypes()Endpoint
POST https://app.afipsdk.com/api/v1/afip/requests
Ejemplo
{
"environment": "dev",
"method": "FEParamGetTiposTributos",
"wsid": "wsfe",
"params": {
"Auth" : {
"Token": "{{token}}",
"Sign": "{{sign}}",
"Cuit": "20409378472"
}
}
}Obtener tipos de condiciones frente al IVA disponibles
const taxConditionTypes = await afip.ElectronicBilling.executeRequest('FEParamGetCondicionIvaReceptor')$tax_condition_types = $afip->ElectronicBilling->ExecuteRequest('FEParamGetCondicionIvaReceptor');tax_condition_types = afip.ElectronicBilling.executeRequest('FEParamGetCondicionIvaReceptor')tax_condition_types = afip.ElectronicBilling.executeRequest('FEParamGetCondicionIvaReceptor')Endpoint
POST https://app.afipsdk.com/api/v1/afip/requests
Ejemplo
{
"environment": "dev",
"method": "FEParamGetCondicionIvaReceptor",
"wsid": "wsfe",
"params": {
"Auth" : {
"Token": "{{token}}",
"Sign": "{{sign}}",
"Cuit": "20409378472"
}
}
}Transformar formato de fecha que utiliza AFIP
De yyyymmdd a yyyy-mm-dd
const date = afip.ElectronicBilling.formatDate('19970508'); //Nos devuelve 1997-05-08$date = $afip->ElectronicBilling->FormatDate('19970508'); //Nos devuelve 1997-05-08date = afip.ElectronicBilling.formatDate('19970508') # Nos devuelve 1997-05-08date = afip.ElectronicBilling.formatDate('19970508') # Nos devuelve 1997-05-08Si lo necesitas, a esto podes implementarlo con el lenguaje que utilices.
Obtener estado del servidor
No te confíes mucho de este método, ARCA siempre devuelve que esta todo bien incluso cuando hay algo fallando.
const serverStatus = await afip.ElectronicBilling.getServerStatus();
console.log('Este es el estado del servidor:');
console.log(serverStatus);$server_status = $afip->ElectronicBilling->GetServerStatus();
echo 'Este es el estado del servidor:';
echo '<pre>';
print_r($server_status);
echo '</pre>';server_status = afip.ElectronicBilling.getServerStatus
puts "Este es el estado del servidor:"
puts server_statusserver_status = afip.ElectronicBilling.getServerStatus()
print("Este es el estado del servidor:")
print(server_status)Endpoint
POST https://app.afipsdk.com/api/v1/afip/requests
Ejemplo
{
"environment": "dev",
"method": "FEDummy",
"wsid": "wsfe",
"params": {}
}Última actualización
¿Te fue útil?

