Usar web services de ARCA en C#

Con pocas líneas de código

Ivan Muñoz ene 13, 2025 - Ultima edicion feb 22, 2025
.NET

Usar web services de ARCA en C#

Consumir los web services de ARCA en C# puede ser un poco complicado, por eso vamos a utilizar la API de Afip SDK, que nos permite conectarnos a los web services de ARCA en C# sin complicarnos con el uso de SOAP y la autenticación.

Vamos a usar Newtonsoft.Json para trabajar con JSON.

dotnet add package Newtonsoft.Json

Obtener la autorización

Lo primero que tenemos hacer es obtener el “Token authorization”, que seria la autorización en ARCA.

Para usar los web services de ARCA, se requiere un certificado digital, con Afip SDK puedes integrarte en modo desarrollo usando el CUIT 20409378472 sin necesidad de obtener un certificado, para poder integrarte lo más rápido posible.

Te dejo este enlace por si luego quieres usar tu propio certificado para desarrollo.

Debemos ejecutar una solicitud POST al endpoint

https://app.afipsdk.com/api/v1/afip/auth
using System;
using System.Net.Http;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
using Newtonsoft.Json;


var client = new HttpClient();

// Paso 1: Obtener el Token y Sign
var authUrl = "https://app.afipsdk.com/api/v1/afip/auth";
var authData = new
{
    environment = "dev",
    tax_id = "20409378472", // CUIT a utilizar
    wsid = "wsct"
};

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

En este ejemplo utilizamos el web service id wsct "wsid": "wsct", el cual corresponde al web service de comprobantes de turismo.

En la pestaña “API” de la documentacion podes consultar todos los parametros del endpoint.

Ahora tenemos token y sign que nos dio ARCA para usar el web service. No es necesario que lo guardemos, Afip SDK se encarga de esto por nosotros, debemos solicitarlo antes de cada llamada a los métodos del web service.

Llamar al web service

Para este ejemplo vamos a consultar el ultimo comprobante autorizado llamando al metodo consultarUltimoComprobanteAutorizado.

Debemos ejecutar una solicitud POST al endpoint

https://app.afipsdk.com/api/v1/afip/requests
// Paso 2: Crear la consulta con el Token y Sign obtenidos
var invoiceUrl = "https://app.afipsdk.com/api/v1/afip/requests";
var invoiceData = new
{
    environment = "dev",
    method = "consultarUltimoComprobanteAutorizado",
    wsid = "wsct",
    @params = new
    {
        authRequest = new
        {
            token = token, // Token obtenido previamente
            sign = sign,   // Sign obtenido previamente
            cuitRepresentada = "20409378472" // CUIT que estamos utilizando
        },
        codigoTipoComprobante = 195, // Código del tipo de comprobante
        numeroPuntoVenta = 1         // Número del punto de venta
    }
};

var invoiceJsonContent = JsonConvert.SerializeObject(invoiceData);
var invoiceContent = new StringContent(invoiceJsonContent, Encoding.UTF8, "application/json");

var invoiceResponse = await client.PostAsync(invoiceUrl, invoiceContent);

if (!invoiceResponse.IsSuccessStatusCode)
{
    Console.WriteLine($"Error al consultar el último comprobante autorizado: {invoiceResponse.StatusCode}");
    return;
}

var invoiceResponseBody = await invoiceResponse.Content.ReadAsStringAsync();
dynamic invoice = JsonConvert.DeserializeObject(invoiceResponseBody);

Console.WriteLine($"Response: {invoice}");

En la pestaña “API” de la documentacion podes consultar todos los parametros del endpoint.

En invoice nos devolverá la respuesta del web service.

{
    "consultarUltimoComprobanteAutorizadoReturn": ...,
}

Con esto ya podemos conectarnos a cualquier web service de ARCA con C#.

Lo único que nos queda es pasar a modo producción.


Ante cualquier duda o pregunta al respecto, pueden resolverla rápidamente dentro de la Comunidad Afip SDK. Además, puedes unirte para estar al tanto de las novedades y problemas técnicos al usar los servicios de ARCA.

Conéctate a ARCA hoy mismo

Certificados, código, tutoriales, soporte... todo lo que necesitas para usar los web services de ARCA en un solo lugar.