Facturapi 4.6.0
dotnet add package Facturapi --version 4.6.0
NuGet\Install-Package Facturapi -Version 4.6.0
<PackageReference Include="Facturapi" Version="4.6.0" />
paket add Facturapi --version 4.6.0
#r "nuget: Facturapi, 4.6.0"
// Install Facturapi as a Cake Addin #addin nuget:?package=Facturapi&version=4.6.0 // Install Facturapi as a Cake Tool #tool nuget:?package=Facturapi&version=4.6.0
Facturapi .NET Library
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 | Versions 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. |
-
.NETCoreApp 3.1
- Newtonsoft.Json (>= 13.0.3)
-
.NETFramework 4.5.2
- Newtonsoft.Json (>= 13.0.3)
- System.Net.Http (>= 4.3.4)
-
.NETStandard 2.0
- Newtonsoft.Json (>= 13.0.3)
-
net5.0
- Newtonsoft.Json (>= 13.0.3)
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.6.0 | 973 | 10/22/2024 |
4.5.0 | 973 | 6/5/2024 |
4.4.0 | 804 | 5/26/2024 |
4.3.0 | 189 | 4/20/2024 |
4.2.0 | 381 | 3/13/2024 |
4.1.0 | 591 | 12/6/2023 |
4.0.0 | 143 | 12/5/2023 |
3.2.0.26325 | 588 | 7/12/2023 |
3.1.0.22635 | 3,715 | 3/14/2022 |
3.0.0.37605 | 897 | 2/1/2022 |
2.2.0.35944 | 2,711 | 12/27/2021 |
2.1.1.35741 | 973 | 9/3/2021 |
2.1.0.33991 | 431 | 8/6/2021 |
2.0.1.35861 | 1,196 | 7/28/2021 |
2.0.0.29721 | 437 | 5/25/2021 |
1.1.1.1030 | 4,429 | 6/3/2020 |
1.1.0.11971 | 554 | 4/15/2020 |
1.0.3.6694 | 501 | 8/19/2020 |
1.0.2.17993 | 661 | 9/12/2019 |
1.0.1.12184 | 631 | 8/25/2019 |
1.0.0 | 2,213 | 2/22/2019 |
0.5.0.26977 | 970 | 9/6/2018 |
0.4.1.29699 | 955 | 9/5/2018 |
0.4.0.17852 | 1,100 | 5/12/2018 |
0.3.2.9471 | 1,037 | 4/2/2018 |
0.3.1 | 1,028 | 9/9/2017 |
0.2.2.39820 | 1,099 | 6/27/2017 |
0.2.1.34338 | 1,066 | 6/27/2017 |
0.1.4.28408 | 1,025 | 6/20/2017 |
0.1.4.27093 | 1,041 | 6/20/2017 |
0.1.3.2053 | 1,185 | 6/14/2017 |
0.1.2.40844 | 1,065 | 6/13/2017 |
0.1.1.34247 | 1,030 | 6/13/2017 |
0.1.0.2042 | 1,196 | 6/12/2017 |