Facturapi 4.1.0

dotnet add package Facturapi --version 4.1.0
NuGet\Install-Package Facturapi -Version 4.1.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Facturapi" Version="4.1.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Facturapi --version 4.1.0
#r "nuget: Facturapi, 4.1.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Facturapi as a Cake Addin
#addin nuget:?package=Facturapi&version=4.1.0

// Install Facturapi as a Cake Tool
#tool nuget:?package=Facturapi&version=4.1.0

Facturapi .NET Library

NuGet version NuGet downloads

Librería oficial para .NET de https://www.facturapi.io

Facturapi ayuda a generar facturas electrónicas válidas en México (CFDI) de la manera más fácil posible.

Si alguna vez has usado Stripe o Conekta, verás que Facturapi es igual de sencillo de entender e integrar a tu aplicación.

Instalación

Puedes instalar Facturapi en tu proyecto usando Nuget

PM> Install-Package Facturapi

Antes de comenzar

Asegúrate de haber creado tu cuenta gratuita en Facturapi y de tener a la mano tus API Keys.

Inicializa la librería usando tus llaves secretas

Empieza por crear una instancia del Wrapper de Facturapi usando tu llave secreta.

using Facturapi;

// Esto asegura que puedas usar diferentes ApiKeys en diferentes instancias de Wrapper
var facturapi = new FacturapiClient('TU_API_KEY');
// Después, procede a llamar a los métodos como muestra la documentación.
var invoice = await facturapi.Invoice.Create(...);

Métodos asíncronos (async, await)

Esta librería utiliza métodos asíncronos. Si tu aplicación no tiene código asíncrono, puedes convertir un método asíncrono en síncrono de la siguiente manera:

// Asíncrono
var customers = await facturapi.Customer.List();

// Síncrono
var customers = facturapi.Customer.List().GetAwaiter().GetResult();

Uso de la librería

Crear un cliente

var customer = await facturapi.Customer.CreateAsync(new Dictionary<string, object>
{
  ["legal_name"] = "Walter White",    // Razón social
  ["tax_id"] = "ABCD101010XYZ",       // RFC
  ["email"] = "walter@example.com",   // Email a donde se enviará la factura
  ["address"] = new Dictionary<string, object>
  {
    ["street"] = "Sunset Blvd",       // Calle
    ["exterior"] = "104",             // Número exterior
    ["neighborhood"] = "Roma Norte",  // Colonia
    ["zip"] = "44940"                 // Código postal
    // NOTA: La ciudad, municipio, estado y país se llenan automáticamente
    // a partir del código postal, pero si quieres puedes especificar sus valores.
  }
});

// Recuerda guardar el customer.id en tu base de datos, lo
// necesitarás a la hora de emitirle una factura.

Crear un producto

var product = await facturapi.Product.CreateAsync(new Dictionary<string, object>
{
  ["description"] = "iPhone 8",
  ["product_key"] = "4319150114",   // Clave Producto/Servicio del catálogo del SAT. Para obtenerla más fácilmente
                              // utiliza nuestra herramienta de búsqueda de claves en tu dashboard.
  ["price"] = 345.60          // Precio con IVA incluído, a menos que se especifique lo contrario.
  // Por default, se creará un impuesto automáticamente a partir del precio, aplicando el IVA al 16%.
  // Pero puedes sobreescribir los impuestos aplicables a este producto especificando un arreglo de impuestos:
  // taxes: new Dictionary<string,object>[] {
  //   new Dictionary<string, object>
  //   {
  //     ["type"] = Facturapi.TaxType.IVA,
  //     ["rate"] = 0.16
  //   },
  //   new Dictionary<string, object>
  //   {
  //     ["type"] = Facturapi.TaxType.ISR,
  //     ["rate"] = 0.03666,
  //     ["withholding"] = true
  //   }
  // }
});

// Recuerda guardar el product.id para generar facturas que incluyan este producto.

Crear una factura

var invoice = await facturapi.Product.CreateAsync(new Dictionary<string, object>
{
  ["customer"] = "ID_DEL_CLIENTE",	  // Para clientes no registrados, puedes asignar
									  // un Dictionary con los datos del cliente.
  ["items"] = new Dictionary<string, object>[]
  { // Puedes agregar tantos items como necesites a este arreglo
    new Dictionary<string, object>
    {
      ["quantity"] = 2,               // Opcional. Default: 1.
      ["product"] = "ID_DEL_PRODUCTO" // Para productos no registrados, puedes asignar
                                      // un Dictionary con los datos del producto.
    }
  }
  ["payment_form"] = Facturapi.PaymentForm.DINERO_ELECTRONICO
});
Descargar factura
// Una vez creada la factura, puedes descargar el PDF y el XML comprimidos
// en un archivo ZIP.
var zipStream = await facturapi.Invoice.DownloadZipAsync(invoice.Id);
// O bien, el XML y el PDF por separado
var xmlStream = await facturapi.Invoice.DownloadXmlAsync(invoice.Id);
var pdfStream = await facturapi.Invoice.DownloadPdfAsync(invoice.Id);
// Y luego guardarlo en un archivo del disco duro
var file = new System.IO.FileStrem("C:\\route\\to\\save\\invoice.zip", FileMode.Create);
zipStream.CopyTo(file);
file.Close();
Envía la factura por correo electrónico
await facturapi.Invoice.SendByEmailAsync(invoice.Id);

Documentación

Hay muchas más cosas que puedes hacer con esta librería: listar, consultar, actualizar y eliminar clientes, productos y facturas.

Ve la documentación completa en http://docs.facturapi.io.

Ayuda

¿Encontraste un bug?

Por favor repórtalo en el Issue Tracker de este repo.

¿Quieres contribuir?

Mándanos un Pull Request! Agradecemos todo tipo de ayuda 😃

Contáctanos

contacto@facturapi.io

Product Compatible and additional computed target framework versions.
.NET net5.0 is compatible.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 is compatible. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net452 is compatible.  net46 was computed.  net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
4.1.0 509 12/6/2023
4.0.0 105 12/5/2023
3.2.0.26325 547 7/12/2023
3.1.0.22635 2,872 3/14/2022
3.0.0.37605 825 2/1/2022
2.2.0.35944 2,273 12/27/2021
2.1.1.35741 930 9/3/2021
2.1.0.33991 397 8/6/2021
2.0.1.35861 1,161 7/28/2021
2.0.0.29721 398 5/25/2021
1.1.1.1030 4,383 6/3/2020
1.1.0.11971 524 4/15/2020
1.0.3.6694 468 8/19/2020
1.0.2.17993 628 9/12/2019
1.0.1.12184 597 8/25/2019
1.0.0 2,159 2/22/2019
0.5.0.26977 923 9/6/2018
0.4.1.29699 908 9/5/2018
0.4.0.17852 1,055 5/12/2018
0.3.2.9471 999 4/2/2018
0.3.1 995 9/9/2017
0.2.2.39820 1,059 6/27/2017
0.2.1.34338 1,024 6/27/2017
0.1.4.28408 990 6/20/2017
0.1.4.27093 1,006 6/20/2017
0.1.3.2053 1,145 6/14/2017
0.1.2.40844 1,029 6/13/2017
0.1.1.34247 988 6/13/2017
0.1.0.2042 1,156 6/12/2017