diff --git a/FiscalApi.Samples.NetFramework/CreditNoteInvoiceValueForm.Designer.cs b/FiscalApi.Samples.NetFramework/CreditNoteInvoiceValueForm.Designer.cs
new file mode 100644
index 0000000..1d1912a
--- /dev/null
+++ b/FiscalApi.Samples.NetFramework/CreditNoteInvoiceValueForm.Designer.cs
@@ -0,0 +1,39 @@
+namespace FiscalApi.Samples.NetFramework
+{
+ partial class CreditNoteInvoiceValueForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.components = new System.ComponentModel.Container();
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(800, 450);
+ this.Text = "CreditNoteInvoiceValueForm";
+ }
+
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/FiscalApi.Samples.NetFramework/CreditNoteInvoiceValueForm.cs b/FiscalApi.Samples.NetFramework/CreditNoteInvoiceValueForm.cs
new file mode 100644
index 0000000..1c5e7d9
--- /dev/null
+++ b/FiscalApi.Samples.NetFramework/CreditNoteInvoiceValueForm.cs
@@ -0,0 +1,12 @@
+using System.Windows.Forms;
+
+namespace FiscalApi.Samples.NetFramework
+{
+ public partial class CreditNoteInvoiceValueForm : Form
+ {
+ public CreditNoteInvoiceValueForm()
+ {
+ InitializeComponent();
+ }
+ }
+}
diff --git a/FiscalApi.Samples.NetFramework/DownloadRequestsForm.Designer.cs b/FiscalApi.Samples.NetFramework/DownloadRequestsForm.Designer.cs
new file mode 100644
index 0000000..f08a63a
--- /dev/null
+++ b/FiscalApi.Samples.NetFramework/DownloadRequestsForm.Designer.cs
@@ -0,0 +1,188 @@
+namespace FiscalApi.Samples.NetFramework
+{
+ partial class DownloadRequestsForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.button9 = new System.Windows.Forms.Button();
+ this.button1 = new System.Windows.Forms.Button();
+ this.button2 = new System.Windows.Forms.Button();
+ this.button3 = new System.Windows.Forms.Button();
+ this.button4 = new System.Windows.Forms.Button();
+ this.button5 = new System.Windows.Forms.Button();
+ this.button6 = new System.Windows.Forms.Button();
+ this.button7 = new System.Windows.Forms.Button();
+ this.button8 = new System.Windows.Forms.Button();
+ this.button10 = new System.Windows.Forms.Button();
+ this.SuspendLayout();
+ //
+ // button9
+ //
+ this.button9.Location = new System.Drawing.Point(12, 11);
+ this.button9.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button9.Name = "button9";
+ this.button9.Size = new System.Drawing.Size(189, 60);
+ this.button9.TabIndex = 9;
+ this.button9.Text = "Listar solicitudes";
+ this.button9.UseVisualStyleBackColor = true;
+ this.button9.Click += new System.EventHandler(this.button9_Click);
+ //
+ // button1
+ //
+ this.button1.Location = new System.Drawing.Point(12, 75);
+ this.button1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(189, 60);
+ this.button1.TabIndex = 10;
+ this.button1.Text = "Buscar solicitudes";
+ this.button1.UseVisualStyleBackColor = true;
+ this.button1.Click += new System.EventHandler(this.button1_Click);
+ //
+ // button2
+ //
+ this.button2.Location = new System.Drawing.Point(12, 139);
+ this.button2.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button2.Name = "button2";
+ this.button2.Size = new System.Drawing.Size(189, 60);
+ this.button2.TabIndex = 11;
+ this.button2.Text = "Obtener solicitud por ID";
+ this.button2.UseVisualStyleBackColor = true;
+ this.button2.Click += new System.EventHandler(this.button2_Click);
+ //
+ // button3
+ //
+ this.button3.Location = new System.Drawing.Point(12, 203);
+ this.button3.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button3.Name = "button3";
+ this.button3.Size = new System.Drawing.Size(189, 60);
+ this.button3.TabIndex = 12;
+ this.button3.Text = "Listar XMLs por ID de solicitud";
+ this.button3.UseVisualStyleBackColor = true;
+ this.button3.Click += new System.EventHandler(this.button3_Click);
+ //
+ // button4
+ //
+ this.button4.Location = new System.Drawing.Point(12, 267);
+ this.button4.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button4.Name = "button4";
+ this.button4.RightToLeft = System.Windows.Forms.RightToLeft.No;
+ this.button4.Size = new System.Drawing.Size(189, 60);
+ this.button4.TabIndex = 13;
+ this.button4.Text = "Listar meta-items por ID de solicitud";
+ this.button4.UseVisualStyleBackColor = true;
+ this.button4.Click += new System.EventHandler(this.button4_Click);
+ //
+ // button5
+ //
+ this.button5.Location = new System.Drawing.Point(207, 11);
+ this.button5.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button5.Name = "button5";
+ this.button5.Size = new System.Drawing.Size(189, 60);
+ this.button5.TabIndex = 14;
+ this.button5.Text = "Descargar paquete por ID de solicitud";
+ this.button5.UseVisualStyleBackColor = true;
+ this.button5.Click += new System.EventHandler(this.button5_Click);
+ //
+ // button6
+ //
+ this.button6.Location = new System.Drawing.Point(207, 75);
+ this.button6.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button6.Name = "button6";
+ this.button6.Size = new System.Drawing.Size(189, 60);
+ this.button6.TabIndex = 15;
+ this.button6.Text = "Descargar SAT request por ID de solicitud";
+ this.button6.UseVisualStyleBackColor = true;
+ this.button6.Click += new System.EventHandler(this.button6_Click);
+ //
+ // button7
+ //
+ this.button7.Location = new System.Drawing.Point(207, 139);
+ this.button7.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button7.Name = "button7";
+ this.button7.Size = new System.Drawing.Size(189, 60);
+ this.button7.TabIndex = 16;
+ this.button7.Text = "Descargar SAT response por ID de solicitud";
+ this.button7.UseVisualStyleBackColor = true;
+ this.button7.Click += new System.EventHandler(this.button7_Click);
+ //
+ // button8
+ //
+ this.button8.Location = new System.Drawing.Point(207, 203);
+ this.button8.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button8.Name = "button8";
+ this.button8.Size = new System.Drawing.Size(189, 60);
+ this.button8.TabIndex = 17;
+ this.button8.Text = "Crear solicitud";
+ this.button8.UseVisualStyleBackColor = true;
+ this.button8.Click += new System.EventHandler(this.button8_Click);
+ //
+ // button10
+ //
+ this.button10.Location = new System.Drawing.Point(207, 267);
+ this.button10.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button10.Name = "button10";
+ this.button10.Size = new System.Drawing.Size(189, 60);
+ this.button10.TabIndex = 18;
+ this.button10.Text = "Eliminar solicitud";
+ this.button10.UseVisualStyleBackColor = true;
+ this.button10.Click += new System.EventHandler(this.button10_Click);
+ //
+ // DownloadRequestsForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(416, 342);
+ this.Controls.Add(this.button10);
+ this.Controls.Add(this.button8);
+ this.Controls.Add(this.button7);
+ this.Controls.Add(this.button6);
+ this.Controls.Add(this.button5);
+ this.Controls.Add(this.button4);
+ this.Controls.Add(this.button3);
+ this.Controls.Add(this.button2);
+ this.Controls.Add(this.button1);
+ this.Controls.Add(this.button9);
+ this.Name = "DownloadRequestsForm";
+ this.Text = "DownloadRequestsForm";
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Button button9;
+ private System.Windows.Forms.Button button1;
+ private System.Windows.Forms.Button button2;
+ private System.Windows.Forms.Button button3;
+ private System.Windows.Forms.Button button4;
+ private System.Windows.Forms.Button button5;
+ private System.Windows.Forms.Button button6;
+ private System.Windows.Forms.Button button7;
+ private System.Windows.Forms.Button button8;
+ private System.Windows.Forms.Button button10;
+ }
+}
\ No newline at end of file
diff --git a/FiscalApi.Samples.NetFramework/DownloadRequestsForm.cs b/FiscalApi.Samples.NetFramework/DownloadRequestsForm.cs
new file mode 100644
index 0000000..ffd7c10
--- /dev/null
+++ b/FiscalApi.Samples.NetFramework/DownloadRequestsForm.cs
@@ -0,0 +1,252 @@
+using Fiscalapi.Common;
+using Fiscalapi.Models;
+using Fiscalapi.Services;
+using System;
+using System.Linq;
+using System.Windows.Forms;
+
+namespace FiscalApi.Samples.NetFramework
+{
+ public partial class DownloadRequestsForm : Form
+ {
+ private FiscalapiSettings _settings;
+ public DownloadRequestsForm(FiscalapiSettings settings)
+ {
+ InitializeComponent();
+ _settings = settings;
+ }
+
+ private async void button9_Click(object sender, EventArgs e)
+ {
+ // Obtener lista paginada de solicitudes de descarga masiva
+
+ // Create instance of FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Send request (pageNumber=1, pageSize=2)
+ var apiResponse = await fiscalApi.DownloadRequests.GetListAsync(1, 2);
+
+ // Check response
+ if (apiResponse.Succeeded)
+ {
+ foreach (var item in apiResponse.Data.Items)
+ MessageBox.Show($@"RFC solicitante: {item.RequesterTin}");
+ }
+ else
+ {
+ MessageBox.Show($@"HttpStatusCode: {apiResponse.HttpStatusCode}");
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button1_Click(object sender, EventArgs e)
+ {
+ // Buscar solicitud de descarga masiva por fecha de creación.
+ // Create instance of FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+ // Send request
+ var apiResponse = await fiscalApi.DownloadRequests.SearchAsync(DateTime.Now);
+
+ // Check response
+ if (apiResponse.Succeeded)
+ {
+ MessageBox.Show("OK");
+ foreach (var item in apiResponse.Data)
+ MessageBox.Show($@"Solicitud: {item.Id} - {item.SatInvoiceStatus.Description}");
+ }
+ else
+ {
+ MessageBox.Show($@"HttpStatusCode: {apiResponse.HttpStatusCode}");
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button2_Click(object sender, EventArgs e)
+ {
+ // Create instance of FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Send request
+ var apiResponse = await fiscalApi.DownloadRequests.GetByIdAsync("4e376d60-8ab0-47d7-a82d-eb13583aaf22");
+
+ // Check response
+ if (apiResponse.Succeeded)
+ {
+ var product = apiResponse.Data;
+ MessageBox.Show("OK");
+ MessageBox.Show($@"RFC solicitante: {product.RequesterTin}");
+ }
+ else
+ {
+ MessageBox.Show($@"HttpStatusCode: {apiResponse.HttpStatusCode}");
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button3_Click(object sender, EventArgs e)
+ {
+ // Obtener lista paginada de xmls descargados asociados a una solicitud de descarga.
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // request
+ var apiResponse = await fiscalApi.DownloadRequests.GetXmlsAsync("4e376d60-8ab0-47d7-a82d-eb13583aaf22");
+
+ // Check response
+ if (apiResponse.Succeeded)
+ {
+ foreach (var xml in apiResponse.Data.Items)
+ MessageBox.Show($@"Factura: Serie:{xml.Series} Folio:{xml.Number}");
+ }
+ else
+ {
+ MessageBox.Show($@"HttpStatusCode: {apiResponse.HttpStatusCode}");
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button4_Click(object sender, EventArgs e)
+ {
+ // Obtener lista paginada de metadatos descargados asociados a una solicitud de descarga.
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // request
+ var apiResponse =
+ await fiscalApi.DownloadRequests.GetMetadataItemsAsync("4e376d60-8ab0-47d7-a82d-eb13583aaf22");
+
+ // Check response
+ if (apiResponse.Succeeded)
+ {
+ foreach (var metadataItem in apiResponse.Data.Items)
+ MessageBox.Show($@" Factura UUID:{metadataItem.InvoiceUuid} Receptor:{metadataItem.RecipientName}");
+ }
+ else
+ {
+ MessageBox.Show($@"HttpStatusCode: {apiResponse.HttpStatusCode}");
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button5_Click(object sender, EventArgs e)
+ {
+ // Descargar paquete (.zip file) de una solicitud de descarga masiva.
+
+ var fiscalApi = FiscalApiClient.Create(_settings);
+ // Send request
+ var apiResponse =
+ await fiscalApi.DownloadRequests.DownloadPackageAsync("4e376d60-8ab0-47d7-a82d-eb13583aaf22");
+ // Check response
+ if (apiResponse.Succeeded)
+ {
+ Form1.WriteFileToDisk(apiResponse.Data.FirstOrDefault());
+ MessageBox.Show(@"Archivo descargado.");
+ }
+ else
+ {
+ MessageBox.Show($@"HttpStatusCode: {apiResponse.HttpStatusCode}");
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button6_Click(object sender, EventArgs e)
+ {
+ // Descargar SAT request (.xml file) de una solicitud de descarga masiva. (debug/testing)
+ var fiscalApi = FiscalApiClient.Create(_settings);
+ // Send request
+ var apiResponse =
+ await fiscalApi.DownloadRequests.DownloadSatRequestAsync("4e376d60-8ab0-47d7-a82d-eb13583aaf22");
+ // Check response
+ if (apiResponse.Succeeded)
+ {
+ Form1.WriteFileToDisk(apiResponse.Data);
+ MessageBox.Show(@"Archivo descargado.");
+ }
+ else
+ {
+ MessageBox.Show($@"HttpStatusCode: {apiResponse.HttpStatusCode}");
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button7_Click(object sender, EventArgs e)
+ {
+ // Descargar SAT response (.xml file) de una solicitud de descarga masiva. (debug/testing)
+ var fiscalApi = FiscalApiClient.Create(_settings);
+ // Send request
+ var apiResponse = await fiscalApi.DownloadRequests
+ .DownloadSatResponseAsync("4e376d60-8ab0-47d7-a82d-eb13583aaf22");
+
+ // Check response
+ if (apiResponse.Succeeded)
+ {
+ Form1.WriteFileToDisk(apiResponse.Data);
+ MessageBox.Show(@"Archivo descargado.");
+ }
+ else
+ {
+ MessageBox.Show($@"HttpStatusCode: {apiResponse.HttpStatusCode}");
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button8_Click(object sender, EventArgs e)
+ {
+ // Crear solicitud de descarga masiva
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear solicitud para descargar facturas de los últimos 5 días.
+ var request = new DownloadRequest
+ {
+ DownloadRuleId = "89aba371-3f9a-431c-a92d-dcb1e606fcfd",
+ DownloadRequestTypeId = "Manual",
+ StartDate = DateTime.Now.AddDays(-5),
+ EndDate = DateTime.Now,
+ };
+
+ // Send request
+ var apiResponse = await fiscalApi.DownloadRequests.CreateAsync(request);
+
+ // Check response
+ if (apiResponse.Succeeded)
+ {
+ MessageBox.Show(@"Solicitud creada.");
+ MessageBox.Show($@" {apiResponse.Data.Id}");
+ }
+ else
+ {
+ MessageBox.Show($@"HttpStatusCode: {apiResponse.HttpStatusCode}");
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button10_Click(object sender, EventArgs e)
+ {
+ // Eliminar solicitud de descarga masiva.
+
+ // Create instance of FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+ // Send request
+
+ var apiResponse = await fiscalApi.DownloadRequests.DeleteAsync("4763983b-f587-4497-8b87-7f3645589ac9");
+ // Check response
+ if (apiResponse.Succeeded)
+ {
+ MessageBox.Show($@"Solicitud borrada {apiResponse.Data}");
+ }
+ else
+ {
+ MessageBox.Show($@"HttpStatusCode: {apiResponse.HttpStatusCode}");
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+ }
+}
diff --git a/FiscalApi.Samples.NetFramework/DownloadRequestsForm.resx b/FiscalApi.Samples.NetFramework/DownloadRequestsForm.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/FiscalApi.Samples.NetFramework/DownloadRequestsForm.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/FiscalApi.Samples.NetFramework/DownloadRulesForm.Designer.cs b/FiscalApi.Samples.NetFramework/DownloadRulesForm.Designer.cs
new file mode 100644
index 0000000..b1803b1
--- /dev/null
+++ b/FiscalApi.Samples.NetFramework/DownloadRulesForm.Designer.cs
@@ -0,0 +1,131 @@
+namespace FiscalApi.Samples.NetFramework
+{
+ partial class DownloadRulesForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.button11 = new System.Windows.Forms.Button();
+ this.button1 = new System.Windows.Forms.Button();
+ this.button2 = new System.Windows.Forms.Button();
+ this.button3 = new System.Windows.Forms.Button();
+ this.button4 = new System.Windows.Forms.Button();
+ this.button5 = new System.Windows.Forms.Button();
+ this.SuspendLayout();
+ //
+ // button11
+ //
+ this.button11.Location = new System.Drawing.Point(12, 11);
+ this.button11.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button11.Name = "button11";
+ this.button11.Size = new System.Drawing.Size(189, 60);
+ this.button11.TabIndex = 11;
+ this.button11.Text = "Listar reglas";
+ this.button11.UseVisualStyleBackColor = true;
+ this.button11.Click += new System.EventHandler(this.button11_Click);
+ //
+ // button1
+ //
+ this.button1.Location = new System.Drawing.Point(12, 75);
+ this.button1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(189, 60);
+ this.button1.TabIndex = 12;
+ this.button1.Text = "Crear regla";
+ this.button1.UseVisualStyleBackColor = true;
+ this.button1.Click += new System.EventHandler(this.button1_Click);
+ //
+ // button2
+ //
+ this.button2.Location = new System.Drawing.Point(12, 139);
+ this.button2.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button2.Name = "button2";
+ this.button2.Size = new System.Drawing.Size(189, 60);
+ this.button2.TabIndex = 13;
+ this.button2.Text = "Listar reglas";
+ this.button2.UseVisualStyleBackColor = true;
+ this.button2.Click += new System.EventHandler(this.button2_Click);
+ //
+ // button3
+ //
+ this.button3.Location = new System.Drawing.Point(207, 11);
+ this.button3.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button3.Name = "button3";
+ this.button3.Size = new System.Drawing.Size(189, 60);
+ this.button3.TabIndex = 14;
+ this.button3.Text = "Crear regla de prueba";
+ this.button3.UseVisualStyleBackColor = true;
+ this.button3.Click += new System.EventHandler(this.button3_Click);
+ //
+ // button4
+ //
+ this.button4.Location = new System.Drawing.Point(207, 75);
+ this.button4.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button4.Name = "button4";
+ this.button4.Size = new System.Drawing.Size(189, 60);
+ this.button4.TabIndex = 15;
+ this.button4.Text = "Actualizar regla";
+ this.button4.UseVisualStyleBackColor = true;
+ this.button4.Click += new System.EventHandler(this.button4_Click);
+ //
+ // button5
+ //
+ this.button5.Location = new System.Drawing.Point(207, 139);
+ this.button5.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button5.Name = "button5";
+ this.button5.Size = new System.Drawing.Size(189, 60);
+ this.button5.TabIndex = 16;
+ this.button5.Text = "Eliminar regla";
+ this.button5.UseVisualStyleBackColor = true;
+ this.button5.Click += new System.EventHandler(this.button5_Click);
+ //
+ // DownloadRulesForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(414, 213);
+ this.Controls.Add(this.button5);
+ this.Controls.Add(this.button4);
+ this.Controls.Add(this.button3);
+ this.Controls.Add(this.button2);
+ this.Controls.Add(this.button1);
+ this.Controls.Add(this.button11);
+ this.Name = "DownloadRulesForm";
+ this.Text = "DownloadRulesForm";
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Button button11;
+ private System.Windows.Forms.Button button1;
+ private System.Windows.Forms.Button button2;
+ private System.Windows.Forms.Button button3;
+ private System.Windows.Forms.Button button4;
+ private System.Windows.Forms.Button button5;
+ }
+}
\ No newline at end of file
diff --git a/FiscalApi.Samples.NetFramework/DownloadRulesForm.cs b/FiscalApi.Samples.NetFramework/DownloadRulesForm.cs
new file mode 100644
index 0000000..fc08558
--- /dev/null
+++ b/FiscalApi.Samples.NetFramework/DownloadRulesForm.cs
@@ -0,0 +1,175 @@
+using Fiscalapi.Common;
+using Fiscalapi.Models;
+using Fiscalapi.Services;
+using System;
+using System.Windows.Forms;
+
+namespace FiscalApi.Samples.NetFramework
+{
+ public partial class DownloadRulesForm : Form
+ {
+ private FiscalapiSettings _settings;
+ public DownloadRulesForm(FiscalapiSettings settings)
+ {
+ InitializeComponent();
+ _settings = settings;
+ }
+
+ private async void button11_Click(object sender, EventArgs e)
+ {
+ // Obtener lista paginada de reglas de descarga masiva
+
+ // Create instance of FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Send request (pageNumber=1, pageSize=2)
+ var apiResponse = await fiscalApi.DownloadRules.GetListAsync(1, 2);
+
+ // Check response
+ if (apiResponse.Succeeded)
+ {
+ foreach (var item in apiResponse.Data.Items)
+ MessageBox.Show($@"Producto: {item.Description}");
+ }
+ else
+ {
+ MessageBox.Show($@"HttpStatusCode: {apiResponse.HttpStatusCode}");
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button2_Click(object sender, EventArgs e)
+ {
+ // Create instance of FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Send request
+ var apiResponse = await fiscalApi.DownloadRules.GetByIdAsync("59ccad08-5d3a-48ab-95fa-b7f80f9b00c7");
+
+ // Check response
+ if (apiResponse.Succeeded)
+ {
+ var product = apiResponse.Data;
+ MessageBox.Show("OK");
+ MessageBox.Show($@"Regla: {product.Description}");
+ }
+ else
+ {
+ MessageBox.Show($@"HttpStatusCode: {apiResponse.HttpStatusCode}");
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button1_Click(object sender, EventArgs e)
+ {
+ // Create instance of FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Regla para descargar CFDI recibidos y vigentes.
+ var request = new DownloadRule
+ {
+ PersonId = "b0c1cf6c-153a-464e-99df-5741f45d6695", //Persona que recibió los CFDI
+ Description = "Regla descarga demo ...",
+ SatQueryTypeId = "CFDI",
+ DownloadTypeId = "Recibidos",
+ SatInvoiceStatusId = "Vigente",
+ };
+
+ // Send request
+ var apiResponse = await fiscalApi.DownloadRules.CreateAsync(request);
+
+ // Check response
+
+ if (apiResponse.Succeeded)
+ {
+ MessageBox.Show(@"Regla creada.");
+ MessageBox.Show($@" {apiResponse.Data.Description}");
+ }
+ else
+ {
+ MessageBox.Show($@"HttpStatusCode: {apiResponse.HttpStatusCode}");
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button3_Click(object sender, EventArgs e)
+ {
+ // Create instance of FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Send request
+ var apiResponse = await fiscalApi.DownloadRules.CreateTestRuleAsync();
+
+ // Check response
+ if (apiResponse.Succeeded)
+ {
+ MessageBox.Show(@"Regla creada.");
+ MessageBox.Show($@" {apiResponse.Data.Id}");
+ }
+ else
+ {
+ MessageBox.Show($@"HttpStatusCode: {apiResponse.HttpStatusCode}");
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button4_Click(object sender, EventArgs e)
+ {
+ // Actualizar regla de descarga masiva
+
+ // Create instance of FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ var id = "8d5905f3-d7e1-46b7-b0f4-9f3a2528bb56";
+
+ // Actualizar descripción.
+ var request = new DownloadRule
+ {
+ Id = id,
+ Description = "Regla descarga actualizada",
+ };
+
+ // Send request
+ var apiResponse = await fiscalApi.DownloadRules.UpdateAsync(id, request);
+
+ // Check response
+
+ if (apiResponse.Succeeded)
+ {
+ MessageBox.Show(@"Regla actualizada.");
+ MessageBox.Show($@" {apiResponse.Data.Description}");
+ }
+ else
+ {
+ MessageBox.Show($@"HttpStatusCode: {apiResponse.HttpStatusCode}");
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button5_Click(object sender, EventArgs e)
+ {
+ // Create instance of FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Send request
+ var apiResponse = await fiscalApi.DownloadRules.DeleteAsync("2029b977-31d5-4911-a7ba-23bda12e97f2");
+
+ // Check response
+ if (apiResponse.Succeeded)
+ {
+ MessageBox.Show($@"Regla borrada {apiResponse.Data}");
+ }
+ else
+ {
+ MessageBox.Show($@"HttpStatusCode: {apiResponse.HttpStatusCode}");
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+ }
+}
diff --git a/FiscalApi.Samples.NetFramework/DownloadRulesForm.resx b/FiscalApi.Samples.NetFramework/DownloadRulesForm.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/FiscalApi.Samples.NetFramework/DownloadRulesForm.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/FiscalApi.Samples.NetFramework/EgressInvoiceReferenceForm.Designer.cs b/FiscalApi.Samples.NetFramework/EgressInvoiceReferenceForm.Designer.cs
new file mode 100644
index 0000000..49e9146
--- /dev/null
+++ b/FiscalApi.Samples.NetFramework/EgressInvoiceReferenceForm.Designer.cs
@@ -0,0 +1,103 @@
+namespace FiscalApi.Samples.NetFramework
+{
+ partial class EgressInvoiceReferenceForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.groupBox1 = new System.Windows.Forms.GroupBox();
+ this.button3 = new System.Windows.Forms.Button();
+ this.button2 = new System.Windows.Forms.Button();
+ this.button1 = new System.Windows.Forms.Button();
+ this.groupBox1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // groupBox1
+ //
+ this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.groupBox1.Controls.Add(this.button3);
+ this.groupBox1.Controls.Add(this.button2);
+ this.groupBox1.Controls.Add(this.button1);
+ this.groupBox1.Location = new System.Drawing.Point(13, 12);
+ this.groupBox1.Name = "groupBox1";
+ this.groupBox1.Size = new System.Drawing.Size(207, 234);
+ this.groupBox1.TabIndex = 1;
+ this.groupBox1.TabStop = false;
+ this.groupBox1.Text = "Facturas de egreso";
+ //
+ // button3
+ //
+ this.button3.Location = new System.Drawing.Point(7, 154);
+ this.button3.Name = "button3";
+ this.button3.Size = new System.Drawing.Size(189, 60);
+ this.button3.TabIndex = 2;
+ this.button3.Text = "Factura egreso nota de crédito";
+ this.button3.UseVisualStyleBackColor = true;
+ this.button3.Click += new System.EventHandler(this.button3_Click);
+ //
+ // button2
+ //
+ this.button2.Location = new System.Drawing.Point(7, 88);
+ this.button2.Name = "button2";
+ this.button2.Size = new System.Drawing.Size(189, 60);
+ this.button2.TabIndex = 1;
+ this.button2.Text = "Factura egreso importe menor al CFDI de egreso";
+ this.button2.UseVisualStyleBackColor = true;
+ this.button2.Click += new System.EventHandler(this.button2_Click);
+ //
+ // button1
+ //
+ this.button1.Location = new System.Drawing.Point(7, 22);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(189, 60);
+ this.button1.TabIndex = 0;
+ this.button1.Text = "Factura egreso devolución";
+ this.button1.UseVisualStyleBackColor = true;
+ this.button1.Click += new System.EventHandler(this.button1_Click);
+ //
+ // EgressInvoiceReferenceForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(232, 259);
+ this.Controls.Add(this.groupBox1);
+ this.Name = "EgressInvoiceReferenceForm";
+ this.Text = "EgressInvoiceReferenceForm";
+ this.groupBox1.ResumeLayout(false);
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.GroupBox groupBox1;
+ private System.Windows.Forms.Button button3;
+ private System.Windows.Forms.Button button2;
+ private System.Windows.Forms.Button button1;
+ }
+}
\ No newline at end of file
diff --git a/FiscalApi.Samples.NetFramework/EgressInvoiceReferenceForm.cs b/FiscalApi.Samples.NetFramework/EgressInvoiceReferenceForm.cs
new file mode 100644
index 0000000..263edc9
--- /dev/null
+++ b/FiscalApi.Samples.NetFramework/EgressInvoiceReferenceForm.cs
@@ -0,0 +1,233 @@
+using Fiscalapi.Common;
+using Fiscalapi.Models;
+using Fiscalapi.Services;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Windows.Forms;
+
+namespace FiscalApi.Samples.NetFramework
+{
+ public partial class EgressInvoiceReferenceForm : Form
+ {
+ private FiscalapiSettings _settings;
+
+ public EgressInvoiceReferenceForm(FiscalapiSettings settings)
+ {
+ _settings = settings;
+ InitializeComponent();
+ }
+
+ private async void button1_Click(object sender, EventArgs e)
+ {
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ var relatedInvoices = new List()
+ {
+ new RelatedInvoice { RelationshipTypeCode = "03", Uuid = "8335e91e-5c43-4cef-9ed0-b4985ddc2ca8" }
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ Id = "2f3c65f3-ed02-452f-944c-97a47010df5c",
+ Quantity = 1
+ }
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "99",
+ CurrencyCode = "MXN",
+ TypeCode = "E",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PUE",
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button2_Click(object sender, EventArgs e)
+ {
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ var relatedInvoices = new List()
+ {
+ new RelatedInvoice { RelationshipTypeCode = "01", Uuid = "8335e91e-5c43-4cef-9ed0-b4985ddc2ca8" }
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ Id = "2f3c65f3-ed02-452f-944c-97a47010df5c",
+ Description = "10% del saldo de todos los CFDI relacionados",
+ Quantity = 1,
+ UnitPrice = 10
+ }
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "99",
+ CurrencyCode = "MXN",
+ TypeCode = "E",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PUE",
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button3_Click(object sender, EventArgs e)
+ {
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ var relatedInvoices = new List()
+ {
+ new RelatedInvoice
+ {
+ RelationshipTypeCode = "01",
+ Uuid = "8335e91e-5c43-4cef-9ed0-b4985ddc2ca8"
+ }
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ Id = "2f3c65f3-ed02-452f-944c-97a47010df5c",
+ Description = "10% del saldo de todos los CFDI relacionados",
+ Quantity = 0.50m,
+ }
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "99",
+ CurrencyCode = "MXN",
+ TypeCode = "E",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PUE",
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+ }
+}
diff --git a/FiscalApi.Samples.NetFramework/EgressInvoiceReferenceForm.resx b/FiscalApi.Samples.NetFramework/EgressInvoiceReferenceForm.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/FiscalApi.Samples.NetFramework/EgressInvoiceReferenceForm.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/FiscalApi.Samples.NetFramework/EgressInvoiceValueForm.Designer.cs b/FiscalApi.Samples.NetFramework/EgressInvoiceValueForm.Designer.cs
new file mode 100644
index 0000000..c0eecd5
--- /dev/null
+++ b/FiscalApi.Samples.NetFramework/EgressInvoiceValueForm.Designer.cs
@@ -0,0 +1,103 @@
+namespace FiscalApi.Samples.NetFramework
+{
+ partial class EgressInvoiceValueForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.groupBox1 = new System.Windows.Forms.GroupBox();
+ this.button3 = new System.Windows.Forms.Button();
+ this.button2 = new System.Windows.Forms.Button();
+ this.button1 = new System.Windows.Forms.Button();
+ this.groupBox1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // groupBox1
+ //
+ this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.groupBox1.Controls.Add(this.button3);
+ this.groupBox1.Controls.Add(this.button2);
+ this.groupBox1.Controls.Add(this.button1);
+ this.groupBox1.Location = new System.Drawing.Point(13, 13);
+ this.groupBox1.Name = "groupBox1";
+ this.groupBox1.Size = new System.Drawing.Size(207, 234);
+ this.groupBox1.TabIndex = 0;
+ this.groupBox1.TabStop = false;
+ this.groupBox1.Text = "Facturas de ingreso";
+ //
+ // button3
+ //
+ this.button3.Location = new System.Drawing.Point(7, 154);
+ this.button3.Name = "button3";
+ this.button3.Size = new System.Drawing.Size(189, 60);
+ this.button3.TabIndex = 2;
+ this.button3.Text = "Factura egreso nota de crédito";
+ this.button3.UseVisualStyleBackColor = true;
+ this.button3.Click += new System.EventHandler(this.button3_Click);
+ //
+ // button2
+ //
+ this.button2.Location = new System.Drawing.Point(7, 88);
+ this.button2.Name = "button2";
+ this.button2.Size = new System.Drawing.Size(189, 60);
+ this.button2.TabIndex = 1;
+ this.button2.Text = "Factura egreso importe menor al CFDI de egreso";
+ this.button2.UseVisualStyleBackColor = true;
+ this.button2.Click += new System.EventHandler(this.button2_Click);
+ //
+ // button1
+ //
+ this.button1.Location = new System.Drawing.Point(7, 22);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(189, 60);
+ this.button1.TabIndex = 0;
+ this.button1.Text = "Factura egreso devolución";
+ this.button1.UseVisualStyleBackColor = true;
+ this.button1.Click += new System.EventHandler(this.button1_Click);
+ //
+ // EgressInvoiceValueForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(232, 259);
+ this.Controls.Add(this.groupBox1);
+ this.Name = "EgressInvoiceValueForm";
+ this.Text = "EgressInvoiceValueForm";
+ this.groupBox1.ResumeLayout(false);
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.GroupBox groupBox1;
+ private System.Windows.Forms.Button button3;
+ private System.Windows.Forms.Button button2;
+ private System.Windows.Forms.Button button1;
+ }
+}
\ No newline at end of file
diff --git a/FiscalApi.Samples.NetFramework/EgressInvoiceValueForm.cs b/FiscalApi.Samples.NetFramework/EgressInvoiceValueForm.cs
new file mode 100644
index 0000000..114c6a1
--- /dev/null
+++ b/FiscalApi.Samples.NetFramework/EgressInvoiceValueForm.cs
@@ -0,0 +1,351 @@
+using Fiscalapi.Common;
+using Fiscalapi.Models;
+using Fiscalapi.Services;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Windows.Forms;
+
+namespace FiscalApi.Samples.NetFramework
+{
+ public partial class EgressInvoiceValueForm : Form
+ {
+ private FiscalapiSettings _settings;
+
+ public EgressInvoiceValueForm(FiscalapiSettings settings)
+ {
+ InitializeComponent();
+ _settings = settings;
+ }
+
+ private async void button1_Click(object sender, EventArgs e)
+ {
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "601",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "CACX7605101P8",
+ LegalName = "XOCHILT CASAS CHAVEZ",
+ ZipCode = "36257",
+ TaxRegimeCode = "612",
+ CfdiUseCode = "G02",
+ Email = "someone@somewhere.com"
+ };
+
+ var relatedInvoices = new List()
+ {
+ new RelatedInvoice { RelationshipTypeCode = "03", Uuid = "61b2f6b4-f588-44d3-aec7-85cf146c33bd" }
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ ItemCode = "84111506",
+ Quantity = 3,
+ UnitOfMeasurementCode = "ACT",
+ Description = "Leche",
+ UnitPrice = 1572.0m,
+ TaxObjectCode = "02",
+ ItemSku = "84111506",
+ Discount = 0.0m,
+ ItemTaxes = new List()
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.000000m,
+ TaxFlagCode = "T"
+ }
+ }
+ }
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "99",
+ CurrencyCode = "MXN",
+ TypeCode = "E",
+ ExpeditionZipCode = "99039",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PUE",
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button2_Click(object sender, EventArgs e)
+ {
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "601",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "URE180429TM6",
+ LegalName = "UNIVERSIDAD ROBOTICA ESPAÑOLA",
+ ZipCode = "86991",
+ TaxRegimeCode = "601",
+ CfdiUseCode = "G02",
+ Email = "someone@somewhere.com"
+ };
+
+ var relatedInvoices = new List()
+ {
+ new RelatedInvoice { RelationshipTypeCode = "01", Uuid = "1fac4464-1111-0000-1111-cd37179db12e" },
+ new RelatedInvoice { RelationshipTypeCode = "01", Uuid = "628b6113-d831-455a-907e-097821c2f48c" }
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ ItemCode = "84111506",
+ Quantity = 1.0m,
+ UnitOfMeasurementCode = "ACT",
+ Description = "10% del saldo de todos los CFDI relacionados",
+ UnitPrice = 35.0m,
+ TaxObjectCode = "01",
+ ItemSku = "84111506",
+ Discount = 0.0m
+ }
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ TypeCode = "E",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PUE",
+ ExportCode = "01"
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button3_Click(object sender, EventArgs e)
+ {
+ // https://docs.fiscalapi.com/credentials-info
+
+
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "601",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ ZipCode = "42501",
+ TaxRegimeCode = "601",
+ CfdiUseCode = "CP01",
+ Email = "someone@somewhere.com"
+ };
+
+ var relatedInvoices = new List()
+ {
+ new RelatedInvoice { RelationshipTypeCode = "01", Uuid = "1fac4464-1111-0000-1111-cd37179db12e" }
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ ItemCode = "84111506",
+ Quantity = 1.0m,
+ UnitOfMeasurementCode = "ACT",
+ Description = "NC por devolución",
+ UnitPrice = 10.0m,
+ TaxObjectCode = "02",
+ ItemSku = "84111506",
+ Discount = 0.0m,
+ ItemTaxes = new List()
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ }
+ }
+ }
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ TypeCode = "E",
+ ExpeditionZipCode = "45610",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PUE",
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+ }
+}
diff --git a/FiscalApi.Samples.NetFramework/EgressInvoiceValueForm.resx b/FiscalApi.Samples.NetFramework/EgressInvoiceValueForm.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/FiscalApi.Samples.NetFramework/EgressInvoiceValueForm.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/FiscalApi.Samples.NetFramework/EmployeeForm.Designer.cs b/FiscalApi.Samples.NetFramework/EmployeeForm.Designer.cs
new file mode 100644
index 0000000..1878f61
--- /dev/null
+++ b/FiscalApi.Samples.NetFramework/EmployeeForm.Designer.cs
@@ -0,0 +1,103 @@
+namespace FiscalApi.Samples.NetFramework
+{
+ partial class EmployeeForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.button9 = new System.Windows.Forms.Button();
+ this.button1 = new System.Windows.Forms.Button();
+ this.button2 = new System.Windows.Forms.Button();
+ this.button3 = new System.Windows.Forms.Button();
+ this.SuspendLayout();
+ //
+ // button9
+ //
+ this.button9.Location = new System.Drawing.Point(12, 203);
+ this.button9.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button9.Name = "button9";
+ this.button9.Size = new System.Drawing.Size(189, 60);
+ this.button9.TabIndex = 9;
+ this.button9.Text = "Eliminar datos de empleado";
+ this.button9.UseVisualStyleBackColor = true;
+ this.button9.Click += new System.EventHandler(this.button9_Click);
+ //
+ // button1
+ //
+ this.button1.Location = new System.Drawing.Point(12, 139);
+ this.button1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(189, 60);
+ this.button1.TabIndex = 10;
+ this.button1.Text = "Actualizar datos de empleado";
+ this.button1.UseVisualStyleBackColor = true;
+ this.button1.Click += new System.EventHandler(this.button1_Click);
+ //
+ // button2
+ //
+ this.button2.Location = new System.Drawing.Point(12, 75);
+ this.button2.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button2.Name = "button2";
+ this.button2.Size = new System.Drawing.Size(189, 60);
+ this.button2.TabIndex = 11;
+ this.button2.Text = "Crear datos de empleado";
+ this.button2.UseVisualStyleBackColor = true;
+ this.button2.Click += new System.EventHandler(this.button2_Click);
+ //
+ // button3
+ //
+ this.button3.Location = new System.Drawing.Point(12, 11);
+ this.button3.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button3.Name = "button3";
+ this.button3.Size = new System.Drawing.Size(189, 60);
+ this.button3.TabIndex = 12;
+ this.button3.Text = "Obtener datos de empleado";
+ this.button3.UseVisualStyleBackColor = true;
+ this.button3.Click += new System.EventHandler(this.button3_Click);
+ //
+ // EmployeeForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(215, 282);
+ this.Controls.Add(this.button3);
+ this.Controls.Add(this.button2);
+ this.Controls.Add(this.button1);
+ this.Controls.Add(this.button9);
+ this.Name = "EmployeeForm";
+ this.Text = "EmployeeForm";
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Button button9;
+ private System.Windows.Forms.Button button1;
+ private System.Windows.Forms.Button button2;
+ private System.Windows.Forms.Button button3;
+ }
+}
\ No newline at end of file
diff --git a/FiscalApi.Samples.NetFramework/EmployeeForm.cs b/FiscalApi.Samples.NetFramework/EmployeeForm.cs
new file mode 100644
index 0000000..c8c8908
--- /dev/null
+++ b/FiscalApi.Samples.NetFramework/EmployeeForm.cs
@@ -0,0 +1,126 @@
+using Fiscalapi.Common;
+using Fiscalapi.Models;
+using Fiscalapi.Services;
+using Newtonsoft.Json;
+using System;
+using System.Windows.Forms;
+
+namespace FiscalApi.Samples.NetFramework
+{
+ public partial class EmployeeForm : Form
+ {
+ private FiscalapiSettings _settings;
+ public EmployeeForm(FiscalapiSettings settings)
+ {
+ InitializeComponent();
+ _settings = settings;
+ }
+
+ private async void button3_Click(object sender, EventArgs e)
+ {
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ var apiResponse = await fiscalApi.Persons.Employee.GetByIdAsync("0e82a655-5f0c-4e07-abab-8f322e4123ef");
+
+ if (apiResponse.Succeeded)
+ {
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data));
+ }
+ }
+
+ private async void button2_Click(object sender, EventArgs e)
+ {
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ string personId = "bd199ed8-02ef-47c0-919c-9479dd8ecae7";
+ EmployeeData requestModel = new EmployeeData()
+ {
+ EmployerPersonId = "0e82a655-5f0c-4e07-abab-8f322e4123ef",
+ EmployeePersonId = personId,
+ EmployeeNumber = "12345",
+ SatContractTypeId = "01",
+ SatTaxRegimeTypeId = "02",
+ SatPaymentPeriodicityId = "04",
+ SatPayrollStateId = "JAL",
+ SocialSecurityNumber = "1234567890",
+ LaborRelationStartDate = DateTime.Parse("2023-01-15T00:00:00"),
+ SatWorkdayTypeId = "01",
+ SatJobRiskId = "1",
+ SatBankId = "002",
+ SatUnionizedStatusId = "No",
+ Department = "Recursos humanos",
+ Position = "Analista de nóminas",
+ Seniority = "7Y3M1W",
+ BankAccount = "12345678900987654321",
+ BaseSalaryForContributions = 490.22m,
+ IntegratedDailySalary = 146.47m,
+ SubcontractorRfc = null,
+ TimePercentage = 0
+ };
+ var apiResponse = await fiscalApi.Persons.Employee.CreateAsync(requestModel);
+
+ if (apiResponse.Succeeded)
+ {
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ }
+
+ private async void button1_Click(object sender, EventArgs e)
+ {
+ var fiscalapi = FiscalApiClient.Create(_settings);
+ string personId = "bd199ed8-02ef-47c0-919c-9479dd8ecae7";
+ EmployeeData requestModel = new EmployeeData()
+ {
+ EmployerPersonId = "0e82a655-5f0c-4e07-abab-8f322e4123ef",
+ EmployeePersonId = personId,
+ EmployeeNumber = "09987675",
+ SatContractTypeId = "01",
+ SatTaxRegimeTypeId = "05",
+ SatPaymentPeriodicityId = "01",
+ SatPayrollStateId = "JAL",
+ SocialSecurityNumber = "589685956948945",
+ LaborRelationStartDate = DateTime.Parse("2023-01-15T00:00:00"),
+ SatWorkdayTypeId = "01",
+ SatJobRiskId = "1",
+ SatBankId = "012",
+ SatUnionizedStatusId = "No",
+ Department = "RRHH",
+ Position = "Analista de pagos",
+ Seniority = "7Y3M1W",
+ BankAccount = "585887494956848",
+ BaseSalaryForContributions = 490.22m,
+ IntegratedDailySalary = 146.47m,
+ SubcontractorRfc = null,
+ TimePercentage = 0
+ };
+
+ var apiResponse = await fiscalapi.Persons.Employee.UpdateAsync(requestModel);
+
+ if (apiResponse.Succeeded)
+ {
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button9_Click(object sender, EventArgs e)
+ {
+ var fiscalapi = FiscalApiClient.Create(_settings);
+ string personId = "bd199ed8-02ef-47c0-919c-9479dd8ecae7";
+
+ var apiResponse = await fiscalapi.Persons.Employee.DeleteAsync(personId);
+
+ if (apiResponse.Succeeded)
+ {
+ MessageBox.Show(apiResponse.Data.ToString());
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+ }
+}
diff --git a/FiscalApi.Samples.NetFramework/EmployeeForm.resx b/FiscalApi.Samples.NetFramework/EmployeeForm.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/FiscalApi.Samples.NetFramework/EmployeeForm.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/FiscalApi.Samples.NetFramework/EmployerForm.Designer.cs b/FiscalApi.Samples.NetFramework/EmployerForm.Designer.cs
new file mode 100644
index 0000000..de19bf5
--- /dev/null
+++ b/FiscalApi.Samples.NetFramework/EmployerForm.Designer.cs
@@ -0,0 +1,103 @@
+namespace FiscalApi.Samples.NetFramework
+{
+ partial class EmployerForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.button9 = new System.Windows.Forms.Button();
+ this.button1 = new System.Windows.Forms.Button();
+ this.button2 = new System.Windows.Forms.Button();
+ this.button3 = new System.Windows.Forms.Button();
+ this.SuspendLayout();
+ //
+ // button9
+ //
+ this.button9.Location = new System.Drawing.Point(3, 11);
+ this.button9.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button9.Name = "button9";
+ this.button9.Size = new System.Drawing.Size(189, 60);
+ this.button9.TabIndex = 9;
+ this.button9.Text = "Obtener datos de empleador";
+ this.button9.UseVisualStyleBackColor = true;
+ this.button9.Click += new System.EventHandler(this.button9_Click);
+ //
+ // button1
+ //
+ this.button1.Location = new System.Drawing.Point(3, 75);
+ this.button1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(189, 60);
+ this.button1.TabIndex = 10;
+ this.button1.Text = "Crear datos de empleador";
+ this.button1.UseVisualStyleBackColor = true;
+ this.button1.Click += new System.EventHandler(this.button1_Click);
+ //
+ // button2
+ //
+ this.button2.Location = new System.Drawing.Point(3, 139);
+ this.button2.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button2.Name = "button2";
+ this.button2.Size = new System.Drawing.Size(189, 60);
+ this.button2.TabIndex = 11;
+ this.button2.Text = "Actualizar datos de empleador";
+ this.button2.UseVisualStyleBackColor = true;
+ this.button2.Click += new System.EventHandler(this.button2_Click);
+ //
+ // button3
+ //
+ this.button3.Location = new System.Drawing.Point(3, 203);
+ this.button3.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button3.Name = "button3";
+ this.button3.Size = new System.Drawing.Size(189, 60);
+ this.button3.TabIndex = 12;
+ this.button3.Text = "Eliminar datos de empleador";
+ this.button3.UseVisualStyleBackColor = true;
+ this.button3.Click += new System.EventHandler(this.button3_Click);
+ //
+ // EmployerForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(198, 272);
+ this.Controls.Add(this.button3);
+ this.Controls.Add(this.button2);
+ this.Controls.Add(this.button1);
+ this.Controls.Add(this.button9);
+ this.Name = "EmployerForm";
+ this.Text = "EmployerForm";
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Button button9;
+ private System.Windows.Forms.Button button1;
+ private System.Windows.Forms.Button button2;
+ private System.Windows.Forms.Button button3;
+ }
+}
\ No newline at end of file
diff --git a/FiscalApi.Samples.NetFramework/EmployerForm.cs b/FiscalApi.Samples.NetFramework/EmployerForm.cs
new file mode 100644
index 0000000..9053ea3
--- /dev/null
+++ b/FiscalApi.Samples.NetFramework/EmployerForm.cs
@@ -0,0 +1,93 @@
+using Fiscalapi.Common;
+using Fiscalapi.Models;
+using Fiscalapi.Services;
+using Newtonsoft.Json;
+using System;
+using System.Windows.Forms;
+
+namespace FiscalApi.Samples.NetFramework
+{
+ public partial class EmployerForm : Form
+ {
+ private FiscalapiSettings _settings;
+ public EmployerForm(FiscalapiSettings settings)
+ {
+ InitializeComponent();
+ _settings = settings;
+ }
+
+ private async void button9_Click(object sender, EventArgs e)
+ {
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ var apiResponse = await fiscalApi.Persons.Employer.GetByIdAsync("0e82a655-5f0c-4e07-abab-8f322e4123ef");
+
+ if (apiResponse.Succeeded)
+ {
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ }
+
+ private async void button1_Click(object sender, EventArgs e)
+ {
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ string personId = "bd199ed8-02ef-47c0-919c-9479dd8ecae7";
+ EmployerData requestModel = new EmployerData()
+ {
+ PersonId = personId,
+ EmployerRegistration = "abc1234567890",
+ OriginEmployerTin = "MEQA951024HC9",
+ OwnResourceAmount = 10000.0M
+ };
+ var apiResponse = await fiscalApi.Persons.Employer.CreateAsync(requestModel);
+
+ if (apiResponse.Succeeded)
+ {
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ }
+
+ private async void button2_Click(object sender, EventArgs e)
+ {
+ var fiscalapi = FiscalApiClient.Create(_settings);
+ string personId = "bd199ed8-02ef-47c0-919c-9479dd8ecae7";
+ EmployerData requestModel = new EmployerData()
+ {
+ PersonId = personId,
+ EmployerRegistration = "xyz0987654321",
+ OriginEmployerTin = "URE180429TM6",
+ OwnResourceAmount = 98.5M,
+ SatFundSourceId = "IF"
+ };
+
+ var apiResponse = await fiscalapi.Persons.Employer.UpdateAsync(requestModel);
+
+ if (apiResponse.Succeeded)
+ {
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button3_Click(object sender, EventArgs e)
+ {
+ var fiscalapi = FiscalApiClient.Create(_settings);
+ string personId = "bd199ed8-02ef-47c0-919c-9479dd8ecae7";
+
+ var apiResponse = await fiscalapi.Persons.Employer.DeleteAsync(personId);
+
+ if (apiResponse.Succeeded)
+ {
+ MessageBox.Show(apiResponse.Data.ToString());
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+ }
+}
diff --git a/FiscalApi.Samples.NetFramework/EmployerForm.resx b/FiscalApi.Samples.NetFramework/EmployerForm.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/FiscalApi.Samples.NetFramework/EmployerForm.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/FiscalApi.Samples.NetFramework/FiscalApi.Samples.NetFramework.csproj b/FiscalApi.Samples.NetFramework/FiscalApi.Samples.NetFramework.csproj
index 9d0099e..ab374bb 100644
--- a/FiscalApi.Samples.NetFramework/FiscalApi.Samples.NetFramework.csproj
+++ b/FiscalApi.Samples.NetFramework/FiscalApi.Samples.NetFramework.csproj
@@ -33,8 +33,8 @@
4
-
- ..\packages\Fiscalapi.4.0.270\lib\net461\Fiscalapi.dll
+
+ ..\packages\Fiscalapi.4.0.360\lib\net461\Fiscalapi.dll
..\packages\Microsoft.Bcl.AsyncInterfaces.8.0.0\lib\netstandard2.0\Microsoft.Bcl.AsyncInterfaces.dll
@@ -108,17 +108,168 @@
+
+ Form
+
+
+ CreditNoteInvoiceValueForm.cs
+
+
+ Form
+
+
+ DownloadRequestsForm.cs
+
+
+ Form
+
+
+ DownloadRulesForm.cs
+
+
+ Form
+
+
+ EgressInvoiceReferenceForm.cs
+
+
+ Form
+
+
+ EgressInvoiceValueForm.cs
+
+
+ Form
+
+
+ EmployeeForm.cs
+
+
+ Form
+
+
+ EmployerForm.cs
+
Form
Form1.cs
+
+ Form
+
+
+ IncomeInvoiceReferenceForm.cs
+
+
+ Form
+
+
+ IncomeInvoiceValueForm.cs
+
+
+ Form
+
+
+ InvoiceReferenceForm.cs
+
+
+ Form
+
+
+ InvoiceValueForm.cs
+
+
+ Form
+
+
+ LocalTaxesComplementValueForm.cs
+
+
+ Form
+
+
+ LocalTaxesComplementReferenceForm.cs
+
+
+ Form
+
+
+ PaymentComplementInvoiceReferenceForm.cs
+
+
+ Form
+
+
+ PaymentComplementInvoiceValueForm.cs
+
+
+ Form
+
+
+ PayrollComplementReferenceForm.cs
+
+
+ Form
+
+
+ PayrollComplementValueForm.cs
+
+
+
+ DownloadRequestsForm.cs
+
+
+ DownloadRulesForm.cs
+
+
+ EgressInvoiceReferenceForm.cs
+
+
+ EgressInvoiceValueForm.cs
+
+
+ EmployeeForm.cs
+
+
+ EmployerForm.cs
+
Form1.cs
+
+ IncomeInvoiceReferenceForm.cs
+
+
+ IncomeInvoiceValueForm.cs
+
+
+ InvoiceReferenceForm.cs
+
+
+ InvoiceValueForm.cs
+
+
+ LocalTaxesComplementReferenceForm.cs
+
+
+ LocalTaxesComplementValueForm.cs
+
+
+ PaymentComplementInvoiceReferenceForm.cs
+
+
+ PaymentComplementInvoiceValueForm.cs
+
+
+ PayrollComplementReferenceForm.cs
+
+
+ PayrollComplementValueForm.cs
+
ResXFileCodeGenerator
Resources.Designer.cs
diff --git a/FiscalApi.Samples.NetFramework/Form1.Designer.cs b/FiscalApi.Samples.NetFramework/Form1.Designer.cs
index b610885..957c296 100644
--- a/FiscalApi.Samples.NetFramework/Form1.Designer.cs
+++ b/FiscalApi.Samples.NetFramework/Form1.Designer.cs
@@ -29,34 +29,19 @@ protected override void Dispose(bool disposing)
private void InitializeComponent()
{
this.ObtenerFacturaById = new System.Windows.Forms.Button();
- this.FacturaIngresoPorValores = new System.Windows.Forms.Button();
- this.FacturaIngresoPorRefs = new System.Windows.Forms.Button();
- this.NotaCreditoValores = new System.Windows.Forms.Button();
- this.NotaCreditoRefs = new System.Windows.Forms.Button();
- this.CfdiPagoRefs = new System.Windows.Forms.Button();
- this.CfdiPagoValores = new System.Windows.Forms.Button();
- this.GenerarPDFValores = new System.Windows.Forms.Button();
- this.CancelByValues = new System.Windows.Forms.Button();
- this.button1 = new System.Windows.Forms.Button();
- this.GenerarPDFRefs = new System.Windows.Forms.Button();
this.ObtenerFacturaXMLById = new System.Windows.Forms.Button();
- this.EnviarPorValores = new System.Windows.Forms.Button();
- this.EnviarPorReferencia = new System.Windows.Forms.Button();
this.groupBox2 = new System.Windows.Forms.GroupBox();
- this.DynamicPriceInvoiceButton = new System.Windows.Forms.Button();
- this.DynamicPriceCreditNoteButton = new System.Windows.Forms.Button();
- this.GlobalInvoiceValbutton = new System.Windows.Forms.Button();
- this.GlobalInvoiceRefButton = new System.Windows.Forms.Button();
- this.ConsultarEstadoRefs = new System.Windows.Forms.Button();
- this.ConsultarEstadoValores = new System.Windows.Forms.Button();
+ this.button11 = new System.Windows.Forms.Button();
+ this.button12 = new System.Windows.Forms.Button();
this.ObtenerListaPaginadaInvoices = new System.Windows.Forms.Button();
this.groupBox1 = new System.Windows.Forms.GroupBox();
+ this.button8 = new System.Windows.Forms.Button();
+ this.button7 = new System.Windows.Forms.Button();
this.ObtenerListaPaginada = new System.Windows.Forms.Button();
this.BorrarPersona = new System.Windows.Forms.Button();
this.ActualizarPersona = new System.Windows.Forms.Button();
this.CrearPersona = new System.Windows.Forms.Button();
this.ObtenerPersonaPorID = new System.Windows.Forms.Button();
- this.ObtenerUltimosCertficadosValidos = new System.Windows.Forms.Button();
this.EliEliminaCertificado = new System.Windows.Forms.Button();
this.ObtenerCertificadoById = new System.Windows.Forms.Button();
this.CargarCertificados = new System.Windows.Forms.Button();
@@ -85,8 +70,23 @@ private void InitializeComponent()
this.button2 = new System.Windows.Forms.Button();
this.tabControl1 = new System.Windows.Forms.TabControl();
this.tabPage1 = new System.Windows.Forms.TabPage();
+ this.groupBox10 = new System.Windows.Forms.GroupBox();
+ this.groupBox11 = new System.Windows.Forms.GroupBox();
+ this.button6 = new System.Windows.Forms.Button();
+ this.button3 = new System.Windows.Forms.Button();
+ this.button5 = new System.Windows.Forms.Button();
+ this.button4 = new System.Windows.Forms.Button();
+ this.groupBox13 = new System.Windows.Forms.GroupBox();
+ this.button17 = new System.Windows.Forms.Button();
+ this.button16 = new System.Windows.Forms.Button();
+ this.button15 = new System.Windows.Forms.Button();
+ this.button14 = new System.Windows.Forms.Button();
+ this.groupBox12 = new System.Windows.Forms.GroupBox();
+ this.button13 = new System.Windows.Forms.Button();
+ this.button1 = new System.Windows.Forms.Button();
this.tabPage2 = new System.Windows.Forms.TabPage();
this.groupBox9 = new System.Windows.Forms.GroupBox();
+ this.BuscarSolicitud = new System.Windows.Forms.Button();
this.EliminarSolicitud = new System.Windows.Forms.Button();
this.CrearSolicitud = new System.Windows.Forms.Button();
this.ObtenerSATResponsePorSolicitudID = new System.Windows.Forms.Button();
@@ -106,7 +106,6 @@ private void InitializeComponent()
this.groupBox7 = new System.Windows.Forms.GroupBox();
this.ListarDownloadCatalogo = new System.Windows.Forms.Button();
this.ListarDownloadCatalogos = new System.Windows.Forms.Button();
- this.BuscarSolicitud = new System.Windows.Forms.Button();
this.groupBox2.SuspendLayout();
this.groupBox1.SuspendLayout();
this.groupBox3.SuspendLayout();
@@ -115,6 +114,10 @@ private void InitializeComponent()
this.groupBox6.SuspendLayout();
this.tabControl1.SuspendLayout();
this.tabPage1.SuspendLayout();
+ this.groupBox10.SuspendLayout();
+ this.groupBox11.SuspendLayout();
+ this.groupBox13.SuspendLayout();
+ this.groupBox12.SuspendLayout();
this.tabPage2.SuspendLayout();
this.groupBox9.SuspendLayout();
this.groupBox8.SuspendLayout();
@@ -123,239 +126,68 @@ private void InitializeComponent()
//
// ObtenerFacturaById
//
- this.ObtenerFacturaById.Location = new System.Drawing.Point(12, 19);
+ this.ObtenerFacturaById.Location = new System.Drawing.Point(7, 155);
+ this.ObtenerFacturaById.Margin = new System.Windows.Forms.Padding(4);
this.ObtenerFacturaById.Name = "ObtenerFacturaById";
- this.ObtenerFacturaById.Size = new System.Drawing.Size(110, 49);
+ this.ObtenerFacturaById.Size = new System.Drawing.Size(147, 60);
this.ObtenerFacturaById.TabIndex = 0;
this.ObtenerFacturaById.Text = "Obtener factura por ID";
this.ObtenerFacturaById.UseVisualStyleBackColor = true;
this.ObtenerFacturaById.Click += new System.EventHandler(this.ObtenerFacturaById_Click);
//
- // FacturaIngresoPorValores
- //
- this.FacturaIngresoPorValores.Location = new System.Drawing.Point(128, 19);
- this.FacturaIngresoPorValores.Name = "FacturaIngresoPorValores";
- this.FacturaIngresoPorValores.Size = new System.Drawing.Size(110, 49);
- this.FacturaIngresoPorValores.TabIndex = 1;
- this.FacturaIngresoPorValores.Text = "Crear factura de ingreso por valores";
- this.FacturaIngresoPorValores.UseVisualStyleBackColor = true;
- this.FacturaIngresoPorValores.Click += new System.EventHandler(this.FacturaIngresoPorValores_Click);
- //
- // FacturaIngresoPorRefs
- //
- this.FacturaIngresoPorRefs.Location = new System.Drawing.Point(244, 19);
- this.FacturaIngresoPorRefs.Name = "FacturaIngresoPorRefs";
- this.FacturaIngresoPorRefs.Size = new System.Drawing.Size(110, 49);
- this.FacturaIngresoPorRefs.TabIndex = 2;
- this.FacturaIngresoPorRefs.Text = "Crear factura de ingreso por referencias";
- this.FacturaIngresoPorRefs.UseVisualStyleBackColor = true;
- this.FacturaIngresoPorRefs.Click += new System.EventHandler(this.FacturaIngresoPorRefs_Click);
- //
- // NotaCreditoValores
- //
- this.NotaCreditoValores.Location = new System.Drawing.Point(128, 74);
- this.NotaCreditoValores.Name = "NotaCreditoValores";
- this.NotaCreditoValores.Size = new System.Drawing.Size(110, 49);
- this.NotaCreditoValores.TabIndex = 3;
- this.NotaCreditoValores.Text = "Crear nota de credito por valores";
- this.NotaCreditoValores.UseVisualStyleBackColor = true;
- this.NotaCreditoValores.Click += new System.EventHandler(this.NotaCreditoValores_Click);
- //
- // NotaCreditoRefs
- //
- this.NotaCreditoRefs.Location = new System.Drawing.Point(244, 74);
- this.NotaCreditoRefs.Name = "NotaCreditoRefs";
- this.NotaCreditoRefs.Size = new System.Drawing.Size(110, 49);
- this.NotaCreditoRefs.TabIndex = 4;
- this.NotaCreditoRefs.Text = "Crear nota de credito por referencias";
- this.NotaCreditoRefs.UseVisualStyleBackColor = true;
- this.NotaCreditoRefs.Click += new System.EventHandler(this.NotaCreditoRefs_Click);
- //
- // CfdiPagoRefs
- //
- this.CfdiPagoRefs.Location = new System.Drawing.Point(244, 129);
- this.CfdiPagoRefs.Name = "CfdiPagoRefs";
- this.CfdiPagoRefs.Size = new System.Drawing.Size(110, 49);
- this.CfdiPagoRefs.TabIndex = 6;
- this.CfdiPagoRefs.Text = "Crear complemento de pago por referencias";
- this.CfdiPagoRefs.UseVisualStyleBackColor = true;
- this.CfdiPagoRefs.Click += new System.EventHandler(this.FacturaComplementoPagoRefs_Click);
- //
- // CfdiPagoValores
- //
- this.CfdiPagoValores.Location = new System.Drawing.Point(128, 129);
- this.CfdiPagoValores.Name = "CfdiPagoValores";
- this.CfdiPagoValores.Size = new System.Drawing.Size(110, 49);
- this.CfdiPagoValores.TabIndex = 5;
- this.CfdiPagoValores.Text = "Crear complemento de pago por valores";
- this.CfdiPagoValores.UseVisualStyleBackColor = true;
- this.CfdiPagoValores.Click += new System.EventHandler(this.FacturaComplementoValores_Click);
- //
- // GenerarPDFValores
- //
- this.GenerarPDFValores.Location = new System.Drawing.Point(12, 74);
- this.GenerarPDFValores.Name = "GenerarPDFValores";
- this.GenerarPDFValores.Size = new System.Drawing.Size(110, 49);
- this.GenerarPDFValores.TabIndex = 7;
- this.GenerarPDFValores.Text = "Generar PDF por valores";
- this.GenerarPDFValores.UseVisualStyleBackColor = true;
- this.GenerarPDFValores.Click += new System.EventHandler(this.GenerarPDFValores_Click);
- //
- // CancelByValues
- //
- this.CancelByValues.Location = new System.Drawing.Point(128, 190);
- this.CancelByValues.Name = "CancelByValues";
- this.CancelByValues.Size = new System.Drawing.Size(110, 49);
- this.CancelByValues.TabIndex = 8;
- this.CancelByValues.Text = "Cancelar factua por valores";
- this.CancelByValues.UseVisualStyleBackColor = true;
- this.CancelByValues.Click += new System.EventHandler(this.CancelByValues_Click);
- //
- // button1
- //
- this.button1.Location = new System.Drawing.Point(244, 190);
- this.button1.Name = "button1";
- this.button1.Size = new System.Drawing.Size(110, 49);
- this.button1.TabIndex = 9;
- this.button1.Text = "Cancelar factua por referencias";
- this.button1.UseVisualStyleBackColor = true;
- this.button1.Click += new System.EventHandler(this.CancelByRefs_Click);
- //
- // GenerarPDFRefs
- //
- this.GenerarPDFRefs.Location = new System.Drawing.Point(12, 129);
- this.GenerarPDFRefs.Name = "GenerarPDFRefs";
- this.GenerarPDFRefs.Size = new System.Drawing.Size(110, 49);
- this.GenerarPDFRefs.TabIndex = 10;
- this.GenerarPDFRefs.Text = "Generar PDF por referencia";
- this.GenerarPDFRefs.UseVisualStyleBackColor = true;
- this.GenerarPDFRefs.Click += new System.EventHandler(this.GenerarPDFRefs_Click);
- //
// ObtenerFacturaXMLById
//
- this.ObtenerFacturaXMLById.Location = new System.Drawing.Point(12, 190);
+ this.ObtenerFacturaXMLById.Location = new System.Drawing.Point(162, 88);
+ this.ObtenerFacturaXMLById.Margin = new System.Windows.Forms.Padding(4);
this.ObtenerFacturaXMLById.Name = "ObtenerFacturaXMLById";
- this.ObtenerFacturaXMLById.Size = new System.Drawing.Size(110, 49);
+ this.ObtenerFacturaXMLById.Size = new System.Drawing.Size(147, 60);
this.ObtenerFacturaXMLById.TabIndex = 11;
this.ObtenerFacturaXMLById.Text = "Obtener Factura XML By Id";
this.ObtenerFacturaXMLById.UseVisualStyleBackColor = true;
this.ObtenerFacturaXMLById.Click += new System.EventHandler(this.ObtenerFacturaXMLById_Click);
//
- // EnviarPorValores
- //
- this.EnviarPorValores.Location = new System.Drawing.Point(12, 300);
- this.EnviarPorValores.Name = "EnviarPorValores";
- this.EnviarPorValores.Size = new System.Drawing.Size(110, 49);
- this.EnviarPorValores.TabIndex = 12;
- this.EnviarPorValores.Text = "Enviar factura por Email por valores";
- this.EnviarPorValores.UseVisualStyleBackColor = true;
- this.EnviarPorValores.Click += new System.EventHandler(this.EnviarPorValores_Click);
- //
- // EnviarPorReferencia
- //
- this.EnviarPorReferencia.Location = new System.Drawing.Point(12, 355);
- this.EnviarPorReferencia.Name = "EnviarPorReferencia";
- this.EnviarPorReferencia.Size = new System.Drawing.Size(110, 49);
- this.EnviarPorReferencia.TabIndex = 13;
- this.EnviarPorReferencia.Text = "Enviar factura por Email por referencia";
- this.EnviarPorReferencia.UseVisualStyleBackColor = true;
- this.EnviarPorReferencia.Click += new System.EventHandler(this.EnviarPorReferencia_Click);
- //
// groupBox2
//
- this.groupBox2.Controls.Add(this.DynamicPriceInvoiceButton);
- this.groupBox2.Controls.Add(this.DynamicPriceCreditNoteButton);
- this.groupBox2.Controls.Add(this.GlobalInvoiceValbutton);
- this.groupBox2.Controls.Add(this.GlobalInvoiceRefButton);
- this.groupBox2.Controls.Add(this.ConsultarEstadoRefs);
- this.groupBox2.Controls.Add(this.ConsultarEstadoValores);
+ this.groupBox2.Controls.Add(this.button11);
+ this.groupBox2.Controls.Add(this.button12);
this.groupBox2.Controls.Add(this.ObtenerListaPaginadaInvoices);
- this.groupBox2.Controls.Add(this.FacturaIngresoPorRefs);
- this.groupBox2.Controls.Add(this.EnviarPorReferencia);
this.groupBox2.Controls.Add(this.ObtenerFacturaById);
- this.groupBox2.Controls.Add(this.EnviarPorValores);
- this.groupBox2.Controls.Add(this.FacturaIngresoPorValores);
this.groupBox2.Controls.Add(this.ObtenerFacturaXMLById);
- this.groupBox2.Controls.Add(this.NotaCreditoValores);
- this.groupBox2.Controls.Add(this.GenerarPDFRefs);
- this.groupBox2.Controls.Add(this.NotaCreditoRefs);
- this.groupBox2.Controls.Add(this.button1);
- this.groupBox2.Controls.Add(this.CfdiPagoValores);
- this.groupBox2.Controls.Add(this.CancelByValues);
- this.groupBox2.Controls.Add(this.CfdiPagoRefs);
- this.groupBox2.Controls.Add(this.GenerarPDFValores);
- this.groupBox2.Location = new System.Drawing.Point(6, 6);
+ this.groupBox2.Location = new System.Drawing.Point(4, 8);
+ this.groupBox2.Margin = new System.Windows.Forms.Padding(4);
this.groupBox2.Name = "groupBox2";
- this.groupBox2.Size = new System.Drawing.Size(367, 450);
+ this.groupBox2.Padding = new System.Windows.Forms.Padding(4);
+ this.groupBox2.Size = new System.Drawing.Size(320, 223);
this.groupBox2.TabIndex = 16;
this.groupBox2.TabStop = false;
this.groupBox2.Text = "FACTURACION";
//
- // DynamicPriceInvoiceButton
- //
- this.DynamicPriceInvoiceButton.Location = new System.Drawing.Point(244, 355);
- this.DynamicPriceInvoiceButton.Name = "DynamicPriceInvoiceButton";
- this.DynamicPriceInvoiceButton.Size = new System.Drawing.Size(110, 49);
- this.DynamicPriceInvoiceButton.TabIndex = 20;
- this.DynamicPriceInvoiceButton.Text = "Factura con precios dinamicos";
- this.DynamicPriceInvoiceButton.UseVisualStyleBackColor = true;
- this.DynamicPriceInvoiceButton.Click += new System.EventHandler(this.DynamicPriceInvoiceButton_Click);
- //
- // DynamicPriceCreditNoteButton
- //
- this.DynamicPriceCreditNoteButton.Location = new System.Drawing.Point(128, 355);
- this.DynamicPriceCreditNoteButton.Name = "DynamicPriceCreditNoteButton";
- this.DynamicPriceCreditNoteButton.Size = new System.Drawing.Size(110, 49);
- this.DynamicPriceCreditNoteButton.TabIndex = 19;
- this.DynamicPriceCreditNoteButton.Text = "Nota de credito con precios dinamicos";
- this.DynamicPriceCreditNoteButton.UseVisualStyleBackColor = true;
- this.DynamicPriceCreditNoteButton.Click += new System.EventHandler(this.DynamicPriceCreditNoteButton_Click);
- //
- // GlobalInvoiceValbutton
- //
- this.GlobalInvoiceValbutton.Location = new System.Drawing.Point(128, 245);
- this.GlobalInvoiceValbutton.Name = "GlobalInvoiceValbutton";
- this.GlobalInvoiceValbutton.Size = new System.Drawing.Size(110, 49);
- this.GlobalInvoiceValbutton.TabIndex = 17;
- this.GlobalInvoiceValbutton.Text = "Crear ractura global por valores";
- this.GlobalInvoiceValbutton.UseVisualStyleBackColor = true;
- this.GlobalInvoiceValbutton.Click += new System.EventHandler(this.GlobalInvoiceValbutton_Click);
- //
- // GlobalInvoiceRefButton
- //
- this.GlobalInvoiceRefButton.Location = new System.Drawing.Point(244, 245);
- this.GlobalInvoiceRefButton.Name = "GlobalInvoiceRefButton";
- this.GlobalInvoiceRefButton.Size = new System.Drawing.Size(110, 49);
- this.GlobalInvoiceRefButton.TabIndex = 18;
- this.GlobalInvoiceRefButton.Text = "Crear ractura global por referencias";
- this.GlobalInvoiceRefButton.UseVisualStyleBackColor = true;
- this.GlobalInvoiceRefButton.Click += new System.EventHandler(this.GlobalInvoiceRefButton_Click);
- //
- // ConsultarEstadoRefs
- //
- this.ConsultarEstadoRefs.Location = new System.Drawing.Point(244, 300);
- this.ConsultarEstadoRefs.Name = "ConsultarEstadoRefs";
- this.ConsultarEstadoRefs.Size = new System.Drawing.Size(110, 49);
- this.ConsultarEstadoRefs.TabIndex = 16;
- this.ConsultarEstadoRefs.Text = "Consultar estado de factua por referencias";
- this.ConsultarEstadoRefs.UseVisualStyleBackColor = true;
- this.ConsultarEstadoRefs.Click += new System.EventHandler(this.ConsultarEstadoRefs_Click);
- //
- // ConsultarEstadoValores
- //
- this.ConsultarEstadoValores.Location = new System.Drawing.Point(128, 300);
- this.ConsultarEstadoValores.Name = "ConsultarEstadoValores";
- this.ConsultarEstadoValores.Size = new System.Drawing.Size(110, 49);
- this.ConsultarEstadoValores.TabIndex = 15;
- this.ConsultarEstadoValores.Text = "Consultar estado de factua por valores";
- this.ConsultarEstadoValores.UseVisualStyleBackColor = true;
- this.ConsultarEstadoValores.Click += new System.EventHandler(this.ConsultarEstadoValores_Click);
+ // button11
+ //
+ this.button11.Location = new System.Drawing.Point(7, 88);
+ this.button11.Name = "button11";
+ this.button11.Size = new System.Drawing.Size(147, 60);
+ this.button11.TabIndex = 22;
+ this.button11.Text = "Facturación por referencias";
+ this.button11.UseVisualStyleBackColor = true;
+ this.button11.Click += new System.EventHandler(this.button11_Click);
+ //
+ // button12
+ //
+ this.button12.Location = new System.Drawing.Point(7, 22);
+ this.button12.Name = "button12";
+ this.button12.Size = new System.Drawing.Size(147, 60);
+ this.button12.TabIndex = 21;
+ this.button12.Text = "Facturación por valores";
+ this.button12.UseVisualStyleBackColor = true;
+ this.button12.Click += new System.EventHandler(this.button12_Click);
//
// ObtenerListaPaginadaInvoices
//
- this.ObtenerListaPaginadaInvoices.Location = new System.Drawing.Point(12, 245);
+ this.ObtenerListaPaginadaInvoices.Location = new System.Drawing.Point(162, 23);
+ this.ObtenerListaPaginadaInvoices.Margin = new System.Windows.Forms.Padding(4);
this.ObtenerListaPaginadaInvoices.Name = "ObtenerListaPaginadaInvoices";
- this.ObtenerListaPaginadaInvoices.Size = new System.Drawing.Size(110, 49);
+ this.ObtenerListaPaginadaInvoices.Size = new System.Drawing.Size(147, 60);
this.ObtenerListaPaginadaInvoices.TabIndex = 14;
this.ObtenerListaPaginadaInvoices.Text = "Obtener Lista Paginada";
this.ObtenerListaPaginadaInvoices.UseVisualStyleBackColor = true;
@@ -363,23 +195,50 @@ private void InitializeComponent()
//
// groupBox1
//
+ this.groupBox1.Controls.Add(this.button8);
+ this.groupBox1.Controls.Add(this.button7);
this.groupBox1.Controls.Add(this.ObtenerListaPaginada);
this.groupBox1.Controls.Add(this.BorrarPersona);
this.groupBox1.Controls.Add(this.ActualizarPersona);
this.groupBox1.Controls.Add(this.CrearPersona);
this.groupBox1.Controls.Add(this.ObtenerPersonaPorID);
- this.groupBox1.Location = new System.Drawing.Point(379, 6);
+ this.groupBox1.Location = new System.Drawing.Point(4, 324);
+ this.groupBox1.Margin = new System.Windows.Forms.Padding(4);
this.groupBox1.Name = "groupBox1";
- this.groupBox1.Size = new System.Drawing.Size(331, 249);
+ this.groupBox1.Padding = new System.Windows.Forms.Padding(4);
+ this.groupBox1.Size = new System.Drawing.Size(320, 314);
this.groupBox1.TabIndex = 17;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "PERSONAS (Emisores, receptores, usuarios, clientes etc)";
//
+ // button8
+ //
+ this.button8.Location = new System.Drawing.Point(7, 106);
+ this.button8.Margin = new System.Windows.Forms.Padding(4);
+ this.button8.Name = "button8";
+ this.button8.Size = new System.Drawing.Size(147, 60);
+ this.button8.TabIndex = 12;
+ this.button8.Text = "Datos de empleado";
+ this.button8.UseVisualStyleBackColor = true;
+ this.button8.Click += new System.EventHandler(this.button8_Click);
+ //
+ // button7
+ //
+ this.button7.Location = new System.Drawing.Point(8, 40);
+ this.button7.Margin = new System.Windows.Forms.Padding(4);
+ this.button7.Name = "button7";
+ this.button7.Size = new System.Drawing.Size(147, 60);
+ this.button7.TabIndex = 11;
+ this.button7.Text = "Datos de empleador";
+ this.button7.UseVisualStyleBackColor = true;
+ this.button7.Click += new System.EventHandler(this.button7_Click);
+ //
// ObtenerListaPaginada
//
- this.ObtenerListaPaginada.Location = new System.Drawing.Point(6, 142);
+ this.ObtenerListaPaginada.Location = new System.Drawing.Point(7, 174);
+ this.ObtenerListaPaginada.Margin = new System.Windows.Forms.Padding(4);
this.ObtenerListaPaginada.Name = "ObtenerListaPaginada";
- this.ObtenerListaPaginada.Size = new System.Drawing.Size(144, 50);
+ this.ObtenerListaPaginada.Size = new System.Drawing.Size(147, 60);
this.ObtenerListaPaginada.TabIndex = 5;
this.ObtenerListaPaginada.Text = "Obtener lista paginada";
this.ObtenerListaPaginada.UseVisualStyleBackColor = true;
@@ -387,9 +246,10 @@ private void InitializeComponent()
//
// BorrarPersona
//
- this.BorrarPersona.Location = new System.Drawing.Point(181, 86);
+ this.BorrarPersona.Location = new System.Drawing.Point(162, 174);
+ this.BorrarPersona.Margin = new System.Windows.Forms.Padding(4);
this.BorrarPersona.Name = "BorrarPersona";
- this.BorrarPersona.Size = new System.Drawing.Size(144, 50);
+ this.BorrarPersona.Size = new System.Drawing.Size(147, 60);
this.BorrarPersona.TabIndex = 4;
this.BorrarPersona.Text = "Borrar persona";
this.BorrarPersona.UseVisualStyleBackColor = true;
@@ -397,9 +257,10 @@ private void InitializeComponent()
//
// ActualizarPersona
//
- this.ActualizarPersona.Location = new System.Drawing.Point(181, 30);
+ this.ActualizarPersona.Location = new System.Drawing.Point(162, 40);
+ this.ActualizarPersona.Margin = new System.Windows.Forms.Padding(4);
this.ActualizarPersona.Name = "ActualizarPersona";
- this.ActualizarPersona.Size = new System.Drawing.Size(144, 50);
+ this.ActualizarPersona.Size = new System.Drawing.Size(147, 60);
this.ActualizarPersona.TabIndex = 3;
this.ActualizarPersona.Text = "Actualizar persona";
this.ActualizarPersona.UseVisualStyleBackColor = true;
@@ -407,9 +268,10 @@ private void InitializeComponent()
//
// CrearPersona
//
- this.CrearPersona.Location = new System.Drawing.Point(6, 30);
+ this.CrearPersona.Location = new System.Drawing.Point(162, 106);
+ this.CrearPersona.Margin = new System.Windows.Forms.Padding(4);
this.CrearPersona.Name = "CrearPersona";
- this.CrearPersona.Size = new System.Drawing.Size(144, 50);
+ this.CrearPersona.Size = new System.Drawing.Size(147, 60);
this.CrearPersona.TabIndex = 2;
this.CrearPersona.Text = "Crear Persona";
this.CrearPersona.UseVisualStyleBackColor = true;
@@ -417,29 +279,21 @@ private void InitializeComponent()
//
// ObtenerPersonaPorID
//
- this.ObtenerPersonaPorID.Location = new System.Drawing.Point(6, 86);
+ this.ObtenerPersonaPorID.Location = new System.Drawing.Point(7, 242);
+ this.ObtenerPersonaPorID.Margin = new System.Windows.Forms.Padding(4);
this.ObtenerPersonaPorID.Name = "ObtenerPersonaPorID";
- this.ObtenerPersonaPorID.Size = new System.Drawing.Size(144, 50);
+ this.ObtenerPersonaPorID.Size = new System.Drawing.Size(147, 60);
this.ObtenerPersonaPorID.TabIndex = 1;
this.ObtenerPersonaPorID.Text = "Obtener persona por ID";
this.ObtenerPersonaPorID.UseVisualStyleBackColor = true;
this.ObtenerPersonaPorID.Click += new System.EventHandler(this.ObtenerPersonaPorID_Click);
//
- // ObtenerUltimosCertficadosValidos
- //
- this.ObtenerUltimosCertficadosValidos.Location = new System.Drawing.Point(181, 19);
- this.ObtenerUltimosCertficadosValidos.Name = "ObtenerUltimosCertficadosValidos";
- this.ObtenerUltimosCertficadosValidos.Size = new System.Drawing.Size(144, 50);
- this.ObtenerUltimosCertficadosValidos.TabIndex = 9;
- this.ObtenerUltimosCertficadosValidos.Text = "Obtener ultimos certficados validos de una persona";
- this.ObtenerUltimosCertficadosValidos.UseVisualStyleBackColor = true;
- this.ObtenerUltimosCertficadosValidos.Click += new System.EventHandler(this.CertDefaultValues_Click);
- //
// EliEliminaCertificado
//
- this.EliEliminaCertificado.Location = new System.Drawing.Point(181, 131);
+ this.EliEliminaCertificado.Location = new System.Drawing.Point(194, 91);
+ this.EliEliminaCertificado.Margin = new System.Windows.Forms.Padding(4);
this.EliEliminaCertificado.Name = "EliEliminaCertificado";
- this.EliEliminaCertificado.Size = new System.Drawing.Size(144, 50);
+ this.EliEliminaCertificado.Size = new System.Drawing.Size(147, 60);
this.EliEliminaCertificado.TabIndex = 8;
this.EliEliminaCertificado.Text = "Elimina Certificado de una persona";
this.EliEliminaCertificado.UseVisualStyleBackColor = true;
@@ -447,9 +301,10 @@ private void InitializeComponent()
//
// ObtenerCertificadoById
//
- this.ObtenerCertificadoById.Location = new System.Drawing.Point(6, 75);
+ this.ObtenerCertificadoById.Location = new System.Drawing.Point(7, 91);
+ this.ObtenerCertificadoById.Margin = new System.Windows.Forms.Padding(4);
this.ObtenerCertificadoById.Name = "ObtenerCertificadoById";
- this.ObtenerCertificadoById.Size = new System.Drawing.Size(144, 50);
+ this.ObtenerCertificadoById.Size = new System.Drawing.Size(147, 60);
this.ObtenerCertificadoById.TabIndex = 7;
this.ObtenerCertificadoById.Text = "Obtener Certificado by Id";
this.ObtenerCertificadoById.UseVisualStyleBackColor = true;
@@ -457,9 +312,10 @@ private void InitializeComponent()
//
// CargarCertificados
//
- this.CargarCertificados.Location = new System.Drawing.Point(6, 19);
+ this.CargarCertificados.Location = new System.Drawing.Point(194, 23);
+ this.CargarCertificados.Margin = new System.Windows.Forms.Padding(4);
this.CargarCertificados.Name = "CargarCertificados";
- this.CargarCertificados.Size = new System.Drawing.Size(144, 50);
+ this.CargarCertificados.Size = new System.Drawing.Size(147, 60);
this.CargarCertificados.TabIndex = 6;
this.CargarCertificados.Text = "Crear certificado (cargar cert a una persona)";
this.CargarCertificados.UseVisualStyleBackColor = true;
@@ -467,6 +323,7 @@ private void InitializeComponent()
//
// groupBox3
//
+ this.groupBox3.Anchor = System.Windows.Forms.AnchorStyles.None;
this.groupBox3.Controls.Add(this.ActualizarImpuestosProducto);
this.groupBox3.Controls.Add(this.ObtenerImpuestosProducto);
this.groupBox3.Controls.Add(this.ObtenerProductosPagedList);
@@ -474,18 +331,22 @@ private void InitializeComponent()
this.groupBox3.Controls.Add(this.ActualizarProducto);
this.groupBox3.Controls.Add(this.CrearProducto);
this.groupBox3.Controls.Add(this.ObtenerProductoById);
- this.groupBox3.Location = new System.Drawing.Point(716, 6);
+ this.groupBox3.Location = new System.Drawing.Point(332, 493);
+ this.groupBox3.Margin = new System.Windows.Forms.Padding(4);
this.groupBox3.Name = "groupBox3";
- this.groupBox3.Size = new System.Drawing.Size(354, 249);
+ this.groupBox3.Padding = new System.Windows.Forms.Padding(4);
+ this.groupBox3.Size = new System.Drawing.Size(373, 310);
this.groupBox3.TabIndex = 18;
this.groupBox3.TabStop = false;
this.groupBox3.Text = "Productos";
//
// ActualizarImpuestosProducto
//
- this.ActualizarImpuestosProducto.Location = new System.Drawing.Point(156, 75);
+ this.ActualizarImpuestosProducto.Anchor = System.Windows.Forms.AnchorStyles.None;
+ this.ActualizarImpuestosProducto.Location = new System.Drawing.Point(199, 156);
+ this.ActualizarImpuestosProducto.Margin = new System.Windows.Forms.Padding(4);
this.ActualizarImpuestosProducto.Name = "ActualizarImpuestosProducto";
- this.ActualizarImpuestosProducto.Size = new System.Drawing.Size(144, 50);
+ this.ActualizarImpuestosProducto.Size = new System.Drawing.Size(147, 60);
this.ActualizarImpuestosProducto.TabIndex = 12;
this.ActualizarImpuestosProducto.Text = "Actualizar impuestos";
this.ActualizarImpuestosProducto.UseVisualStyleBackColor = true;
@@ -493,9 +354,11 @@ private void InitializeComponent()
//
// ObtenerImpuestosProducto
//
- this.ObtenerImpuestosProducto.Location = new System.Drawing.Point(156, 19);
+ this.ObtenerImpuestosProducto.Anchor = System.Windows.Forms.AnchorStyles.None;
+ this.ObtenerImpuestosProducto.Location = new System.Drawing.Point(12, 156);
+ this.ObtenerImpuestosProducto.Margin = new System.Windows.Forms.Padding(4);
this.ObtenerImpuestosProducto.Name = "ObtenerImpuestosProducto";
- this.ObtenerImpuestosProducto.Size = new System.Drawing.Size(144, 50);
+ this.ObtenerImpuestosProducto.Size = new System.Drawing.Size(147, 60);
this.ObtenerImpuestosProducto.TabIndex = 11;
this.ObtenerImpuestosProducto.Text = "Obtener impuestos";
this.ObtenerImpuestosProducto.UseVisualStyleBackColor = true;
@@ -503,9 +366,11 @@ private void InitializeComponent()
//
// ObtenerProductosPagedList
//
- this.ObtenerProductosPagedList.Location = new System.Drawing.Point(6, 75);
+ this.ObtenerProductosPagedList.Anchor = System.Windows.Forms.AnchorStyles.None;
+ this.ObtenerProductosPagedList.Location = new System.Drawing.Point(12, 21);
+ this.ObtenerProductosPagedList.Margin = new System.Windows.Forms.Padding(4);
this.ObtenerProductosPagedList.Name = "ObtenerProductosPagedList";
- this.ObtenerProductosPagedList.Size = new System.Drawing.Size(144, 50);
+ this.ObtenerProductosPagedList.Size = new System.Drawing.Size(147, 60);
this.ObtenerProductosPagedList.TabIndex = 10;
this.ObtenerProductosPagedList.Text = "Obtener lista paginada";
this.ObtenerProductosPagedList.UseVisualStyleBackColor = true;
@@ -513,9 +378,11 @@ private void InitializeComponent()
//
// BorrarProducto
//
- this.BorrarProducto.Location = new System.Drawing.Point(156, 131);
+ this.BorrarProducto.Anchor = System.Windows.Forms.AnchorStyles.None;
+ this.BorrarProducto.Location = new System.Drawing.Point(199, 88);
+ this.BorrarProducto.Margin = new System.Windows.Forms.Padding(4);
this.BorrarProducto.Name = "BorrarProducto";
- this.BorrarProducto.Size = new System.Drawing.Size(144, 50);
+ this.BorrarProducto.Size = new System.Drawing.Size(147, 60);
this.BorrarProducto.TabIndex = 9;
this.BorrarProducto.Text = "Borrar producto";
this.BorrarProducto.UseVisualStyleBackColor = true;
@@ -523,9 +390,11 @@ private void InitializeComponent()
//
// ActualizarProducto
//
- this.ActualizarProducto.Location = new System.Drawing.Point(6, 184);
+ this.ActualizarProducto.Anchor = System.Windows.Forms.AnchorStyles.None;
+ this.ActualizarProducto.Location = new System.Drawing.Point(199, 22);
+ this.ActualizarProducto.Margin = new System.Windows.Forms.Padding(4);
this.ActualizarProducto.Name = "ActualizarProducto";
- this.ActualizarProducto.Size = new System.Drawing.Size(144, 50);
+ this.ActualizarProducto.Size = new System.Drawing.Size(147, 60);
this.ActualizarProducto.TabIndex = 8;
this.ActualizarProducto.Text = "Actualizar producto";
this.ActualizarProducto.UseVisualStyleBackColor = true;
@@ -533,9 +402,11 @@ private void InitializeComponent()
//
// CrearProducto
//
- this.CrearProducto.Location = new System.Drawing.Point(6, 128);
+ this.CrearProducto.Anchor = System.Windows.Forms.AnchorStyles.None;
+ this.CrearProducto.Location = new System.Drawing.Point(13, 224);
+ this.CrearProducto.Margin = new System.Windows.Forms.Padding(4);
this.CrearProducto.Name = "CrearProducto";
- this.CrearProducto.Size = new System.Drawing.Size(144, 50);
+ this.CrearProducto.Size = new System.Drawing.Size(147, 60);
this.CrearProducto.TabIndex = 7;
this.CrearProducto.Text = "Crear producto";
this.CrearProducto.UseVisualStyleBackColor = true;
@@ -543,9 +414,11 @@ private void InitializeComponent()
//
// ObtenerProductoById
//
- this.ObtenerProductoById.Location = new System.Drawing.Point(6, 19);
+ this.ObtenerProductoById.Anchor = System.Windows.Forms.AnchorStyles.None;
+ this.ObtenerProductoById.Location = new System.Drawing.Point(12, 88);
+ this.ObtenerProductoById.Margin = new System.Windows.Forms.Padding(4);
this.ObtenerProductoById.Name = "ObtenerProductoById";
- this.ObtenerProductoById.Size = new System.Drawing.Size(144, 50);
+ this.ObtenerProductoById.Size = new System.Drawing.Size(147, 60);
this.ObtenerProductoById.TabIndex = 6;
this.ObtenerProductoById.Text = "Obtener producto por ID";
this.ObtenerProductoById.UseVisualStyleBackColor = true;
@@ -558,18 +431,21 @@ private void InitializeComponent()
this.groupBox4.Controls.Add(this.RevocaApikey);
this.groupBox4.Controls.Add(this.CrearApikey);
this.groupBox4.Controls.Add(this.ObtenerApikeyByID);
- this.groupBox4.Location = new System.Drawing.Point(6, 462);
+ this.groupBox4.Location = new System.Drawing.Point(712, 341);
+ this.groupBox4.Margin = new System.Windows.Forms.Padding(4);
this.groupBox4.Name = "groupBox4";
- this.groupBox4.Size = new System.Drawing.Size(1059, 97);
+ this.groupBox4.Padding = new System.Windows.Forms.Padding(4);
+ this.groupBox4.Size = new System.Drawing.Size(181, 462);
this.groupBox4.TabIndex = 19;
this.groupBox4.TabStop = false;
this.groupBox4.Text = "Api Keys";
//
// UpdateApiKey
//
- this.UpdateApiKey.Location = new System.Drawing.Point(461, 19);
+ this.UpdateApiKey.Location = new System.Drawing.Point(7, 295);
+ this.UpdateApiKey.Margin = new System.Windows.Forms.Padding(4);
this.UpdateApiKey.Name = "UpdateApiKey";
- this.UpdateApiKey.Size = new System.Drawing.Size(144, 50);
+ this.UpdateApiKey.Size = new System.Drawing.Size(147, 60);
this.UpdateApiKey.TabIndex = 18;
this.UpdateApiKey.Text = "Obtener api-key por ID";
this.UpdateApiKey.UseVisualStyleBackColor = true;
@@ -577,9 +453,10 @@ private void InitializeComponent()
//
// ObtenerPagedListApikeys
//
- this.ObtenerPagedListApikeys.Location = new System.Drawing.Point(311, 19);
+ this.ObtenerPagedListApikeys.Location = new System.Drawing.Point(7, 227);
+ this.ObtenerPagedListApikeys.Margin = new System.Windows.Forms.Padding(4);
this.ObtenerPagedListApikeys.Name = "ObtenerPagedListApikeys";
- this.ObtenerPagedListApikeys.Size = new System.Drawing.Size(144, 50);
+ this.ObtenerPagedListApikeys.Size = new System.Drawing.Size(147, 60);
this.ObtenerPagedListApikeys.TabIndex = 17;
this.ObtenerPagedListApikeys.Text = "Obtener lista paginada";
this.ObtenerPagedListApikeys.UseVisualStyleBackColor = true;
@@ -587,9 +464,10 @@ private void InitializeComponent()
//
// RevocaApikey
//
- this.RevocaApikey.Location = new System.Drawing.Point(611, 19);
+ this.RevocaApikey.Location = new System.Drawing.Point(7, 159);
+ this.RevocaApikey.Margin = new System.Windows.Forms.Padding(4);
this.RevocaApikey.Name = "RevocaApikey";
- this.RevocaApikey.Size = new System.Drawing.Size(144, 50);
+ this.RevocaApikey.Size = new System.Drawing.Size(147, 60);
this.RevocaApikey.TabIndex = 15;
this.RevocaApikey.Text = "Revocar ApiKey";
this.RevocaApikey.UseVisualStyleBackColor = true;
@@ -597,9 +475,10 @@ private void InitializeComponent()
//
// CrearApikey
//
- this.CrearApikey.Location = new System.Drawing.Point(161, 19);
+ this.CrearApikey.Location = new System.Drawing.Point(7, 91);
+ this.CrearApikey.Margin = new System.Windows.Forms.Padding(4);
this.CrearApikey.Name = "CrearApikey";
- this.CrearApikey.Size = new System.Drawing.Size(144, 50);
+ this.CrearApikey.Size = new System.Drawing.Size(147, 60);
this.CrearApikey.TabIndex = 14;
this.CrearApikey.Text = "Crear ApiKey";
this.CrearApikey.UseVisualStyleBackColor = true;
@@ -607,9 +486,10 @@ private void InitializeComponent()
//
// ObtenerApikeyByID
//
- this.ObtenerApikeyByID.Location = new System.Drawing.Point(11, 19);
+ this.ObtenerApikeyByID.Location = new System.Drawing.Point(7, 23);
+ this.ObtenerApikeyByID.Margin = new System.Windows.Forms.Padding(4);
this.ObtenerApikeyByID.Name = "ObtenerApikeyByID";
- this.ObtenerApikeyByID.Size = new System.Drawing.Size(144, 50);
+ this.ObtenerApikeyByID.Size = new System.Drawing.Size(147, 60);
this.ObtenerApikeyByID.TabIndex = 13;
this.ObtenerApikeyByID.Text = "Obtener api-key por ID";
this.ObtenerApikeyByID.UseVisualStyleBackColor = true;
@@ -622,18 +502,21 @@ private void InitializeComponent()
this.groupBox5.Controls.Add(this.BuscarCatalogo);
this.groupBox5.Controls.Add(this.BuscarCodigoUnidad);
this.groupBox5.Controls.Add(this.BuscarCodigoProductoServicio);
- this.groupBox5.Location = new System.Drawing.Point(716, 264);
+ this.groupBox5.Location = new System.Drawing.Point(332, 8);
+ this.groupBox5.Margin = new System.Windows.Forms.Padding(4);
this.groupBox5.Name = "groupBox5";
- this.groupBox5.Size = new System.Drawing.Size(354, 192);
+ this.groupBox5.Padding = new System.Windows.Forms.Padding(4);
+ this.groupBox5.Size = new System.Drawing.Size(373, 223);
this.groupBox5.TabIndex = 20;
this.groupBox5.TabStop = false;
- this.groupBox5.Text = "Catalogos";
+ this.groupBox5.Text = "CATALOGOS";
//
// ObtenerCatalogRecordPorId
//
- this.ObtenerCatalogRecordPorId.Location = new System.Drawing.Point(11, 76);
+ this.ObtenerCatalogRecordPorId.Location = new System.Drawing.Point(194, 88);
+ this.ObtenerCatalogRecordPorId.Margin = new System.Windows.Forms.Padding(4);
this.ObtenerCatalogRecordPorId.Name = "ObtenerCatalogRecordPorId";
- this.ObtenerCatalogRecordPorId.Size = new System.Drawing.Size(144, 50);
+ this.ObtenerCatalogRecordPorId.Size = new System.Drawing.Size(147, 60);
this.ObtenerCatalogRecordPorId.TabIndex = 19;
this.ObtenerCatalogRecordPorId.Text = "Obtener registro por Id";
this.ObtenerCatalogRecordPorId.UseVisualStyleBackColor = true;
@@ -641,9 +524,10 @@ private void InitializeComponent()
//
// ObtenerCatalogosDisponibles
//
- this.ObtenerCatalogosDisponibles.Location = new System.Drawing.Point(11, 19);
+ this.ObtenerCatalogosDisponibles.Location = new System.Drawing.Point(7, 156);
+ this.ObtenerCatalogosDisponibles.Margin = new System.Windows.Forms.Padding(4);
this.ObtenerCatalogosDisponibles.Name = "ObtenerCatalogosDisponibles";
- this.ObtenerCatalogosDisponibles.Size = new System.Drawing.Size(144, 50);
+ this.ObtenerCatalogosDisponibles.Size = new System.Drawing.Size(147, 60);
this.ObtenerCatalogosDisponibles.TabIndex = 18;
this.ObtenerCatalogosDisponibles.Text = "Obtener Catalogos disponibles";
this.ObtenerCatalogosDisponibles.UseVisualStyleBackColor = true;
@@ -651,9 +535,10 @@ private void InitializeComponent()
//
// BuscarCatalogo
//
- this.BuscarCatalogo.Location = new System.Drawing.Point(161, 131);
+ this.BuscarCatalogo.Location = new System.Drawing.Point(194, 21);
+ this.BuscarCatalogo.Margin = new System.Windows.Forms.Padding(4);
this.BuscarCatalogo.Name = "BuscarCatalogo";
- this.BuscarCatalogo.Size = new System.Drawing.Size(144, 50);
+ this.BuscarCatalogo.Size = new System.Drawing.Size(147, 60);
this.BuscarCatalogo.TabIndex = 17;
this.BuscarCatalogo.Text = "Buscar en cualquier catalogo SAT";
this.BuscarCatalogo.UseVisualStyleBackColor = true;
@@ -661,9 +546,10 @@ private void InitializeComponent()
//
// BuscarCodigoUnidad
//
- this.BuscarCodigoUnidad.Location = new System.Drawing.Point(161, 75);
+ this.BuscarCodigoUnidad.Location = new System.Drawing.Point(7, 88);
+ this.BuscarCodigoUnidad.Margin = new System.Windows.Forms.Padding(4);
this.BuscarCodigoUnidad.Name = "BuscarCodigoUnidad";
- this.BuscarCodigoUnidad.Size = new System.Drawing.Size(144, 50);
+ this.BuscarCodigoUnidad.Size = new System.Drawing.Size(147, 60);
this.BuscarCodigoUnidad.TabIndex = 14;
this.BuscarCodigoUnidad.Text = "Buscar Codigo Unidad";
this.BuscarCodigoUnidad.UseVisualStyleBackColor = true;
@@ -671,9 +557,10 @@ private void InitializeComponent()
//
// BuscarCodigoProductoServicio
//
- this.BuscarCodigoProductoServicio.Location = new System.Drawing.Point(161, 19);
+ this.BuscarCodigoProductoServicio.Location = new System.Drawing.Point(7, 21);
+ this.BuscarCodigoProductoServicio.Margin = new System.Windows.Forms.Padding(4);
this.BuscarCodigoProductoServicio.Name = "BuscarCodigoProductoServicio";
- this.BuscarCodigoProductoServicio.Size = new System.Drawing.Size(144, 50);
+ this.BuscarCodigoProductoServicio.Size = new System.Drawing.Size(147, 60);
this.BuscarCodigoProductoServicio.TabIndex = 13;
this.BuscarCodigoProductoServicio.Text = "Buscar Codigo Producto Servicio";
this.BuscarCodigoProductoServicio.UseVisualStyleBackColor = true;
@@ -686,19 +573,21 @@ private void InitializeComponent()
this.groupBox6.Controls.Add(this.CargarCertificados);
this.groupBox6.Controls.Add(this.ObtenerCertificadoById);
this.groupBox6.Controls.Add(this.EliEliminaCertificado);
- this.groupBox6.Controls.Add(this.ObtenerUltimosCertficadosValidos);
- this.groupBox6.Location = new System.Drawing.Point(379, 264);
+ this.groupBox6.Location = new System.Drawing.Point(332, 240);
+ this.groupBox6.Margin = new System.Windows.Forms.Padding(4);
this.groupBox6.Name = "groupBox6";
- this.groupBox6.Size = new System.Drawing.Size(331, 192);
+ this.groupBox6.Padding = new System.Windows.Forms.Padding(4);
+ this.groupBox6.Size = new System.Drawing.Size(373, 245);
this.groupBox6.TabIndex = 21;
this.groupBox6.TabStop = false;
this.groupBox6.Text = "Certificados (sellos)";
//
// CertDefaultRefs
//
- this.CertDefaultRefs.Location = new System.Drawing.Point(181, 75);
+ this.CertDefaultRefs.Location = new System.Drawing.Point(8, 163);
+ this.CertDefaultRefs.Margin = new System.Windows.Forms.Padding(4);
this.CertDefaultRefs.Name = "CertDefaultRefs";
- this.CertDefaultRefs.Size = new System.Drawing.Size(144, 50);
+ this.CertDefaultRefs.Size = new System.Drawing.Size(147, 60);
this.CertDefaultRefs.TabIndex = 11;
this.CertDefaultRefs.Text = "Obtener ultimos id de certficados validos de una persona";
this.CertDefaultRefs.UseVisualStyleBackColor = true;
@@ -706,9 +595,10 @@ private void InitializeComponent()
//
// button2
//
- this.button2.Location = new System.Drawing.Point(6, 131);
+ this.button2.Location = new System.Drawing.Point(7, 23);
+ this.button2.Margin = new System.Windows.Forms.Padding(4);
this.button2.Name = "button2";
- this.button2.Size = new System.Drawing.Size(144, 50);
+ this.button2.Size = new System.Drawing.Size(147, 60);
this.button2.TabIndex = 10;
this.button2.Text = "Obtener lista paginada";
this.button2.UseVisualStyleBackColor = true;
@@ -720,40 +610,201 @@ private void InitializeComponent()
this.tabControl1.Controls.Add(this.tabPage2);
this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
this.tabControl1.Location = new System.Drawing.Point(0, 0);
+ this.tabControl1.Margin = new System.Windows.Forms.Padding(4);
this.tabControl1.Name = "tabControl1";
this.tabControl1.SelectedIndex = 0;
- this.tabControl1.Size = new System.Drawing.Size(1143, 637);
+ this.tabControl1.Size = new System.Drawing.Size(906, 848);
this.tabControl1.TabIndex = 0;
//
// tabPage1
//
+ this.tabPage1.Controls.Add(this.groupBox10);
+ this.tabPage1.Controls.Add(this.groupBox13);
+ this.tabPage1.Controls.Add(this.groupBox12);
this.tabPage1.Controls.Add(this.groupBox2);
this.tabPage1.Controls.Add(this.groupBox6);
- this.tabPage1.Controls.Add(this.groupBox1);
- this.tabPage1.Controls.Add(this.groupBox5);
this.tabPage1.Controls.Add(this.groupBox3);
this.tabPage1.Controls.Add(this.groupBox4);
- this.tabPage1.Location = new System.Drawing.Point(4, 22);
+ this.tabPage1.Controls.Add(this.groupBox1);
+ this.tabPage1.Controls.Add(this.groupBox5);
+ this.tabPage1.Location = new System.Drawing.Point(4, 25);
+ this.tabPage1.Margin = new System.Windows.Forms.Padding(4);
this.tabPage1.Name = "tabPage1";
- this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
- this.tabPage1.Size = new System.Drawing.Size(1135, 611);
+ this.tabPage1.Padding = new System.Windows.Forms.Padding(4);
+ this.tabPage1.Size = new System.Drawing.Size(898, 819);
this.tabPage1.TabIndex = 0;
this.tabPage1.Text = "FACTURACION";
this.tabPage1.UseVisualStyleBackColor = true;
//
+ // groupBox10
+ //
+ this.groupBox10.Controls.Add(this.groupBox11);
+ this.groupBox10.Controls.Add(this.button5);
+ this.groupBox10.Controls.Add(this.button4);
+ this.groupBox10.Location = new System.Drawing.Point(712, 8);
+ this.groupBox10.Name = "groupBox10";
+ this.groupBox10.Size = new System.Drawing.Size(181, 326);
+ this.groupBox10.TabIndex = 24;
+ this.groupBox10.TabStop = false;
+ this.groupBox10.Text = "Descarga masiva";
+ //
+ // groupBox11
+ //
+ this.groupBox11.Controls.Add(this.button6);
+ this.groupBox11.Controls.Add(this.button3);
+ this.groupBox11.Location = new System.Drawing.Point(7, 22);
+ this.groupBox11.Name = "groupBox11";
+ this.groupBox11.Size = new System.Drawing.Size(162, 159);
+ this.groupBox11.TabIndex = 21;
+ this.groupBox11.TabStop = false;
+ this.groupBox11.Text = "Catálogos";
+ //
+ // button6
+ //
+ this.button6.Location = new System.Drawing.Point(7, 90);
+ this.button6.Margin = new System.Windows.Forms.Padding(4);
+ this.button6.Name = "button6";
+ this.button6.Size = new System.Drawing.Size(147, 60);
+ this.button6.TabIndex = 19;
+ this.button6.Text = "Listar catálogo";
+ this.button6.UseVisualStyleBackColor = true;
+ this.button6.Click += new System.EventHandler(this.button6_Click_1);
+ //
+ // button3
+ //
+ this.button3.Location = new System.Drawing.Point(7, 22);
+ this.button3.Margin = new System.Windows.Forms.Padding(4);
+ this.button3.Name = "button3";
+ this.button3.Size = new System.Drawing.Size(147, 60);
+ this.button3.TabIndex = 18;
+ this.button3.Text = "Listar catálogos";
+ this.button3.UseVisualStyleBackColor = true;
+ this.button3.Click += new System.EventHandler(this.button3_Click_1);
+ //
+ // button5
+ //
+ this.button5.Location = new System.Drawing.Point(14, 256);
+ this.button5.Margin = new System.Windows.Forms.Padding(4);
+ this.button5.Name = "button5";
+ this.button5.Size = new System.Drawing.Size(147, 60);
+ this.button5.TabIndex = 20;
+ this.button5.Text = "Solicitudes de descarga";
+ this.button5.UseVisualStyleBackColor = true;
+ this.button5.Click += new System.EventHandler(this.button5_Click_1);
+ //
+ // button4
+ //
+ this.button4.Location = new System.Drawing.Point(14, 188);
+ this.button4.Margin = new System.Windows.Forms.Padding(4);
+ this.button4.Name = "button4";
+ this.button4.Size = new System.Drawing.Size(147, 60);
+ this.button4.TabIndex = 19;
+ this.button4.Text = "Reglas de descarga";
+ this.button4.UseVisualStyleBackColor = true;
+ this.button4.Click += new System.EventHandler(this.button4_Click_1);
+ //
+ // groupBox13
+ //
+ this.groupBox13.Controls.Add(this.button17);
+ this.groupBox13.Controls.Add(this.button16);
+ this.groupBox13.Controls.Add(this.button15);
+ this.groupBox13.Controls.Add(this.button14);
+ this.groupBox13.Location = new System.Drawing.Point(4, 645);
+ this.groupBox13.Name = "groupBox13";
+ this.groupBox13.Size = new System.Drawing.Size(320, 158);
+ this.groupBox13.TabIndex = 23;
+ this.groupBox13.TabStop = false;
+ this.groupBox13.Text = "TIMBRES";
+ //
+ // button17
+ //
+ this.button17.Location = new System.Drawing.Point(162, 90);
+ this.button17.Margin = new System.Windows.Forms.Padding(4);
+ this.button17.Name = "button17";
+ this.button17.Size = new System.Drawing.Size(147, 60);
+ this.button17.TabIndex = 17;
+ this.button17.Text = "Retirar timbres";
+ this.button17.UseVisualStyleBackColor = true;
+ this.button17.Click += new System.EventHandler(this.button17_Click);
+ //
+ // button16
+ //
+ this.button16.Location = new System.Drawing.Point(162, 22);
+ this.button16.Margin = new System.Windows.Forms.Padding(4);
+ this.button16.Name = "button16";
+ this.button16.Size = new System.Drawing.Size(147, 60);
+ this.button16.TabIndex = 16;
+ this.button16.Text = "Transferir timbres";
+ this.button16.UseVisualStyleBackColor = true;
+ this.button16.Click += new System.EventHandler(this.button16_Click);
+ //
+ // button15
+ //
+ this.button15.Location = new System.Drawing.Point(7, 90);
+ this.button15.Margin = new System.Windows.Forms.Padding(4);
+ this.button15.Name = "button15";
+ this.button15.Size = new System.Drawing.Size(147, 60);
+ this.button15.TabIndex = 15;
+ this.button15.Text = "Obtener movimiento por ID";
+ this.button15.UseVisualStyleBackColor = true;
+ this.button15.Click += new System.EventHandler(this.button15_Click);
+ //
+ // button14
+ //
+ this.button14.Location = new System.Drawing.Point(7, 22);
+ this.button14.Margin = new System.Windows.Forms.Padding(4);
+ this.button14.Name = "button14";
+ this.button14.Size = new System.Drawing.Size(147, 60);
+ this.button14.TabIndex = 14;
+ this.button14.Text = "Listar movimientos";
+ this.button14.UseVisualStyleBackColor = true;
+ this.button14.Click += new System.EventHandler(this.button14_Click);
+ //
+ // groupBox12
+ //
+ this.groupBox12.Controls.Add(this.button13);
+ this.groupBox12.Controls.Add(this.button1);
+ this.groupBox12.Location = new System.Drawing.Point(4, 238);
+ this.groupBox12.Name = "groupBox12";
+ this.groupBox12.Size = new System.Drawing.Size(320, 80);
+ this.groupBox12.TabIndex = 22;
+ this.groupBox12.TabStop = false;
+ this.groupBox12.Text = "CUENTA";
+ //
+ // button13
+ //
+ this.button13.Location = new System.Drawing.Point(7, 15);
+ this.button13.Margin = new System.Windows.Forms.Padding(4);
+ this.button13.Name = "button13";
+ this.button13.Size = new System.Drawing.Size(147, 60);
+ this.button13.TabIndex = 13;
+ this.button13.Text = "Crear cuenta";
+ this.button13.UseVisualStyleBackColor = true;
+ this.button13.Click += new System.EventHandler(this.button13_Click);
+ //
+ // button1
+ //
+ this.button1.Location = new System.Drawing.Point(162, 15);
+ this.button1.Margin = new System.Windows.Forms.Padding(4);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(147, 60);
+ this.button1.TabIndex = 12;
+ this.button1.Text = "Iniciar sesión";
+ this.button1.UseVisualStyleBackColor = true;
+ //
// tabPage2
//
this.tabPage2.Controls.Add(this.groupBox9);
this.tabPage2.Controls.Add(this.groupBox8);
this.tabPage2.Controls.Add(this.groupBox7);
- this.tabPage2.Location = new System.Drawing.Point(4, 22);
+ this.tabPage2.Location = new System.Drawing.Point(4, 25);
+ this.tabPage2.Margin = new System.Windows.Forms.Padding(4);
this.tabPage2.Name = "tabPage2";
- this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
- this.tabPage2.Size = new System.Drawing.Size(1135, 611);
+ this.tabPage2.Padding = new System.Windows.Forms.Padding(4);
+ this.tabPage2.Size = new System.Drawing.Size(898, 819);
this.tabPage2.TabIndex = 1;
this.tabPage2.Text = "DESCARGA MASIVA XML";
this.tabPage2.UseVisualStyleBackColor = true;
-
//
// groupBox9
//
@@ -767,18 +818,32 @@ private void InitializeComponent()
this.groupBox9.Controls.Add(this.ListarXmlsPorSolicitudID);
this.groupBox9.Controls.Add(this.ObtenerSolicitudporID);
this.groupBox9.Controls.Add(this.ListarSolicitudes);
- this.groupBox9.Location = new System.Drawing.Point(3, 138);
+ this.groupBox9.Location = new System.Drawing.Point(4, 170);
+ this.groupBox9.Margin = new System.Windows.Forms.Padding(4);
this.groupBox9.Name = "groupBox9";
- this.groupBox9.Size = new System.Drawing.Size(587, 164);
+ this.groupBox9.Padding = new System.Windows.Forms.Padding(4);
+ this.groupBox9.Size = new System.Drawing.Size(783, 202);
this.groupBox9.TabIndex = 2;
this.groupBox9.TabStop = false;
this.groupBox9.Text = "Solicitudes de descarga";
//
+ // BuscarSolicitud
+ //
+ this.BuscarSolicitud.Location = new System.Drawing.Point(595, 85);
+ this.BuscarSolicitud.Margin = new System.Windows.Forms.Padding(4);
+ this.BuscarSolicitud.Name = "BuscarSolicitud";
+ this.BuscarSolicitud.Size = new System.Drawing.Size(139, 54);
+ this.BuscarSolicitud.TabIndex = 11;
+ this.BuscarSolicitud.Text = "Buscar Solicitud";
+ this.BuscarSolicitud.UseVisualStyleBackColor = true;
+ this.BuscarSolicitud.Click += new System.EventHandler(this.BuscarSolicitud_Click);
+ //
// EliminarSolicitud
//
- this.EliminarSolicitud.Location = new System.Drawing.Point(336, 69);
+ this.EliminarSolicitud.Location = new System.Drawing.Point(448, 85);
+ this.EliminarSolicitud.Margin = new System.Windows.Forms.Padding(4);
this.EliminarSolicitud.Name = "EliminarSolicitud";
- this.EliminarSolicitud.Size = new System.Drawing.Size(104, 44);
+ this.EliminarSolicitud.Size = new System.Drawing.Size(139, 54);
this.EliminarSolicitud.TabIndex = 10;
this.EliminarSolicitud.Text = "Eliminar Solicitud";
this.EliminarSolicitud.UseVisualStyleBackColor = true;
@@ -786,9 +851,10 @@ private void InitializeComponent()
//
// CrearSolicitud
//
- this.CrearSolicitud.Location = new System.Drawing.Point(226, 69);
+ this.CrearSolicitud.Location = new System.Drawing.Point(301, 85);
+ this.CrearSolicitud.Margin = new System.Windows.Forms.Padding(4);
this.CrearSolicitud.Name = "CrearSolicitud";
- this.CrearSolicitud.Size = new System.Drawing.Size(104, 44);
+ this.CrearSolicitud.Size = new System.Drawing.Size(139, 54);
this.CrearSolicitud.TabIndex = 9;
this.CrearSolicitud.Text = "Crear Solicitud";
this.CrearSolicitud.UseVisualStyleBackColor = true;
@@ -796,9 +862,10 @@ private void InitializeComponent()
//
// ObtenerSATResponsePorSolicitudID
//
- this.ObtenerSATResponsePorSolicitudID.Location = new System.Drawing.Point(116, 69);
+ this.ObtenerSATResponsePorSolicitudID.Location = new System.Drawing.Point(155, 85);
+ this.ObtenerSATResponsePorSolicitudID.Margin = new System.Windows.Forms.Padding(4);
this.ObtenerSATResponsePorSolicitudID.Name = "ObtenerSATResponsePorSolicitudID";
- this.ObtenerSATResponsePorSolicitudID.Size = new System.Drawing.Size(104, 44);
+ this.ObtenerSATResponsePorSolicitudID.Size = new System.Drawing.Size(139, 54);
this.ObtenerSATResponsePorSolicitudID.TabIndex = 8;
this.ObtenerSATResponsePorSolicitudID.Text = "Obtener SAT response por solicitud ID";
this.ObtenerSATResponsePorSolicitudID.UseVisualStyleBackColor = true;
@@ -806,9 +873,10 @@ private void InitializeComponent()
//
// ObtenerSATRequestPorSolicitudID
//
- this.ObtenerSATRequestPorSolicitudID.Location = new System.Drawing.Point(6, 69);
+ this.ObtenerSATRequestPorSolicitudID.Location = new System.Drawing.Point(8, 85);
+ this.ObtenerSATRequestPorSolicitudID.Margin = new System.Windows.Forms.Padding(4);
this.ObtenerSATRequestPorSolicitudID.Name = "ObtenerSATRequestPorSolicitudID";
- this.ObtenerSATRequestPorSolicitudID.Size = new System.Drawing.Size(104, 44);
+ this.ObtenerSATRequestPorSolicitudID.Size = new System.Drawing.Size(139, 54);
this.ObtenerSATRequestPorSolicitudID.TabIndex = 7;
this.ObtenerSATRequestPorSolicitudID.Text = "Obtener SAT request por solicitud ID";
this.ObtenerSATRequestPorSolicitudID.UseVisualStyleBackColor = true;
@@ -816,9 +884,10 @@ private void InitializeComponent()
//
// DescargarPaquetePorSolicitudID
//
- this.DescargarPaquetePorSolicitudID.Location = new System.Drawing.Point(446, 19);
+ this.DescargarPaquetePorSolicitudID.Location = new System.Drawing.Point(595, 23);
+ this.DescargarPaquetePorSolicitudID.Margin = new System.Windows.Forms.Padding(4);
this.DescargarPaquetePorSolicitudID.Name = "DescargarPaquetePorSolicitudID";
- this.DescargarPaquetePorSolicitudID.Size = new System.Drawing.Size(104, 44);
+ this.DescargarPaquetePorSolicitudID.Size = new System.Drawing.Size(139, 54);
this.DescargarPaquetePorSolicitudID.TabIndex = 6;
this.DescargarPaquetePorSolicitudID.Text = "Descargar paquete por solicitud ID";
this.DescargarPaquetePorSolicitudID.UseVisualStyleBackColor = true;
@@ -826,9 +895,10 @@ private void InitializeComponent()
//
// ListarMetaItemsPorSolicitudID
//
- this.ListarMetaItemsPorSolicitudID.Location = new System.Drawing.Point(336, 19);
+ this.ListarMetaItemsPorSolicitudID.Location = new System.Drawing.Point(448, 23);
+ this.ListarMetaItemsPorSolicitudID.Margin = new System.Windows.Forms.Padding(4);
this.ListarMetaItemsPorSolicitudID.Name = "ListarMetaItemsPorSolicitudID";
- this.ListarMetaItemsPorSolicitudID.Size = new System.Drawing.Size(104, 44);
+ this.ListarMetaItemsPorSolicitudID.Size = new System.Drawing.Size(139, 54);
this.ListarMetaItemsPorSolicitudID.TabIndex = 5;
this.ListarMetaItemsPorSolicitudID.Text = "Listar meta-items por solicitud ID";
this.ListarMetaItemsPorSolicitudID.UseVisualStyleBackColor = true;
@@ -836,9 +906,10 @@ private void InitializeComponent()
//
// ListarXmlsPorSolicitudID
//
- this.ListarXmlsPorSolicitudID.Location = new System.Drawing.Point(226, 19);
+ this.ListarXmlsPorSolicitudID.Location = new System.Drawing.Point(301, 23);
+ this.ListarXmlsPorSolicitudID.Margin = new System.Windows.Forms.Padding(4);
this.ListarXmlsPorSolicitudID.Name = "ListarXmlsPorSolicitudID";
- this.ListarXmlsPorSolicitudID.Size = new System.Drawing.Size(104, 44);
+ this.ListarXmlsPorSolicitudID.Size = new System.Drawing.Size(139, 54);
this.ListarXmlsPorSolicitudID.TabIndex = 4;
this.ListarXmlsPorSolicitudID.Text = "Listar xmls por solicitud ID";
this.ListarXmlsPorSolicitudID.UseVisualStyleBackColor = true;
@@ -846,9 +917,10 @@ private void InitializeComponent()
//
// ObtenerSolicitudporID
//
- this.ObtenerSolicitudporID.Location = new System.Drawing.Point(116, 19);
+ this.ObtenerSolicitudporID.Location = new System.Drawing.Point(155, 23);
+ this.ObtenerSolicitudporID.Margin = new System.Windows.Forms.Padding(4);
this.ObtenerSolicitudporID.Name = "ObtenerSolicitudporID";
- this.ObtenerSolicitudporID.Size = new System.Drawing.Size(104, 44);
+ this.ObtenerSolicitudporID.Size = new System.Drawing.Size(139, 54);
this.ObtenerSolicitudporID.TabIndex = 3;
this.ObtenerSolicitudporID.Text = "Obtener solicitud por ID";
this.ObtenerSolicitudporID.UseVisualStyleBackColor = true;
@@ -856,9 +928,10 @@ private void InitializeComponent()
//
// ListarSolicitudes
//
- this.ListarSolicitudes.Location = new System.Drawing.Point(6, 19);
+ this.ListarSolicitudes.Location = new System.Drawing.Point(8, 23);
+ this.ListarSolicitudes.Margin = new System.Windows.Forms.Padding(4);
this.ListarSolicitudes.Name = "ListarSolicitudes";
- this.ListarSolicitudes.Size = new System.Drawing.Size(104, 44);
+ this.ListarSolicitudes.Size = new System.Drawing.Size(139, 54);
this.ListarSolicitudes.TabIndex = 2;
this.ListarSolicitudes.Text = "Listar solicitudes";
this.ListarSolicitudes.UseVisualStyleBackColor = true;
@@ -872,18 +945,21 @@ private void InitializeComponent()
this.groupBox8.Controls.Add(this.CrearRegla);
this.groupBox8.Controls.Add(this.ObtenerReglaporID);
this.groupBox8.Controls.Add(this.ListarReglas);
- this.groupBox8.Location = new System.Drawing.Point(252, 6);
+ this.groupBox8.Location = new System.Drawing.Point(336, 7);
+ this.groupBox8.Margin = new System.Windows.Forms.Padding(4);
this.groupBox8.Name = "groupBox8";
- this.groupBox8.Size = new System.Drawing.Size(343, 126);
+ this.groupBox8.Padding = new System.Windows.Forms.Padding(4);
+ this.groupBox8.Size = new System.Drawing.Size(457, 155);
this.groupBox8.TabIndex = 1;
this.groupBox8.TabStop = false;
this.groupBox8.Text = "Reglas de descarga";
//
// EliminarRegla
//
- this.EliminarRegla.Location = new System.Drawing.Point(226, 69);
+ this.EliminarRegla.Location = new System.Drawing.Point(301, 85);
+ this.EliminarRegla.Margin = new System.Windows.Forms.Padding(4);
this.EliminarRegla.Name = "EliminarRegla";
- this.EliminarRegla.Size = new System.Drawing.Size(104, 44);
+ this.EliminarRegla.Size = new System.Drawing.Size(139, 54);
this.EliminarRegla.TabIndex = 6;
this.EliminarRegla.Text = "Eliminar Regla";
this.EliminarRegla.UseVisualStyleBackColor = true;
@@ -891,9 +967,10 @@ private void InitializeComponent()
//
// ActualizarRegla
//
- this.ActualizarRegla.Location = new System.Drawing.Point(116, 69);
+ this.ActualizarRegla.Location = new System.Drawing.Point(155, 85);
+ this.ActualizarRegla.Margin = new System.Windows.Forms.Padding(4);
this.ActualizarRegla.Name = "ActualizarRegla";
- this.ActualizarRegla.Size = new System.Drawing.Size(104, 44);
+ this.ActualizarRegla.Size = new System.Drawing.Size(139, 54);
this.ActualizarRegla.TabIndex = 5;
this.ActualizarRegla.Text = "Actualizar Regla";
this.ActualizarRegla.UseVisualStyleBackColor = true;
@@ -901,9 +978,10 @@ private void InitializeComponent()
//
// CrearReglaSolicituddePrueba
//
- this.CrearReglaSolicituddePrueba.Location = new System.Drawing.Point(6, 69);
+ this.CrearReglaSolicituddePrueba.Location = new System.Drawing.Point(8, 85);
+ this.CrearReglaSolicituddePrueba.Margin = new System.Windows.Forms.Padding(4);
this.CrearReglaSolicituddePrueba.Name = "CrearReglaSolicituddePrueba";
- this.CrearReglaSolicituddePrueba.Size = new System.Drawing.Size(104, 44);
+ this.CrearReglaSolicituddePrueba.Size = new System.Drawing.Size(139, 54);
this.CrearReglaSolicituddePrueba.TabIndex = 4;
this.CrearReglaSolicituddePrueba.Text = "Crear regla y solicitud de prueba";
this.CrearReglaSolicituddePrueba.UseVisualStyleBackColor = true;
@@ -911,9 +989,10 @@ private void InitializeComponent()
//
// CrearRegla
//
- this.CrearRegla.Location = new System.Drawing.Point(226, 19);
+ this.CrearRegla.Location = new System.Drawing.Point(301, 23);
+ this.CrearRegla.Margin = new System.Windows.Forms.Padding(4);
this.CrearRegla.Name = "CrearRegla";
- this.CrearRegla.Size = new System.Drawing.Size(104, 44);
+ this.CrearRegla.Size = new System.Drawing.Size(139, 54);
this.CrearRegla.TabIndex = 3;
this.CrearRegla.Text = "Crear Regla";
this.CrearRegla.UseVisualStyleBackColor = true;
@@ -921,9 +1000,10 @@ private void InitializeComponent()
//
// ObtenerReglaporID
//
- this.ObtenerReglaporID.Location = new System.Drawing.Point(116, 19);
+ this.ObtenerReglaporID.Location = new System.Drawing.Point(155, 23);
+ this.ObtenerReglaporID.Margin = new System.Windows.Forms.Padding(4);
this.ObtenerReglaporID.Name = "ObtenerReglaporID";
- this.ObtenerReglaporID.Size = new System.Drawing.Size(104, 44);
+ this.ObtenerReglaporID.Size = new System.Drawing.Size(139, 54);
this.ObtenerReglaporID.TabIndex = 2;
this.ObtenerReglaporID.Text = "Obtener Regla por ID";
this.ObtenerReglaporID.UseVisualStyleBackColor = true;
@@ -931,9 +1011,10 @@ private void InitializeComponent()
//
// ListarReglas
//
- this.ListarReglas.Location = new System.Drawing.Point(6, 19);
+ this.ListarReglas.Location = new System.Drawing.Point(8, 23);
+ this.ListarReglas.Margin = new System.Windows.Forms.Padding(4);
this.ListarReglas.Name = "ListarReglas";
- this.ListarReglas.Size = new System.Drawing.Size(104, 44);
+ this.ListarReglas.Size = new System.Drawing.Size(139, 54);
this.ListarReglas.TabIndex = 1;
this.ListarReglas.Text = "Listar Reglas";
this.ListarReglas.UseVisualStyleBackColor = true;
@@ -943,18 +1024,21 @@ private void InitializeComponent()
//
this.groupBox7.Controls.Add(this.ListarDownloadCatalogo);
this.groupBox7.Controls.Add(this.ListarDownloadCatalogos);
- this.groupBox7.Location = new System.Drawing.Point(8, 6);
+ this.groupBox7.Location = new System.Drawing.Point(11, 7);
+ this.groupBox7.Margin = new System.Windows.Forms.Padding(4);
this.groupBox7.Name = "groupBox7";
- this.groupBox7.Size = new System.Drawing.Size(238, 126);
+ this.groupBox7.Padding = new System.Windows.Forms.Padding(4);
+ this.groupBox7.Size = new System.Drawing.Size(317, 155);
this.groupBox7.TabIndex = 0;
this.groupBox7.TabStop = false;
this.groupBox7.Text = "Catalogos descarga masiva";
//
// ListarDownloadCatalogo
//
- this.ListarDownloadCatalogo.Location = new System.Drawing.Point(116, 19);
+ this.ListarDownloadCatalogo.Location = new System.Drawing.Point(155, 23);
+ this.ListarDownloadCatalogo.Margin = new System.Windows.Forms.Padding(4);
this.ListarDownloadCatalogo.Name = "ListarDownloadCatalogo";
- this.ListarDownloadCatalogo.Size = new System.Drawing.Size(104, 44);
+ this.ListarDownloadCatalogo.Size = new System.Drawing.Size(139, 54);
this.ListarDownloadCatalogo.TabIndex = 1;
this.ListarDownloadCatalogo.Text = "Listar catálogo";
this.ListarDownloadCatalogo.UseVisualStyleBackColor = true;
@@ -962,30 +1046,22 @@ private void InitializeComponent()
//
// ListarDownloadCatalogos
//
- this.ListarDownloadCatalogos.Location = new System.Drawing.Point(6, 19);
+ this.ListarDownloadCatalogos.Location = new System.Drawing.Point(8, 23);
+ this.ListarDownloadCatalogos.Margin = new System.Windows.Forms.Padding(4);
this.ListarDownloadCatalogos.Name = "ListarDownloadCatalogos";
- this.ListarDownloadCatalogos.Size = new System.Drawing.Size(104, 44);
+ this.ListarDownloadCatalogos.Size = new System.Drawing.Size(139, 54);
this.ListarDownloadCatalogos.TabIndex = 0;
this.ListarDownloadCatalogos.Text = "Listar catálogos";
this.ListarDownloadCatalogos.UseVisualStyleBackColor = true;
this.ListarDownloadCatalogos.Click += new System.EventHandler(this.ListarDownloadCatalogos_Click);
//
- // BuscarSolicitud
- //
- this.BuscarSolicitud.Location = new System.Drawing.Point(446, 69);
- this.BuscarSolicitud.Name = "BuscarSolicitud";
- this.BuscarSolicitud.Size = new System.Drawing.Size(104, 44);
- this.BuscarSolicitud.TabIndex = 11;
- this.BuscarSolicitud.Text = "Buscar Solicitud";
- this.BuscarSolicitud.UseVisualStyleBackColor = true;
- this.BuscarSolicitud.Click += new System.EventHandler(this.BuscarSolicitud_Click);
- //
// Form1
//
- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(1143, 637);
+ this.ClientSize = new System.Drawing.Size(906, 848);
this.Controls.Add(this.tabControl1);
+ this.Margin = new System.Windows.Forms.Padding(4);
this.Name = "Form1";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "Form1";
@@ -997,6 +1073,10 @@ private void InitializeComponent()
this.groupBox6.ResumeLayout(false);
this.tabControl1.ResumeLayout(false);
this.tabPage1.ResumeLayout(false);
+ this.groupBox10.ResumeLayout(false);
+ this.groupBox11.ResumeLayout(false);
+ this.groupBox13.ResumeLayout(false);
+ this.groupBox12.ResumeLayout(false);
this.tabPage2.ResumeLayout(false);
this.groupBox9.ResumeLayout(false);
this.groupBox8.ResumeLayout(false);
@@ -1008,19 +1088,7 @@ private void InitializeComponent()
#endregion
private System.Windows.Forms.Button ObtenerFacturaById;
- private System.Windows.Forms.Button FacturaIngresoPorValores;
- private System.Windows.Forms.Button FacturaIngresoPorRefs;
- private System.Windows.Forms.Button NotaCreditoValores;
- private System.Windows.Forms.Button NotaCreditoRefs;
- private System.Windows.Forms.Button CfdiPagoRefs;
- private System.Windows.Forms.Button CfdiPagoValores;
- private System.Windows.Forms.Button GenerarPDFValores;
- private System.Windows.Forms.Button CancelByValues;
- private System.Windows.Forms.Button button1;
- private System.Windows.Forms.Button GenerarPDFRefs;
private System.Windows.Forms.Button ObtenerFacturaXMLById;
- private System.Windows.Forms.Button EnviarPorValores;
- private System.Windows.Forms.Button EnviarPorReferencia;
private System.Windows.Forms.GroupBox groupBox2;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.Button ObtenerPersonaPorID;
@@ -1032,7 +1100,6 @@ private void InitializeComponent()
private System.Windows.Forms.Button CargarCertificados;
private System.Windows.Forms.Button ObtenerCertificadoById;
private System.Windows.Forms.Button EliEliminaCertificado;
- private System.Windows.Forms.Button ObtenerUltimosCertficadosValidos;
private System.Windows.Forms.GroupBox groupBox3;
private System.Windows.Forms.Button ActualizarImpuestosProducto;
private System.Windows.Forms.Button ObtenerImpuestosProducto;
@@ -1056,10 +1123,6 @@ private void InitializeComponent()
private System.Windows.Forms.Button CertDefaultRefs;
private System.Windows.Forms.Button UpdateApiKey;
private System.Windows.Forms.Button ObtenerCatalogRecordPorId;
- private System.Windows.Forms.Button ConsultarEstadoRefs;
- private System.Windows.Forms.Button ConsultarEstadoValores;
- private System.Windows.Forms.Button GlobalInvoiceValbutton;
- private System.Windows.Forms.Button GlobalInvoiceRefButton;
private System.Windows.Forms.TabControl tabControl1;
private System.Windows.Forms.TabPage tabPage1;
private System.Windows.Forms.TabPage tabPage2;
@@ -1083,9 +1146,25 @@ private void InitializeComponent()
private System.Windows.Forms.Button ListarReglas;
private System.Windows.Forms.Button ListarDownloadCatalogo;
private System.Windows.Forms.Button ListarDownloadCatalogos;
- private System.Windows.Forms.Button DynamicPriceCreditNoteButton;
- private System.Windows.Forms.Button DynamicPriceInvoiceButton;
private System.Windows.Forms.Button BuscarSolicitud;
+ private System.Windows.Forms.Button button12;
+ private System.Windows.Forms.Button button11;
+ private System.Windows.Forms.GroupBox groupBox13;
+ private System.Windows.Forms.Button button14;
+ private System.Windows.Forms.GroupBox groupBox12;
+ private System.Windows.Forms.Button button13;
+ private System.Windows.Forms.Button button1;
+ private System.Windows.Forms.Button button16;
+ private System.Windows.Forms.Button button15;
+ private System.Windows.Forms.Button button17;
+ private System.Windows.Forms.Button button8;
+ private System.Windows.Forms.Button button7;
+ private System.Windows.Forms.GroupBox groupBox10;
+ private System.Windows.Forms.Button button4;
+ private System.Windows.Forms.Button button3;
+ private System.Windows.Forms.Button button5;
+ private System.Windows.Forms.GroupBox groupBox11;
+ private System.Windows.Forms.Button button6;
}
}
diff --git a/FiscalApi.Samples.NetFramework/Form1.cs b/FiscalApi.Samples.NetFramework/Form1.cs
index 65af9de..7babf0d 100644
--- a/FiscalApi.Samples.NetFramework/Form1.cs
+++ b/FiscalApi.Samples.NetFramework/Form1.cs
@@ -6,6 +6,7 @@
using Fiscalapi.Common;
using Fiscalapi.Models;
using Fiscalapi.Services;
+using Newtonsoft.Json;
namespace FiscalApi.Samples.NetFramework
@@ -20,9 +21,9 @@ public Form1()
Settings = new FiscalapiSettings
{
- //ApiUrl = "https://test.fiscalapi.com",
- //ApiKey = "",
- //Tenant = "",
+ ApiUrl = "https://test.fiscalapi.com",
+ ApiKey = "sk_test_b4f8cc00_d02a_4ecc_a68a_f87ae970958c",
+ Tenant = "275510ee-f64d-435a-9e92-1553d8f10a7e",
};
// Create directory if not exists
@@ -2798,6 +2799,242 @@ public static void WriteFileToDisk(FileResponse fileResponse)
File.WriteAllBytes(filePath, fileBytes);
}
-
+ private async void button3_Click(object sender, EventArgs e)
+ {
+ var fiscalApi = FiscalApiClient.Create(Settings);
+
+ var apiResponse = await fiscalApi.Persons.Employer.GetByIdAsync("0e82a655-5f0c-4e07-abab-8f322e4123ef");
+
+ if (apiResponse.Succeeded)
+ {
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data));
+ }
+ }
+
+ private async void button4_Click(object sender, EventArgs e)
+ {
+ var fiscalApi = FiscalApiClient.Create(Settings);
+
+ string personId = "bd199ed8-02ef-47c0-919c-9479dd8ecae7";
+ EmployerData requestModel = new EmployerData()
+ {
+ PersonId = personId,
+ EmployerRegistration = "abc1234567890",
+ OriginEmployerTin = "MEQA951024HC9",
+ OwnResourceAmount = 10000.0M
+ };
+ var apiResponse = await fiscalApi.Persons.Employer.CreateAsync(requestModel);
+
+ if (apiResponse.Succeeded)
+ {
+ MessageBox.Show("");
+ }
+ }
+
+ private async void button5_Click(object sender, EventArgs e)
+ {
+ var fiscalapi = FiscalApiClient.Create(Settings);
+ string personId = "bd199ed8-02ef-47c0-919c-9479dd8ecae7";
+ EmployerData requestModel = new EmployerData()
+ {
+ PersonId = personId,
+ EmployerRegistration = "xyz0987654321",
+ OriginEmployerTin = "URE180429TM6",
+ OwnResourceAmount = 98.5M,
+ SatFundSourceId = "IF"
+ };
+
+ var apiResponse = await fiscalapi.Persons.Employer.UpdateAsync(requestModel);
+
+ if (apiResponse.Succeeded)
+ {
+ MessageBox.Show(apiResponse.Data.OriginEmployerTin);
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button6_Click(object sender, EventArgs e)
+ {
+ var fiscalapi = FiscalApiClient.Create(Settings);
+ string personId = "bd199ed8-02ef-47c0-919c-9479dd8ecae7";
+
+ }
+
+ private void button12_Click(object sender, EventArgs e)
+ {
+ InvoiceValueForm ivf = new InvoiceValueForm(Settings);
+ ivf.ShowDialog();
+ }
+
+ private void button11_Click(object sender, EventArgs e)
+ {
+ InvoiceReferenceForm irf = new InvoiceReferenceForm(Settings);
+ irf.Show();
+ }
+
+ private async void button3_Click_1(object sender, EventArgs e)
+ {
+ // Obtener todos los catálogos disponibles
+
+ // Create instance of FiscalApiClient
+
+ var fiscalApi = FiscalApiClient.Create(Settings);
+
+ // Send request
+ var apiResponse = await fiscalApi.Catalogs.GetListAsync();
+
+ // Check response
+
+ if (apiResponse.Succeeded)
+ {
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show($@"HttpStatusCode: {apiResponse.HttpStatusCode}");
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private void button4_Click_1(object sender, EventArgs e)
+ {
+ DownloadRulesForm downloadRulesForm = new DownloadRulesForm(Settings);
+ downloadRulesForm.Show();
+ }
+
+ private void button13_Click(object sender, EventArgs e)
+ {
+ var fiscalapi = FiscalApiClient.Create(Settings);
+
+ }
+
+ private void button7_Click(object sender, EventArgs e)
+ {
+ EmployerForm employerForm = new EmployerForm(Settings);
+ employerForm.Show();
+ }
+
+ private async void button14_Click(object sender, EventArgs e)
+ {
+ var fiscalapi = FiscalApiClient.Create(Settings);
+
+ var apiResponse = await fiscalapi.Stamps.GetListAsync(1, 2);
+
+
+ if (apiResponse.Succeeded)
+ {
+ MessageBox.Show(apiResponse.Data.TotalPages.ToString());
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button15_Click(object sender, EventArgs e)
+ {
+ var fiscalapi = FiscalApiClient.Create(Settings);
+
+ var apiResponse = await fiscalapi.Stamps.GetByIdAsync("3186ca81-83c8-4a99-99ea-12445519de50");
+
+ if (apiResponse.Succeeded)
+ {
+ MessageBox.Show(apiResponse.Data.Id);
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button16_Click(object sender, EventArgs e)
+ {
+ var fiscalapi = FiscalApiClient.Create(Settings);
+
+ var requestModel = new StampTransactionParams
+ {
+ FromPersonId = "",
+ ToPersonId = "",
+ Amount = 1,
+ Comments = ""
+ };
+
+ var apiResponse = await fiscalapi.Stamps.TransferStamps(requestModel);
+
+ if (apiResponse.Succeeded)
+ {
+ MessageBox.Show(apiResponse.Data.ToString());
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button6_Click_1(object sender, EventArgs e)
+ {
+ // Obtener catalog registro de un catalogo por nombre del catalogo y id del registro
+
+ // Create instance of FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(Settings);
+
+ // Send request /api/v4/catalogs/SatProductCodes/key/84111500
+ var apiResponse = await fiscalApi.Catalogs.GetRecordByIdAsync("SatProductCodes", "84111500");
+
+ // Check response
+ if (apiResponse.Succeeded)
+ {
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show($@"HttpStatusCode: {apiResponse.HttpStatusCode}");
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private void button5_Click_1(object sender, EventArgs e)
+ {
+ DownloadRequestsForm downloadRequestsForm = new DownloadRequestsForm(Settings);
+ }
+
+ private void button8_Click(object sender, EventArgs e)
+ {
+ EmployeeForm employeeForm = new EmployeeForm(Settings);
+ employeeForm.Show();
+ }
+
+ private async void button17_Click(object sender, EventArgs e)
+ {
+ var fiscalapi = FiscalApiClient.Create(Settings);
+
+ var requestModel = new StampTransactionParams
+ {
+ FromPersonId = "",
+ ToPersonId = "",
+ Amount = 1,
+ Comments = ""
+ };
+
+ var apiResponse = await fiscalapi.Stamps.TransferStamps(requestModel);
+
+ if (apiResponse.Succeeded)
+ {
+ MessageBox.Show(apiResponse.Data.ToString());
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
}
}
\ No newline at end of file
diff --git a/FiscalApi.Samples.NetFramework/IncomeInvoiceReferenceForm.Designer.cs b/FiscalApi.Samples.NetFramework/IncomeInvoiceReferenceForm.Designer.cs
new file mode 100644
index 0000000..29bc026
--- /dev/null
+++ b/FiscalApi.Samples.NetFramework/IncomeInvoiceReferenceForm.Designer.cs
@@ -0,0 +1,355 @@
+namespace FiscalApi.Samples.NetFramework
+{
+ partial class IncomeInvoiceReferenceForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.button21 = new System.Windows.Forms.Button();
+ this.button20 = new System.Windows.Forms.Button();
+ this.button19 = new System.Windows.Forms.Button();
+ this.button18 = new System.Windows.Forms.Button();
+ this.button17 = new System.Windows.Forms.Button();
+ this.button16 = new System.Windows.Forms.Button();
+ this.button15 = new System.Windows.Forms.Button();
+ this.button8 = new System.Windows.Forms.Button();
+ this.button7 = new System.Windows.Forms.Button();
+ this.button6 = new System.Windows.Forms.Button();
+ this.button5 = new System.Windows.Forms.Button();
+ this.button4 = new System.Windows.Forms.Button();
+ this.button3 = new System.Windows.Forms.Button();
+ this.button2 = new System.Windows.Forms.Button();
+ this.button14 = new System.Windows.Forms.Button();
+ this.button13 = new System.Windows.Forms.Button();
+ this.button12 = new System.Windows.Forms.Button();
+ this.button11 = new System.Windows.Forms.Button();
+ this.button10 = new System.Windows.Forms.Button();
+ this.button9 = new System.Windows.Forms.Button();
+ this.button1 = new System.Windows.Forms.Button();
+ this.button22 = new System.Windows.Forms.Button();
+ this.SuspendLayout();
+ //
+ // button21
+ //
+ this.button21.Location = new System.Drawing.Point(20, 618);
+ this.button21.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button21.Name = "button21";
+ this.button21.Size = new System.Drawing.Size(189, 60);
+ this.button21.TabIndex = 55;
+ this.button21.Text = "Factura ingreso impuestos excentos";
+ this.button21.UseVisualStyleBackColor = true;
+ this.button21.Click += new System.EventHandler(this.button21_Click);
+ //
+ // button20
+ //
+ this.button20.Location = new System.Drawing.Point(215, 619);
+ this.button20.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button20.Name = "button20";
+ this.button20.Size = new System.Drawing.Size(189, 60);
+ this.button20.TabIndex = 54;
+ this.button20.Text = "Factura ingreso tasa cero y retenciones";
+ this.button20.UseVisualStyleBackColor = true;
+ this.button20.Click += new System.EventHandler(this.button20_Click);
+ //
+ // button19
+ //
+ this.button19.Location = new System.Drawing.Point(215, 554);
+ this.button19.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button19.Name = "button19";
+ this.button19.Size = new System.Drawing.Size(189, 60);
+ this.button19.TabIndex = 53;
+ this.button19.Text = "Factura ingreso RESICO retención ISR 1.25%";
+ this.button19.UseVisualStyleBackColor = true;
+ this.button19.Click += new System.EventHandler(this.button19_Click);
+ //
+ // button18
+ //
+ this.button18.Location = new System.Drawing.Point(215, 488);
+ this.button18.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button18.Name = "button18";
+ this.button18.Size = new System.Drawing.Size(189, 60);
+ this.button18.TabIndex = 52;
+ this.button18.Text = "Factura ingreso público en general";
+ this.button18.UseVisualStyleBackColor = true;
+ this.button18.Click += new System.EventHandler(this.button18_Click);
+ //
+ // button17
+ //
+ this.button17.Location = new System.Drawing.Point(215, 423);
+ this.button17.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button17.Name = "button17";
+ this.button17.Size = new System.Drawing.Size(189, 60);
+ this.button17.TabIndex = 51;
+ this.button17.Text = "Factura ingreso objeto impuesto 08";
+ this.button17.UseVisualStyleBackColor = true;
+ this.button17.Click += new System.EventHandler(this.button17_Click);
+ //
+ // button16
+ //
+ this.button16.Location = new System.Drawing.Point(215, 356);
+ this.button16.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button16.Name = "button16";
+ this.button16.Size = new System.Drawing.Size(189, 60);
+ this.button16.TabIndex = 50;
+ this.button16.Text = "Factura ingreso objeto impuesto 07 003 - IEPS";
+ this.button16.UseVisualStyleBackColor = true;
+ this.button16.Click += new System.EventHandler(this.button16_Click);
+ //
+ // button15
+ //
+ this.button15.Location = new System.Drawing.Point(215, 290);
+ this.button15.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button15.Name = "button15";
+ this.button15.Size = new System.Drawing.Size(189, 60);
+ this.button15.TabIndex = 49;
+ this.button15.Text = "Factura ingreso objeto impuesto 07 001 y 003 - ISR y IEPS";
+ this.button15.UseVisualStyleBackColor = true;
+ this.button15.Click += new System.EventHandler(this.button15_Click);
+ //
+ // button8
+ //
+ this.button8.Location = new System.Drawing.Point(215, 224);
+ this.button8.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button8.Name = "button8";
+ this.button8.Size = new System.Drawing.Size(189, 60);
+ this.button8.TabIndex = 48;
+ this.button8.Text = "Factura ingreso objecto impuesto 06 001 - ISR";
+ this.button8.UseVisualStyleBackColor = true;
+ this.button8.Click += new System.EventHandler(this.button8_Click);
+ //
+ // button7
+ //
+ this.button7.Location = new System.Drawing.Point(215, 158);
+ this.button7.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button7.Name = "button7";
+ this.button7.Size = new System.Drawing.Size(189, 60);
+ this.button7.TabIndex = 47;
+ this.button7.Text = "Factura ingreso nota de débito";
+ this.button7.UseVisualStyleBackColor = true;
+ this.button7.Click += new System.EventHandler(this.button7_Click);
+ //
+ // button6
+ //
+ this.button6.Location = new System.Drawing.Point(215, 94);
+ this.button6.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button6.Name = "button6";
+ this.button6.Size = new System.Drawing.Size(189, 60);
+ this.button6.TabIndex = 46;
+ this.button6.Text = "Factura ingreso kit (parte concepto)";
+ this.button6.UseVisualStyleBackColor = true;
+ this.button6.Click += new System.EventHandler(this.button6_Click);
+ //
+ // button5
+ //
+ this.button5.Location = new System.Drawing.Point(215, 29);
+ this.button5.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button5.Name = "button5";
+ this.button5.Size = new System.Drawing.Size(189, 60);
+ this.button5.TabIndex = 45;
+ this.button5.Text = "Factura ingreso-ingreso sin impuestos";
+ this.button5.UseVisualStyleBackColor = true;
+ this.button5.Click += new System.EventHandler(this.button5_Click);
+ //
+ // button4
+ //
+ this.button4.Location = new System.Drawing.Point(20, 682);
+ this.button4.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button4.Name = "button4";
+ this.button4.Size = new System.Drawing.Size(189, 60);
+ this.button4.TabIndex = 44;
+ this.button4.Text = "Factura ingreso-hidrocarburos-petrolíferos y servicios";
+ this.button4.UseVisualStyleBackColor = true;
+ this.button4.Click += new System.EventHandler(this.button4_Click);
+ //
+ // button3
+ //
+ this.button3.Location = new System.Drawing.Point(215, 682);
+ this.button3.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button3.Name = "button3";
+ this.button3.Size = new System.Drawing.Size(189, 60);
+ this.button3.TabIndex = 43;
+ this.button3.Text = "Factura ingreso tasa cero";
+ this.button3.UseVisualStyleBackColor = true;
+ this.button3.Click += new System.EventHandler(this.button3_Click);
+ //
+ // button2
+ //
+ this.button2.Location = new System.Drawing.Point(20, 554);
+ this.button2.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button2.Name = "button2";
+ this.button2.Size = new System.Drawing.Size(189, 60);
+ this.button2.TabIndex = 42;
+ this.button2.Text = "Factura ingreso global con descuentos";
+ this.button2.UseVisualStyleBackColor = true;
+ this.button2.Click += new System.EventHandler(this.button2_Click);
+ //
+ // button14
+ //
+ this.button14.Location = new System.Drawing.Point(20, 488);
+ this.button14.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button14.Name = "button14";
+ this.button14.Size = new System.Drawing.Size(189, 60);
+ this.button14.TabIndex = 41;
+ this.button14.Text = "Factura ingreso global";
+ this.button14.UseVisualStyleBackColor = true;
+ this.button14.Click += new System.EventHandler(this.button14_Click);
+ //
+ // button13
+ //
+ this.button13.Location = new System.Drawing.Point(20, 423);
+ this.button13.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button13.Name = "button13";
+ this.button13.Size = new System.Drawing.Size(189, 60);
+ this.button13.TabIndex = 40;
+ this.button13.Text = "Factura ingreso cuenta predial";
+ this.button13.UseVisualStyleBackColor = true;
+ this.button13.Click += new System.EventHandler(this.button13_Click);
+ //
+ // button12
+ //
+ this.button12.Location = new System.Drawing.Point(20, 356);
+ this.button12.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button12.Name = "button12";
+ this.button12.Size = new System.Drawing.Size(189, 60);
+ this.button12.TabIndex = 39;
+ this.button12.Text = "Factura ingreso CFDI relacionados";
+ this.button12.UseVisualStyleBackColor = true;
+ this.button12.Click += new System.EventHandler(this.button12_Click);
+ //
+ // button11
+ //
+ this.button11.Location = new System.Drawing.Point(20, 290);
+ this.button11.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button11.Name = "button11";
+ this.button11.Size = new System.Drawing.Size(189, 60);
+ this.button11.TabIndex = 38;
+ this.button11.Text = "Factura de ingreso anticipos con remanente";
+ this.button11.UseVisualStyleBackColor = true;
+ this.button11.Click += new System.EventHandler(this.button11_Click);
+ //
+ // button10
+ //
+ this.button10.Location = new System.Drawing.Point(20, 224);
+ this.button10.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button10.Name = "button10";
+ this.button10.Size = new System.Drawing.Size(189, 60);
+ this.button10.TabIndex = 37;
+ this.button10.Text = "Factura de ingreso anticipos con CFDI egreso";
+ this.button10.UseVisualStyleBackColor = true;
+ this.button10.Click += new System.EventHandler(this.button10_Click);
+ //
+ // button9
+ //
+ this.button9.Location = new System.Drawing.Point(20, 158);
+ this.button9.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button9.Name = "button9";
+ this.button9.Size = new System.Drawing.Size(189, 60);
+ this.button9.TabIndex = 36;
+ this.button9.Text = "Factura de ingreso a cuenta de terceros";
+ this.button9.UseVisualStyleBackColor = true;
+ this.button9.Click += new System.EventHandler(this.button9_Click);
+ //
+ // button1
+ //
+ this.button1.Location = new System.Drawing.Point(20, 29);
+ this.button1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(189, 60);
+ this.button1.TabIndex = 35;
+ this.button1.Text = "Crear factura de ingreso";
+ this.button1.UseVisualStyleBackColor = true;
+ this.button1.Click += new System.EventHandler(this.button1_Click);
+ //
+ // button22
+ //
+ this.button22.Location = new System.Drawing.Point(20, 94);
+ this.button22.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button22.Name = "button22";
+ this.button22.Size = new System.Drawing.Size(189, 60);
+ this.button22.TabIndex = 56;
+ this.button22.Text = "Crear factura de ingreso precios dinámicos";
+ this.button22.UseVisualStyleBackColor = true;
+ this.button22.Click += new System.EventHandler(this.button22_Click);
+ //
+ // IncomeInvoiceReferenceForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(427, 777);
+ this.Controls.Add(this.button22);
+ this.Controls.Add(this.button21);
+ this.Controls.Add(this.button20);
+ this.Controls.Add(this.button19);
+ this.Controls.Add(this.button18);
+ this.Controls.Add(this.button17);
+ this.Controls.Add(this.button16);
+ this.Controls.Add(this.button15);
+ this.Controls.Add(this.button8);
+ this.Controls.Add(this.button7);
+ this.Controls.Add(this.button6);
+ this.Controls.Add(this.button5);
+ this.Controls.Add(this.button4);
+ this.Controls.Add(this.button3);
+ this.Controls.Add(this.button2);
+ this.Controls.Add(this.button14);
+ this.Controls.Add(this.button13);
+ this.Controls.Add(this.button12);
+ this.Controls.Add(this.button11);
+ this.Controls.Add(this.button10);
+ this.Controls.Add(this.button9);
+ this.Controls.Add(this.button1);
+ this.Name = "IncomeInvoiceReferenceForm";
+ this.Text = "IncomeInvoiceReferenceForm";
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Button button21;
+ private System.Windows.Forms.Button button20;
+ private System.Windows.Forms.Button button19;
+ private System.Windows.Forms.Button button18;
+ private System.Windows.Forms.Button button17;
+ private System.Windows.Forms.Button button16;
+ private System.Windows.Forms.Button button15;
+ private System.Windows.Forms.Button button8;
+ private System.Windows.Forms.Button button7;
+ private System.Windows.Forms.Button button6;
+ private System.Windows.Forms.Button button5;
+ private System.Windows.Forms.Button button4;
+ private System.Windows.Forms.Button button3;
+ private System.Windows.Forms.Button button2;
+ private System.Windows.Forms.Button button14;
+ private System.Windows.Forms.Button button13;
+ private System.Windows.Forms.Button button12;
+ private System.Windows.Forms.Button button11;
+ private System.Windows.Forms.Button button10;
+ private System.Windows.Forms.Button button9;
+ private System.Windows.Forms.Button button1;
+ private System.Windows.Forms.Button button22;
+ }
+}
\ No newline at end of file
diff --git a/FiscalApi.Samples.NetFramework/IncomeInvoiceReferenceForm.cs b/FiscalApi.Samples.NetFramework/IncomeInvoiceReferenceForm.cs
new file mode 100644
index 0000000..4a5b49b
--- /dev/null
+++ b/FiscalApi.Samples.NetFramework/IncomeInvoiceReferenceForm.cs
@@ -0,0 +1,1487 @@
+using Fiscalapi.Common;
+using Fiscalapi.Models;
+using Fiscalapi.Services;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Windows.Forms;
+
+namespace FiscalApi.Samples.NetFramework
+{
+ public partial class IncomeInvoiceReferenceForm : Form
+ {
+ private FiscalapiSettings _settings;
+
+ public IncomeInvoiceReferenceForm(FiscalapiSettings settings)
+ {
+ _settings = settings;
+ InitializeComponent();
+ }
+
+ private async void button1_Click(object sender, EventArgs e)
+ {
+ // Crear instancia de FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ Id = "2f3c65f3-ed02-452f-944c-97a47010df5c",
+ Quantity = 1
+ },
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PUE",
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button9_Click(object sender, EventArgs e)
+ {
+ // Crear instancia de FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ Id = "2f3c65f3-ed02-452f-944c-97a47010df5c",
+ Quantity = 1,
+ OnBehalfOf = new OnBehalfOf
+ {
+ Tin = "CACX7605101P8",
+ LegalName = "XOCHILT CASAS CHAVEZ",
+ TaxRegimeCode = "601",
+ ZipCode = "36257"
+
+ }
+ },
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PUE",
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button22_Click(object sender, EventArgs e)
+ {
+ // Crear instancia de FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ Id = "2f3c65f3-ed02-452f-944c-97a47010df5c",
+ Quantity = 1,
+ UnitPrice = 288.00m
+ },
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PUE",
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button10_Click(object sender, EventArgs e)
+ {
+ // Crear instancia de FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ Id = "037b5705-a9a2-4422-b842-97c0f9347498",
+ Quantity = 1
+ },
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PUE",
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button12_Click(object sender, EventArgs e)
+ {
+ // Crear instancia de FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ Id = "037b5705-a9a2-4422-b842-97c0f9347498",
+ Quantity = 1
+ },
+ };
+
+ var relatedInvoices = new List()
+ {
+ new RelatedInvoice
+ {
+ RelationshipTypeCode = "02",
+ Uuid = "3f88783d-28cb-4695-bbe3-49e86877cc19",
+ }
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PUE",
+ RelatedInvoices = relatedInvoices,
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button13_Click(object sender, EventArgs e)
+ {
+ // Crear instancia de FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ Id = "2f3c65f3-ed02-452f-944c-97a47010df5c",
+ Quantity = 1,
+ PropertyInfo = new List()
+ {
+ new PropertyInfo
+ {
+ Number = "aB3cD4eF5gH6iJ7kL8mN9oP0"
+ }
+ }
+ },
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PUE",
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button14_Click(object sender, EventArgs e)
+ {
+ // Crear instancia de FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ Id = "037b5705-a9a2-4422-b842-97c0f9347498",
+ Quantity = 1
+ },
+ new InvoiceItem
+ {
+ Id = "2f3c65f3-ed02-452f-944c-97a47010df5c",
+ Quantity = 1
+ },
+ new InvoiceItem
+ {
+ Id = "40389443-2aa1-4121-b86a-e8c45fac6b17",
+ Quantity = 1
+ },
+ new InvoiceItem
+ {
+ Id = "783f1e2a-9c55-429d-9e82-c94b620c419c",
+ Quantity = 1
+ },
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "99",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PUE",
+ GlobalInformation = new GlobalInformation
+ {
+ PeriodicityCode = "01",
+ MonthCode = "01",
+ Year = 2026
+ }
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button2_Click(object sender, EventArgs e)
+ {
+ // Crear instancia de FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ Id = "87d20bd0-da21-4bce-aff4-f113fecfe6df",
+ Quantity = 1,
+ Discount = 20,
+ },
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PUE",
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button21_Click(object sender, EventArgs e)
+ {
+ // Crear instancia de FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ Id = "ec5c5b39-f52d-490e-83d6-437bc1101582",
+ Quantity = 10.236m,
+ },
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PUE",
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button4_Click(object sender, EventArgs e)
+ {
+ // Crear instancia de FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ Id = "652cc6ec-690f-40bd-97b1-29de4fedd9ee",
+ Quantity = 10.236m,
+ },
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PUE",
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button5_Click(object sender, EventArgs e)
+ {
+ // Crear instancia de FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ Id = "10e2e439-3deb-4e63-9e71-fb35177b8d76",
+ Quantity = 1
+ },
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PUE",
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button6_Click(object sender, EventArgs e)
+ {
+ // Crear instancia de FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ Id = "037b5705-a9a2-4422-b842-97c0f9347498",
+ Quantity = 1,
+ Parts = new List()
+ {
+ new InvoiceItemPart
+ {
+ ItemCode = "51241200",
+ ItemSku = "IM0071",
+ Quantity = 1,
+ Description = "25311FM00239 (LUARIL ETER SULFATO DE SODIO VEHICULO CBP 300ML), ACEITE AJONJOLI 150CC, ACEITE DE ALMENDRAS DULCES 150CC, TALCO 10GR, OXIDO DE ZINC 10GR.",
+ UnitPrice = 1000.00m
+ }
+ }
+ },
+ };
+
+ var relatedInvoices = new List()
+ {
+ new RelatedInvoice
+ {
+ RelationshipTypeCode = "01",
+ Uuid = "3f88783d-28cb-4695-bbe3-49e86877cc19",
+ }
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PUE",
+ RelatedInvoices = relatedInvoices,
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button7_Click(object sender, EventArgs e)
+ {
+ // Crear instancia de FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ Id = "5d3563d3-7882-4125-8cad-da7b24ffa85c",
+ Quantity = 1
+ },
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PUE",
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button8_Click(object sender, EventArgs e)
+ {
+ // Crear instancia de FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ Id = "19d7810c-4284-4dd3-a886-bfaba96449bd",
+ Quantity = 1
+ },
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PUE",
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button15_Click(object sender, EventArgs e)
+ {
+ // Crear instancia de FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ Id = "24671e0b-1a5e-4d1c-b05a-81ec682901fc",
+ Quantity = 1
+ },
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PUE",
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button16_Click(object sender, EventArgs e)
+ {
+ // Crear instancia de FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ Id = "b8005c9a-6933-4411-b01a-8b17651bfd26",
+ Quantity = 1
+ },
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PUE",
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button17_Click(object sender, EventArgs e)
+ {
+ // Crear instancia de FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ Id = "86f713f8-c67e-4b74-ba31-642d689a9980",
+ Quantity = 1
+ },
+ };
+
+ var globalInfo = new GlobalInformation
+ {
+ Year = 2026,
+ MonthCode = "01",
+ PeriodicityCode = "01"
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PUE",
+ GlobalInformation = globalInfo
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button18_Click(object sender, EventArgs e)
+ {
+ // Crear instancia de FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ var recipient = new InvoiceRecipient
+ {
+ Id = "a8903553-7220-4b15-bdb1-e64cd19f5203"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ Id = "86f713f8-c67e-4b74-ba31-642d689a9980",
+ Quantity = 1
+ },
+ };
+
+ var globalInformation = new GlobalInformation
+ {
+ MonthCode = "01",
+ Year = 2026,
+ PeriodicityCode = "01"
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "45610",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ GlobalInformation = globalInformation,
+ PaymentMethodCode = "PUE",
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button19_Click(object sender, EventArgs e)
+ {
+ // Crear instancia de FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ Id = "2b1d05d3-0ca8-4d48-a675-53313be8d217",
+ Quantity = 1
+ },
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PUE",
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button20_Click(object sender, EventArgs e)
+ {
+ // Crear instancia de FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ Id = "4d94412e-4ed9-4ac6-8ae7-67004c470518",
+ Quantity = 1
+ },
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PUE",
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button3_Click(object sender, EventArgs e)
+ {
+ // Crear instancia de FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ Id = "86b63573-5ac2-42ef-b506-c8732f85cfd0",
+ Quantity = 1
+ },
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PUE",
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button11_Click(object sender, EventArgs e)
+ {
+ // Crear instancia de FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ Id = "037b5705-a9a2-4422-b842-97c0f9347498",
+ Quantity = 1
+ },
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PUE",
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+ }
+}
diff --git a/FiscalApi.Samples.NetFramework/IncomeInvoiceReferenceForm.resx b/FiscalApi.Samples.NetFramework/IncomeInvoiceReferenceForm.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/FiscalApi.Samples.NetFramework/IncomeInvoiceReferenceForm.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/FiscalApi.Samples.NetFramework/IncomeInvoiceValueForm.Designer.cs b/FiscalApi.Samples.NetFramework/IncomeInvoiceValueForm.Designer.cs
new file mode 100644
index 0000000..3a1e399
--- /dev/null
+++ b/FiscalApi.Samples.NetFramework/IncomeInvoiceValueForm.Designer.cs
@@ -0,0 +1,361 @@
+namespace FiscalApi.Samples.NetFramework
+{
+ partial class IncomeInvoiceValueForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.groupBox1 = new System.Windows.Forms.GroupBox();
+ this.button21 = new System.Windows.Forms.Button();
+ this.button20 = new System.Windows.Forms.Button();
+ this.button19 = new System.Windows.Forms.Button();
+ this.button18 = new System.Windows.Forms.Button();
+ this.button17 = new System.Windows.Forms.Button();
+ this.button16 = new System.Windows.Forms.Button();
+ this.button15 = new System.Windows.Forms.Button();
+ this.button8 = new System.Windows.Forms.Button();
+ this.button7 = new System.Windows.Forms.Button();
+ this.button6 = new System.Windows.Forms.Button();
+ this.button5 = new System.Windows.Forms.Button();
+ this.button4 = new System.Windows.Forms.Button();
+ this.button3 = new System.Windows.Forms.Button();
+ this.button2 = new System.Windows.Forms.Button();
+ this.button14 = new System.Windows.Forms.Button();
+ this.button13 = new System.Windows.Forms.Button();
+ this.button12 = new System.Windows.Forms.Button();
+ this.button11 = new System.Windows.Forms.Button();
+ this.button10 = new System.Windows.Forms.Button();
+ this.button9 = new System.Windows.Forms.Button();
+ this.button1 = new System.Windows.Forms.Button();
+ this.groupBox1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // groupBox1
+ //
+ this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.groupBox1.Controls.Add(this.button21);
+ this.groupBox1.Controls.Add(this.button20);
+ this.groupBox1.Controls.Add(this.button19);
+ this.groupBox1.Controls.Add(this.button18);
+ this.groupBox1.Controls.Add(this.button17);
+ this.groupBox1.Controls.Add(this.button16);
+ this.groupBox1.Controls.Add(this.button15);
+ this.groupBox1.Controls.Add(this.button8);
+ this.groupBox1.Controls.Add(this.button7);
+ this.groupBox1.Controls.Add(this.button6);
+ this.groupBox1.Controls.Add(this.button5);
+ this.groupBox1.Controls.Add(this.button4);
+ this.groupBox1.Controls.Add(this.button3);
+ this.groupBox1.Controls.Add(this.button2);
+ this.groupBox1.Controls.Add(this.button14);
+ this.groupBox1.Controls.Add(this.button13);
+ this.groupBox1.Controls.Add(this.button12);
+ this.groupBox1.Controls.Add(this.button11);
+ this.groupBox1.Controls.Add(this.button10);
+ this.groupBox1.Controls.Add(this.button9);
+ this.groupBox1.Controls.Add(this.button1);
+ this.groupBox1.Location = new System.Drawing.Point(12, 12);
+ this.groupBox1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.groupBox1.Name = "groupBox1";
+ this.groupBox1.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.groupBox1.Size = new System.Drawing.Size(403, 753);
+ this.groupBox1.TabIndex = 0;
+ this.groupBox1.TabStop = false;
+ this.groupBox1.Text = "groupBox1";
+ //
+ // button21
+ //
+ this.button21.Location = new System.Drawing.Point(5, 545);
+ this.button21.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button21.Name = "button21";
+ this.button21.Size = new System.Drawing.Size(189, 60);
+ this.button21.TabIndex = 34;
+ this.button21.Text = "Factura ingreso impuestos excentos";
+ this.button21.UseVisualStyleBackColor = true;
+ this.button21.Click += new System.EventHandler(this.button21_Click);
+ //
+ // button20
+ //
+ this.button20.Location = new System.Drawing.Point(203, 546);
+ this.button20.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button20.Name = "button20";
+ this.button20.Size = new System.Drawing.Size(189, 60);
+ this.button20.TabIndex = 33;
+ this.button20.Text = "Factura ingreso tasa cero y retenciones";
+ this.button20.UseVisualStyleBackColor = true;
+ this.button20.Click += new System.EventHandler(this.button20_Click);
+ //
+ // button19
+ //
+ this.button19.Location = new System.Drawing.Point(203, 481);
+ this.button19.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button19.Name = "button19";
+ this.button19.Size = new System.Drawing.Size(189, 60);
+ this.button19.TabIndex = 32;
+ this.button19.Text = "Factura ingreso RESICO retención ISR 1.25%";
+ this.button19.UseVisualStyleBackColor = true;
+ this.button19.Click += new System.EventHandler(this.button19_Click);
+ //
+ // button18
+ //
+ this.button18.Location = new System.Drawing.Point(203, 415);
+ this.button18.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button18.Name = "button18";
+ this.button18.Size = new System.Drawing.Size(189, 60);
+ this.button18.TabIndex = 31;
+ this.button18.Text = "Factura ingreso público en general";
+ this.button18.UseVisualStyleBackColor = true;
+ this.button18.Click += new System.EventHandler(this.button18_Click);
+ //
+ // button17
+ //
+ this.button17.Location = new System.Drawing.Point(203, 350);
+ this.button17.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button17.Name = "button17";
+ this.button17.Size = new System.Drawing.Size(189, 60);
+ this.button17.TabIndex = 30;
+ this.button17.Text = "Factura ingreso objeto impuesto 08";
+ this.button17.UseVisualStyleBackColor = true;
+ this.button17.Click += new System.EventHandler(this.button17_Click);
+ //
+ // button16
+ //
+ this.button16.Location = new System.Drawing.Point(203, 283);
+ this.button16.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button16.Name = "button16";
+ this.button16.Size = new System.Drawing.Size(189, 60);
+ this.button16.TabIndex = 29;
+ this.button16.Text = "Factura ingreso objeto impuesto 07 003 - IEPS";
+ this.button16.UseVisualStyleBackColor = true;
+ this.button16.Click += new System.EventHandler(this.button16_Click);
+ //
+ // button15
+ //
+ this.button15.Location = new System.Drawing.Point(203, 217);
+ this.button15.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button15.Name = "button15";
+ this.button15.Size = new System.Drawing.Size(189, 60);
+ this.button15.TabIndex = 28;
+ this.button15.Text = "Factura ingreso objeto impuesto 07 001 y 003 - ISR y IEPS";
+ this.button15.UseVisualStyleBackColor = true;
+ this.button15.Click += new System.EventHandler(this.button15_Click);
+ //
+ // button8
+ //
+ this.button8.Location = new System.Drawing.Point(203, 151);
+ this.button8.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button8.Name = "button8";
+ this.button8.Size = new System.Drawing.Size(189, 60);
+ this.button8.TabIndex = 27;
+ this.button8.Text = "Factura ingreso objecto impuesto 06 001 - ISR";
+ this.button8.UseVisualStyleBackColor = true;
+ this.button8.Click += new System.EventHandler(this.button8_Click);
+ //
+ // button7
+ //
+ this.button7.Location = new System.Drawing.Point(203, 85);
+ this.button7.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button7.Name = "button7";
+ this.button7.Size = new System.Drawing.Size(189, 60);
+ this.button7.TabIndex = 26;
+ this.button7.Text = "Factura ingreso nota de débito";
+ this.button7.UseVisualStyleBackColor = true;
+ this.button7.Click += new System.EventHandler(this.button7_Click);
+ //
+ // button6
+ //
+ this.button6.Location = new System.Drawing.Point(203, 21);
+ this.button6.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button6.Name = "button6";
+ this.button6.Size = new System.Drawing.Size(189, 60);
+ this.button6.TabIndex = 25;
+ this.button6.Text = "Factura ingreso kit (parte concepto)";
+ this.button6.UseVisualStyleBackColor = true;
+ this.button6.Click += new System.EventHandler(this.button6_Click);
+ //
+ // button5
+ //
+ this.button5.Location = new System.Drawing.Point(5, 679);
+ this.button5.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button5.Name = "button5";
+ this.button5.Size = new System.Drawing.Size(189, 60);
+ this.button5.TabIndex = 24;
+ this.button5.Text = "Factura ingreso-ingreso sin impuestos";
+ this.button5.UseVisualStyleBackColor = true;
+ this.button5.Click += new System.EventHandler(this.button5_Click);
+ //
+ // button4
+ //
+ this.button4.Location = new System.Drawing.Point(5, 609);
+ this.button4.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button4.Name = "button4";
+ this.button4.Size = new System.Drawing.Size(189, 60);
+ this.button4.TabIndex = 23;
+ this.button4.Text = "Factura ingreso-hidrocarburos-petrolíferos y servicios";
+ this.button4.UseVisualStyleBackColor = true;
+ this.button4.Click += new System.EventHandler(this.button4_Click);
+ //
+ // button3
+ //
+ this.button3.Location = new System.Drawing.Point(203, 609);
+ this.button3.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button3.Name = "button3";
+ this.button3.Size = new System.Drawing.Size(189, 60);
+ this.button3.TabIndex = 22;
+ this.button3.Text = "Factura ingreso tasa cero";
+ this.button3.UseVisualStyleBackColor = true;
+ this.button3.Click += new System.EventHandler(this.button3_Click);
+ //
+ // button2
+ //
+ this.button2.Location = new System.Drawing.Point(5, 481);
+ this.button2.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button2.Name = "button2";
+ this.button2.Size = new System.Drawing.Size(189, 60);
+ this.button2.TabIndex = 21;
+ this.button2.Text = "Factura ingreso global con descuentos";
+ this.button2.UseVisualStyleBackColor = true;
+ this.button2.Click += new System.EventHandler(this.button2_Click);
+ //
+ // button14
+ //
+ this.button14.Location = new System.Drawing.Point(5, 415);
+ this.button14.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button14.Name = "button14";
+ this.button14.Size = new System.Drawing.Size(189, 60);
+ this.button14.TabIndex = 20;
+ this.button14.Text = "Factura ingreso global";
+ this.button14.UseVisualStyleBackColor = true;
+ this.button14.Click += new System.EventHandler(this.button14_Click);
+ //
+ // button13
+ //
+ this.button13.Location = new System.Drawing.Point(5, 350);
+ this.button13.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button13.Name = "button13";
+ this.button13.Size = new System.Drawing.Size(189, 60);
+ this.button13.TabIndex = 19;
+ this.button13.Text = "Factura ingreso cuenta predial";
+ this.button13.UseVisualStyleBackColor = true;
+ this.button13.Click += new System.EventHandler(this.button13_Click);
+ //
+ // button12
+ //
+ this.button12.Location = new System.Drawing.Point(5, 283);
+ this.button12.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button12.Name = "button12";
+ this.button12.Size = new System.Drawing.Size(189, 60);
+ this.button12.TabIndex = 18;
+ this.button12.Text = "Factura ingreso CFDI relacionados";
+ this.button12.UseVisualStyleBackColor = true;
+ this.button12.Click += new System.EventHandler(this.button12_Click);
+ //
+ // button11
+ //
+ this.button11.Location = new System.Drawing.Point(5, 217);
+ this.button11.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button11.Name = "button11";
+ this.button11.Size = new System.Drawing.Size(189, 60);
+ this.button11.TabIndex = 17;
+ this.button11.Text = "Factura de ingreso anticipos con remanente";
+ this.button11.UseVisualStyleBackColor = true;
+ this.button11.Click += new System.EventHandler(this.button11_Click);
+ //
+ // button10
+ //
+ this.button10.Location = new System.Drawing.Point(5, 151);
+ this.button10.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button10.Name = "button10";
+ this.button10.Size = new System.Drawing.Size(189, 60);
+ this.button10.TabIndex = 16;
+ this.button10.Text = "Factura de ingreso anticipos con CFDI egreso";
+ this.button10.UseVisualStyleBackColor = true;
+ this.button10.Click += new System.EventHandler(this.button10_Click);
+ //
+ // button9
+ //
+ this.button9.Location = new System.Drawing.Point(5, 85);
+ this.button9.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button9.Name = "button9";
+ this.button9.Size = new System.Drawing.Size(189, 60);
+ this.button9.TabIndex = 15;
+ this.button9.Text = "Factura de ingreso a cuenta de terceros";
+ this.button9.UseVisualStyleBackColor = true;
+ this.button9.Click += new System.EventHandler(this.button9_Click);
+ //
+ // button1
+ //
+ this.button1.Location = new System.Drawing.Point(5, 21);
+ this.button1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(189, 60);
+ this.button1.TabIndex = 14;
+ this.button1.Text = "Crear factura de ingreso";
+ this.button1.UseVisualStyleBackColor = true;
+ this.button1.Click += new System.EventHandler(this.button1_Click);
+ //
+ // IncomeInvoiceValueForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(427, 777);
+ this.Controls.Add(this.groupBox1);
+ this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.Name = "IncomeInvoiceValueForm";
+ this.Text = "IncomeInvoiceValueForm";
+ this.groupBox1.ResumeLayout(false);
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.GroupBox groupBox1;
+ private System.Windows.Forms.Button button14;
+ private System.Windows.Forms.Button button13;
+ private System.Windows.Forms.Button button12;
+ private System.Windows.Forms.Button button11;
+ private System.Windows.Forms.Button button10;
+ private System.Windows.Forms.Button button9;
+ private System.Windows.Forms.Button button1;
+ private System.Windows.Forms.Button button3;
+ private System.Windows.Forms.Button button2;
+ private System.Windows.Forms.Button button4;
+ private System.Windows.Forms.Button button6;
+ private System.Windows.Forms.Button button5;
+ private System.Windows.Forms.Button button17;
+ private System.Windows.Forms.Button button16;
+ private System.Windows.Forms.Button button15;
+ private System.Windows.Forms.Button button8;
+ private System.Windows.Forms.Button button7;
+ private System.Windows.Forms.Button button21;
+ private System.Windows.Forms.Button button20;
+ private System.Windows.Forms.Button button19;
+ private System.Windows.Forms.Button button18;
+ }
+}
\ No newline at end of file
diff --git a/FiscalApi.Samples.NetFramework/IncomeInvoiceValueForm.cs b/FiscalApi.Samples.NetFramework/IncomeInvoiceValueForm.cs
new file mode 100644
index 0000000..0be07f3
--- /dev/null
+++ b/FiscalApi.Samples.NetFramework/IncomeInvoiceValueForm.cs
@@ -0,0 +1,2394 @@
+using Fiscalapi.Common;
+using Fiscalapi.Models;
+using Fiscalapi.Services;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Windows.Forms;
+
+namespace FiscalApi.Samples.NetFramework
+{
+ public partial class IncomeInvoiceValueForm : Form
+ {
+ private FiscalapiSettings _settings;
+
+ public IncomeInvoiceValueForm(FiscalapiSettings settings)
+ {
+ InitializeComponent();
+ _settings = settings;
+ }
+
+ private async void button1_Click(object sender, EventArgs e)
+ {
+ // https://docs.fiscalapi.com/credentials-info
+
+
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "601",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ ZipCode = "42501",
+ TaxRegimeCode = "601",
+ CfdiUseCode = "G01",
+ Email = "someone@somewhere.com"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ ItemCode = "01010101",
+ Quantity = 9.5m,
+ UnitOfMeasurementCode = "E48",
+ UnitOfMeasurement = "Unidad de servicio",
+ Description = "Invoicing software as a service",
+ UnitPrice = 3587.75m,
+ TaxObjectCode = "02",
+ ItemSku = "7506022301697",
+ Discount = 255.85m,
+ ItemTaxes = new List()
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "002", // IVA
+ TaxTypeCode = "Tasa", // Tasa
+ TaxRate = 0.160000m, // 16%
+ TaxFlagCode = "T" // Traslado
+ }
+ }
+ }
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "42501",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PUE",
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button3_Click(object sender, EventArgs e)
+ {
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "603",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "URE180429TM6",
+ LegalName = "UNIVERSIDAD ROBOTICA ESPAÑOLA",
+ ZipCode = "86991",
+ TaxRegimeCode = "601",
+ CfdiUseCode = "G01",
+ Email = "someone@somewhere.com"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ ItemCode = "50211503",
+ Quantity = 1.0m,
+ UnitOfMeasurementCode = "H87",
+ UnitOfMeasurement = "Unidad de servicio",
+ Description = "cigarros",
+ UnitPrice = 200.0m,
+ TaxObjectCode = "02",
+ ItemSku = "None",
+ Discount = 0m,
+ ItemTaxes = new List()
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.000000m,
+ TaxFlagCode = "T"
+ },
+ new InvoiceItemTax
+ {
+ TaxCode = "001",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.000000m,
+ TaxFlagCode = "R"
+ }
+ }
+ }
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "99",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PPD",
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button9_Click(object sender, EventArgs e)
+ {
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "603",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "URE180429TM6",
+ LegalName = "UNIVERSIDAD ROBOTICA ESPAÑOLA",
+ ZipCode = "86991",
+ TaxRegimeCode = "601",
+ CfdiUseCode = "G03",
+ Email = "someone@somewhere.com"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ ItemCode = "50211503",
+ Quantity = 1.0m,
+ UnitOfMeasurementCode = "H87",
+ UnitOfMeasurement = "Unidad de servicio",
+ Description = "cigarros",
+ UnitPrice = 200.0m,
+ TaxObjectCode = "02",
+ ItemSku = "None",
+ Discount = 0m,
+ ItemTaxes = new List()
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "001", // IVA
+ TaxTypeCode = "Tasa", // Tasa
+ TaxRate = 0.100000m, // 16%
+ TaxFlagCode = "R" // Retencion
+ }
+ },
+ OnBehalfOf = new OnBehalfOf
+ {
+ Tin = "CACX7605101P8",
+ LegalName = "XOCHILT CASAS CHAVEZ",
+ TaxRegimeCode = "601",
+ ZipCode = "36257"
+ }
+ }
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "45610",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PUE",
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button10_Click(object sender, EventArgs e)
+ {
+ // https://docs.fiscalapi.com/credentials-info
+
+
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "603",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "URE180429TM6",
+ LegalName = "UNIVERSIDAD ROBOTICA ESPAÑOLA",
+ ZipCode = "86991",
+ TaxRegimeCode = "601",
+ CfdiUseCode = "G01",
+ Email = "someone@somewhere.com"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ ItemCode = "84111506",
+ Quantity = 1.0m,
+ UnitOfMeasurementCode = "ACT",
+ UnitOfMeasurement = "Unidad de servicio",
+ Description = "Valot total de la operación",
+ UnitPrice = 400.0m,
+ TaxObjectCode = "02",
+ ItemSku = "84111506",
+ ItemTaxes = new List()
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "002", // IVA
+ TaxTypeCode = "Tasa", // Tasa
+ TaxRate = 0.160000m, // 16%
+ TaxFlagCode = "T" // Traslado
+ }
+ }
+ }
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PUE",
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button11_Click(object sender, EventArgs e)
+ {
+ // https://docs.fiscalapi.com/credentials-info
+
+
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "603",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "URE180429TM6",
+ LegalName = "UNIVERSIDAD ROBOTICA ESPAÑOLA",
+ ZipCode = "86991",
+ TaxRegimeCode = "601",
+ CfdiUseCode = "G01",
+ Email = "someone@somewhere.com"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ ItemCode = "84111506",
+ Quantity = 1.0m,
+ UnitOfMeasurementCode = "ACT",
+ UnitOfMeasurement = "Unidad de servicio",
+ Description = "Anticipo del bien o servicio",
+ UnitPrice = 200.0m,
+ TaxObjectCode = "02",
+ ItemSku = "84111506",
+ ItemTaxes = new List()
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "002", // IVA
+ TaxTypeCode = "Tasa", // Tasa
+ TaxRate = 0.160000m, // 16%
+ TaxFlagCode = "T" // Traslado
+ }
+ }
+ }
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PUE",
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button12_Click(object sender, EventArgs e)
+ {
+ // https://docs.fiscalapi.com/credentials-info
+
+
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "603",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "XIA190128J61",
+ LegalName = "XENON INDUSTRIAL ARTICLES",
+ ZipCode = "76343",
+ TaxRegimeCode = "601",
+ CfdiUseCode = "G03",
+ Email = "someone@somewhere.com"
+ };
+
+ var relatedInvoices = new List()
+ {
+ new RelatedInvoice { RelationshipTypeCode = "02", Uuid = "6c76a910-2115-4a2c-bf15-e67c1505dd21" },
+ new RelatedInvoice { RelationshipTypeCode = "02", Uuid = "6c76a910-2115-4a2c-bf15-e67c1505bb22" }
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ ItemCode = "84111506",
+ Quantity = 1.0m,
+ UnitOfMeasurementCode = "ACT",
+ UnitOfMeasurement = "Unidad de servicio",
+ Description = "84111506 Descuentos y bonificaciones gas natural",
+ UnitPrice = 1308.35m,
+ TaxObjectCode = "02",
+ ItemSku = "84111506",
+ ItemTaxes = new List()
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "002", // IVA
+ TaxTypeCode = "Tasa", // Tasa
+ TaxRate = 0.160000m, // 16%
+ TaxFlagCode = "T" // Traslado
+ }
+ }
+ }
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "44520",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PUE",
+ RelatedInvoices = relatedInvoices
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button13_Click(object sender, EventArgs e)
+ {
+ // https://docs.fiscalapi.com/credentials-info
+
+
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "603",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "URE180429TM6",
+ LegalName = "UNIVERSIDAD ROBOTICA ESPAÑOLA",
+ ZipCode = "86991",
+ TaxRegimeCode = "601",
+ CfdiUseCode = "G01",
+ Email = "someone@somewhere.com"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ ItemCode = "50211503",
+ Quantity = 1.0m,
+ UnitOfMeasurementCode = "H87",
+ Description = "Cigarros",
+ UnitPrice = 200.0m,
+ TaxObjectCode = "02",
+ ItemSku = "50211503",
+ ItemTaxes = new List()
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "001",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.100000m,
+ TaxFlagCode = "R"
+ }
+ },
+ PropertyInfo = new List()
+ {
+ new PropertyInfo { Number = "aB3cD4eF5gH6iJ7kL8mN9oP0" }
+ }
+ }
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "45610",
+ ExchangeRate = 1,
+ ExportCode = "01",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PUE",
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button14_Click(object sender, EventArgs e)
+ {
+ // Crear instancia de FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFgDCCA2igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0NDYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTQzNTM3WhcNMjcwNTE4MTQzNTM3WjCBpzEdMBsGA1UEAxMUS0FSTEEgRlVFTlRFIE5PTEFTQ08xHTAbBgNVBCkTFEtBUkxBIEZVRU5URSBOT0xBU0NPMR0wGwYDVQQKExRLQVJMQSBGVUVOVEUgTk9MQVNDTzEWMBQGA1UELRMNRlVOSzY3MTIyOFBINjEbMBkGA1UEBRMSRlVOSzY3MTIyOE1DTE5MUjA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAhNXbTSqGX6+/3Urpemyy5vVG2IdP2v7v001+c4BoMxEDFDQ32cOFdDiRxy0Fq9aR+Ojrofq8VeftvN586iyA1A6a0QnA68i7JnQKI4uJy+u0qiixuHu6u3b3BhSpoaVHcUtqFWLLlzr0yBxfVLOqVna/1/tHbQJg9hx57mp97P0JmXO1WeIqi+Zqob/mVZh2lsPGdJ8iqgjYFaFn9QVOQ1Pq74o1PTqwfzqgJSfV0zOOlESDPWggaDAYE4VNyTBisOUjlNd0x7ppcTxSi3yenrJHqkq/pqJsRLKf6VJ/s9p6bsd2bj07hSDpjlDC2lB25eEfkEkeMkXoE7ErXQ5QCwIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAHwYpgbClHULXYhK4GNTgonvXh81oqfXwCSWAyDPiTYFDWVfWM9C4ApxMLyc0XvJte75Rla+bPC08oYN3OlhbbvP3twBL/w9SsfxvkbpFn2ZfGSTXZhyiq4vjmQHW1pnFvGelwgU4v3eeRE/MjoCnE7M/Q5thpuog6WGf7CbKERnWZn8QsUaJsZSEkg6Bv2jm69ye57ab5rrOUaeMlstTfdlaHAEkUgLX/NXq7RbGwv82hkHY5b2vYcXeh34tUMBL6os3OdRlooN9ZQGkVIISvxVZpSHkYC20DFNh1Bb0ovjfujlTcka81GnbUhFGZtRuoVQ1RVpMO8xtx3YKBLp4do3hPmnRCV5hCm43OIjYx9Ov2dqICV3AaNXSLV1dW39Bak/RBiIDGHzOIW2+VMPjvvypBjmPv/tmbqNHWPSAWOxTyMx6E1gFCZvi+5F+BgkdC3Lm7U0BU0NfvsXajZd8sXnIllvEMrikCLoI/yurvexNDcF1RW/FhMsoua0eerwczcNm66pGjHm05p9DR6lFeJZrtqeqZuojdxBWy4vH6ghyJaupergoX+nmdG3JYeRttCFF/ITI68TeCES5V3Y0C3psYAg1XxcGRLGd4chPo/4xwiLkijWtgt0/to5ljGBwfK7r62PHZfL1Dp+i7V3w7hmOlhbXzP+zhMZn1GCk7KY=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS9AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucRBAKNQXH8t8gVCl/ItHMI2hMJ76QOECOqEi1Y89cDpegDvh/INXyMsXbzi87tfFzgq1O+9ID6aPWGg+bNGADXyXxDVdy7Nq/SCdoXvo66MTYwq8jyJeUHDHEGMVBcmZpD44VJCvLBxDcvByuevP4Wo2NKqJCwK+ecAdZc/8Rvd947SjbMHuS8BppfQWARVUqA5BLOkTAHNv6tEk/hncC7O2YOGSShart8fM8dokgGSyewHVFe08POuQ+WDHeVpvApH/SP29rwktSoiHRoL6dK+F2YeEB5SuFW9LQgYCutjapmUP/9TC3Byro9Li6UrvQHxNmgMFGQJSYjFdqlGjLibfuguLp7pueutbROoZaSxU8HqlfYxLkpJUxUwNI1ja/1t3wcivtWknVXBd13R06iVfU1HGe8Kb4u5il4a4yP4p7VT4RE3b1SBLJeG+BxHiE8gFaaKcX/Cl6JV14RPTvk/6VnAtEQ66qHJex21KKuiJo2JoOmDXVHmvGQlWXNjYgoPx28Xd5WsofL+n7HDR2Ku8XgwJw6IXBJGuoday9qWN9v/k7DGlNGB6Sm4gdVUmycMP6EGhB1vFTiDfOGQO42ywmcpKoMETPVQ5InYKE0xAOckgcminDgxWjtUHjBDPEKifEjYudPwKmR6Cf4ZdGvUWwY/zq9pPAC9bu423KeBCnSL8AQ4r5SVsW6XG0njamwfNjpegwh/YG7sS7sDtZ8gi7r6tZYjsOqZlCYU0j7QTBpuQn81Yof2nQRCFxhRJCeydmIA8+z0nXrcElk7NDPk4kYQS0VitJ2qeQYNENzGBglROkCl2y6GlxAG80IBtReCUp/xOSdlwDR0eim+SNkdStvmQM5IcWBuDKwGZc1A4v/UoLl7niV9fpl4X6bUX8lZzY4gidJOafoJ30VoY/lYGkrkEuz3GpbbT5v8fF3iXVRlEqhlpe8JSGu7Rd2cPcJSkQ1Cuj/QRhHPhFMF2KhTEf95c9ZBKI8H7SvBi7eLXfSW2Y0ve6vXBZKyjK9whgCU9iVOsJjqRXpAccaWOKi420CjmS0+uwj/Xr2wLZhPEjBA/G6Od30+eG9mICmbp/5wAGhK/ZxCT17ZETyFmOMo49jl9pxdKocJNuzMrLpSz7/g5Jwp8+y8Ck5YP7AX0R/dVA0t37DO7nAbQT5XVSYpMVh/yvpYJ9WR+tb8Yg1h2lERLR2fbuhQRcwmisZR2W3Sr2b7hX9MCMkMQw8y2fDJrzLrqKqkHcjvnI/TdzZW2MzeQDoBBb3fmgvjYg07l4kThS73wGX992w2Y+a1A2iirSmrYEm9dSh16JmXa8boGQAONQzQkHh7vpw0IBs9cnvqO1QLB1GtbBztUBXonA4TxMKLYZkVrrd2RhrYWMsDp7MpC4M0p/DA3E/qscYwq1OpwriewNdx6XXqMZbdUNqMP2viBY2VSGmNdHtVfbN/rnaeJetFGX7XgTVYD7wDq8TW9yseCK944jcT+y/o0YiT9j3OLQ2Ts0LDTQskpJSxRmXEQGy3NBDOYFTvRkcGJEQJItuol8NivJN1H9LoLIUAlAHBZxfHpUYx66YnP4PdTdMIWH+nxyekKPFfAT7olQ=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "FUNK671228PH6",
+ LegalName = "KARLA FUENTE NOLASCO",
+ TaxRegimeCode = "621",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "XAXX010101000",
+ LegalName = "PUBLICO EN GENERAL",
+ ZipCode = "01160",
+ TaxRegimeCode = "616",
+ CfdiUseCode = "S01",
+ Email = "someone@somewhere.com"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ ItemCode = "01010101",
+ Quantity = 1,
+ UnitOfMeasurementCode = "ACT",
+ Description = "Venta",
+ UnitPrice = 1230.00m,
+ TaxObjectCode = "02",
+ ItemSku = "venta0001",
+ Discount = 255.85m,
+ ItemTaxes = new List()
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "002", // IVA
+ TaxTypeCode = "Tasa", // Tasa
+ TaxRate = 0.160000m, // 16%
+ TaxFlagCode = "T" // Traslado
+ }
+ }
+ }
+ };
+
+
+ // Información global
+
+ var globalInfo = new GlobalInformation
+ {
+ PeriodicityCode = "01",
+ MonthCode = "05",
+ Year = 2025
+ };
+
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ TypeCode = "I",
+ Series = "F",
+ Date = DateTime.Now,
+ CurrencyCode = "MXN",
+ PaymentFormCode = "01",
+ PaymentMethodCode = "PUE",
+ ExpeditionZipCode = "01160",
+ GlobalInformation = globalInfo, // Información global
+ Issuer = issuer, // Emisor
+ Recipient = recipient, // Receptor
+ Items = items, // Ventas
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button2_Click(object sender, EventArgs e)
+ {
+ // Crear instancia de FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFgDCCA2igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0NDYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTQzNTM3WhcNMjcwNTE4MTQzNTM3WjCBpzEdMBsGA1UEAxMUS0FSTEEgRlVFTlRFIE5PTEFTQ08xHTAbBgNVBCkTFEtBUkxBIEZVRU5URSBOT0xBU0NPMR0wGwYDVQQKExRLQVJMQSBGVUVOVEUgTk9MQVNDTzEWMBQGA1UELRMNRlVOSzY3MTIyOFBINjEbMBkGA1UEBRMSRlVOSzY3MTIyOE1DTE5MUjA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAhNXbTSqGX6+/3Urpemyy5vVG2IdP2v7v001+c4BoMxEDFDQ32cOFdDiRxy0Fq9aR+Ojrofq8VeftvN586iyA1A6a0QnA68i7JnQKI4uJy+u0qiixuHu6u3b3BhSpoaVHcUtqFWLLlzr0yBxfVLOqVna/1/tHbQJg9hx57mp97P0JmXO1WeIqi+Zqob/mVZh2lsPGdJ8iqgjYFaFn9QVOQ1Pq74o1PTqwfzqgJSfV0zOOlESDPWggaDAYE4VNyTBisOUjlNd0x7ppcTxSi3yenrJHqkq/pqJsRLKf6VJ/s9p6bsd2bj07hSDpjlDC2lB25eEfkEkeMkXoE7ErXQ5QCwIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAHwYpgbClHULXYhK4GNTgonvXh81oqfXwCSWAyDPiTYFDWVfWM9C4ApxMLyc0XvJte75Rla+bPC08oYN3OlhbbvP3twBL/w9SsfxvkbpFn2ZfGSTXZhyiq4vjmQHW1pnFvGelwgU4v3eeRE/MjoCnE7M/Q5thpuog6WGf7CbKERnWZn8QsUaJsZSEkg6Bv2jm69ye57ab5rrOUaeMlstTfdlaHAEkUgLX/NXq7RbGwv82hkHY5b2vYcXeh34tUMBL6os3OdRlooN9ZQGkVIISvxVZpSHkYC20DFNh1Bb0ovjfujlTcka81GnbUhFGZtRuoVQ1RVpMO8xtx3YKBLp4do3hPmnRCV5hCm43OIjYx9Ov2dqICV3AaNXSLV1dW39Bak/RBiIDGHzOIW2+VMPjvvypBjmPv/tmbqNHWPSAWOxTyMx6E1gFCZvi+5F+BgkdC3Lm7U0BU0NfvsXajZd8sXnIllvEMrikCLoI/yurvexNDcF1RW/FhMsoua0eerwczcNm66pGjHm05p9DR6lFeJZrtqeqZuojdxBWy4vH6ghyJaupergoX+nmdG3JYeRttCFF/ITI68TeCES5V3Y0C3psYAg1XxcGRLGd4chPo/4xwiLkijWtgt0/to5ljGBwfK7r62PHZfL1Dp+i7V3w7hmOlhbXzP+zhMZn1GCk7KY=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS9AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucRBAKNQXH8t8gVCl/ItHMI2hMJ76QOECOqEi1Y89cDpegDvh/INXyMsXbzi87tfFzgq1O+9ID6aPWGg+bNGADXyXxDVdy7Nq/SCdoXvo66MTYwq8jyJeUHDHEGMVBcmZpD44VJCvLBxDcvByuevP4Wo2NKqJCwK+ecAdZc/8Rvd947SjbMHuS8BppfQWARVUqA5BLOkTAHNv6tEk/hncC7O2YOGSShart8fM8dokgGSyewHVFe08POuQ+WDHeVpvApH/SP29rwktSoiHRoL6dK+F2YeEB5SuFW9LQgYCutjapmUP/9TC3Byro9Li6UrvQHxNmgMFGQJSYjFdqlGjLibfuguLp7pueutbROoZaSxU8HqlfYxLkpJUxUwNI1ja/1t3wcivtWknVXBd13R06iVfU1HGe8Kb4u5il4a4yP4p7VT4RE3b1SBLJeG+BxHiE8gFaaKcX/Cl6JV14RPTvk/6VnAtEQ66qHJex21KKuiJo2JoOmDXVHmvGQlWXNjYgoPx28Xd5WsofL+n7HDR2Ku8XgwJw6IXBJGuoday9qWN9v/k7DGlNGB6Sm4gdVUmycMP6EGhB1vFTiDfOGQO42ywmcpKoMETPVQ5InYKE0xAOckgcminDgxWjtUHjBDPEKifEjYudPwKmR6Cf4ZdGvUWwY/zq9pPAC9bu423KeBCnSL8AQ4r5SVsW6XG0njamwfNjpegwh/YG7sS7sDtZ8gi7r6tZYjsOqZlCYU0j7QTBpuQn81Yof2nQRCFxhRJCeydmIA8+z0nXrcElk7NDPk4kYQS0VitJ2qeQYNENzGBglROkCl2y6GlxAG80IBtReCUp/xOSdlwDR0eim+SNkdStvmQM5IcWBuDKwGZc1A4v/UoLl7niV9fpl4X6bUX8lZzY4gidJOafoJ30VoY/lYGkrkEuz3GpbbT5v8fF3iXVRlEqhlpe8JSGu7Rd2cPcJSkQ1Cuj/QRhHPhFMF2KhTEf95c9ZBKI8H7SvBi7eLXfSW2Y0ve6vXBZKyjK9whgCU9iVOsJjqRXpAccaWOKi420CjmS0+uwj/Xr2wLZhPEjBA/G6Od30+eG9mICmbp/5wAGhK/ZxCT17ZETyFmOMo49jl9pxdKocJNuzMrLpSz7/g5Jwp8+y8Ck5YP7AX0R/dVA0t37DO7nAbQT5XVSYpMVh/yvpYJ9WR+tb8Yg1h2lERLR2fbuhQRcwmisZR2W3Sr2b7hX9MCMkMQw8y2fDJrzLrqKqkHcjvnI/TdzZW2MzeQDoBBb3fmgvjYg07l4kThS73wGX992w2Y+a1A2iirSmrYEm9dSh16JmXa8boGQAONQzQkHh7vpw0IBs9cnvqO1QLB1GtbBztUBXonA4TxMKLYZkVrrd2RhrYWMsDp7MpC4M0p/DA3E/qscYwq1OpwriewNdx6XXqMZbdUNqMP2viBY2VSGmNdHtVfbN/rnaeJetFGX7XgTVYD7wDq8TW9yseCK944jcT+y/o0YiT9j3OLQ2Ts0LDTQskpJSxRmXEQGy3NBDOYFTvRkcGJEQJItuol8NivJN1H9LoLIUAlAHBZxfHpUYx66YnP4PdTdMIWH+nxyekKPFfAT7olQ=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "FUNK671228PH6",
+ LegalName = "KARLA FUENTE NOLASCO",
+ TaxRegimeCode = "621",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "XAXX010101000",
+ LegalName = "PUBLICO EN GENERAL",
+ ZipCode = "01160",
+ TaxRegimeCode = "616",
+ CfdiUseCode = "S01",
+ Email = "someone@somewhere.com"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ ItemCode = "50211503",
+ Quantity = 1,
+ UnitOfMeasurementCode = "H87",
+ Description = "Cigarros",
+ UnitPrice = 100.0m,
+ TaxObjectCode = "02",
+ ItemSku = "50211503",
+ Discount = 10.0m,
+ ItemTaxes = new List()
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "002", // IVA
+ TaxTypeCode = "Tasa", // Tasa
+ TaxRate = 0.160000m, // 16%
+ TaxFlagCode = "T" // Traslado
+ }
+ }
+ },
+ new InvoiceItem
+ {
+ ItemCode = "12131707",
+ Quantity = 20,
+ UnitOfMeasurementCode = "H87",
+ Description = "Encendedores",
+ UnitPrice = 9.0m,
+ TaxObjectCode = "02",
+ ItemSku = "12131707",
+ Discount = 20.0m,
+ ItemTaxes = new List()
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "002", // IVA
+ TaxTypeCode = "Tasa", // Tasa
+ TaxRate = 0.160000m, // 16%
+ TaxFlagCode = "T" // Traslado
+ }
+ }
+ }
+ };
+
+
+ // Información global
+
+ var globalInfo = new GlobalInformation
+ {
+ PeriodicityCode = "01",
+ MonthCode = "05",
+ Year = 2025
+ };
+
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ TypeCode = "I",
+ Series = "F",
+ Date = DateTime.Now,
+ CurrencyCode = "MXN",
+ PaymentFormCode = "01",
+ PaymentMethodCode = "PUE",
+ ExpeditionZipCode = "01160",
+ GlobalInformation = globalInfo, // Información global
+ Issuer = issuer, // Emisor
+ Recipient = recipient, // Receptor
+ Items = items, // Ventas
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button6_Click(object sender, EventArgs e)
+ {
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "603",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "CACX7605101P8",
+ LegalName = "XOCHILT CASAS CHAVEZ",
+ ZipCode = "36257",
+ TaxRegimeCode = "612",
+ CfdiUseCode = "CP01",
+ Email = "someone@somewhere.com"
+ };
+
+ var relatedInvoices = new List()
+ {
+ new RelatedInvoice { RelationshipTypeCode = "01", Uuid = "1fac4464-1111-0000-1111-cd37179db12e" }
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ ItemCode = "50211503",
+ Quantity = 1.00m,
+ UnitOfMeasurementCode = "H87",
+ Description = "Cigarros",
+ UnitPrice = 1000.0m,
+ TaxObjectCode = "01",
+ ItemSku = "50211503",
+ Discount = 0.0m,
+ Parts = new List()
+ {
+ new InvoiceItemPart
+ {
+ ItemCode = "51241200",
+ ItemSku = "IM0071",
+ Quantity = 1,
+ Description = "25311FM00239 (LUARIL ETER SULFATO DE SODIO VEHICULO CBP 300ML), ACEITE AJONJOLI 150CC, ACEITE DE ALMENDRAS DULCES 150CC, TALCO 10GR, OXIDO DE ZINC 10GR.",
+ UnitPrice = 1000.00m
+ }
+ }
+ }
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "99",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "99039",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ RelatedInvoices = relatedInvoices,
+ PaymentMethodCode = "PUE",
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button7_Click(object sender, EventArgs e)
+ {
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "603",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "CACX7605101P8",
+ LegalName = "XOCHILT CASAS CHAVEZ",
+ ZipCode = "36257",
+ TaxRegimeCode = "612",
+ CfdiUseCode = "S01",
+ Email = "someone@somewhere.com"
+ };
+
+ var relatedInvoices = new List()
+ {
+ new RelatedInvoice { RelationshipTypeCode = "02", Uuid = "61b2f6b4-f588-44d3-aec7-85cf146c33bd" }
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ ItemCode = "70171600",
+ Quantity = 3,
+ UnitOfMeasurementCode = "ACT",
+ Description = "Vigilancia",
+ UnitPrice = 95.0m,
+ TaxObjectCode = "02",
+ ItemSku = "70171600",
+ Discount = 0.0m,
+ ItemTaxes = new List()
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.000000m,
+ TaxFlagCode = "T"
+ }
+ }
+ }
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "99",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "99039",
+ Issuer = issuer,
+ Recipient = recipient,
+ RelatedInvoices = relatedInvoices,
+ Items = items,
+ PaymentMethodCode = "PUE",
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button8_Click(object sender, EventArgs e)
+ {
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "603",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "URE180429TM6",
+ LegalName = "UNIVERSIDAD ROBOTICA ESPAÑOLA",
+ ZipCode = "86991",
+ TaxRegimeCode = "601",
+ CfdiUseCode = "G01",
+ Email = "someone@somewhere.com"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ ItemCode = "50211503",
+ Quantity = 3,
+ UnitOfMeasurementCode = "H87",
+ Description = "Cigarros",
+ UnitPrice = 200.0m,
+ TaxObjectCode = "06",
+ ItemSku = "50211503",
+ Discount = 0.0m,
+ ItemTaxes = new List()
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "001",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.106666m,
+ TaxFlagCode = "R"
+ }
+ }
+ }
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "99",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PPD",
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button15_Click(object sender, EventArgs e)
+ {
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "603",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "URE180429TM6",
+ LegalName = "UNIVERSIDAD ROBOTICA ESPAÑOLA",
+ ZipCode = "86991",
+ TaxRegimeCode = "601",
+ CfdiUseCode = "G01",
+ Email = "someone@somewhere.com"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ ItemCode = "50211503",
+ Quantity = 3,
+ UnitOfMeasurementCode = "H87",
+ Description = "Cigarros",
+ UnitPrice = 200.0m,
+ TaxObjectCode = "07",
+ ItemSku = "50211503",
+ Discount = 0.0m,
+ ItemTaxes = new List()
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "001",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.100000m,
+ TaxFlagCode = "R"
+ },
+ new InvoiceItemTax
+ {
+ TaxCode = "003",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.060000m,
+ TaxFlagCode = "T"
+ }
+ }
+ }
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "99",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PPD",
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button16_Click(object sender, EventArgs e)
+ {
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "603",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "URE180429TM6",
+ LegalName = "UNIVERSIDAD ROBOTICA ESPAÑOLA",
+ ZipCode = "86991",
+ TaxRegimeCode = "601",
+ CfdiUseCode = "G01",
+ Email = "someone@somewhere.com"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ ItemCode = "50211503",
+ Quantity = 3,
+ UnitOfMeasurementCode = "H87",
+ Description = "Cigarros",
+ UnitPrice = 200.0m,
+ TaxObjectCode = "07",
+ ItemSku = "50211503",
+ Discount = 0.0m,
+ ItemTaxes = new List()
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "003",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.060000m,
+ TaxFlagCode = "T"
+ },
+ new InvoiceItemTax
+ {
+ TaxCode = "003",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.060000m,
+ TaxFlagCode = "R"
+ }
+ }
+ }
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "99",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PPD",
+ ExchangeRate = 1.0m,
+ ExportCode = "01"
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button17_Click(object sender, EventArgs e)
+ {
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "603",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "URE180429TM6",
+ LegalName = "UNIVERSIDAD ROBOTICA ESPAÑOLA",
+ ZipCode = "86991",
+ TaxRegimeCode = "601",
+ CfdiUseCode = "G01",
+ Email = "someone@somewhere.com"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ ItemCode = "50211503",
+ Quantity = 3,
+ UnitOfMeasurementCode = "H87",
+ Description = "Cigarros",
+ UnitPrice = 200.0m,
+ TaxObjectCode = "08",
+ ItemSku = "50211503",
+ Discount = 0.0m,
+ ItemTaxes = new List()
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "001",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.106666m,
+ TaxFlagCode = "R"
+ }
+ }
+ }
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "99",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PPD",
+ ExchangeRate = 1.0m,
+ ExportCode = "01"
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button18_Click(object sender, EventArgs e)
+ {
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "603",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "XAXX010101000",
+ LegalName = "CLIENTE",
+ ZipCode = "45610",
+ TaxRegimeCode = "616",
+ CfdiUseCode = "S01",
+ Email = "someone@somewhere.com"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ ItemCode = "50211503",
+ Quantity = 3,
+ UnitOfMeasurementCode = "H87",
+ Description = "Cigarros",
+ UnitPrice = 10.0m,
+ TaxObjectCode = "02",
+ ItemSku = "50211503",
+ Discount = 0.0m,
+ ItemTaxes = new List()
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ },
+ new InvoiceItemTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.040000m,
+ TaxFlagCode = "R"
+ }
+ }
+ }
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "99",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "45610",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PPD",
+ ExchangeRate = 1.0m,
+ ExportCode = "01"
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button19_Click(object sender, EventArgs e)
+ {
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "603",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ ZipCode = "42501",
+ TaxRegimeCode = "601",
+ CfdiUseCode = "G03",
+ Email = "someone@somewhere.com"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ ItemCode = "80101508",
+ Quantity = 1,
+ UnitOfMeasurementCode = "E48",
+ Description = "SERVICIOS DE ASESORAMIENTO SOBRE INTELIGENCIA EMPRESARIAL",
+ UnitPrice = 3499.99m,
+ TaxObjectCode = "02",
+ ItemSku = "80101508",
+ Discount = 0.0m,
+ ItemTaxes = new List()
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ },
+ new InvoiceItemTax
+ {
+ TaxCode = "001",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.012500m,
+ TaxFlagCode = "R"
+ }
+ }
+ }
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "99",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "97134",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PPD",
+ ExchangeRate = 1.0m,
+ ExportCode = "01"
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button20_Click(object sender, EventArgs e)
+ {
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "603",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "URE180429TM6",
+ LegalName = "UNIVERSIDAD ROBOTICA ESPAÑOLA",
+ ZipCode = "86991",
+ TaxRegimeCode = "601",
+ CfdiUseCode = "G01",
+ Email = "someone@somewhere.com"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ ItemCode = "50211503",
+ Quantity = 1.0m,
+ UnitOfMeasurementCode = "H87",
+ UnitOfMeasurement = "Unidad de servicio",
+ Description = "cigarros",
+ UnitPrice = 200.0m,
+ TaxObjectCode = "02",
+ ItemSku = "None",
+ Discount = 0m,
+ ItemTaxes = new List()
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.000000m,
+ TaxFlagCode = "T"
+ },
+ new InvoiceItemTax
+ {
+ TaxCode = "001",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.100000m,
+ TaxFlagCode = "R"
+ },
+ new InvoiceItemTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.106666m,
+ TaxFlagCode = "R"
+ }
+ }
+ }
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "99",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PPD",
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button4_Click(object sender, EventArgs e)
+ {
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "603",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "URE180429TM6",
+ LegalName = "UNIVERSIDAD ROBOTICA ESPAÑOLA",
+ ZipCode = "86991",
+ TaxRegimeCode = "601",
+ CfdiUseCode = "G01",
+ Email = "someone@somewhere.com"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ ItemCode = "15111511",
+ Quantity = 10.236m,
+ UnitOfMeasurementCode = "MTQ",
+ Description = "Gas natural licuado",
+ UnitPrice = 200.0m,
+ TaxObjectCode = "02",
+ ItemSku = "15111511",
+ Discount = 0m,
+ ItemTaxes = new List()
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ }
+ }
+ }
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "99",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PPD",
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button21_Click(object sender, EventArgs e)
+ {
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "603",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "URE180429TM6",
+ LegalName = "UNIVERSIDAD ROBOTICA ESPAÑOLA",
+ ZipCode = "86991",
+ TaxRegimeCode = "601",
+ CfdiUseCode = "G01",
+ Email = "someone@somewhere.com"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ ItemCode = "50211503",
+ Quantity = 1.0m,
+ UnitOfMeasurementCode = "H87",
+ Description = "Cigarros",
+ UnitPrice = 125.0m,
+ TaxObjectCode = "02",
+ ItemSku = "50211503",
+ Discount = 0m,
+ ItemTaxes = new List()
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Exento",
+ TaxFlagCode = "T"
+ }
+ }
+ }
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "99",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PPD",
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button5_Click(object sender, EventArgs e)
+ {
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "603",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "URE180429TM6",
+ LegalName = "UNIVERSIDAD ROBOTICA ESPAÑOLA",
+ ZipCode = "86991",
+ TaxRegimeCode = "601",
+ CfdiUseCode = "G01",
+ Email = "someone@somewhere.com"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ ItemCode = "50211503",
+ Quantity = 1.0m,
+ UnitOfMeasurementCode = "H87",
+ Description = "Cigarros",
+ UnitPrice = 10.0m,
+ TaxObjectCode = "01",
+ ItemSku = "50211503",
+ Discount = 0m
+ }
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "45610",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PUE",
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+ }
+}
diff --git a/FiscalApi.Samples.NetFramework/IncomeInvoiceValueForm.resx b/FiscalApi.Samples.NetFramework/IncomeInvoiceValueForm.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/FiscalApi.Samples.NetFramework/IncomeInvoiceValueForm.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/FiscalApi.Samples.NetFramework/InvoiceReferenceForm.Designer.cs b/FiscalApi.Samples.NetFramework/InvoiceReferenceForm.Designer.cs
new file mode 100644
index 0000000..69f3485
--- /dev/null
+++ b/FiscalApi.Samples.NetFramework/InvoiceReferenceForm.Designer.cs
@@ -0,0 +1,206 @@
+namespace FiscalApi.Samples.NetFramework
+{
+ partial class InvoiceReferenceForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.button5 = new System.Windows.Forms.Button();
+ this.button6 = new System.Windows.Forms.Button();
+ this.button7 = new System.Windows.Forms.Button();
+ this.groupBox1 = new System.Windows.Forms.GroupBox();
+ this.button14 = new System.Windows.Forms.Button();
+ this.button13 = new System.Windows.Forms.Button();
+ this.button12 = new System.Windows.Forms.Button();
+ this.button11 = new System.Windows.Forms.Button();
+ this.button10 = new System.Windows.Forms.Button();
+ this.button9 = new System.Windows.Forms.Button();
+ this.button8 = new System.Windows.Forms.Button();
+ this.groupBox1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // button5
+ //
+ this.button5.Location = new System.Drawing.Point(203, 87);
+ this.button5.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button5.Name = "button5";
+ this.button5.Size = new System.Drawing.Size(189, 60);
+ this.button5.TabIndex = 4;
+ this.button5.Text = "Consultar estado de factura";
+ this.button5.UseVisualStyleBackColor = true;
+ this.button5.Click += new System.EventHandler(this.button5_Click);
+ //
+ // button6
+ //
+ this.button6.Location = new System.Drawing.Point(203, 219);
+ this.button6.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button6.Name = "button6";
+ this.button6.Size = new System.Drawing.Size(189, 60);
+ this.button6.TabIndex = 5;
+ this.button6.Text = "Enviar factura por email";
+ this.button6.UseVisualStyleBackColor = true;
+ this.button6.Click += new System.EventHandler(this.button6_Click);
+ //
+ // button7
+ //
+ this.button7.Location = new System.Drawing.Point(203, 286);
+ this.button7.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button7.Name = "button7";
+ this.button7.Size = new System.Drawing.Size(189, 60);
+ this.button7.TabIndex = 6;
+ this.button7.Text = "Cancelar factura";
+ this.button7.UseVisualStyleBackColor = true;
+ this.button7.Click += new System.EventHandler(this.button7_Click);
+ //
+ // groupBox1
+ //
+ this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.groupBox1.Controls.Add(this.button14);
+ this.groupBox1.Controls.Add(this.button13);
+ this.groupBox1.Controls.Add(this.button12);
+ this.groupBox1.Controls.Add(this.button11);
+ this.groupBox1.Controls.Add(this.button10);
+ this.groupBox1.Controls.Add(this.button9);
+ this.groupBox1.Controls.Add(this.button8);
+ this.groupBox1.Controls.Add(this.button7);
+ this.groupBox1.Controls.Add(this.button6);
+ this.groupBox1.Controls.Add(this.button5);
+ this.groupBox1.Location = new System.Drawing.Point(12, 12);
+ this.groupBox1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.groupBox1.Name = "groupBox1";
+ this.groupBox1.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.groupBox1.Size = new System.Drawing.Size(401, 359);
+ this.groupBox1.TabIndex = 7;
+ this.groupBox1.TabStop = false;
+ this.groupBox1.Text = "Facturación por referencias";
+ //
+ // button14
+ //
+ this.button14.Location = new System.Drawing.Point(203, 21);
+ this.button14.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button14.Name = "button14";
+ this.button14.Size = new System.Drawing.Size(189, 60);
+ this.button14.TabIndex = 13;
+ this.button14.Text = "Complemento carta porte";
+ this.button14.UseVisualStyleBackColor = true;
+ this.button14.Click += new System.EventHandler(this.button14_Click);
+ //
+ // button13
+ //
+ this.button13.Location = new System.Drawing.Point(5, 286);
+ this.button13.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button13.Name = "button13";
+ this.button13.Size = new System.Drawing.Size(189, 60);
+ this.button13.TabIndex = 12;
+ this.button13.Text = "Complemento de impuestos locales";
+ this.button13.UseVisualStyleBackColor = true;
+ this.button13.Click += new System.EventHandler(this.button13_Click);
+ //
+ // button12
+ //
+ this.button12.Location = new System.Drawing.Point(5, 219);
+ this.button12.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button12.Name = "button12";
+ this.button12.Size = new System.Drawing.Size(189, 60);
+ this.button12.TabIndex = 11;
+ this.button12.Text = "Complemento de nómina";
+ this.button12.UseVisualStyleBackColor = true;
+ this.button12.Click += new System.EventHandler(this.button12_Click);
+ //
+ // button11
+ //
+ this.button11.Location = new System.Drawing.Point(5, 153);
+ this.button11.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button11.Name = "button11";
+ this.button11.Size = new System.Drawing.Size(189, 60);
+ this.button11.TabIndex = 10;
+ this.button11.Text = "Complemento de pago";
+ this.button11.UseVisualStyleBackColor = true;
+ this.button11.Click += new System.EventHandler(this.button11_Click);
+ //
+ // button10
+ //
+ this.button10.Location = new System.Drawing.Point(5, 87);
+ this.button10.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button10.Name = "button10";
+ this.button10.Size = new System.Drawing.Size(189, 60);
+ this.button10.TabIndex = 9;
+ this.button10.Text = "Facturas de egreso";
+ this.button10.UseVisualStyleBackColor = true;
+ this.button10.Click += new System.EventHandler(this.button10_Click);
+ //
+ // button9
+ //
+ this.button9.Location = new System.Drawing.Point(5, 21);
+ this.button9.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button9.Name = "button9";
+ this.button9.Size = new System.Drawing.Size(189, 60);
+ this.button9.TabIndex = 8;
+ this.button9.Text = "Facturas de ingreso";
+ this.button9.UseVisualStyleBackColor = true;
+ this.button9.Click += new System.EventHandler(this.button9_Click);
+ //
+ // button8
+ //
+ this.button8.Location = new System.Drawing.Point(203, 153);
+ this.button8.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.button8.Name = "button8";
+ this.button8.Size = new System.Drawing.Size(189, 60);
+ this.button8.TabIndex = 7;
+ this.button8.Text = "Generar PDF";
+ this.button8.UseVisualStyleBackColor = true;
+ this.button8.Click += new System.EventHandler(this.button8_Click);
+ //
+ // InvoiceReferenceForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(425, 384);
+ this.Controls.Add(this.groupBox1);
+ this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.Name = "InvoiceReferenceForm";
+ this.Text = "InvoiceReferenceForm";
+ this.groupBox1.ResumeLayout(false);
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+ private System.Windows.Forms.Button button5;
+ private System.Windows.Forms.Button button6;
+ private System.Windows.Forms.Button button7;
+ private System.Windows.Forms.GroupBox groupBox1;
+ private System.Windows.Forms.Button button8;
+ private System.Windows.Forms.Button button9;
+ private System.Windows.Forms.Button button13;
+ private System.Windows.Forms.Button button12;
+ private System.Windows.Forms.Button button11;
+ private System.Windows.Forms.Button button10;
+ private System.Windows.Forms.Button button14;
+ }
+}
\ No newline at end of file
diff --git a/FiscalApi.Samples.NetFramework/InvoiceReferenceForm.cs b/FiscalApi.Samples.NetFramework/InvoiceReferenceForm.cs
new file mode 100644
index 0000000..51b049d
--- /dev/null
+++ b/FiscalApi.Samples.NetFramework/InvoiceReferenceForm.cs
@@ -0,0 +1,179 @@
+using Fiscalapi.Common;
+using Fiscalapi.Models;
+using Fiscalapi.Services;
+using System;
+using System.IO;
+using System.Windows.Forms;
+
+namespace FiscalApi.Samples.NetFramework
+{
+ public partial class InvoiceReferenceForm : Form
+ {
+ private FiscalapiSettings _settings;
+ public InvoiceReferenceForm(FiscalapiSettings settings)
+ {
+ InitializeComponent();
+ _settings = settings;
+ }
+
+ private void button9_Click(object sender, EventArgs e)
+ {
+ IncomeInvoiceReferenceForm incomeInvoiceReferenceForm = new IncomeInvoiceReferenceForm(_settings);
+ incomeInvoiceReferenceForm.Show();
+ }
+
+ private void button11_Click(object sender, EventArgs e)
+ {
+ PaymentComplementInvoiceForm paymentComplementInvoiceForm = new PaymentComplementInvoiceForm(_settings);
+ paymentComplementInvoiceForm.Show();
+ }
+
+ private async void button8_Click(object sender, EventArgs e)
+ {
+ /*Generar PDF de factura por referencias*/
+
+ // Crear instancia de FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+
+ // request model (utiliza las reglas de reporte https://docs.fiscalapi.com/report-rules-info)
+ var request = new CreatePdfRequest
+ {
+ InvoiceId = "51a3a6d3-b617-4a6b-8a67-cbfd654c7e90",
+ };
+
+ // Send request
+ var apiResponse = await fiscalApi.Invoices.GetPdfAsync(request);
+
+ // Check response
+ if (apiResponse.Succeeded)
+ {
+ var pdfBytes = Convert.FromBase64String(apiResponse.Data.Base64File);
+
+ File.WriteAllBytes(@"C:\facturas\MyFile.PDF", pdfBytes);
+ MessageBox.Show(@"PDF generado.");
+ }
+ else
+ {
+ MessageBox.Show($@"HttpStatusCode: {apiResponse.HttpStatusCode}");
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button5_Click(object sender, EventArgs e)
+ {
+ // Consultar estado de una factura por referencias (por id de la factura)
+
+ // Create instance of FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+
+ // model request
+ var request = new InvoiceStatusRequest
+ {
+ Id = "bda0b31d-e1e0-4644-91ea-c6f0e90fb57c", // Id, No folio fiscal (UUID).
+ };
+
+ // Send request
+ var apiResponse = await fiscalApi.Invoices.GetStatusAsync(request);
+
+ // Check response
+ if (apiResponse.Succeeded)
+ {
+ MessageBox.Show("OK");
+ MessageBox.Show($@"Estado: {apiResponse.Data.Status}");
+ }
+ else
+ {
+ MessageBox.Show($@"HttpStatusCode: {apiResponse.HttpStatusCode}");
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button7_Click(object sender, EventArgs e)
+ {
+ /*Cancelar factura por referencias */
+
+
+ // Crear instancia de FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // request model
+ var request = new CancelInvoiceRequest()
+ {
+ Id = "630a41d1-00ce-4750-8f8c-7b36786134d0", // Id factura en fiscalapi
+ CancellationReasonCode = "01",
+ ReplacementUuid = "de841944-bd4f-4bb8-adfe-2a2282787c62",
+ };
+
+ // Cancelar la factura
+ var apiResponse = await fiscalApi.Invoices.CancelAsync(request);
+
+ if (apiResponse.Succeeded)
+ {
+ MessageBox.Show("Factura cancelada exitosamente");
+ }
+ else
+ {
+ MessageBox.Show($@"HttpStatusCode: {apiResponse.HttpStatusCode}");
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button6_Click(object sender, EventArgs e)
+ {
+ /* Enviar factura por referencia*/
+
+ // Crear instancia de FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // request model (personaliza el pdf de la factura)
+ var request = new SendInvoiceRequest
+ {
+ InvoiceId = "51a3a6d3-b617-4a6b-8a67-cbfd654c7e90",
+ ToEmail = "mendoza.git@gmail.com", // email1@dominio;email2@dominio
+ };
+
+ // Send request
+ var apiResponse = await fiscalApi.Invoices.SendAsync(request);
+
+ // Check response
+ if (apiResponse.Succeeded)
+ {
+ MessageBox.Show(@"Factura enviada.");
+ }
+ else
+ {
+ MessageBox.Show($@"HttpStatusCode: {apiResponse.HttpStatusCode}");
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private void button10_Click(object sender, EventArgs e)
+ {
+ EgressInvoiceReferenceForm egressInvoiceReferenceForm = new EgressInvoiceReferenceForm(_settings);
+ egressInvoiceReferenceForm.Show();
+ }
+
+ private void button12_Click(object sender, EventArgs e)
+ {
+ PayrollComplementReferenceForm payrollComplementReferenceForm = new PayrollComplementReferenceForm(_settings);
+ payrollComplementReferenceForm.Show();
+ }
+
+ private void button13_Click(object sender, EventArgs e)
+ {
+ LocalTaxesComplementReferenceForm localTaxesComplementReference = new LocalTaxesComplementReferenceForm(_settings);
+ localTaxesComplementReference.Show();
+ }
+
+ private void button14_Click(object sender, EventArgs e)
+ {
+
+ }
+ }
+}
diff --git a/FiscalApi.Samples.NetFramework/InvoiceReferenceForm.resx b/FiscalApi.Samples.NetFramework/InvoiceReferenceForm.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/FiscalApi.Samples.NetFramework/InvoiceReferenceForm.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/FiscalApi.Samples.NetFramework/InvoiceValueForm.Designer.cs b/FiscalApi.Samples.NetFramework/InvoiceValueForm.Designer.cs
new file mode 100644
index 0000000..f95717f
--- /dev/null
+++ b/FiscalApi.Samples.NetFramework/InvoiceValueForm.Designer.cs
@@ -0,0 +1,206 @@
+namespace FiscalApi.Samples.NetFramework
+{
+ partial class InvoiceValueForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.button5 = new System.Windows.Forms.Button();
+ this.button6 = new System.Windows.Forms.Button();
+ this.button7 = new System.Windows.Forms.Button();
+ this.groupBox1 = new System.Windows.Forms.GroupBox();
+ this.button13 = new System.Windows.Forms.Button();
+ this.button12 = new System.Windows.Forms.Button();
+ this.button11 = new System.Windows.Forms.Button();
+ this.button10 = new System.Windows.Forms.Button();
+ this.button9 = new System.Windows.Forms.Button();
+ this.button1 = new System.Windows.Forms.Button();
+ this.button8 = new System.Windows.Forms.Button();
+ this.groupBox1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // button5
+ //
+ this.button5.Location = new System.Drawing.Point(152, 71);
+ this.button5.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
+ this.button5.Name = "button5";
+ this.button5.Size = new System.Drawing.Size(142, 49);
+ this.button5.TabIndex = 4;
+ this.button5.Text = "Cancelar factura";
+ this.button5.UseVisualStyleBackColor = true;
+ this.button5.Click += new System.EventHandler(this.button5_Click);
+ //
+ // button6
+ //
+ this.button6.Location = new System.Drawing.Point(152, 124);
+ this.button6.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
+ this.button6.Name = "button6";
+ this.button6.Size = new System.Drawing.Size(142, 49);
+ this.button6.TabIndex = 5;
+ this.button6.Text = "Consultar estado de factura";
+ this.button6.UseVisualStyleBackColor = true;
+ this.button6.Click += new System.EventHandler(this.button6_Click);
+ //
+ // button7
+ //
+ this.button7.Location = new System.Drawing.Point(152, 232);
+ this.button7.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
+ this.button7.Name = "button7";
+ this.button7.Size = new System.Drawing.Size(142, 49);
+ this.button7.TabIndex = 6;
+ this.button7.Text = "Enviar factura por Email";
+ this.button7.UseVisualStyleBackColor = true;
+ this.button7.Click += new System.EventHandler(this.button7_Click);
+ //
+ // groupBox1
+ //
+ this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.groupBox1.Controls.Add(this.button13);
+ this.groupBox1.Controls.Add(this.button12);
+ this.groupBox1.Controls.Add(this.button11);
+ this.groupBox1.Controls.Add(this.button10);
+ this.groupBox1.Controls.Add(this.button9);
+ this.groupBox1.Controls.Add(this.button1);
+ this.groupBox1.Controls.Add(this.button8);
+ this.groupBox1.Controls.Add(this.button7);
+ this.groupBox1.Controls.Add(this.button6);
+ this.groupBox1.Controls.Add(this.button5);
+ this.groupBox1.Location = new System.Drawing.Point(9, 10);
+ this.groupBox1.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
+ this.groupBox1.Name = "groupBox1";
+ this.groupBox1.Padding = new System.Windows.Forms.Padding(2, 2, 2, 2);
+ this.groupBox1.Size = new System.Drawing.Size(300, 288);
+ this.groupBox1.TabIndex = 7;
+ this.groupBox1.TabStop = false;
+ this.groupBox1.Text = "Facturación por valores";
+ //
+ // button13
+ //
+ this.button13.Location = new System.Drawing.Point(152, 17);
+ this.button13.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
+ this.button13.Name = "button13";
+ this.button13.Size = new System.Drawing.Size(142, 49);
+ this.button13.TabIndex = 13;
+ this.button13.Text = "Complemento carta porte";
+ this.button13.UseVisualStyleBackColor = true;
+ this.button13.Click += new System.EventHandler(this.button13_Click_1);
+ //
+ // button12
+ //
+ this.button12.Location = new System.Drawing.Point(4, 232);
+ this.button12.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
+ this.button12.Name = "button12";
+ this.button12.Size = new System.Drawing.Size(142, 49);
+ this.button12.TabIndex = 12;
+ this.button12.Text = "Complemento impuestos locales";
+ this.button12.UseVisualStyleBackColor = true;
+ this.button12.Click += new System.EventHandler(this.button12_Click_1);
+ //
+ // button11
+ //
+ this.button11.Location = new System.Drawing.Point(4, 178);
+ this.button11.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
+ this.button11.Name = "button11";
+ this.button11.Size = new System.Drawing.Size(142, 49);
+ this.button11.TabIndex = 11;
+ this.button11.Text = "Complemento de nómina";
+ this.button11.UseVisualStyleBackColor = true;
+ this.button11.Click += new System.EventHandler(this.button11_Click_1);
+ //
+ // button10
+ //
+ this.button10.Location = new System.Drawing.Point(4, 124);
+ this.button10.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
+ this.button10.Name = "button10";
+ this.button10.Size = new System.Drawing.Size(142, 49);
+ this.button10.TabIndex = 10;
+ this.button10.Text = "Complemento de pago";
+ this.button10.UseVisualStyleBackColor = true;
+ this.button10.Click += new System.EventHandler(this.button10_Click_1);
+ //
+ // button9
+ //
+ this.button9.Location = new System.Drawing.Point(4, 71);
+ this.button9.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
+ this.button9.Name = "button9";
+ this.button9.Size = new System.Drawing.Size(142, 49);
+ this.button9.TabIndex = 9;
+ this.button9.Text = "Facturas de egreso";
+ this.button9.UseVisualStyleBackColor = true;
+ this.button9.Click += new System.EventHandler(this.button9_Click_1);
+ //
+ // button1
+ //
+ this.button1.Location = new System.Drawing.Point(4, 17);
+ this.button1.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(142, 49);
+ this.button1.TabIndex = 8;
+ this.button1.Text = "Facturas de ingreso";
+ this.button1.UseVisualStyleBackColor = true;
+ this.button1.Click += new System.EventHandler(this.button1_Click);
+ //
+ // button8
+ //
+ this.button8.Location = new System.Drawing.Point(152, 178);
+ this.button8.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
+ this.button8.Name = "button8";
+ this.button8.Size = new System.Drawing.Size(142, 49);
+ this.button8.TabIndex = 7;
+ this.button8.Text = "Generar PDF";
+ this.button8.UseVisualStyleBackColor = true;
+ this.button8.Click += new System.EventHandler(this.button8_Click);
+ //
+ // InvoiceValueForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(318, 307);
+ this.Controls.Add(this.groupBox1);
+ this.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
+ this.Name = "InvoiceValueForm";
+ this.Text = "InvoiceValueForm";
+ this.groupBox1.ResumeLayout(false);
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+ private System.Windows.Forms.Button button5;
+ private System.Windows.Forms.Button button6;
+ private System.Windows.Forms.Button button7;
+ private System.Windows.Forms.GroupBox groupBox1;
+ private System.Windows.Forms.Button button8;
+ private System.Windows.Forms.Button button1;
+ private System.Windows.Forms.Button button12;
+ private System.Windows.Forms.Button button11;
+ private System.Windows.Forms.Button button10;
+ private System.Windows.Forms.Button button9;
+ private System.Windows.Forms.Button button13;
+ }
+}
\ No newline at end of file
diff --git a/FiscalApi.Samples.NetFramework/InvoiceValueForm.cs b/FiscalApi.Samples.NetFramework/InvoiceValueForm.cs
new file mode 100644
index 0000000..0a7858c
--- /dev/null
+++ b/FiscalApi.Samples.NetFramework/InvoiceValueForm.cs
@@ -0,0 +1,780 @@
+using Fiscalapi.Common;
+using Fiscalapi.Models;
+using Fiscalapi.Services;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Windows.Forms;
+
+
+namespace FiscalApi.Samples.NetFramework
+{
+ public partial class InvoiceValueForm : Form
+ {
+ private FiscalapiSettings _settings;
+ public InvoiceValueForm(FiscalapiSettings settings)
+ {
+ InitializeComponent();
+ _settings = settings;
+ }
+
+ private async void button4_Click(object sender, EventArgs e)
+ {
+ // https://docs.fiscalapi.com/credentials-info
+
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "601",
+ TaxCredentials = sellos,
+ EmployerData = new EmployerData
+ {
+ EmployerRegistration = "B5510768108"
+ }
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "FUNK671228PH6",
+ LegalName = "KARLA FUENTE NOLASCO",
+ ZipCode = "01160",
+ TaxRegimeCode = "605",
+ CfdiUseCode = "CN01",
+ EmployeeData = new EmployeeData
+ {
+ Curp = "XEXX010101MNEXXXA8",
+ SocialSecurityNumber = "04078873454",
+ LaborRelationStartDate = DateTime.Parse("2024-08-18"),
+ Seniority = "P54W",
+ SatContractTypeId = "01",
+ SatTaxRegimeTypeId = "02",
+ EmployeeNumber = "123456789",
+ Department = "GenAI",
+ Position = "Sr Software Engineer",
+ SatJobRiskId = "1",
+ SatPaymentPeriodicityId = "05",
+ SatBankId = "012",
+ BaseSalaryForContributions = 2828.50m,
+ IntegratedDailySalary = 0.00m,
+ SatPayrollStateId = "JAL"
+ },
+ Email = "someone@somewhere.com"
+ };
+
+ var payroll = new Payroll
+ {
+ Version = "1.2",
+ PayrollTypeCode = "O",
+ PaymentDate = new DateTime(2025, 08, 30),
+ InitialPaymentDate = new DateTime(2025, 07, 31),
+ FinalPaymentDate = new DateTime(2025, 08, 30),
+ DaysPaid = 30,
+ Earnings = new PayrollEarnings
+ {
+ Earnings =
+ {
+ new PayrollEarning
+ {
+ EarningTypeCode = "001",
+ Code = "1003",
+ Concept = "Sueldo Nominal",
+ TaxedAmount = 95030.00m,
+ ExemptAmount = 0.00m
+ },
+ new PayrollEarning
+ {
+ EarningTypeCode = "005",
+ Code = "5913",
+ Concept = "Fondo de Ahorro Aportación Patrón",
+ TaxedAmount = 0.00m,
+ ExemptAmount = 4412.46m
+ },
+ new PayrollEarning
+ {
+ EarningTypeCode = "038",
+ Code = "1885",
+ Concept = "Bono Ingles",
+ TaxedAmount = 14254.50m,
+ ExemptAmount = 0.00m
+ },
+ new PayrollEarning
+ {
+ EarningTypeCode = "029",
+ Code = "1941",
+ Concept = "Vales Despensa",
+ TaxedAmount = 0.00m,
+ ExemptAmount = 3439.00m
+ },
+ new PayrollEarning
+ {
+ EarningTypeCode = "038",
+ Code = "1824",
+ Concept = "Herramientas Teletrabajo (telecom y prop. electri)",
+ TaxedAmount = 273.00m,
+ ExemptAmount = 0.00m
+ }
+ },
+ OtherPayments =
+ {
+ new PayrollEarningOtherPayment
+ {
+ OtherPaymentTypeCode = "002",
+ Code = "5050",
+ Concept = "Exceso de subsidio al empleo",
+ Amount = 0.0m,
+ SubsidyCaused = 0.0m
+ }
+ }
+ },
+ Deductions =
+ {
+ new PayrollDeduction
+ {
+ DeductionTypeCode = "002",
+ Code = "5003",
+ Concept = "ISR Causado",
+ Amount = 27645.52m
+ },
+ new PayrollDeduction
+ {
+ DeductionTypeCode = "004",
+ Code = "5910",
+ Concept = "Fondo de ahorro Empleado Inversión",
+ Amount = 4412.46m
+ },
+ new PayrollDeduction
+ {
+ DeductionTypeCode = "004",
+ Code = "5914",
+ Concept = "Fondo de Ahorro Patrón Inversión",
+ Amount = 4412.46m
+ },
+ new PayrollDeduction
+ {
+ DeductionTypeCode = "004",
+ Code = "1966",
+ Concept = "Contribución póliza exceso GMM",
+ Amount = 519.91m
+ },
+ new PayrollDeduction
+ {
+ DeductionTypeCode = "004",
+ Code = "1934",
+ Concept = "Descuento Vales Despensa",
+ Amount = 1.00m
+ },
+ new PayrollDeduction
+ {
+ DeductionTypeCode = "004",
+ Code = "1942",
+ Concept = "Vales Despensa Electrónico",
+ Amount = 3439.00m
+ },
+ new PayrollDeduction
+ {
+ DeductionTypeCode = "001",
+ Code = "1895",
+ Concept = "IMSS",
+ Amount = 2391.13m
+ }
+ }
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ CurrencyCode = "MXN",
+ TypeCode = "N",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Complement = new Complement { Payroll = payroll },
+ PaymentMethodCode = "PUE",
+ };
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button3_Click(object sender, EventArgs e)
+ {
+ /*Crear factura de pago por valores*/
+
+ // Crear instancia de FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados (usando los mismos del ejemplo anterior)
+ var taxCredentials = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFgDCCA2igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0NDYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTQzNTM3WhcNMjcwNTE4MTQzNTM3WjCBpzEdMBsGA1UEAxMUS0FSTEEgRlVFTlRFIE5PTEFTQ08xHTAbBgNVBCkTFEtBUkxBIEZVRU5URSBOT0xBU0NPMR0wGwYDVQQKExRLQVJMQSBGVUVOVEUgTk9MQVNDTzEWMBQGA1UELRMNRlVOSzY3MTIyOFBINjEbMBkGA1UEBRMSRlVOSzY3MTIyOE1DTE5MUjA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAhNXbTSqGX6+/3Urpemyy5vVG2IdP2v7v001+c4BoMxEDFDQ32cOFdDiRxy0Fq9aR+Ojrofq8VeftvN586iyA1A6a0QnA68i7JnQKI4uJy+u0qiixuHu6u3b3BhSpoaVHcUtqFWLLlzr0yBxfVLOqVna/1/tHbQJg9hx57mp97P0JmXO1WeIqi+Zqob/mVZh2lsPGdJ8iqgjYFaFn9QVOQ1Pq74o1PTqwfzqgJSfV0zOOlESDPWggaDAYE4VNyTBisOUjlNd0x7ppcTxSi3yenrJHqkq/pqJsRLKf6VJ/s9p6bsd2bj07hSDpjlDC2lB25eEfkEkeMkXoE7ErXQ5QCwIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAHwYpgbClHULXYhK4GNTgonvXh81oqfXwCSWAyDPiTYFDWVfWM9C4ApxMLyc0XvJte75Rla+bPC08oYN3OlhbbvP3twBL/w9SsfxvkbpFn2ZfGSTXZhyiq4vjmQHW1pnFvGelwgU4v3eeRE/MjoCnE7M/Q5thpuog6WGf7CbKERnWZn8QsUaJsZSEkg6Bv2jm69ye57ab5rrOUaeMlstTfdlaHAEkUgLX/NXq7RbGwv82hkHY5b2vYcXeh34tUMBL6os3OdRlooN9ZQGkVIISvxVZpSHkYC20DFNh1Bb0ovjfujlTcka81GnbUhFGZtRuoVQ1RVpMO8xtx3YKBLp4do3hPmnRCV5hCm43OIjYx9Ov2dqICV3AaNXSLV1dW39Bak/RBiIDGHzOIW2+VMPjvvypBjmPv/tmbqNHWPSAWOxTyMx6E1gFCZvi+5F+BgkdC3Lm7U0BU0NfvsXajZd8sXnIllvEMrikCLoI/yurvexNDcF1RW/FhMsoua0eerwczcNm66pGjHm05p9DR6lFeJZrtqeqZuojdxBWy4vH6ghyJaupergoX+nmdG3JYeRttCFF/ITI68TeCES5V3Y0C3psYAg1XxcGRLGd4chPo/4xwiLkijWtgt0/to5ljGBwfK7r62PHZfL1Dp+i7V3w7hmOlhbXzP+zhMZn1GCk7KY=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS9AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucRBAKNQXH8t8gVCl/ItHMI2hMJ76QOECOqEi1Y89cDpegDvh/INXyMsXbzi87tfFzgq1O+9ID6aPWGg+bNGADXyXxDVdy7Nq/SCdoXvo66MTYwq8jyJeUHDHEGMVBcmZpD44VJCvLBxDcvByuevP4Wo2NKqJCwK+ecAdZc/8Rvd947SjbMHuS8BppfQWARVUqA5BLOkTAHNv6tEk/hncC7O2YOGSShart8fM8dokgGSyewHVFe08POuQ+WDHeVpvApH/SP29rwktSoiHRoL6dK+F2YeEB5SuFW9LQgYCutjapmUP/9TC3Byro9Li6UrvQHxNmgMFGQJSYjFdqlGjLibfuguLp7pueutbROoZaSxU8HqlfYxLkpJUxUwNI1ja/1t3wcivtWknVXBd13R06iVfU1HGe8Kb4u5il4a4yP4p7VT4RE3b1SBLJeG+BxHiE8gFaaKcX/Cl6JV14RPTvk/6VnAtEQ66qHJex21KKuiJo2JoOmDXVHmvGQlWXNjYgoPx28Xd5WsofL+n7HDR2Ku8XgwJw6IXBJGuoday9qWN9v/k7DGlNGB6Sm4gdVUmycMP6EGhB1vFTiDfOGQO42ywmcpKoMETPVQ5InYKE0xAOckgcminDgxWjtUHjBDPEKifEjYudPwKmR6Cf4ZdGvUWwY/zq9pPAC9bu423KeBCnSL8AQ4r5SVsW6XG0njamwfNjpegwh/YG7sS7sDtZ8gi7r6tZYjsOqZlCYU0j7QTBpuQn81Yof2nQRCFxhRJCeydmIA8+z0nXrcElk7NDPk4kYQS0VitJ2qeQYNENzGBglROkCl2y6GlxAG80IBtReCUp/xOSdlwDR0eim+SNkdStvmQM5IcWBuDKwGZc1A4v/UoLl7niV9fpl4X6bUX8lZzY4gidJOafoJ30VoY/lYGkrkEuz3GpbbT5v8fF3iXVRlEqhlpe8JSGu7Rd2cPcJSkQ1Cuj/QRhHPhFMF2KhTEf95c9ZBKI8H7SvBi7eLXfSW2Y0ve6vXBZKyjK9whgCU9iVOsJjqRXpAccaWOKi420CjmS0+uwj/Xr2wLZhPEjBA/G6Od30+eG9mICmbp/5wAGhK/ZxCT17ZETyFmOMo49jl9pxdKocJNuzMrLpSz7/g5Jwp8+y8Ck5YP7AX0R/dVA0t37DO7nAbQT5XVSYpMVh/yvpYJ9WR+tb8Yg1h2lERLR2fbuhQRcwmisZR2W3Sr2b7hX9MCMkMQw8y2fDJrzLrqKqkHcjvnI/TdzZW2MzeQDoBBb3fmgvjYg07l4kThS73wGX992w2Y+a1A2iirSmrYEm9dSh16JmXa8boGQAONQzQkHh7vpw0IBs9cnvqO1QLB1GtbBztUBXonA4TxMKLYZkVrrd2RhrYWMsDp7MpC4M0p/DA3E/qscYwq1OpwriewNdx6XXqMZbdUNqMP2viBY2VSGmNdHtVfbN/rnaeJetFGX7XgTVYD7wDq8TW9yseCK944jcT+y/o0YiT9j3OLQ2Ts0LDTQskpJSxRmXEQGy3NBDOYFTvRkcGJEQJItuol8NivJN1H9LoLIUAlAHBZxfHpUYx66YnP4PdTdMIWH+nxyekKPFfAT7olQ=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Crear un nuevo emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "FUNK671228PH6",
+ LegalName = "KARLA FUENTE NOLASCO",
+ TaxRegimeCode = "621",
+ TaxCredentials = taxCredentials
+ };
+
+ // Crear un nuevo receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ ZipCode = "42501",
+ TaxRegimeCode = "601",
+ CfdiUseCode = "CP01",
+ Email = "someone@somewhere.com"
+ };
+
+ // Crear una lista de productos o servicios de la factura (para pagos solo se usa un concepto genérico)
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ ItemCode = "84111506",
+ Quantity = 1m,
+ UnitOfMeasurementCode = "ACT",
+ Description = "Pago",
+ UnitPrice = 0m,
+ TaxObjectCode = "01"
+ }
+ };
+
+ // Crear la lista de pagos
+
+
+ var payments = new List()
+ {
+ new InvoicePayment
+ {
+ PaymentDate = DateTime.Now,
+ PaymentFormCode = "28",
+ CurrencyCode = "MXN",
+ Amount = 28599.99m,
+ SourceBankTin = "BSM970519DU8",
+ SourceBankAccount = "1234567891012131",
+ TargetBankTin = "BBA830831LJ2",
+ TargetBankAccount = "1234567890",
+ PaidInvoices = new List
+ {
+ new PaidInvoice
+ {
+ Uuid = "5C7B0622-01B4-4EB8-96D0-E0DEBD89FF0F",
+ Series = "F",
+ Number = "1501",
+ CurrencyCode = "MXN",
+ PartialityNumber = 1,
+ SubTotal = 10000m,
+ PreviousBalance = 9533.33m,
+ PaymentAmount = 9533.33m,
+ RemainingBalance = 0m,
+ TaxObjectCode = "02",
+ PaidInvoiceTaxes = new List
+ {
+ new PaidInvoiceTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.106667m,
+ TaxFlagCode = "R"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "001",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.100000m,
+ TaxFlagCode = "R"
+ }
+ }
+ },
+ new PaidInvoice
+ {
+ Uuid = "0050E143-E9AC-4CBB-B7AA-B1DA79C65CA9",
+ Series = "F",
+ Number = "1502",
+ CurrencyCode = "MXN",
+ PartialityNumber = 1,
+ SubTotal = 10000m,
+ PreviousBalance = 9533.33m,
+ PaymentAmount = 9533.33m,
+ RemainingBalance = 0m,
+ TaxObjectCode = "02",
+ PaidInvoiceTaxes = new List
+ {
+ new PaidInvoiceTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.106667m,
+ TaxFlagCode = "R"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "001",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.100000m,
+ TaxFlagCode = "R"
+ }
+ }
+ },
+ new PaidInvoice
+ {
+ Uuid = "E20978BC-B677-4AAE-83FC-60791EAFC69A",
+ Series = "F",
+ Number = "1502",
+ CurrencyCode = "MXN",
+ PartialityNumber = 1,
+ SubTotal = 10000m,
+ PreviousBalance = 9533.33m,
+ PaymentAmount = 9533.33m,
+ RemainingBalance = 0m,
+ TaxObjectCode = "02",
+ PaidInvoiceTaxes = new List
+ {
+ new PaidInvoiceTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.106667m,
+ TaxFlagCode = "R"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "001",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.100000m,
+ TaxFlagCode = "R"
+ }
+ }
+ }
+ }
+ }
+ };
+
+
+ // Crear la factura de pago
+ var paymentInvoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "CP",
+ Date = DateTime.Now,
+ ExchangeRate = 1,
+ CurrencyCode = "XXX",
+ TypeCode = "P", // P para pagos
+ ExpeditionZipCode = "01160",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ Payments = payments
+ };
+
+ // Timbrar la factura de pago
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(paymentInvoice);
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura de Pago {apiResponse.Data.Number} creada exitosamente");
+ }
+ else
+ {
+ MessageBox.Show($@"HttpStatusCode: {apiResponse.HttpStatusCode}");
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button5_Click(object sender, EventArgs e)
+ {
+ /*Cancelar factura por valores*/
+
+ // Crear instancia de FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+
+ //Certificados ESCUELA KEMPER URGATE
+ var credentials = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+
+ var cancelRequest = new CancelInvoiceRequest()
+ {
+ InvoiceUuid = "3fd44a11-e419-4bdd-ae5c-7e766879de2d", // Uuid de la factura (no el id de la misma)
+ Rfc = "EKU9003173C9",
+ CancellationReasonCode = "01",
+ ReplacementUuid = "de841944-bd4f-4bb8-adfe-2a2282787c62",
+ TaxCredentials = credentials
+ };
+
+
+ // Cancelar la factura
+ var apiResponse = await fiscalApi.Invoices.CancelAsync(cancelRequest);
+ if (apiResponse.Succeeded)
+ {
+ MessageBox.Show("Factura cancelada exitosamente");
+ }
+ else
+ {
+ MessageBox.Show($@"HttpStatusCode: {apiResponse.HttpStatusCode}");
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button7_Click(object sender, EventArgs e)
+ {
+ /* Enviar factura por valores*/
+
+ // Crear instancia de FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // request model (personaliza el pdf de la factura)
+ var request = new SendInvoiceRequest
+ {
+ InvoiceId = "51a3a6d3-b617-4a6b-8a67-cbfd654c7e90",
+ BandColor = "#FFA500",
+ FontColor = "#FFFFFF",
+ ToEmail = "mendoza.git@gmail.com", // email1@dominio;email2@dominio
+ Base64Logo =
+ "iVBORw0KGgoAAAANSUhEUgAAAfUAAACKCAYAAACzS9OxAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAC9FSURBVHhe7Z15tFxFuberz0kgYQrkgDIaQFEmQQJEggSBkOCHhCHEgdEYkBDDoHFd73f/uq511133D7+lCQRNIAIGgcgohMgQQBAJkIASEHEAA0FJ0CQMAibknNNfP5VTuTtt967a3Xv36b3P71mrztC9d9Vb766q961xl9auXVsePny4EUIIIUQ+Wbdunbl03IWmo+9/IYQQQuQcGXUhhBCiIMioCyGEEAWgVJJRF0IIIQqDjLoQQghREGTUhRBCiIIgoy6EEEIUBBl1IYQQogCUyiUZdSGEEKIoyKgLIYQQBUFGXQghhCgIMupCCCFEQZBRF0IIIQqCjLoQQghREDrKfX/0FiDUhhwWKQghhBA1KJVM6eXLzyh3DR1senpzbDC6N5ryxw81O039zhZDD+9teMPcufwCs6FnXSWv+R2U6ClvNLttd7j5/MGzc50PIYQQ2cD71C8ff5EprfzcXuWuQeWK4ej7Jo9s/MB0jzzWDPufW0zFT6l0aMsV41cy76x/1Vz1+EjzXvc601H5OK909xqzz45Hmws//Vgldx2V/rp67EIIITaBvbNGfdzXKhZi8GBjBm+V/zCokg8M+haUTGdHhxlU6dx2Vqx6XgPyd6iHLoQQwoMshRBCCFEAGMmVURdCCCEKgoy6EEIIURBk1IUQQoiCIKMuhBBCFAQZdSGEEKIgyKgLIYQQBUFGXQghhCgIMupCCCFEQZBRF0IIIQqCjLoQQghREGTUhRBCiIIgoy6EEEI0AG9HiwuthhRl1IUQQohAokb7gw8+MG+++aZZtWqVee2112xYvXq1efvtt83GjRv7xbiXVk7Yt9w1yOT/feqHjTHD/uumTS9f3fw+9ZVmzhOHm/e717RcsWnS01s2I4YdY6aMetS+hUfvUxdCiNaCDent7bVG+49//KNZsWKF+fvf/27ee+89a8D5Djo7O81WW21ltt12W9PV1WX22WcfM3r0aLP11ltXTFM2bTey8T71b46bqp66EP0FFTHPzqYQAwHqKMb4hRdeMPPmzTOzZ882d999t/ntb39rjfr69etNT0+PvYbQ3d1tDf0bb7xhnn/+eXPfffeZd999ty+27JFRF6KFRA05lZ/GwH3mPhdCtAfUSYzzddddZ66//nrbQ6fO0hMfPHiw7ZVH668LHR0d9juuIbQSGXURTK3CmyS0I7XkTBKSwPXMvy1evNjMnTvXzJo1ywYai6VLl1qPP2mcQohsoC4uX77c/OAHPzC/+93vrJEeNGhQQ3U0q2H3apBMc+o5oL/n1NEd80gUbDzQpDDXxNzSoYce2rLCHQL5WrlypZ0bI1/I6ZOPe7iW6/DAR44cGTRXxn2//vWvzT333GPeeustG4crky7dvfbay0yaNMn+bic9CTHQoG4+9dRT5o477rD1E4PeCK6duPzyy80uu+ySWb1GXubUZ4ybKqOeB9rBqC9btszMnz+/oaEkKsWwYcPMjBkz7O92MVjkix4zc2V44EkgT9ttt5359re/bXbYYYfYPJHOb37zG3PzzTfb6+o1ECy22XHHHc1FF11kPvzhD7eNnoQYSFBfaRNuuOEGW88b6cg4qMMM1WPUd95558zqNDJvMuoXa/hdhEHBpnA2EoYMGWIXilBR2gUqAdtPXnnlFTN06NCacocE4omD79nesmjRoliDDjhMDM/Tm+daX9xCiHRxxvHOO++0c+fNGPQorazLMuqiJVCo6a3i+baLsUKeDRs2ZC7Pc889ZxuKkCE8DPtLL71k/vrXv/Z9IoRoJaxWD62vDpxwnAAXaOfS6JUnbZtKdixXiBZABaFnzBx2f0NFYcsJW1KSDrs3wquvvhpcObmOAy3+8pe/9H0ihGgF1D1G7nDCQ6cZMdxMm9GjZ3j9Ix/5iNlzzz3tNKOryxj5JHCfC+yQwUFIgoy6aAmugLNYrB1g0d/atWubHl4L8caTrmonzn/+8599/wkhWsWTTz65+SQ4H26+/ZhjjjHTp0833/jGN+zvSy+91Hzzm9+0f59yyilmjz326LujPs6IE2gv/vSnP5mFCxfalfeMGiRpP2TURcugV4wx/cc//pGokKYJ6WI0n3nmmVRkCImDOfskQ3HEuc022/T9J4TIGuoc7RL70EOG3anPtGdf/vKXzRlnnGF75+yCwcgTqL/sYhk7dqxd+Fq9QJj0ouGdd96xIwS33HKLmTlzprnmmmvMww8/bF5//XX11EX7QmFnIdiLL77Y90n/wDQAQ+JJ5sxq4Sqkj3333TfYqHMdjQPDeEKI1sHUIMY1ZPSOYfFx48Zt3qYbFxjKr25rGJLnUJsnnnjCHmzz/e9/3+4uYhsdPXNkYCEu9xFHKFwpoy5aCkaQIXgKaohBzALST2uBXEgchxxyiN2iRkPggymKAw880Oy2226JKrMQojkw6iG9Ygzyrrvuas9zD6G6HtNm3HbbbbZHzm/W9rDGh54/DkCIUxGHjLpoKXie9JLpLbcaKhNDbK1aIAdUaF7sMHHiRDsMX8+wcx0GnWE85uGEEK2Fc9xDnHQM/wEHHGC36jbqeJMW9R0j7jPkSY28jLpoKVQaeslsJ+sP2CvPFECz3nASqPj77befmTJlijXaLMShQvPb/Y1eDjvsMHPBBRfYA2gabSyEEMmhvoWu9eGaRqfHuNfV7dC0Qq5zcKWMumg59JLdkFOSAtsMpIOHndYCuaRQkXkF47Rp08zkyZPNZz/7WTsfxzGzn/vc5+zn5557rgy6EC3GtQ3OufbBaCOnSDYDdTyrdkhGXbQcesksBmn1gjk37N/sArlGoSKzCO6Tn/ykOe2008z5559vzjnnHDN+/HgzYsSIzdcIIVoLRj1kPzn1k/aDetyuyKiLfgEvtdV71umlh+5BzQoahXpBCNE/JKmDdEr6q2MQgoy6SJ2QFaRUCk5v4jjUrI0s8XP+unt9YhwhsgshigVtRGg7hPHvz45BLBWxZNRFqjBfzvYtn3GkUnByUqsWzD3//PPWsMctkEPm3Xff3a5GVc9ZiIFDEqMOrWwfEqVVuVRGXaSG82DHjBljD07wFUYcAIzt+++/n5nnS7zMlTHUH5cGsmLMjz322LYeWksT9JEktAO15CKkSa34Q0I7UEuuuNAf1JLDF1pBknRaZdRJJ2laMuoiVTCgbPdgpbdv4Qm9Zs5f/8Mf/tD3STb8+c9/ti9Iidub7uRmwVoWQ/DVjVRcyIrqdBgp+dvf/mbfCseIyZIlS8yjjz5qw69+9Su7BoFns2rVKrtToTqOUKL3xIV6RK9hOyRlhmkbwpo1axKfrV+LaBo8f7Y3kW+ODY3q5pFHHjG//OUv7clf7ODgwBJGgCg/0ThaSTRddMFJZTw3nt/jjz9u5X3ssce2kPmtt96yZyZE782KaBoE9wyZfsOpX7p0qZUP3aJjdI3OOf+c8umerwuNEo0jGtx3SYjelyRE70lqrKPxVIfNVP4srZywb7mr0tb1tMbxyIaNH5juw8aYYf91k92nV9GWzeg761eaOU8cbt7vXrNlxnNGT2/ZjBh2jJky6lH7Yr2K79b3TWtAdzQQN910k+3N1oNCiuH81re+ZRuOG264IfZ6oGHhIAf2Z2fh/SL7zTffbJ5++ulYWVhAxznOn/jEJ8x3v/td7/YWGv7tt9/ezJgxwx4uEyc78axYscK+U97Fyf3Re9zoAI7O3nvvbc+OTksfLk10zVnSGHEaVBpMZCKvzgFzabp7kAe9IQ9voWKf/Uc/+lHr/Ljz6evJSRzscoium+Ba8s7/0akQPmPqgzSi8XEdz+b3v/+9PRsb5wyZ3SE+lDf0z5TPySefbH8n0ZuTC6cFnaAbdkggN8aEtJENqnXDb9LnEJKddtrJ6obzCDgWeLvttrPXJJElKU4Od/QyDgiOiHumteSOysx55OgcBxyZu7q67Pdpyezko2ytXr3a6pZ6QLnDaXLlzqVXrV/KB6vM0SXPlXKHfvnblZ1QWYmTdHF4+NuVd+od/1OeFi1aZJ2daLmshvS4h22ow4cP7/s0Offee689gMaXFt9zGBXlyz3PWiAT5eCay2bJqOeBvBl13laEweM8Y99BL+6eSy65JPWjUZGbxnnWrFmxvTkqizPQNDTf+973Ujfqc+fOtQ0vefWBLjDszerCyc951vR8nn32Wdvou7y5Bi0un4AcBPJM4D4aGfbZ84aq6pdVOIiXHhhHYfqcO2T64he/aONzcXE/Pc7777/fOol8TlmqLk/IhPH92te+Zg466KCaslTj8oyTsGzZMruIkrJKXC6NJLohcC/Xow8c1U9/+tP2pR7uurRwMuEsMaISfUlSyDOtlhlw0HBKeDnJhz70oabkdWnjKC1fvtxOfSGrO5o5ql8fTk5n/HFG0OmoUaPMwQcfbI1+iKykhSElMDVYC6e7EKLOSCOknRZxod9/LHlDw+8ifVzlYz+261HVg8LIa0YxOFlAo+I7KYpKw3nrGGfXyKUNlRiD7gtclwbkl7UKixcvtk7NXXfdZQ0Yz4ZGDSMb2rByDdcin3vJBD0ajC1DpXFwX0jenTzgZHrooYfMtddeaw26u8Y1htHg4nf3xeHuoed44403mquuuso6HgyhEwf543dS3SAD8nEv5Q298NpMHOHQ40dDIB7qyz333GPjZ0id/5M802qZCThVOJ3I2gzEjXFhGJ1yh0PHCAj1ysnonmEITlbu437q6ssvv2z1Onv27M3tRkh8xMPzqRdCZQJX5hoNaafl9Aoy6iJVKKyuwHLsacj5yBRGhlbTmBt1EA+9N3qorrDXAtmoEJzsVgSc/pmrpNGjZ4KRccY4Lf26BjKt+Kp54IEHzM9//nP7N+mkgSsTOAsYc0afnLEhP2lBXMRJ3Ez78Bx4Tzc0oy/uxRm5+uqr7Ws5cZjTkp24qQfNxEUcrF/54Q9/aJ1IRj6QL81yQjzOiKGLn/zkJzbglPnSSEuGdkdGXWTGHnvsEbRgDmNDD4E5wTRhDo/h5jijjmwMO7oT3fIMjRY9LhpU1jOg07QNVjVZNJQY2wcffDB1Y4CRuf766+3cKb1JdJNlQ0/cpEFP+tZbbzV33nmndSoaSZN7mOufN2+eHbnIWvYkODlYkMd7wBkRQr64epcGxE8ZwXGfM2eO1U+76KQ/kVEXmXLEEUf0/RUPPWYa8zShl+QbTiddeulZGr5WQGPGAineyczQJ/9n3aimDc+APGB0Ia0Gmnhw7jCIDDFn7ehUQ1oYH+a/FyxY4F2vUQ3XslqcHinTHvRS2wVko44tXLjQOpM4yeS1lfA8cWB/9KMf2ZGCtMpNXpFRF5my//772xXNPuNKQ8BcmVud2gzcz0pXev5xDQwysaiJxVV5hvw6g86iqXbrxYXKwnUMK2O40nJIiJOyQA+d4Vp00x8gB2nTq7z99ttt2QvRC9dwLb18DFerDWYcyIZTjEFnOxqy9ZdzTNrUAUaoorstBhrkWkZdZAYVnneIH3LIIUEL5ljYxcK2NGABje8tcPQqcDqiq7fd77xA/uj50QNkuqERo0We0QVDwwTic3/z3JrRSWjjihFnux1GL62eKGlTBtjSyH72pPHW0ovTDZ83oheeD6vtmdcPhdXjboQhBORyMiMnToHLh5Pf52SH4vbto9vQZ+1ABsqXk8sFPmtEPgw760eoCxj4anmaKcd5QkZdZA4L5jDuvkpFw45Rd1tfGoH7uJ94fL09GoHqBXLI2F+Vn3SRP2lvhwVlroeeBBp6GlH0tOuuu9otQkcffbQ5/vjj7amA6Ia1Bix2dI1vVrohzzyzeqcLki7yIocLcQ2/i4NeJG/nS2LQiZe8IhN6wSlFH2PHjrW6YUqJg4rYTsV1yJUEZGFEAicsrpzzHfnkAJm466JwPXIdfvjh9tyFqVOnmosvvthcdNFF5rzzzjOf//znzac+9Sm7x9rls5FnijwcDsOCRupRqHyAjOiM15d+/OMfN0cddZQ54YQTrH4/85nPWEebVxA3Ih+y0FN3iyyjkG7UeYiGpOkQF/fUiiskJEkrNB1kAu1TzwF526d++eWXb7HXlfuZ7wrZp01l/8pXvmINTJKC7yAtVtIzFB2XFumw33X69OnWqJEW9zLEyVYcKlJcmaHBSbJPnflcDlCJk8nJ8PWvf90aDV/+uZYTwsgrf8fJGwXZyT8Gi8af7XwcPFLr2XIt+9zZloRemdLA8HItOjrppJNsqCUr8jzxxBNB+9TB5T+Kk9UdfoOuARlY8UzPjO+BA4zIi4uHXj/b1nxlLgp5wqCgF/bhU47r6YWFdzxTtpVhSEgn9BnQAPOMMbg4Y/X0xxwxZxyExEucHNAyceJEe0BLHOw0YWEZI1ovvPCCfcakceGFF9o99nFlj+tY/MeWOtYqhOqX58S9GG32mXMWgzukpxriRz7WxbCTg+cSmg6yEyZPnrxFeeDMA0ItZx/d4VT6RveA7ykblEX+9l1fC/TuexcFciMrTiTl3+WjOj2XX87kePj7CytG/eQRxTDqIytG/b8XVIxeJcN9mX9n/avmB0tGmve615mO5HpvG7orHZJ9djzaXDDqsVwY9csuu2yLk724n0LMQh9fxaTyUmF417i7Pwmkxd5mGqo4WUnn9NNPtz2wqJx5Mepch2FjaxZzxr5RCQeNF/LSM+JwFHrhjlrpVeuANQ/uCFmGOOn5pWXUq0FWGn16b4z20Lt0jSD6J/8YFRpjDPhZZ51lnUHgO7aS8TxDdIP8GB0aUE4Lw7A7fHqhl4ROWLGPzKEjLZSxSZMmmdGjR9dNgzjpdfpGYZCdw5vomfvKI0TlxxgwGsDeet7v73OouZfzD+IOcqmGvO6yyy7m1FNPtU6DS79eOlH5OIXuZz/7mV1VH1qOeA6MMk2bNs3WOdKJxlkN+qPe+3bLEA/xuY5Lo1A2cZR97QH65TAvnG4fPMd/G/9103nJUQd+Z+sddjTd2+xgerfNaRhSKcQf2c8M/czJplTe9OB4gB90v2teXH2XGVTqNEM6h5mtO3fIZdiqY4jp2mZ/88ndvljJWetnTNAlhR2P2ddA0qBhLKIeOPfTSHI/nnBco8d3eLAcXON6ZaGQDvOyHIri/q8FBgH5aGCYFnBwPcaAnhfX1LsfqHAMc9Ig+xo24mFelHldX4PPtUceeaSd54+D65jLJN7Qho6Gle17jISgX9fYJQG90fth2BQDz8lyHN1ZC2SkIQ555W01yMp2SHpbDH/TUyE+Jy96RO80dsjDYkeGc7kOMFI4HiG6IU6eN8fMTpgwIehshSjoEVkxqoxGYVCQNQQWBTIqUKtxJw7ygZ59+sMo4Yxw3GvSZ4rOOB6ZZ4oOo3W3GmRCZhb7hebTPcspU6ZsPmEvCZQxygB6CNEFUD4YSWFbrW/Ugjzw/Kn3OKq+Osr3ro1LqmvS4h7Ou2d0xJcWeSUt11OvB/EyurH4hkWm9MbKl8s7VyoGhSLXVDLfOXT7TT31PnrL3Wb9xrf4a9MHuaVsOkqDzZDBO1X+Dmss0oQC00xPHYgDzx4P32cE6fnQA2SOLUmlIQ22Q7EIKS4NGhkMJ3OO1TJiePHYkYH/60Ej0F89da6h8UFO3xCegwaYODGSNNxJ9FoLZKARoYGvd7wv1zTSU0dWZ9BDep1AWk5/DC1fccUVwb10ysO4ceOsUYRGdUPaOK4M+TtZfJDXr371q3WPt2WIm55qXLkB7qXc0DttRn7fvVwTOnoA2BV6tBzhi2PfjGyUN6bxfD1cB88VveJMxKVL3DwHykxoT71WGxeC0zE9dc4b8KWFjhkVqH4nQjXE63rqHYO23dF0bDPMDN5+eL5DJQ9Rgw4dpUFm2613qYQP5zzsaoZuxfBL6w16miRdMEelpLCGwHX0spn39VV44qd3VIvQ9Pob8kklDjHoNKz0ds4+++xUDDoQB88y7fP6cZYYpeAc+FCDDtHrmDcNnZKgMaeXilGHZvLCvYyAMF1AvCFwD2W9GsohukhSB7i+GXx5Rw4WoTKVFqJb4sOZO/PMM5sy6MC9lDfOpg9pQ4B2AIcI5y5Eh83I105sbhHIUN5DLWpdl9eQZ5CfhVkf+9jHvA0eDQYeM/vWk8AwL4d0xBk6DJw76S6PuMaeOeTQxp7rGFb2eftJyaJc8nwYoWH+tdG4cXhC7uUaekL00ClzaeXluOOOs9MCIUaWdFkMV2uBFv+HOG1AnWKqI2vYSRA6BI5MjIg1MiVQC+Kg7jIcHeI0oT8cfXYZ+CDutJ5/f7O5xFCc8h5qU+vKvIb8Qw85xBjRIDLkHwLxUSFDridetvTgxee1EtOosto6pGF1Q5DMSbZ7fjHo9PzrjaL4oBwwLcHwbKjRYT4+ZKdBKMTDtAzbAUMMD0abuVWc2CjEw3ehvVKuZZ4WIxZSvxqFKSSekw9kZh6YLZJpg1FPMoqTtHOQdzo+KPeYblM2Gyq/8xo2lnsroedfVoWXDe+sXl+QsOFf8pdHWIzDHJuvYcDosn2KnndII8X2F19jjkGnwWWINM/Q8wh5+Q2NHsOfrPDPA87hCn2dZi1YKBmyAAm4plEHwgdOVOiCO4w/86u1YNokJA7KPY4BB6+wzoGykaZxJy6eTxKHie11jcw7x0FcjOLQ+w9xLnjG6MW3RqZIlA5f8Mdyx/Zdptyb34VyG3uN+dSOZfOjMV2m0275qlB5gD0bVpue584zHRvXVv73F8S2pbfb9A470gw+aE6lv05jlV4lCYHK0OxCOQdxsTqd4FtoQy+TYWOGM+MaBuJkywurwX0L5NiyxNanerLhRMycObNtF8rx/fz58+08rG/xGQ0re4GJj8YtTsYsQNbQhXLIhoy8S54h1kZkJT0WSbJY0le2eH4YTBYh+VYWJwU5MDgshmJI3GcEKZf07NlOFpUjif4cxEW+qDOUdbdlsdn8IQuryakbIQ4lcnzpS1+y+9HT1C0k0Qtpcw3bwupNPxEf8rLw1De1wP2+Ni4O0uKeTBfKPfvWYLPszcHm6RyH5ZXw4jsVZfVlcDOV3u2gd35jBr9NeDrH4VnT+e4LZGhTvnIOvbGQhpRGnkU5GKd6jQifcwAJh7DEGUygAlWfIJcnyCvOBmeYoxsfGC4O+ugPg54UZGUfOr2wZkA39cpKFIzu7rvvnrpBB+KjrOGckC8frkHmvmrZWfuRZOQCA8ZIBWfFX3nlldbRdQfLhOglDmRkBbovHmTFmcAxzQp0S159ekFW6gyjFwMF2zbkPdB55fe/FrXKJ/TQ7TV9F+UxkLESBqu5StkOUAnxcEMXzDGcykKiODDo9CLiDJ1rxBm2yzM00DgxIUYdJ4eeeh6gXNAboWcSasCi0HhzH+UgxHhxLeUhS1gYGgLPkrUArCyPgozEwTC2r65EIT4MHjsAGMGid33HHXdsHuJv1Lij25Ahb+RmlwUjBllB3KEOGTKz9XOg4G8ZckP+Dd5AgqHBEMNEheSAlVrQONET4ntfQ0U8jBCEePftDI1TyNn45JFFVhjKPIC89NSbAb34DjdyoL+QU7qaAcMTakDpTVYbdQdD6ThoScstTjFOEg4DJ96x551pIE5bpN6EyubAoQyRgbjZltjM2ggflO3Qw1+4hnIxUCiQURd5glPIQhbM0TAxF12vB8bCnZC5qSIskIPoWedx0LAy109vJg/wjOJOMguBedF6hrEaDH+z6flA93Hl0kG5pieO/NWgF3rqxxxzTM3vQyCvbgSEPfy8hvbqq6+2L2Qh7VDjHmoYSYeylxXEj5OTZOqEdQADBRl10XKoiHjx9Jx9BooGyc2Z14IFfHFz7sD3rLqnZxbaCLQrSXoczGv61hm0Czw/ykQzYPR8ZQEoAxhbt4gsKxgVQpaQMocTRqgHe+l5J0Ko01ILZKE8kHe2edFrv/XWW2398ukMQhbIOehJZ41vMWSUEEe4KMioi37DvenI1+jRkHDYChXTNSr8ZvFLyLniOAZZbV1qNQzThhgJrsGokPeQ69sBZG0GykecYYxC+QnpRTcD+Qk1glDvOblnybHGrCbHeQnNZz2cs8cq8jlz5thDZXyyJhkpyFq3QBp5Kdutgicooy76BSojw+8Mw/sWAVF5OWyFofYonLPt25NMQ8+BJgxhFoEkPQ50PJAavXbLaxLDSxmOM4TkjZEMtonxalWGnkMdvHpgxOntso2LM9UZmo8z7O2o31CnqVmHMU/IqIt+hR60r8JRcTH89Naj/7NAzncvRrAIC+QcoY0Y19HoJ2n48g5lISSvXINeGp2jDoUyGqp/ZPdNlVB+iYuz5dnPz8lqOALko5myTbpsVeMcCg5xqidvkt43ZS9rkqSRZKi+nWjkucqoi36Fnjrbdnw9UBoUhtrpmQPb3HxHpVIhWAzF6V5FAeckBBpm5kCzNlztBLoJNTwYW45UzRIMJen4oJxidEIND9ezq4Fe+/Tp0+356tzrnLhGQG+skmfrW73dFaFrHrg3y9XmxE97EbJnHrgmLwtG00BGXfQbrjFjbt1n1OnJsJ3LLZh7+umnvffQU8Jp8J3GlCdYgBTakGG0BtJWHspS6DYqjB87KrIEBzTUqGN0kiwU5B4Ch7Aw137ppZeaE0880b4NDUfOVzdqgVPE3PqyZcv6PtmS0PPWKXvkHRlCymojuO2LoXWB3S95pBH9yaiLfifJgjlOmONVipwL7xuuxBEoygI5B/t/fVMOgK7oyXAAyUABoxhqeIDT57KEchoiC9dgjOkth8ru4HoC61NOPvlke6ToF77wBWvscWqTGndkwKhzb7VBoeyFGBnKJ4tYWVWfFTgNIS+vQTc4e1kehJM1ITr/XzYdJC5Ev0Gl42hQ3mlNQxIHRpwT5hYuXOit0DRm7lWvRYLGKUlvdKC8oQp9YEw4wCakd8y1nMueZW+S6aEQBwx5OWWxGcg/AafmqKOOssPy5513njXuSebckRdnB9mrYUtoyPQG+qQXnaXTRNz1pgmikG+m4HBI8kros3PIqIu2IGTBHGD4OYzGdy2NNXPpeOlJK0U7Q+NECDVc6Iq51qwMV7vBToeQ541uWPVNSBt0TU8VwxNSprlmr7326vuvOcg7gaF0RsB4mQ973JEppMxwHU4Aw/DVYNRDXwVLWpS9rOBNhaFyMIrB9EbI9a0kK3lk1EVbQI+aBjlkuNDXUFJZ6LHQqBUJ8oWTEvqiEHpVGBYWGA4UeImIb1oGMF4sJHzuuef6PkkXjI5vuyW4srrnnnv2fZIOxOvKy7hx4+yQPLLwmQ90U2vaBmeS9SmhZe/FF18MGiJPAnExrYR+Q0YNkJWX4rQLTv8hzh4gf4i+o8ioi36Hgk7P4rDDDks8B1gLevM4CXjoIY1Y3uB0vCQ8+uijA6a3zktaeJlISEOI8WdbJKu+09IN8VDmmJcOiZPyjkFnWiWLskqcBEbCcHJ9U1yO6vlw4sAQYSBDHe81a9bYNTBpg5NK3CEOE05N0vrSCkLLG7pOeoqgjLpoGxguZ5Vqs40blb1oC+Si4LAkMVycjf/II4/0fZIu7eQoUG7o9XLQUKjh4f35OD1pwg6NFStWBI0YIHPcOwnS1O+BBx4YFB/X1NPfAQccELytkp40umXXShr5IA4MHK+TDYmPPDCqlfXb+JISqgv3HBLtYMH56vtTiH6Fxo05u5AFc3FQCdxJdXkEPcQ5NXzHSmn0FGK4AOPy8MMP215TGo0rEA+9f1Z4pxVnWnDYkK8X50A3jz32mH1zWbP54H4M2L333hv7DB04ZTxLjG0tqAc4ZMSVho6ZVw7RC+nRw63FiBEjEk2T0aO+++67bV7TyMMvfvELu8AxZOidfIwcOdJeG/I8WkmIwwfoLem6Dxl10VbQww6psPWgsaHHH7pCvJ1wjV6I3JwmRo8p5FripXG45ZZb7P5+/m+0gXX3rlq1ylx77bU2vnYDh85t6fIR1U3St5ZF4R7men/605/aRjikDCMfRodRl+rn6GS47bbbrGwsvGtUNgdxhBhjZMHZqIbPMUYcdhPqUFJGcSbvuusue0+juiUsXbrUGvUQg0hazP/j4LUjoQsOyTfbd93fPrhGRl20FQydMlwW2mhEoZLQGynaArlqyCdzm/TwQkc16DVxLQaCBtbNI7sQR/Q61/O66qqr7EKo0B5xq3CGh1eVhjSaQB5Y0PXjH//YvuDE9Sp9egF3HQvLrrvuOnt+esjwNGkwj86Rr/UgXvLw5JNPmiuvvNKOtiR5bg4Xz/Lly4Pu4Rp64/Vg7Qtb8JIYdt7nfuONNyZyTtx1lNsHH3zQnnZHPkLuRTZ0m+TcglbCosMQuXAO2ZZKXQtFRl20DRRyGmQaDRq9pFD5cQrYn96OFTltxo4daz3+UF1hvGgQmZO84oorbEOJMYoasVoBg8f2pAULFtj7mJ9n21PoEGJ/QA+NshB6TC6NJ9MJt99+u7nmmmvsYiy3D7peAJyc+++/3zo5HF0cOt+M0Tn++ONtj9hXVomThWuLFi0yM2fOtOc0cEY75b2WXNWBtO677z7rcPieGbJQphhmrwXf4zifcMIJieooecCpmD17tnnooYfsWgaoJa8LbncCb5FzUxohTiR62Xvvve1+/XaFsznIow+uQc+US/fCnVoBfaKjUqUodXZO+MZ3ylttw9PqiyZ/IPqe2/SaKfsNrXgpfYqqZLTc/bYpvXaN6eh9z/6fWyoZ7B06wpT2mFzJXevzQaFhuJW3ovmGFal0DA1z4EMjkBZeLC9vSbpim0rPnlyMeiOQFkOo9IxoCOPSJi2G+EePHl13/tFBPKyyDlmxCwxv1hr+rMYN21LZQ6cskIVrySfDeshFL4DDRpgfR0Z+YzSYZ2a+efHixWbJkiX2GtLDMBAPOmLRXr0DfriG+c+Q1+PScDHykNZ+bdKjN4kh8T1LB9fwfNABQ8YYFPZr8/+6detsYIsgi+D4nqFgdIPDQxqhzwBHgwVnEyZMqFsekAWdPPXUU7Z3TtwEDB3OA88NvTLUz7Mkfa7nN0bNHf6CnDgB/OZ+nx64l+d57LHH2mddC+KgJ0+bQAjNt5Of8kr9ZroD+Z1ucTApL+iTEROcJX7Tu8cpCHmG6IBrOTo39HjoqK7Rm6+OptHGkR7PEPl8+eJ7njFlmbJHeWC7JLqn7lIOH3jgAVufe/7yT1MafPWKcs92XRVtJB/ubBcq+jFHdXWbX/2fnUxnxazbx1hRRM/6laa05EjTufFvlf9zPCjR02u6hx9rOkb9ou8QwNY6YBSqZ555xr7FKa4n4hr8yy67zDaoIRWqFqTH3CRzaHHpRaExY6Edx2SGzldVQ7p4vPSGfA4FlZKV+jNmzPAO8RHPvHnzbGMV0lOaNm2a7Wn48kC8NMLz58+3K659zkUtSAPd8ZtAnITo/zTGtRo6dHTSSSfZwLXVcC+NMvPCvueIoTvzzDPN0UcfXTOuRiB9RiWYbggtR1GcoYzqBZxu0EmIoYzC8+LUu6lTp9ryWi+vxMm1s2bNssa52nByH7IhI9fy7Akun+jTvdCHe6vvrwfxTZ482Rx00EF1ZQPSxBDPnTvX1pmkozbE7fRLXE6HfE7g/3rlrh7ch85OO+20WKekGtJCT+jatx6COJtt40iPUSDSw4EOfTak5XTm9OL+Ribq47u/XK3hd9GeJF0wR2Fna1CjBt3hGvE84BqYSZMm2b3ONExJoYEhDoyBMwrV/ydpWNuNMWPG2LlVGrykUP6q9RLVDX87YxQCZZSh67POOivWoIfgjJ6TjXKLEacHR+BvruH70HqEjhgtqbcaPwqy45zQIyZP5C0JrtzV0y2/k5Y7yj/PG4PezqA7RvnQcxK9RXXm9OX+RleuPMmoi7aEhWAYKjxvHxTmIUOG2Ln4IpDEUJB3huHPP/98OyTaiGEvKugGXdJzY34Vo+UavlZDOcb4nXPOObZspy0H+STQuBOSlCFAPhyNU0891d4bIh/XkJezzz7bOtMhdTULkINni/PGlIb7rN1hmi2LhXwy6qLtoJDTu2C7T0iBx9ulcWHVfB4qcz2Q3TXOSeA+5g8vuOACuzisP41Xu4EeKEsM7bvFXUl7lc3C82Bh1JQpU+z5Au32bDDGTCVhnJOOIHDt/vvvb4fs6bmT11bCs0QG1tKcccYZ9lm3m35rgYwM3zPdlLYjLqMu2haG00NeXkIFKUovvVHQAVukMBxu+DHrnhNpttpANgJy0tifcsopdugbA9YKxwfd8AxwTi+++GK7ojzrNJOALOgB44JD2OgIAvfsu+++No/MxWOksi4XTnYcCd5GN378+C2GoPMCjibH2KbpDMmoi7aEyolB9807YfDpXbCaeKCDzpiGOP30061x5+UmNLAYljQbO3ROI8RwMgYhD5B/Agb2kksuMaNGjbIjIugnTd0A+iZedHPuuefaIffQfcnVoGvi8jm2SUAOl29WcWOMmepqRg/ci4Glx84aDxxMykjaxt2VPeaRcV55xSzOP+k3I39/gLzMreNoMsLG4rk08qAtbXmgksH+3tLGdia2oQAVq1ZwFZhtXo1u94hCuszV8XIMGspaaVLBaaA5Ra7ZCkF67MnmoAzXkNYL5JXFPAyfsVglDuIlD+64x1rxEYiT3zS0IVva4mA4HgOGYWGPM4unyBMgDyEU9BqVDwOFjLz5i+1P9fROGhxz6g49cfmsFXiO9PJwRLIGZ+Tggw+2J89RrtgyxZahaD6S6gfdEBf3YSB5Mxpz+fzdKIwucOQxsI2JxW+ujpFOozJSbukdTpw40RrGNE9fRCa2JTJyRhvAsbnITrru+6RyE1z9Z/3IEUccYadTmJNOQ3bkIe7HH3/c1hPii5bNaHD6T6uNAxxxHBPipp2lLoTqKaof+3xfe19b2nJBG2xpY78u+zhpaOpB4eJ7hpQa7ZlEIV0KK4dVUNmiq2GJ2xV8FshgvNJIjwaIk7ucAawHaVEZTzzxRPs7Lm3iZb936J7e4447runV0UC6QGVn3znb3nhlJVuQMBA0UvVwaaNznBacDAwUIyIYcoawwZdvTsNiO6Qv38iIExLnJKSN0w/6YL8vWw7ZPkYZcD1Zd0017jvyhePJ82L4GscEo4bhdNc1g0sf48geZZ4fe7nZTuaMfD05XdpORub10S8GhGN0uadZ+erh5KH3+corr9g99ciP3HyG3BAnN2UPPWLIKXvM3bMmgf8hLdmRAXk4jKm6namGNNEnBz+5cyLSwOmBeso5Gew5jx7rW60n0uUzpx+eKzq6/rLZMuq5oJ+NuqNWBaxFWgXd4Uu31elFCU07iziT4NKnkXjzzTftQR8YMxoORieiRgwjTm+WxoIhVXr9DKfSK3IkkTE071nkO4SofBw+gl4IGCBGOejFO/0w7Ise6KWhE6cfnNhqpzNNojLyDDE+TkaeoZMz+gxZWY0zhsNBjx8ZnXPVKl1H5cZBp+yxNxvZcVQoe26YHtmiZQ/9Ijs6xnF2ZCV7aDmFrGWgHL7++uvWyeQZuzLonGycavdcCTht6Pbfx02XUc8FbWLURf5J0nBV0ypD0J/kQT95fYYqe+E0oiuM//8df4m1EEKIAQKNY6NhIFAr36GhVdRKOzT0J7XkCQ0DjVo6iAuOUnlTt08IIYQQBUBGXQghhCgAlX67jLoQQghRFGTUhRBCiCJQklEXQgghCoOMuhBCCFEItPpdCCGEKATsbpdRF0IIIQqCjLoQQghREGTUhRBCiIIgoy6EEEIUBBl1IYQQoiDIqAshhBAFQUZdCCGEKAgy6kIIIURBKJBR5/00QgghxMClo7fXmLwHY3+X7Gk6W8DL48uVL7H29ndeA/J384NcCSGEEDUp7Tf/D2WzfVfFKvb0fZQ/PqjYvSOHl82C43c2naZjk+krlUzPhtdN76/PMB0b11Q+6OTTfFLeaHqGjTaDD72h4riQDxl3IYQQmyhV7N26devMf4y/1JRWvvFGuWvnnU1PT36NOnRWuulDOzsrmfvfGYVyuafS0X2PvzZ9kGsqeevY1j48IYQQIspmo7527dry8OHD+z4WQgghRN5wRl2r34UQQogCoLe0CSGEEAVCRl0IIYQoCDLqQgghREGQURdCCCEKgoy6EEIIURBk1IUQQogCwLmqMupCCCFEQZBRF0IIIQqCjLoQQghREGTUhRBCiIIgoy6EEEIUhNJLL71U7urqMr32xeRCCCGEyBMdHR1m7dq15v996T/N/wesy8zzK0MARAAAAABJRU5ErkJggg=="
+ };
+
+ // Send request
+ var apiResponse = await fiscalApi.Invoices.SendAsync(request);
+
+ // Check response
+ if (apiResponse.Succeeded)
+ {
+ MessageBox.Show(@"Factura enviada.");
+ }
+ else
+ {
+ MessageBox.Show($@"HttpStatusCode: {apiResponse.HttpStatusCode}");
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button2_Click(object sender, EventArgs e)
+ {
+ /*Crear factura de egreso (nota de crédito) por valores*/
+
+ // Crear instancia de FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados
+ var taxCredentials = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFgDCCA2igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0NDYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTQzNTM3WhcNMjcwNTE4MTQzNTM3WjCBpzEdMBsGA1UEAxMUS0FSTEEgRlVFTlRFIE5PTEFTQ08xHTAbBgNVBCkTFEtBUkxBIEZVRU5URSBOT0xBU0NPMR0wGwYDVQQKExRLQVJMQSBGVUVOVEUgTk9MQVNDTzEWMBQGA1UELRMNRlVOSzY3MTIyOFBINjEbMBkGA1UEBRMSRlVOSzY3MTIyOE1DTE5MUjA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAhNXbTSqGX6+/3Urpemyy5vVG2IdP2v7v001+c4BoMxEDFDQ32cOFdDiRxy0Fq9aR+Ojrofq8VeftvN586iyA1A6a0QnA68i7JnQKI4uJy+u0qiixuHu6u3b3BhSpoaVHcUtqFWLLlzr0yBxfVLOqVna/1/tHbQJg9hx57mp97P0JmXO1WeIqi+Zqob/mVZh2lsPGdJ8iqgjYFaFn9QVOQ1Pq74o1PTqwfzqgJSfV0zOOlESDPWggaDAYE4VNyTBisOUjlNd0x7ppcTxSi3yenrJHqkq/pqJsRLKf6VJ/s9p6bsd2bj07hSDpjlDC2lB25eEfkEkeMkXoE7ErXQ5QCwIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAHwYpgbClHULXYhK4GNTgonvXh81oqfXwCSWAyDPiTYFDWVfWM9C4ApxMLyc0XvJte75Rla+bPC08oYN3OlhbbvP3twBL/w9SsfxvkbpFn2ZfGSTXZhyiq4vjmQHW1pnFvGelwgU4v3eeRE/MjoCnE7M/Q5thpuog6WGf7CbKERnWZn8QsUaJsZSEkg6Bv2jm69ye57ab5rrOUaeMlstTfdlaHAEkUgLX/NXq7RbGwv82hkHY5b2vYcXeh34tUMBL6os3OdRlooN9ZQGkVIISvxVZpSHkYC20DFNh1Bb0ovjfujlTcka81GnbUhFGZtRuoVQ1RVpMO8xtx3YKBLp4do3hPmnRCV5hCm43OIjYx9Ov2dqICV3AaNXSLV1dW39Bak/RBiIDGHzOIW2+VMPjvvypBjmPv/tmbqNHWPSAWOxTyMx6E1gFCZvi+5F+BgkdC3Lm7U0BU0NfvsXajZd8sXnIllvEMrikCLoI/yurvexNDcF1RW/FhMsoua0eerwczcNm66pGjHm05p9DR6lFeJZrtqeqZuojdxBWy4vH6ghyJaupergoX+nmdG3JYeRttCFF/ITI68TeCES5V3Y0C3psYAg1XxcGRLGd4chPo/4xwiLkijWtgt0/to5ljGBwfK7r62PHZfL1Dp+i7V3w7hmOlhbXzP+zhMZn1GCk7KY=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS9AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucRBAKNQXH8t8gVCl/ItHMI2hMJ76QOECOqEi1Y89cDpegDvh/INXyMsXbzi87tfFzgq1O+9ID6aPWGg+bNGADXyXxDVdy7Nq/SCdoXvo66MTYwq8jyJeUHDHEGMVBcmZpD44VJCvLBxDcvByuevP4Wo2NKqJCwK+ecAdZc/8Rvd947SjbMHuS8BppfQWARVUqA5BLOkTAHNv6tEk/hncC7O2YOGSShart8fM8dokgGSyewHVFe08POuQ+WDHeVpvApH/SP29rwktSoiHRoL6dK+F2YeEB5SuFW9LQgYCutjapmUP/9TC3Byro9Li6UrvQHxNmgMFGQJSYjFdqlGjLibfuguLp7pueutbROoZaSxU8HqlfYxLkpJUxUwNI1ja/1t3wcivtWknVXBd13R06iVfU1HGe8Kb4u5il4a4yP4p7VT4RE3b1SBLJeG+BxHiE8gFaaKcX/Cl6JV14RPTvk/6VnAtEQ66qHJex21KKuiJo2JoOmDXVHmvGQlWXNjYgoPx28Xd5WsofL+n7HDR2Ku8XgwJw6IXBJGuoday9qWN9v/k7DGlNGB6Sm4gdVUmycMP6EGhB1vFTiDfOGQO42ywmcpKoMETPVQ5InYKE0xAOckgcminDgxWjtUHjBDPEKifEjYudPwKmR6Cf4ZdGvUWwY/zq9pPAC9bu423KeBCnSL8AQ4r5SVsW6XG0njamwfNjpegwh/YG7sS7sDtZ8gi7r6tZYjsOqZlCYU0j7QTBpuQn81Yof2nQRCFxhRJCeydmIA8+z0nXrcElk7NDPk4kYQS0VitJ2qeQYNENzGBglROkCl2y6GlxAG80IBtReCUp/xOSdlwDR0eim+SNkdStvmQM5IcWBuDKwGZc1A4v/UoLl7niV9fpl4X6bUX8lZzY4gidJOafoJ30VoY/lYGkrkEuz3GpbbT5v8fF3iXVRlEqhlpe8JSGu7Rd2cPcJSkQ1Cuj/QRhHPhFMF2KhTEf95c9ZBKI8H7SvBi7eLXfSW2Y0ve6vXBZKyjK9whgCU9iVOsJjqRXpAccaWOKi420CjmS0+uwj/Xr2wLZhPEjBA/G6Od30+eG9mICmbp/5wAGhK/ZxCT17ZETyFmOMo49jl9pxdKocJNuzMrLpSz7/g5Jwp8+y8Ck5YP7AX0R/dVA0t37DO7nAbQT5XVSYpMVh/yvpYJ9WR+tb8Yg1h2lERLR2fbuhQRcwmisZR2W3Sr2b7hX9MCMkMQw8y2fDJrzLrqKqkHcjvnI/TdzZW2MzeQDoBBb3fmgvjYg07l4kThS73wGX992w2Y+a1A2iirSmrYEm9dSh16JmXa8boGQAONQzQkHh7vpw0IBs9cnvqO1QLB1GtbBztUBXonA4TxMKLYZkVrrd2RhrYWMsDp7MpC4M0p/DA3E/qscYwq1OpwriewNdx6XXqMZbdUNqMP2viBY2VSGmNdHtVfbN/rnaeJetFGX7XgTVYD7wDq8TW9yseCK944jcT+y/o0YiT9j3OLQ2Ts0LDTQskpJSxRmXEQGy3NBDOYFTvRkcGJEQJItuol8NivJN1H9LoLIUAlAHBZxfHpUYx66YnP4PdTdMIWH+nxyekKPFfAT7olQ=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Crear un nuevo emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "FUNK671228PH6",
+ LegalName = "KARLA FUENTE NOLASCO",
+ TaxRegimeCode = "621",
+ TaxCredentials = taxCredentials
+ };
+
+ // Crear un nuevo receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ ZipCode = "42501",
+ TaxRegimeCode = "601",
+ CfdiUseCode = "G01",
+ Email = "someone@somewhere.com"
+ };
+
+ // Agregar facturas relacionadas
+ var relatedInvoices = new List()
+ {
+ new RelatedInvoice
+ {
+ Uuid = "5FB2822E-396D-4725-8521-CDC4BDD20CCF",
+ RelationshipTypeCode = "01"
+ }
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ ItemCode = "01010101",
+ Quantity = 0.5m,
+ UnitOfMeasurementCode = "E48",
+ Description = "Invoicing software as a service",
+ UnitPrice = 3587.75m,
+ TaxObjectCode = "02",
+ ItemSku = "7506022301697",
+ ItemTaxes = new List()
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ }
+ }
+ }
+ };
+
+ // Crear la factura de egreso (nota de crédito)
+ var creditNote = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "CN",
+ Date = DateTime.Now,
+ PaymentFormCode = "03",
+ PaymentConditions = "Contado",
+ CurrencyCode = "MXN",
+ TypeCode = "E", // E para egreso (nota de crédito)
+ ExpeditionZipCode = "01160",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PUE",
+ ExchangeRate = 1,
+ ExportCode = "01",
+ RelatedInvoices = relatedInvoices
+ };
+
+ // Timbrar la factura de egreso
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(creditNote);
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Nota de Crédito {apiResponse.Data.Number} creada exitosamente");
+ }
+ else
+ {
+ MessageBox.Show($@"HttpStatusCode: {apiResponse.HttpStatusCode}");
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private void button13_Click(object sender, EventArgs e)
+ {
+
+ }
+
+ private void button12_Click(object sender, EventArgs e)
+ {
+
+ }
+
+ private void button11_Click(object sender, EventArgs e)
+ {
+
+ }
+
+ private void button10_Click(object sender, EventArgs e)
+ {
+
+ }
+
+ private void button9_Click(object sender, EventArgs e)
+ {
+
+ }
+
+ private void button14_Click(object sender, EventArgs e)
+ {
+
+ }
+
+ private void button1_Click(object sender, EventArgs e)
+ {
+ IncomeInvoiceValueForm incomeInvoiceValueForm = new IncomeInvoiceValueForm(_settings);
+ incomeInvoiceValueForm.ShowDialog();
+ }
+
+ private void button9_Click_1(object sender, EventArgs e)
+ {
+ EgressInvoiceValueForm egressInvoiceValueForm = new EgressInvoiceValueForm(_settings);
+ egressInvoiceValueForm.ShowDialog();
+ }
+
+ private void button13_Click_1(object sender, EventArgs e)
+ {
+
+ }
+
+ private void button10_Click_1(object sender, EventArgs e)
+ {
+ PaymentComplementInvoiceForm paymentComplementInvoiceForm = new PaymentComplementInvoiceForm(_settings);
+ paymentComplementInvoiceForm.ShowDialog();
+ }
+
+ private async void button6_Click(object sender, EventArgs e)
+ {
+ // Consultar estado de una factura por valores (pasando todos los valores de la petición)
+
+ // Create instance of FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // request model
+ var request = new InvoiceStatusRequest
+ {
+ IssuerTin = "POPJ450924HD6", // RFC del emisor
+ RecipientTin = "MEJJ940824C61", // RFC del receptor
+ InvoiceTotal = 430.00m, // Total de la factura
+ InvoiceUuid = "8e0fdc23-e148-4cf5-b3ce-4459f31c9c45", // UUID de la factura
+ Last8DigitsIssuerSignature = "oxPKRg==" // Ultimos 8 digitos del sello digital del emisor/cfdi
+ };
+
+ // Send request
+ var apiResponse = await fiscalApi.Invoices.GetStatusAsync(request);
+
+ // Check response
+ if (apiResponse.Succeeded)
+ {
+ MessageBox.Show("OK");
+ MessageBox.Show($@"Estado: {apiResponse.Data.Status}");
+ }
+ else
+ {
+ MessageBox.Show($@"HttpStatusCode: {apiResponse.HttpStatusCode}");
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private void button11_Click_1(object sender, EventArgs e)
+ {
+ PayrollComplementValueForm payrollComplementForm = new PayrollComplementValueForm(_settings);
+ payrollComplementForm.ShowDialog();
+ }
+
+ private void button8_Click(object sender, EventArgs e)
+ {
+
+ }
+
+ private void button12_Click_1(object sender, EventArgs e)
+ {
+ LocalTaxesComplementValueForm localTaxesComplementForm = new LocalTaxesComplementValueForm(_settings);
+ localTaxesComplementForm.ShowDialog();
+ }
+ }
+}
diff --git a/FiscalApi.Samples.NetFramework/InvoiceValueForm.resx b/FiscalApi.Samples.NetFramework/InvoiceValueForm.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/FiscalApi.Samples.NetFramework/InvoiceValueForm.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/FiscalApi.Samples.NetFramework/LocalTaxesComplementReferenceForm.Designer.cs b/FiscalApi.Samples.NetFramework/LocalTaxesComplementReferenceForm.Designer.cs
new file mode 100644
index 0000000..d156f01
--- /dev/null
+++ b/FiscalApi.Samples.NetFramework/LocalTaxesComplementReferenceForm.Designer.cs
@@ -0,0 +1,100 @@
+namespace FiscalApi.Samples.NetFramework
+{
+ partial class LocalTaxesComplementReferenceForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.groupBox1 = new System.Windows.Forms.GroupBox();
+ this.button3 = new System.Windows.Forms.Button();
+ this.button2 = new System.Windows.Forms.Button();
+ this.button1 = new System.Windows.Forms.Button();
+ this.groupBox1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // groupBox1
+ //
+ this.groupBox1.Controls.Add(this.button3);
+ this.groupBox1.Controls.Add(this.button2);
+ this.groupBox1.Controls.Add(this.button1);
+ this.groupBox1.Location = new System.Drawing.Point(12, 12);
+ this.groupBox1.Name = "groupBox1";
+ this.groupBox1.Size = new System.Drawing.Size(229, 241);
+ this.groupBox1.TabIndex = 1;
+ this.groupBox1.TabStop = false;
+ this.groupBox1.Text = "groupBox1";
+ //
+ // button3
+ //
+ this.button3.Location = new System.Drawing.Point(19, 165);
+ this.button3.Name = "button3";
+ this.button3.Size = new System.Drawing.Size(189, 60);
+ this.button3.TabIndex = 2;
+ this.button3.Text = "Factura ingreso - Impuestos locales ISH";
+ this.button3.UseVisualStyleBackColor = true;
+ this.button3.Click += new System.EventHandler(this.button3_Click);
+ //
+ // button2
+ //
+ this.button2.Location = new System.Drawing.Point(19, 99);
+ this.button2.Name = "button2";
+ this.button2.Size = new System.Drawing.Size(189, 60);
+ this.button2.TabIndex = 1;
+ this.button2.Text = "Factura ingreso - Impuestos locales CEDULAR";
+ this.button2.UseVisualStyleBackColor = true;
+ this.button2.Click += new System.EventHandler(this.button2_Click);
+ //
+ // button1
+ //
+ this.button1.Location = new System.Drawing.Point(19, 33);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(189, 60);
+ this.button1.TabIndex = 0;
+ this.button1.Text = "Factura ingreso - Impuestos locales";
+ this.button1.UseVisualStyleBackColor = true;
+ this.button1.Click += new System.EventHandler(this.button1_Click);
+ //
+ // LocalTaxesComplementReferenceForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(253, 265);
+ this.Controls.Add(this.groupBox1);
+ this.Name = "LocalTaxesComplementReferenceForm";
+ this.Text = "LocalTaxesComplementReferenceForm";
+ this.groupBox1.ResumeLayout(false);
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.GroupBox groupBox1;
+ private System.Windows.Forms.Button button3;
+ private System.Windows.Forms.Button button2;
+ private System.Windows.Forms.Button button1;
+ }
+}
\ No newline at end of file
diff --git a/FiscalApi.Samples.NetFramework/LocalTaxesComplementReferenceForm.cs b/FiscalApi.Samples.NetFramework/LocalTaxesComplementReferenceForm.cs
new file mode 100644
index 0000000..4f1ab02
--- /dev/null
+++ b/FiscalApi.Samples.NetFramework/LocalTaxesComplementReferenceForm.cs
@@ -0,0 +1,473 @@
+using Fiscalapi.Common;
+using Fiscalapi.Models;
+using Fiscalapi.Services;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Windows.Forms;
+
+namespace FiscalApi.Samples.NetFramework
+{
+ public partial class LocalTaxesComplementReferenceForm : Form
+ {
+ private FiscalapiSettings _settings;
+
+ public LocalTaxesComplementReferenceForm(FiscalapiSettings settings)
+ {
+ InitializeComponent();
+ _settings = settings;
+ }
+
+ private async void button1_Click(object sender, EventArgs e)
+ {
+ // Crear instancia de FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ ItemCode = "01010101",
+ Quantity = 9.5m,
+ UnitOfMeasurementCode = "E48",
+ UnitOfMeasurement = "Unidad de servicio",
+ Description = "Invoicing software as a service",
+ UnitPrice = 3587.75m,
+ TaxObjectCode = "02",
+ ItemSku = "7506022301697",
+ Discount = 255.85m,
+ ItemTaxes = new List()
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ }
+ }
+ },
+ new InvoiceItem
+ {
+ ItemCode = "01010101",
+ Quantity = 8m,
+ UnitOfMeasurementCode = "E48",
+ UnitOfMeasurement = "Unidad de servicio2",
+ Description = "Software consultant",
+ UnitPrice = 250.85m,
+ TaxObjectCode = "02",
+ ItemSku = "7506022301698",
+ Discount = 255.85m,
+ ItemTaxes = new List()
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ }
+ }
+ },
+ new InvoiceItem
+ {
+ ItemCode = "01010101",
+ Quantity = 6m,
+ UnitOfMeasurementCode = "E48",
+ UnitOfMeasurement = "Unidad de servicio3",
+ Description = "Computer software",
+ UnitPrice = 1250.75m,
+ TaxObjectCode = "02",
+ ItemSku = "7506022301699",
+ Discount = 0.00m,
+ ItemTaxes = new List()
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ },
+ new InvoiceItemTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.106666m,
+ TaxFlagCode = "R"
+ }
+ }
+ }
+ };
+
+ var complement = new Complement
+ {
+ LocalTaxes = new LocalTaxes
+ {
+ Taxes = new List
+ {
+ new LocalTax
+ {
+ TaxName = "CEDULAR",
+ TaxRate = 3.00m,
+ TaxAmount = 6.00m,
+ TaxFlagCode = "R"
+ },
+ new LocalTax
+ {
+ TaxName = "ISH",
+ TaxRate = 8.00m,
+ TaxAmount = 16.00m,
+ TaxFlagCode = "R"
+ }
+ }
+ }
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "42501",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PUE",
+ };
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button2_Click(object sender, EventArgs e)
+ {
+ // Crear instancia de FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ ItemCode = "01010101",
+ Quantity = 9.5m,
+ UnitOfMeasurementCode = "E48",
+ UnitOfMeasurement = "Unidad de servicio",
+ Description = "Invoicing software as a service",
+ UnitPrice = 3587.75m,
+ TaxObjectCode = "02",
+ ItemSku = "7506022301697",
+ Discount = 255.85m,
+ ItemTaxes = new List()
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ }
+ }
+ },
+ new InvoiceItem
+ {
+ ItemCode = "01010101",
+ Quantity = 8m,
+ UnitOfMeasurementCode = "E48",
+ UnitOfMeasurement = "Unidad de servicio2",
+ Description = "Software consultant",
+ UnitPrice = 250.85m,
+ TaxObjectCode = "02",
+ ItemSku = "7506022301698",
+ Discount = 255.85m,
+ ItemTaxes = new List()
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ }
+ }
+ },
+ new InvoiceItem
+ {
+ ItemCode = "01010101",
+ Quantity = 6m,
+ UnitOfMeasurementCode = "E48",
+ UnitOfMeasurement = "Unidad de servicio3",
+ Description = "Computer software",
+ UnitPrice = 1250.75m,
+ TaxObjectCode = "02",
+ ItemSku = "7506022301699",
+ Discount = 0.00m,
+ ItemTaxes = new List()
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ },
+ new InvoiceItemTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.106666m,
+ TaxFlagCode = "R"
+ }
+ }
+ }
+ };
+
+ var complement = new Complement
+ {
+ LocalTaxes = new LocalTaxes
+ {
+ Taxes = new List
+ {
+ new LocalTax
+ {
+ TaxName = "CEDULAR",
+ TaxRate = 3.00m,
+ TaxAmount = 6.00m,
+ TaxFlagCode = "R"
+ }
+ }
+ }
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "42501",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ Complement = complement,
+ PaymentMethodCode = "PUE",
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button3_Click(object sender, EventArgs e)
+ {
+ // Crear instancia de FiscalApiClient
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ ItemCode = "01010101",
+ Quantity = 9.5m,
+ UnitOfMeasurementCode = "E48",
+ UnitOfMeasurement = "Unidad de servicio",
+ Description = "Invoicing software as a service",
+ UnitPrice = 3587.75m,
+ TaxObjectCode = "02",
+ ItemSku = "7506022301697",
+ Discount = 255.85m,
+ ItemTaxes = new List()
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ }
+ }
+ },
+ new InvoiceItem
+ {
+ ItemCode = "01010101",
+ Quantity = 8m,
+ UnitOfMeasurementCode = "E48",
+ UnitOfMeasurement = "Unidad de servicio2",
+ Description = "Software consultant",
+ UnitPrice = 250.85m,
+ TaxObjectCode = "02",
+ ItemSku = "7506022301698",
+ Discount = 255.85m,
+ ItemTaxes = new List()
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ }
+ }
+ },
+ new InvoiceItem
+ {
+ ItemCode = "01010101",
+ Quantity = 6m,
+ UnitOfMeasurementCode = "E48",
+ UnitOfMeasurement = "Unidad de servicio3",
+ Description = "Computer software",
+ UnitPrice = 1250.75m,
+ TaxObjectCode = "02",
+ ItemSku = "7506022301699",
+ Discount = 0.00m,
+ ItemTaxes = new List()
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ },
+ new InvoiceItemTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.106666m,
+ TaxFlagCode = "R"
+ }
+ }
+ }
+ };
+
+ var complement = new Complement
+ {
+ LocalTaxes = new LocalTaxes
+ {
+ Taxes = new List
+ {
+ new LocalTax
+ {
+ TaxName = "ISH",
+ TaxRate = 8.00m,
+ TaxAmount = 16.00m,
+ TaxFlagCode = "R"
+ }
+ }
+ }
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "42501",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ Complement = complement,
+ PaymentMethodCode = "PUE",
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+ }
+}
diff --git a/FiscalApi.Samples.NetFramework/LocalTaxesComplementReferenceForm.resx b/FiscalApi.Samples.NetFramework/LocalTaxesComplementReferenceForm.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/FiscalApi.Samples.NetFramework/LocalTaxesComplementReferenceForm.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/FiscalApi.Samples.NetFramework/LocalTaxesComplementValueForm.Designer.cs b/FiscalApi.Samples.NetFramework/LocalTaxesComplementValueForm.Designer.cs
new file mode 100644
index 0000000..7099656
--- /dev/null
+++ b/FiscalApi.Samples.NetFramework/LocalTaxesComplementValueForm.Designer.cs
@@ -0,0 +1,100 @@
+namespace FiscalApi.Samples.NetFramework
+{
+ partial class LocalTaxesComplementValueForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.groupBox1 = new System.Windows.Forms.GroupBox();
+ this.button3 = new System.Windows.Forms.Button();
+ this.button2 = new System.Windows.Forms.Button();
+ this.button1 = new System.Windows.Forms.Button();
+ this.groupBox1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // groupBox1
+ //
+ this.groupBox1.Controls.Add(this.button3);
+ this.groupBox1.Controls.Add(this.button2);
+ this.groupBox1.Controls.Add(this.button1);
+ this.groupBox1.Location = new System.Drawing.Point(12, 12);
+ this.groupBox1.Name = "groupBox1";
+ this.groupBox1.Size = new System.Drawing.Size(229, 241);
+ this.groupBox1.TabIndex = 0;
+ this.groupBox1.TabStop = false;
+ this.groupBox1.Text = "groupBox1";
+ //
+ // button3
+ //
+ this.button3.Location = new System.Drawing.Point(19, 165);
+ this.button3.Name = "button3";
+ this.button3.Size = new System.Drawing.Size(189, 60);
+ this.button3.TabIndex = 2;
+ this.button3.Text = "Factura ingreso - Impuestos locales ISH";
+ this.button3.UseVisualStyleBackColor = true;
+ this.button3.Click += new System.EventHandler(this.button3_Click);
+ //
+ // button2
+ //
+ this.button2.Location = new System.Drawing.Point(19, 99);
+ this.button2.Name = "button2";
+ this.button2.Size = new System.Drawing.Size(189, 60);
+ this.button2.TabIndex = 1;
+ this.button2.Text = "Factura ingreso - Impuestos locales CEDULAR";
+ this.button2.UseVisualStyleBackColor = true;
+ this.button2.Click += new System.EventHandler(this.button2_Click);
+ //
+ // button1
+ //
+ this.button1.Location = new System.Drawing.Point(19, 33);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(189, 60);
+ this.button1.TabIndex = 0;
+ this.button1.Text = "Factura ingreso - Impuestos locales";
+ this.button1.UseVisualStyleBackColor = true;
+ this.button1.Click += new System.EventHandler(this.button1_Click);
+ //
+ // LocalTaxesComplementForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(253, 265);
+ this.Controls.Add(this.groupBox1);
+ this.Name = "LocalTaxesComplementForm";
+ this.Text = "LocalTaxesComplementForm";
+ this.groupBox1.ResumeLayout(false);
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.GroupBox groupBox1;
+ private System.Windows.Forms.Button button1;
+ private System.Windows.Forms.Button button3;
+ private System.Windows.Forms.Button button2;
+ }
+}
\ No newline at end of file
diff --git a/FiscalApi.Samples.NetFramework/LocalTaxesComplementValueForm.cs b/FiscalApi.Samples.NetFramework/LocalTaxesComplementValueForm.cs
new file mode 100644
index 0000000..08c2b54
--- /dev/null
+++ b/FiscalApi.Samples.NetFramework/LocalTaxesComplementValueForm.cs
@@ -0,0 +1,565 @@
+using Fiscalapi.Common;
+using Fiscalapi.Models;
+using Fiscalapi.Services;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Windows.Forms;
+
+namespace FiscalApi.Samples.NetFramework
+{
+ public partial class LocalTaxesComplementValueForm : Form
+ {
+ FiscalapiSettings _settings;
+
+ public LocalTaxesComplementValueForm(FiscalapiSettings settings)
+ {
+ InitializeComponent();
+ _settings = settings;
+ }
+
+ private async void button1_Click(object sender, EventArgs e)
+ {
+ // https://docs.fiscalapi.com/credentials-info
+
+
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "601",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ ZipCode = "42501",
+ TaxRegimeCode = "601",
+ CfdiUseCode = "G01",
+ Email = "someone@somewhere.com"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ ItemCode = "01010101",
+ Quantity = 9.5m,
+ UnitOfMeasurementCode = "E48",
+ UnitOfMeasurement = "Unidad de servicio",
+ Description = "Invoicing software as a service",
+ UnitPrice = 3587.75m,
+ TaxObjectCode = "02",
+ ItemSku = "7506022301697",
+ Discount = 255.85m,
+ ItemTaxes = new List()
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ }
+ }
+ },
+ new InvoiceItem
+ {
+ ItemCode = "01010101",
+ Quantity = 8m,
+ UnitOfMeasurementCode = "E48",
+ UnitOfMeasurement = "Unidad de servicio2",
+ Description = "Software consultant",
+ UnitPrice = 250.85m,
+ TaxObjectCode = "02",
+ ItemSku = "7506022301698",
+ Discount = 255.85m,
+ ItemTaxes = new List()
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ }
+ }
+ },
+ new InvoiceItem
+ {
+ ItemCode = "01010101",
+ Quantity = 6m,
+ UnitOfMeasurementCode = "E48",
+ UnitOfMeasurement = "Unidad de servicio3",
+ Description = "Computer software",
+ UnitPrice = 1250.75m,
+ TaxObjectCode = "02",
+ ItemSku = "7506022301699",
+ Discount = 0.00m,
+ ItemTaxes = new List()
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ },
+ new InvoiceItemTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.106666m,
+ TaxFlagCode = "R"
+ }
+ }
+ }
+ };
+
+ var complement = new Complement
+ {
+ LocalTaxes = new LocalTaxes
+ {
+ Taxes = new List
+ {
+ new LocalTax
+ {
+ TaxName = "CEDULAR",
+ TaxRate = 3.00m,
+ TaxAmount = 6.00m,
+ TaxFlagCode = "R"
+ },
+ new LocalTax
+ {
+ TaxName = "ISH",
+ TaxRate = 8.00m,
+ TaxAmount = 16.00m,
+ TaxFlagCode = "R"
+ }
+ }
+ }
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "42501",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ PaymentMethodCode = "PUE",
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button2_Click(object sender, EventArgs e)
+ {
+ // https://docs.fiscalapi.com/credentials-info
+
+
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "601",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ ZipCode = "42501",
+ TaxRegimeCode = "601",
+ CfdiUseCode = "G01",
+ Email = "someone@somewhere.com"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ ItemCode = "01010101",
+ Quantity = 9.5m,
+ UnitOfMeasurementCode = "E48",
+ UnitOfMeasurement = "Unidad de servicio",
+ Description = "Invoicing software as a service",
+ UnitPrice = 3587.75m,
+ TaxObjectCode = "02",
+ ItemSku = "7506022301697",
+ Discount = 255.85m,
+ ItemTaxes = new List()
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ }
+ }
+ },
+ new InvoiceItem
+ {
+ ItemCode = "01010101",
+ Quantity = 8m,
+ UnitOfMeasurementCode = "E48",
+ UnitOfMeasurement = "Unidad de servicio2",
+ Description = "Software consultant",
+ UnitPrice = 250.85m,
+ TaxObjectCode = "02",
+ ItemSku = "7506022301698",
+ Discount = 255.85m,
+ ItemTaxes = new List()
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ }
+ }
+ },
+ new InvoiceItem
+ {
+ ItemCode = "01010101",
+ Quantity = 6m,
+ UnitOfMeasurementCode = "E48",
+ UnitOfMeasurement = "Unidad de servicio3",
+ Description = "Computer software",
+ UnitPrice = 1250.75m,
+ TaxObjectCode = "02",
+ ItemSku = "7506022301699",
+ Discount = 0.00m,
+ ItemTaxes = new List()
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ },
+ new InvoiceItemTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.106666m,
+ TaxFlagCode = "R"
+ }
+ }
+ }
+ };
+
+ var complement = new Complement
+ {
+ LocalTaxes = new LocalTaxes
+ {
+ Taxes = new List
+ {
+ new LocalTax
+ {
+ TaxName = "CEDULAR",
+ TaxRate = 3.00m,
+ TaxAmount = 6.00m,
+ TaxFlagCode = "R"
+ }
+ }
+ }
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "42501",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ Complement = complement,
+ PaymentMethodCode = "PUE",
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button3_Click(object sender, EventArgs e)
+ {
+ // https://docs.fiscalapi.com/credentials-info
+
+
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "601",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ ZipCode = "42501",
+ TaxRegimeCode = "601",
+ CfdiUseCode = "G01",
+ Email = "someone@somewhere.com"
+ };
+
+ // Crear una lista de productos o servicios de la factura
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ ItemCode = "01010101",
+ Quantity = 9.5m,
+ UnitOfMeasurementCode = "E48",
+ UnitOfMeasurement = "Unidad de servicio",
+ Description = "Invoicing software as a service",
+ UnitPrice = 3587.75m,
+ TaxObjectCode = "02",
+ ItemSku = "7506022301697",
+ Discount = 255.85m,
+ ItemTaxes = new List()
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ }
+ }
+ },
+ new InvoiceItem
+ {
+ ItemCode = "01010101",
+ Quantity = 8m,
+ UnitOfMeasurementCode = "E48",
+ UnitOfMeasurement = "Unidad de servicio2",
+ Description = "Software consultant",
+ UnitPrice = 250.85m,
+ TaxObjectCode = "02",
+ ItemSku = "7506022301698",
+ Discount = 255.85m,
+ ItemTaxes = new List()
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ }
+ }
+ },
+ new InvoiceItem
+ {
+ ItemCode = "01010101",
+ Quantity = 6m,
+ UnitOfMeasurementCode = "E48",
+ UnitOfMeasurement = "Unidad de servicio3",
+ Description = "Computer software",
+ UnitPrice = 1250.75m,
+ TaxObjectCode = "02",
+ ItemSku = "7506022301699",
+ Discount = 0.00m,
+ ItemTaxes = new List()
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ },
+ new InvoiceItemTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.106666m,
+ TaxFlagCode = "R"
+ }
+ }
+ }
+ };
+
+ var complement = new Complement
+ {
+ LocalTaxes = new LocalTaxes
+ {
+ Taxes = new List
+ {
+ new LocalTax
+ {
+ TaxName = "ISH",
+ TaxRate = 8.00m,
+ TaxAmount = 16.00m,
+ TaxFlagCode = "R"
+ }
+ }
+ }
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "42501",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ Complement = complement,
+ PaymentMethodCode = "PUE",
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+ }
+}
diff --git a/FiscalApi.Samples.NetFramework/LocalTaxesComplementValueForm.resx b/FiscalApi.Samples.NetFramework/LocalTaxesComplementValueForm.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/FiscalApi.Samples.NetFramework/LocalTaxesComplementValueForm.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/FiscalApi.Samples.NetFramework/PaymentComplementInvoiceReferenceForm.Designer.cs b/FiscalApi.Samples.NetFramework/PaymentComplementInvoiceReferenceForm.Designer.cs
new file mode 100644
index 0000000..e69eb89
--- /dev/null
+++ b/FiscalApi.Samples.NetFramework/PaymentComplementInvoiceReferenceForm.Designer.cs
@@ -0,0 +1,308 @@
+namespace FiscalApi.Samples.NetFramework
+{
+ partial class PaymentComplementInvoiceReferenceForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.groupBox1 = new System.Windows.Forms.GroupBox();
+ this.button19 = new System.Windows.Forms.Button();
+ this.button18 = new System.Windows.Forms.Button();
+ this.button17 = new System.Windows.Forms.Button();
+ this.button16 = new System.Windows.Forms.Button();
+ this.button15 = new System.Windows.Forms.Button();
+ this.button14 = new System.Windows.Forms.Button();
+ this.button13 = new System.Windows.Forms.Button();
+ this.button12 = new System.Windows.Forms.Button();
+ this.button11 = new System.Windows.Forms.Button();
+ this.button10 = new System.Windows.Forms.Button();
+ this.button9 = new System.Windows.Forms.Button();
+ this.button8 = new System.Windows.Forms.Button();
+ this.button7 = new System.Windows.Forms.Button();
+ this.button6 = new System.Windows.Forms.Button();
+ this.button5 = new System.Windows.Forms.Button();
+ this.button4 = new System.Windows.Forms.Button();
+ this.button3 = new System.Windows.Forms.Button();
+ this.button2 = new System.Windows.Forms.Button();
+ this.button1 = new System.Windows.Forms.Button();
+ this.groupBox1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // groupBox1
+ //
+ this.groupBox1.Controls.Add(this.button19);
+ this.groupBox1.Controls.Add(this.button18);
+ this.groupBox1.Controls.Add(this.button17);
+ this.groupBox1.Controls.Add(this.button16);
+ this.groupBox1.Controls.Add(this.button15);
+ this.groupBox1.Controls.Add(this.button14);
+ this.groupBox1.Controls.Add(this.button13);
+ this.groupBox1.Controls.Add(this.button12);
+ this.groupBox1.Controls.Add(this.button11);
+ this.groupBox1.Controls.Add(this.button10);
+ this.groupBox1.Controls.Add(this.button9);
+ this.groupBox1.Controls.Add(this.button8);
+ this.groupBox1.Controls.Add(this.button7);
+ this.groupBox1.Controls.Add(this.button6);
+ this.groupBox1.Controls.Add(this.button5);
+ this.groupBox1.Controls.Add(this.button4);
+ this.groupBox1.Controls.Add(this.button3);
+ this.groupBox1.Controls.Add(this.button2);
+ this.groupBox1.Controls.Add(this.button1);
+ this.groupBox1.Location = new System.Drawing.Point(12, 12);
+ this.groupBox1.Name = "groupBox1";
+ this.groupBox1.Size = new System.Drawing.Size(403, 691);
+ this.groupBox1.TabIndex = 1;
+ this.groupBox1.TabStop = false;
+ this.groupBox1.Text = "groupBox1";
+ //
+ // button19
+ //
+ this.button19.Location = new System.Drawing.Point(201, 549);
+ this.button19.Name = "button19";
+ this.button19.Size = new System.Drawing.Size(189, 60);
+ this.button19.TabIndex = 18;
+ this.button19.Text = "Factura pago - pago objeto impuesto 07. 001 y 003 - ISR y IEPS";
+ this.button19.UseVisualStyleBackColor = true;
+ this.button19.Click += new System.EventHandler(this.button19_Click);
+ //
+ // button18
+ //
+ this.button18.Location = new System.Drawing.Point(201, 483);
+ this.button18.Name = "button18";
+ this.button18.Size = new System.Drawing.Size(189, 60);
+ this.button18.TabIndex = 17;
+ this.button18.Text = "Factura pago - pago objeto impuesto 06. 001 - ISR";
+ this.button18.UseVisualStyleBackColor = true;
+ this.button18.Click += new System.EventHandler(this.button18_Click);
+ //
+ // button17
+ //
+ this.button17.Location = new System.Drawing.Point(201, 417);
+ this.button17.Name = "button17";
+ this.button17.Size = new System.Drawing.Size(189, 60);
+ this.button17.TabIndex = 16;
+ this.button17.Text = "Factura pago - pago objeto impuesto 07. 003 - IEPS";
+ this.button17.UseVisualStyleBackColor = true;
+ this.button17.Click += new System.EventHandler(this.button17_Click);
+ //
+ // button16
+ //
+ this.button16.Location = new System.Drawing.Point(201, 351);
+ this.button16.Name = "button16";
+ this.button16.Size = new System.Drawing.Size(189, 60);
+ this.button16.TabIndex = 15;
+ this.button16.Text = "Factura pago - pago objeto impuesto 08. 001 - ISR";
+ this.button16.UseVisualStyleBackColor = true;
+ this.button16.Click += new System.EventHandler(this.button16_Click);
+ //
+ // button15
+ //
+ this.button15.Location = new System.Drawing.Point(201, 285);
+ this.button15.Name = "button15";
+ this.button15.Size = new System.Drawing.Size(189, 60);
+ this.button15.TabIndex = 14;
+ this.button15.Text = "Factura pago - pago en MXN y DR en MXN";
+ this.button15.UseVisualStyleBackColor = true;
+ this.button15.Click += new System.EventHandler(this.button15_Click);
+ //
+ // button14
+ //
+ this.button14.Location = new System.Drawing.Point(201, 219);
+ this.button14.Name = "button14";
+ this.button14.Size = new System.Drawing.Size(189, 60);
+ this.button14.TabIndex = 13;
+ this.button14.Text = "Factura pago - pago solo traslados";
+ this.button14.UseVisualStyleBackColor = true;
+ this.button14.Click += new System.EventHandler(this.button14_Click);
+ //
+ // button13
+ //
+ this.button13.Location = new System.Drawing.Point(201, 153);
+ this.button13.Name = "button13";
+ this.button13.Size = new System.Drawing.Size(189, 60);
+ this.button13.TabIndex = 12;
+ this.button13.Text = "Factura pago - pago cobro por cuenta de terceros";
+ this.button13.UseVisualStyleBackColor = true;
+ this.button13.Click += new System.EventHandler(this.button13_Click);
+ //
+ // button12
+ //
+ this.button12.Location = new System.Drawing.Point(201, 87);
+ this.button12.Name = "button12";
+ this.button12.Size = new System.Drawing.Size(189, 60);
+ this.button12.TabIndex = 11;
+ this.button12.Text = "Factura pago - pago en MXN y DR en USD";
+ this.button12.UseVisualStyleBackColor = true;
+ this.button12.Click += new System.EventHandler(this.button12_Click);
+ //
+ // button11
+ //
+ this.button11.Location = new System.Drawing.Point(201, 21);
+ this.button11.Name = "button11";
+ this.button11.Size = new System.Drawing.Size(189, 60);
+ this.button11.TabIndex = 10;
+ this.button11.Text = "Factura pago - pago con IVA exento y retenciones";
+ this.button11.UseVisualStyleBackColor = true;
+ this.button11.Click += new System.EventHandler(this.button11_Click);
+ //
+ // button10
+ //
+ this.button10.Location = new System.Drawing.Point(6, 615);
+ this.button10.Name = "button10";
+ this.button10.Size = new System.Drawing.Size(189, 60);
+ this.button10.TabIndex = 9;
+ this.button10.Text = "Factura pago - pago con IVA exento";
+ this.button10.UseVisualStyleBackColor = true;
+ this.button10.Click += new System.EventHandler(this.button10_Click);
+ //
+ // button9
+ //
+ this.button9.Location = new System.Drawing.Point(6, 549);
+ this.button9.Name = "button9";
+ this.button9.Size = new System.Drawing.Size(189, 60);
+ this.button9.TabIndex = 8;
+ this.button9.Text = "Factura pago - IVA y retenciones al 16%";
+ this.button9.UseVisualStyleBackColor = true;
+ this.button9.Click += new System.EventHandler(this.button9_Click);
+ //
+ // button8
+ //
+ this.button8.Location = new System.Drawing.Point(6, 483);
+ this.button8.Name = "button8";
+ this.button8.Size = new System.Drawing.Size(189, 60);
+ this.button8.TabIndex = 7;
+ this.button8.Text = "Factura pago - pago misma monedaP y monedaDR";
+ this.button8.UseVisualStyleBackColor = true;
+ this.button8.Click += new System.EventHandler(this.button8_Click);
+ //
+ // button7
+ //
+ this.button7.Location = new System.Drawing.Point(6, 417);
+ this.button7.Name = "button7";
+ this.button7.Size = new System.Drawing.Size(189, 60);
+ this.button7.TabIndex = 6;
+ this.button7.Text = "Factura pago - pago en USD";
+ this.button7.UseVisualStyleBackColor = true;
+ this.button7.Click += new System.EventHandler(this.button7_Click);
+ //
+ // button6
+ //
+ this.button6.Location = new System.Drawing.Point(6, 351);
+ this.button6.Name = "button6";
+ this.button6.Size = new System.Drawing.Size(189, 60);
+ this.button6.TabIndex = 5;
+ this.button6.Text = "Factura pago - pago EUR y DR USD";
+ this.button6.UseVisualStyleBackColor = true;
+ this.button6.Click += new System.EventHandler(this.button6_Click);
+ //
+ // button5
+ //
+ this.button5.Location = new System.Drawing.Point(6, 285);
+ this.button5.Name = "button5";
+ this.button5.Size = new System.Drawing.Size(189, 60);
+ this.button5.TabIndex = 4;
+ this.button5.Text = "Factura pago - pago parcialidades";
+ this.button5.UseVisualStyleBackColor = true;
+ this.button5.Click += new System.EventHandler(this.button5_Click);
+ //
+ // button4
+ //
+ this.button4.Location = new System.Drawing.Point(6, 219);
+ this.button4.Name = "button4";
+ this.button4.Size = new System.Drawing.Size(189, 60);
+ this.button4.TabIndex = 3;
+ this.button4.Text = "Factura pago - sin impuestos";
+ this.button4.UseVisualStyleBackColor = true;
+ this.button4.Click += new System.EventHandler(this.button4_Click);
+ //
+ // button3
+ //
+ this.button3.Location = new System.Drawing.Point(6, 153);
+ this.button3.Name = "button3";
+ this.button3.Size = new System.Drawing.Size(189, 60);
+ this.button3.TabIndex = 2;
+ this.button3.Text = "Factura pago - solo retenciones";
+ this.button3.UseVisualStyleBackColor = true;
+ this.button3.Click += new System.EventHandler(this.button3_Click);
+ //
+ // button2
+ //
+ this.button2.Location = new System.Drawing.Point(6, 87);
+ this.button2.Name = "button2";
+ this.button2.Size = new System.Drawing.Size(189, 60);
+ this.button2.TabIndex = 1;
+ this.button2.Text = "Factura pago - pagos varios DR";
+ this.button2.UseVisualStyleBackColor = true;
+ this.button2.Click += new System.EventHandler(this.button2_Click);
+ //
+ // button1
+ //
+ this.button1.Location = new System.Drawing.Point(6, 21);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(189, 60);
+ this.button1.TabIndex = 0;
+ this.button1.Text = "Factura pago - RFC genérico";
+ this.button1.UseVisualStyleBackColor = true;
+ this.button1.Click += new System.EventHandler(this.button1_Click);
+ //
+ // PaymentComplementInvoiceReferenceForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(427, 715);
+ this.Controls.Add(this.groupBox1);
+ this.Name = "PaymentComplementInvoiceReferenceForm";
+ this.Text = "PaymentComplementInvoiceReferenceForm";
+ this.groupBox1.ResumeLayout(false);
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.GroupBox groupBox1;
+ private System.Windows.Forms.Button button19;
+ private System.Windows.Forms.Button button18;
+ private System.Windows.Forms.Button button17;
+ private System.Windows.Forms.Button button16;
+ private System.Windows.Forms.Button button15;
+ private System.Windows.Forms.Button button14;
+ private System.Windows.Forms.Button button13;
+ private System.Windows.Forms.Button button12;
+ private System.Windows.Forms.Button button11;
+ private System.Windows.Forms.Button button10;
+ private System.Windows.Forms.Button button9;
+ private System.Windows.Forms.Button button8;
+ private System.Windows.Forms.Button button7;
+ private System.Windows.Forms.Button button6;
+ private System.Windows.Forms.Button button5;
+ private System.Windows.Forms.Button button4;
+ private System.Windows.Forms.Button button3;
+ private System.Windows.Forms.Button button2;
+ private System.Windows.Forms.Button button1;
+ }
+}
\ No newline at end of file
diff --git a/FiscalApi.Samples.NetFramework/PaymentComplementInvoiceReferenceForm.cs b/FiscalApi.Samples.NetFramework/PaymentComplementInvoiceReferenceForm.cs
new file mode 100644
index 0000000..28a762a
--- /dev/null
+++ b/FiscalApi.Samples.NetFramework/PaymentComplementInvoiceReferenceForm.cs
@@ -0,0 +1,1992 @@
+using Fiscalapi.Common;
+using Fiscalapi.Models;
+using Fiscalapi.Services;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Windows.Forms;
+
+namespace FiscalApi.Samples.NetFramework
+{
+ public partial class PaymentComplementInvoiceReferenceForm : Form
+ {
+ private FiscalapiSettings _settings;
+ public PaymentComplementInvoiceReferenceForm(FiscalapiSettings settings)
+ {
+ InitializeComponent();
+ _settings = settings;
+ }
+
+ private async void button1_Click(object sender, EventArgs e)
+ {
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ var complement = new Complement
+ {
+ Payment = new InvoicePayment
+ {
+ PaymentDate = DateTime.Parse("2022-09-09T17:33:38"),
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ ExchangeRate = 1m,
+ Amount = 6778.00m,
+ PaidInvoices = new List()
+ {
+ new PaidInvoice
+ {
+ Uuid = "b7c8d2bf-cb4e-4f84-af89-c68b6731206a",
+ Series = "FA",
+ Number = "N0000216349",
+ CurrencyCode = "MXN",
+ PartialityNumber = 2,
+ PreviousBalance = 6777.41m,
+ PaymentAmount = 6777.41m,
+ RemainingBalance = 0.00m,
+ TaxObjectCode = "02",
+ Equivalence = 1m,
+ Subtotal = 5842.600000m,
+ PaidInvoiceTaxes = new List
+ {
+ new PaidInvoiceTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ }
+ }
+ },
+ new PaidInvoice
+ {
+ Uuid = "94f4e541-bb38-4355-b779-02d337dc9720",
+ Series = "FA",
+ Number = "SI000032690",
+ CurrencyCode = "MXN",
+ PartialityNumber = 1,
+ PreviousBalance = 9610.81m,
+ PaymentAmount = 0.59m,
+ RemainingBalance = 9610.22m,
+ TaxObjectCode = "02",
+ Equivalence = 1m,
+ Subtotal = 0.510000m,
+ PaidInvoiceTaxes = new List
+ {
+ new PaidInvoiceTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ }
+ }
+ }
+ }
+ }
+ };
+
+
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ CurrencyCode = "XXX",
+ TypeCode = "P",
+ ExpeditionZipCode = "75700",
+ Issuer = issuer,
+ Recipient = recipient,
+ Complement = complement,
+ ExportCode = "01",
+ PaymentMethodCode = ""
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button2_Click(object sender, EventArgs e)
+ {
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ var complement = new Complement
+ {
+ Payment = new InvoicePayment
+ {
+ PaymentDate = DateTime.Parse("2022-09-09T17:33:38"),
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ ExchangeRate = 1m,
+ Amount = 323,
+ PaidInvoices = new List()
+ {
+ new PaidInvoice
+ {
+ Uuid = "b7c8d2bf-cb4e-4f84-af89-c68b6731206a",
+ Series = "FA",
+ Number = "N0000216349",
+ CurrencyCode = "MXN",
+ PartialityNumber = 2,
+ PreviousBalance = 200.00m,
+ PaymentAmount = 100.00m,
+ RemainingBalance = 100.00m,
+ TaxObjectCode = "02",
+ Equivalence = 1m,
+ Subtotal = 10.00m,
+ PaidInvoiceTaxes = new List
+ {
+ new PaidInvoiceTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ }
+ }
+ },
+ new PaidInvoice
+ {
+ Uuid = "94f4e541-bb38-4355-b779-02d337dc9720",
+ Series = "FA",
+ Number = "SI000032690",
+ CurrencyCode = "MXN",
+ PartialityNumber = 1,
+ PreviousBalance = 100.00m,
+ PaymentAmount = 100.00m,
+ RemainingBalance = 0.00m,
+ TaxObjectCode = "02",
+ Equivalence = 1m,
+ Subtotal = 100.00m,
+ PaidInvoiceTaxes = new List
+ {
+ new PaidInvoiceTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ }
+ }
+ }
+ }
+ }
+ };
+
+
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ CurrencyCode = "XXX",
+ TypeCode = "P",
+ ExpeditionZipCode = "75700",
+ Issuer = issuer,
+ Recipient = recipient,
+ Complement = complement,
+ ExportCode = "01",
+ PaymentMethodCode = ""
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button3_Click(object sender, EventArgs e)
+ {
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ var complement = new Complement
+ {
+ Payment = new InvoicePayment
+ {
+ PaymentDate = DateTime.Parse("2022-06-06T00:00:00"),
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ ExchangeRate = 1m,
+ Amount = 100.00m,
+ PaidInvoices = new List()
+ {
+ new PaidInvoice
+ {
+ Uuid = "bfc36522-4b8e-45c4-8f14-d11b289f9eb7",
+ CurrencyCode = "MXN",
+ PartialityNumber = 1,
+ PreviousBalance = 100.00m,
+ PaymentAmount = 100.00m,
+ RemainingBalance = 0.00m,
+ TaxObjectCode = "02",
+ Equivalence = 1m,
+ Subtotal = 100.00m,
+ PaidInvoiceTaxes = new List
+ {
+ new PaidInvoiceTax
+ {
+ TaxCode = "001",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.000000m,
+ TaxFlagCode = "R"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "001",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.350000m,
+ TaxFlagCode = "R"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.000000m,
+ TaxFlagCode = "R"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "R"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "003",
+ TaxTypeCode = "Cuota",
+ TaxRate = 0.000000m,
+ TaxFlagCode = "R"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "003",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.304000m,
+ TaxFlagCode = "R"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "003",
+ TaxTypeCode = "Cuota",
+ TaxRate = 0.040000m,
+ TaxFlagCode = "R"
+ }
+ }
+ }
+ }
+ }
+ };
+
+
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ CurrencyCode = "XXX",
+ TypeCode = "P",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Complement = complement,
+ ExportCode = "01",
+ PaymentMethodCode = ""
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button4_Click(object sender, EventArgs e)
+ {
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ var complement = new Complement
+ {
+ Payment = new InvoicePayment
+ {
+ PaymentDate = DateTime.Parse("2021-12-15T00:00:00"),
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ ExchangeRate = 1m,
+ Amount = 200.0m,
+ PaidInvoices = new List()
+ {
+ new PaidInvoice
+ {
+ Uuid = "bfc36522-4b8e-45c4-8f14-d11b289f9eb7",
+ Number = "N0000216349",
+ CurrencyCode = "MXN",
+ PartialityNumber = 1,
+ PreviousBalance = 200.00m,
+ PaymentAmount = 200.00m,
+ RemainingBalance = 0.00m,
+ TaxObjectCode = "01",
+ Equivalence = 1m,
+ Subtotal = 20.00m
+ }
+ }
+ }
+ };
+
+
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ CurrencyCode = "XXX",
+ TypeCode = "P",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Complement = complement,
+ ExportCode = "01",
+ PaymentMethodCode = ""
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button5_Click(object sender, EventArgs e)
+ {
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ var complement = new Complement
+ {
+ Payment = new InvoicePayment
+ {
+ PaymentDate = DateTime.Parse("2021-12-15T00:00:00"),
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ ExchangeRate = 1m,
+ Amount = 116.0m,
+ PaidInvoices = new List()
+ {
+ new PaidInvoice
+ {
+ Uuid = "bfc36522-4b8e-45c4-8f14-d11b289f9eb7",
+ Number = "N0000216349",
+ CurrencyCode = "MXN",
+ PartialityNumber = 1,
+ PreviousBalance = 200.00m,
+ PaymentAmount = 100.00m,
+ RemainingBalance = 100.00m,
+ TaxObjectCode = "02",
+ Equivalence = 1m,
+ Subtotal = 100.00m,
+ PaidInvoiceTaxes = new List
+ {
+ new PaidInvoiceTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ }
+ }
+ }
+ }
+ }
+ };
+
+
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ CurrencyCode = "XXX",
+ TypeCode = "P",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Complement = complement,
+ ExportCode = "01",
+ PaymentMethodCode = ""
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button6_Click(object sender, EventArgs e)
+ {
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ var complement = new Complement
+ {
+ Payment = new InvoicePayment
+ {
+ PaymentDate = DateTime.Parse("2022-01-31T17:49:04"),
+ PaymentFormCode = "03",
+ CurrencyCode = "EUR",
+ ExchangeRate = 25.00m,
+ Amount = 100.0m,
+ PaidInvoices = new List()
+ {
+ new PaidInvoice
+ {
+ Uuid = "4a5d025b-813a-4acf-9f32-8fb61f4918ac",
+ CurrencyCode = "USD",
+ PartialityNumber = 1,
+ PreviousBalance = 116.00m,
+ PaymentAmount = 116.00m,
+ RemainingBalance = 0.00m,
+ TaxObjectCode = "02",
+ Equivalence = 1.160m,
+ Subtotal = 100.00m,
+ PaidInvoiceTaxes = new List
+ {
+ new PaidInvoiceTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ }
+ }
+ }
+ }
+ }
+ };
+
+
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ CurrencyCode = "XXX",
+ TypeCode = "P",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Complement = complement,
+ ExportCode = "01",
+ PaymentMethodCode = ""
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button7_Click(object sender, EventArgs e)
+ {
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ var complement = new Complement
+ {
+ Payment = new InvoicePayment
+ {
+ PaymentDate = DateTime.Parse("2022-01-31T17:49:04"),
+ PaymentFormCode = "03",
+ CurrencyCode = "USD",
+ ExchangeRate = 20.64m,
+ Amount = 5.62m,
+ PaidInvoices = new List()
+ {
+ new PaidInvoice
+ {
+ Uuid = "4a5d025b-813a-4acf-9f32-8fb61f4918ac",
+ CurrencyCode = "MXN",
+ PartialityNumber = 1,
+ PreviousBalance = 116.00m,
+ PaymentAmount = 116.00m,
+ RemainingBalance = 0.00m,
+ TaxObjectCode = "02",
+ Equivalence = 20.64m,
+ Subtotal = 100.00m,
+ PaidInvoiceTaxes = new List
+ {
+ new PaidInvoiceTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ }
+ }
+ }
+ }
+ }
+ };
+
+
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ CurrencyCode = "XXX",
+ TypeCode = "P",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Complement = complement,
+ ExportCode = "01",
+ PaymentMethodCode = ""
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button8_Click(object sender, EventArgs e)
+ {
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ var complement = new Complement
+ {
+ Payment = new InvoicePayment
+ {
+ PaymentDate = DateTime.Parse("2022-01-31T17:49:04"),
+ PaymentFormCode = "03",
+ CurrencyCode = "USD",
+ ExchangeRate = 18.012300m,
+ Amount = 1160.00m,
+ PaidInvoices = new List()
+ {
+ new PaidInvoice
+ {
+ Uuid = "4a5d025b-813a-4acf-9f32-8fb61f4918ac",
+ CurrencyCode = "USD",
+ PartialityNumber = 1,
+ PreviousBalance = 1160.00m,
+ PaymentAmount = 1160.00m,
+ RemainingBalance = 0.00m,
+ TaxObjectCode = "02",
+ Equivalence = 1.00m,
+ Subtotal = 10.00m,
+ PaidInvoiceTaxes = new List
+ {
+ new PaidInvoiceTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ }
+ }
+ }
+ }
+ }
+ };
+
+
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ CurrencyCode = "XXX",
+ TypeCode = "P",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Complement = complement,
+ ExportCode = "01",
+ PaymentMethodCode = ""
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button9_Click(object sender, EventArgs e)
+ {
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ var complement = new Complement
+ {
+ Payment = new InvoicePayment
+ {
+ PaymentDate = DateTime.Parse("2023-11-29T12:00:00"),
+ PaymentFormCode = "03",
+ CurrencyCode = "USD",
+ ExchangeRate = 1.00m,
+ Amount = 100.00m,
+ PaidInvoices = new List()
+ {
+ new PaidInvoice
+ {
+ Uuid = "a0476c1b-8829-448d-82ab-92d8b26be878",
+ CurrencyCode = "MXN",
+ PartialityNumber = 1,
+ PreviousBalance = 98.75m,
+ PaymentAmount = 98.75m,
+ RemainingBalance = 0.00m,
+ TaxObjectCode = "02",
+ Equivalence = 1.00m,
+ Subtotal = 100.00m,
+ PaidInvoiceTaxes = new List
+ {
+ new PaidInvoiceTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "R"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ }
+ }
+ }
+ }
+ }
+ };
+
+
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ CurrencyCode = "XXX",
+ TypeCode = "P",
+ ExpeditionZipCode = "06370",
+ Issuer = issuer,
+ Recipient = recipient,
+ Complement = complement,
+ ExportCode = "01",
+ PaymentMethodCode = ""
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button10_Click(object sender, EventArgs e)
+ {
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ var complement = new Complement
+ {
+ Payment = new InvoicePayment
+ {
+ PaymentDate = DateTime.Parse("2022-09-09T17:33:38"),
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ ExchangeRate = 1.00m,
+ Amount = 100.00m,
+ PaidInvoices = new List()
+ {
+ new PaidInvoice
+ {
+ Uuid = "b7c8d2bf-cb4e-4f84-af89-c68b6731206a",
+ Series = "FA",
+ Number = "N0000216349",
+ CurrencyCode = "MXN",
+ PartialityNumber = 2,
+ PreviousBalance = 100.00m,
+ PaymentAmount = 100.00m,
+ RemainingBalance = 0.00m,
+ TaxObjectCode = "02",
+ Equivalence = 1.00m,
+ Subtotal = 1.00m,
+ PaidInvoiceTaxes = new List
+ {
+ new PaidInvoiceTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Exento",
+ TaxFlagCode = "T"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "003",
+ TaxTypeCode = "Exento",
+ TaxFlagCode = "T"
+ }
+ }
+ }
+ }
+ }
+ };
+
+
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ CurrencyCode = "XXX",
+ TypeCode = "P",
+ ExpeditionZipCode = "75700",
+ Issuer = issuer,
+ Recipient = recipient,
+ Complement = complement,
+ ExportCode = "01",
+ PaymentMethodCode = ""
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button11_Click(object sender, EventArgs e)
+ {
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ var complement = new Complement
+ {
+ Payment = new InvoicePayment
+ {
+ PaymentDate = DateTime.Parse("2022-05-26T12:00:00"),
+ PaymentFormCode = "03",
+ CurrencyCode = "MXN",
+ ExchangeRate = 1.00m,
+ Amount = 100.00m,
+ PaidInvoices = new List()
+ {
+ new PaidInvoice
+ {
+ Uuid = "a0476c1b-8829-448d-82ab-92d8b26be878",
+ CurrencyCode = "MXN",
+ PartialityNumber = 1,
+ PreviousBalance = 98.75m,
+ PaymentAmount = 98.75m,
+ RemainingBalance = 0.00m,
+ TaxObjectCode = "02",
+ Equivalence = 1.00m,
+ Subtotal = 100.00m,
+ PaidInvoiceTaxes = new List
+ {
+ new PaidInvoiceTax
+ {
+ TaxCode = "001",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.000000m,
+ TaxFlagCode = "R"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "R"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "003",
+ TaxTypeCode = "Cuota",
+ TaxRate = 0.040000m,
+ TaxFlagCode = "R"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Exento",
+ TaxFlagCode = "T"
+ }
+ }
+ }
+ }
+ }
+ };
+
+
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ CurrencyCode = "XXX",
+ TypeCode = "P",
+ ExpeditionZipCode = "75700",
+ Issuer = issuer,
+ Recipient = recipient,
+ Complement = complement,
+ ExportCode = "01",
+ PaymentMethodCode = ""
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button12_Click(object sender, EventArgs e)
+ {
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ var complement = new Complement
+ {
+ Payment = new InvoicePayment
+ {
+ PaymentDate = DateTime.Parse("2022-01-31T17:49:04"),
+ PaymentFormCode = "03",
+ CurrencyCode = "MXN",
+ ExchangeRate = 1.00m,
+ Amount = 921.23m,
+ PaidInvoices = new List()
+ {
+ new PaidInvoice
+ {
+ Uuid = "4a5d025b-813a-4acf-9f32-8fb61f4918ac",
+ CurrencyCode = "USD",
+ PartialityNumber = 1,
+ PreviousBalance = 41.76m,
+ PaymentAmount = 41.76m,
+ RemainingBalance = 0.00m,
+ TaxObjectCode = "02",
+ Equivalence = 0.045331m,
+ Subtotal = 36.00m,
+ PaidInvoiceTaxes = new List
+ {
+ new PaidInvoiceTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ }
+ }
+ }
+ }
+ }
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ CurrencyCode = "XXX",
+ TypeCode = "P",
+ ExpeditionZipCode = "42060",
+ Issuer = issuer,
+ Recipient = recipient,
+ Complement = complement,
+ ExportCode = "01",
+ PaymentMethodCode = ""
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button13_Click(object sender, EventArgs e)
+ {
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ var items = new List()
+ {
+ new InvoiceItem
+ {
+ ItemCode = "23151602",
+ ItemSku = "23151602",
+ Quantity = 1.00m,
+ UnitOfMeasurementCode = "H87",
+ Description = "Trituradora",
+ UnitPrice = 5000.00m,
+ TaxObjectCode = "02",
+ ItemTaxes = new List
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ }
+ }
+ },
+ new InvoiceItem
+ {
+ ItemCode = "23101510",
+ ItemSku = "23101510",
+ Quantity = 1.00m,
+ UnitOfMeasurementCode = "H87",
+ Description = "Pulidora",
+ UnitPrice = 10000.00m,
+ TaxObjectCode = "02",
+ ItemTaxes = new List
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ }
+ },
+ OnBehalfOf = new OnBehalfOf
+ {
+ Tin = "XIQB891116QE4",
+ LegalName = "BERENICE XIMO QUEZADA",
+ TaxRegimeCode = "612",
+ ZipCode = "40968"
+ }
+ },
+ new InvoiceItem
+ {
+ ItemCode = "23281703",
+ ItemSku = "23281703",
+ Quantity = 1.00m,
+ UnitOfMeasurementCode = "H87",
+ Description = "Maquina de arena",
+ UnitPrice = 30000.00m,
+ TaxObjectCode = "02",
+ ItemTaxes = new List
+ {
+ new InvoiceItemTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ }
+ },
+ OnBehalfOf = new OnBehalfOf
+ {
+ Tin = "IVD920810GU2",
+ LegalName = "INNOVACION VALOR Y DESARROLLO",
+ TaxRegimeCode = "601",
+ ZipCode = "63901"
+ }
+ }
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ CurrencyCode = "MXN",
+ TypeCode = "I",
+ ExpeditionZipCode = "26015",
+ Issuer = issuer,
+ Recipient = recipient,
+ Items = items,
+ ExportCode = "01",
+ PaymentMethodCode = "PPD",
+ PaymentFormCode = "99"
+ };
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button14_Click(object sender, EventArgs e)
+ {
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ var complement = new Complement
+ {
+ Payment = new InvoicePayment
+ {
+ PaymentDate = DateTime.Parse("2022-09-09T17:33:38"),
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ ExchangeRate = 1.00m,
+ Amount = 100.00m,
+ PaidInvoices = new List()
+ {
+ new PaidInvoice
+ {
+ Uuid = "b7c8d2bf-cb4e-4f84-af89-c68b6731206a",
+ Series = "FA",
+ Number = "N0000216349",
+ CurrencyCode = "MXN",
+ PartialityNumber = 2,
+ PreviousBalance = 100.00m,
+ PaymentAmount = 100.00m,
+ RemainingBalance = 0.00m,
+ TaxObjectCode = "02",
+ Equivalence = 1.00m,
+ Subtotal = 76.80m,
+ PaidInvoiceTaxes = new List
+ {
+ new PaidInvoiceTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Exento",
+ TaxFlagCode = "T"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate= 0.160000m,
+ TaxFlagCode = "T"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "003",
+ TaxTypeCode = "Exento",
+ TaxFlagCode = "T"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "003",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.080000m,
+ TaxFlagCode = "T"
+ }
+ }
+ }
+ }
+ }
+ };
+
+
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ CurrencyCode = "XXX",
+ TypeCode = "P",
+ ExpeditionZipCode = "75700",
+ Issuer = issuer,
+ Recipient = recipient,
+ Complement = complement,
+ ExportCode = "01",
+ PaymentMethodCode = ""
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button15_Click(object sender, EventArgs e)
+ {
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ var complement = new Complement
+ {
+ Payment = new InvoicePayment
+ {
+ PaymentDate = DateTime.Parse("2022-01-31T17:49:04"),
+ PaymentFormCode = "03",
+ CurrencyCode = "MXN",
+ ExchangeRate = 1.00m,
+ Amount = 921.23m,
+ PaidInvoices = new List()
+ {
+ new PaidInvoice
+ {
+ Uuid = "4a5d025b-813a-4acf-9f32-8fb61f4918ac",
+ CurrencyCode = "MXN",
+ PartialityNumber = 1,
+ PreviousBalance = 921.23m,
+ PaymentAmount = 921.23m,
+ RemainingBalance = 0.00m,
+ TaxObjectCode = "02",
+ Equivalence = 1.00m,
+ Subtotal = 794.1638m,
+ PaidInvoiceTaxes = new List
+ {
+ new PaidInvoiceTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ }
+ }
+ }
+ }
+ }
+ };
+
+
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ CurrencyCode = "XXX",
+ TypeCode = "P",
+ ExpeditionZipCode = "42060",
+ Issuer = issuer,
+ Recipient = recipient,
+ Complement = complement,
+ ExportCode = "01",
+ PaymentMethodCode = ""
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button16_Click(object sender, EventArgs e)
+ {
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ var complement = new Complement
+ {
+ Payment = new InvoicePayment
+ {
+ PaymentDate = DateTime.Parse("2022-06-06T00:00:00"),
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ ExchangeRate = 1.00m,
+ Amount = 100.00m,
+ PaidInvoices = new List()
+ {
+ new PaidInvoice
+ {
+ Uuid = "bfc36522-4b8e-45c4-8f14-d11b289f9eb7",
+ CurrencyCode = "MXN",
+ PartialityNumber = 1,
+ PreviousBalance = 100.00m,
+ PaymentAmount = 100.00m,
+ RemainingBalance = 0.00m,
+ TaxObjectCode = "08",
+ Equivalence = 1.00m,
+ Subtotal = 100.00m,
+ PaidInvoiceTaxes = new List
+ {
+ new PaidInvoiceTax
+ {
+ TaxCode = "001",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.000000m,
+ TaxFlagCode = "R"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "001",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.350000m,
+ TaxFlagCode = "R"
+ }
+ }
+ }
+ }
+ }
+ };
+
+
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ CurrencyCode = "XXX",
+ TypeCode = "P",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Complement = complement,
+ ExportCode = "01",
+ PaymentMethodCode = ""
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button17_Click(object sender, EventArgs e)
+ {
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ var complement = new Complement
+ {
+ Payment = new InvoicePayment
+ {
+ PaymentDate = DateTime.Parse("2022-06-06T00:00:00"),
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ ExchangeRate = 1.00m,
+ Amount = 100.00m,
+ PaidInvoices = new List()
+ {
+ new PaidInvoice
+ {
+ Uuid = "bfc36522-4b8e-45c4-8f14-d11b289f9eb7",
+ CurrencyCode = "MXN",
+ PartialityNumber = 1,
+ PreviousBalance = 100.00m,
+ PaymentAmount = 100.00m,
+ RemainingBalance = 0.00m,
+ TaxObjectCode = "07",
+ Equivalence = 1.00m,
+ Subtotal = 64.00m,
+ PaidInvoiceTaxes = new List
+ {
+ new PaidInvoiceTax
+ {
+ TaxCode = "003",
+ TaxTypeCode = "Cuota",
+ TaxRate = 0.000000m,
+ TaxFlagCode = "R"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "003",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.304000m,
+ TaxFlagCode = "R"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "003",
+ TaxTypeCode = "Cuota",
+ TaxRate = 0.040000m,
+ TaxFlagCode = "R"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "003",
+ TaxTypeCode = "Exento",
+ TaxFlagCode = "T"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "003",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.080000m,
+ TaxFlagCode = "T"
+ }
+ }
+ }
+ }
+ }
+ };
+
+
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ CurrencyCode = "XXX",
+ TypeCode = "P",
+ ExpeditionZipCode = "42060",
+ Issuer = issuer,
+ Recipient = recipient,
+ Complement = complement,
+ ExportCode = "01",
+ PaymentMethodCode = ""
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button18_Click(object sender, EventArgs e)
+ {
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ var complement = new Complement
+ {
+ Payment = new InvoicePayment
+ {
+ PaymentDate = DateTime.Parse("2022-06-06T00:00:00"),
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ ExchangeRate = 1.00m,
+ Amount = 100.00m,
+ PaidInvoices = new List()
+ {
+ new PaidInvoice
+ {
+ Uuid = "bfc36522-4b8e-45c4-8f14-d11b289f9eb7",
+ CurrencyCode = "MXN",
+ PartialityNumber = 1,
+ PreviousBalance = 100.00m,
+ PaymentAmount = 100.00m,
+ RemainingBalance = 0.00m,
+ TaxObjectCode = "06",
+ Equivalence = 1.00m,
+ Subtotal = 100.00m,
+ PaidInvoiceTaxes = new List
+ {
+ new PaidInvoiceTax
+ {
+ TaxCode = "001",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.000000m,
+ TaxFlagCode = "R"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "001",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.350000m,
+ TaxFlagCode = "R"
+ }
+ }
+ }
+ }
+ }
+ };
+
+
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ CurrencyCode = "XXX",
+ TypeCode = "P",
+ ExpeditionZipCode = "42060",
+ Issuer = issuer,
+ Recipient = recipient,
+ Complement = complement,
+ ExportCode = "01",
+ PaymentMethodCode = ""
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button19_Click(object sender, EventArgs e)
+ {
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Emisor KARLA FUENTE NOLASCO
+ var issuer = new InvoiceIssuer
+ {
+ Id = "0e82a655-5f0c-4e07-abab-8f322e4123ef"
+ };
+
+ // Receptor ESCUELA KEMPER URGATE
+ var recipient = new InvoiceRecipient
+ {
+ Id = "bd199ed8-02ef-47c0-919c-9479dd8ecae7"
+ };
+
+ var complement = new Complement
+ {
+ Payment = new InvoicePayment
+ {
+ PaymentDate = DateTime.Parse("2022-06-06T00:00:00"),
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ ExchangeRate = 1.00m,
+ Amount = 100.00m,
+ PaidInvoices = new List()
+ {
+ new PaidInvoice
+ {
+ Uuid = "bfc36522-4b8e-45c4-8f14-d11b289f9eb7",
+ CurrencyCode = "MXN",
+ PartialityNumber = 1,
+ PreviousBalance = 100.00m,
+ PaymentAmount = 100.00m,
+ RemainingBalance = 0.00m,
+ TaxObjectCode = "07",
+ Equivalence = 1.00m,
+ Subtotal = 63.40m,
+ PaidInvoiceTaxes = new List
+ {
+ new PaidInvoiceTax
+ {
+ TaxCode = "001",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.000000m,
+ TaxFlagCode = "R"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "001",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.350000m,
+ TaxFlagCode = "R"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "003",
+ TaxTypeCode = "Exento",
+ TaxFlagCode = "T"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "003",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.080000m,
+ TaxFlagCode = "T"
+ },
+ }
+ }
+ }
+ }
+ };
+
+
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ CurrencyCode = "XXX",
+ TypeCode = "P",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Complement = complement,
+ ExportCode = "01",
+ PaymentMethodCode = ""
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show($@"Factura {apiResponse.Data.Number} creada");
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+ }
+}
diff --git a/FiscalApi.Samples.NetFramework/PaymentComplementInvoiceReferenceForm.resx b/FiscalApi.Samples.NetFramework/PaymentComplementInvoiceReferenceForm.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/FiscalApi.Samples.NetFramework/PaymentComplementInvoiceReferenceForm.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/FiscalApi.Samples.NetFramework/PaymentComplementInvoiceValueForm.Designer.cs b/FiscalApi.Samples.NetFramework/PaymentComplementInvoiceValueForm.Designer.cs
new file mode 100644
index 0000000..2debc8a
--- /dev/null
+++ b/FiscalApi.Samples.NetFramework/PaymentComplementInvoiceValueForm.Designer.cs
@@ -0,0 +1,309 @@
+namespace FiscalApi.Samples.NetFramework
+{
+ partial class PaymentComplementInvoiceForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.groupBox1 = new System.Windows.Forms.GroupBox();
+ this.button19 = new System.Windows.Forms.Button();
+ this.button18 = new System.Windows.Forms.Button();
+ this.button17 = new System.Windows.Forms.Button();
+ this.button16 = new System.Windows.Forms.Button();
+ this.button15 = new System.Windows.Forms.Button();
+ this.button14 = new System.Windows.Forms.Button();
+ this.button13 = new System.Windows.Forms.Button();
+ this.button12 = new System.Windows.Forms.Button();
+ this.button11 = new System.Windows.Forms.Button();
+ this.button10 = new System.Windows.Forms.Button();
+ this.button9 = new System.Windows.Forms.Button();
+ this.button8 = new System.Windows.Forms.Button();
+ this.button7 = new System.Windows.Forms.Button();
+ this.button6 = new System.Windows.Forms.Button();
+ this.button5 = new System.Windows.Forms.Button();
+ this.button4 = new System.Windows.Forms.Button();
+ this.button3 = new System.Windows.Forms.Button();
+ this.button2 = new System.Windows.Forms.Button();
+ this.button1 = new System.Windows.Forms.Button();
+ this.groupBox1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // groupBox1
+ //
+ this.groupBox1.Controls.Add(this.button19);
+ this.groupBox1.Controls.Add(this.button18);
+ this.groupBox1.Controls.Add(this.button17);
+ this.groupBox1.Controls.Add(this.button16);
+ this.groupBox1.Controls.Add(this.button15);
+ this.groupBox1.Controls.Add(this.button14);
+ this.groupBox1.Controls.Add(this.button13);
+ this.groupBox1.Controls.Add(this.button12);
+ this.groupBox1.Controls.Add(this.button11);
+ this.groupBox1.Controls.Add(this.button10);
+ this.groupBox1.Controls.Add(this.button9);
+ this.groupBox1.Controls.Add(this.button8);
+ this.groupBox1.Controls.Add(this.button7);
+ this.groupBox1.Controls.Add(this.button6);
+ this.groupBox1.Controls.Add(this.button5);
+ this.groupBox1.Controls.Add(this.button4);
+ this.groupBox1.Controls.Add(this.button3);
+ this.groupBox1.Controls.Add(this.button2);
+ this.groupBox1.Controls.Add(this.button1);
+ this.groupBox1.Location = new System.Drawing.Point(12, 12);
+ this.groupBox1.Name = "groupBox1";
+ this.groupBox1.Size = new System.Drawing.Size(403, 691);
+ this.groupBox1.TabIndex = 0;
+ this.groupBox1.TabStop = false;
+ this.groupBox1.Text = "groupBox1";
+ this.groupBox1.Enter += new System.EventHandler(this.groupBox1_Enter);
+ //
+ // button19
+ //
+ this.button19.Location = new System.Drawing.Point(201, 549);
+ this.button19.Name = "button19";
+ this.button19.Size = new System.Drawing.Size(189, 60);
+ this.button19.TabIndex = 18;
+ this.button19.Text = "Factura pago - pago objeto impuesto 07. 001 y 003 - ISR y IEPS";
+ this.button19.UseVisualStyleBackColor = true;
+ this.button19.Click += new System.EventHandler(this.button19_Click);
+ //
+ // button18
+ //
+ this.button18.Location = new System.Drawing.Point(201, 483);
+ this.button18.Name = "button18";
+ this.button18.Size = new System.Drawing.Size(189, 60);
+ this.button18.TabIndex = 17;
+ this.button18.Text = "Factura pago - pago objeto impuesto 06. 001 - ISR";
+ this.button18.UseVisualStyleBackColor = true;
+ this.button18.Click += new System.EventHandler(this.button18_Click);
+ //
+ // button17
+ //
+ this.button17.Location = new System.Drawing.Point(201, 417);
+ this.button17.Name = "button17";
+ this.button17.Size = new System.Drawing.Size(189, 60);
+ this.button17.TabIndex = 16;
+ this.button17.Text = "Factura pago - pago objeto impuesto 07. 003 - IEPS";
+ this.button17.UseVisualStyleBackColor = true;
+ this.button17.Click += new System.EventHandler(this.button17_Click);
+ //
+ // button16
+ //
+ this.button16.Location = new System.Drawing.Point(201, 351);
+ this.button16.Name = "button16";
+ this.button16.Size = new System.Drawing.Size(189, 60);
+ this.button16.TabIndex = 15;
+ this.button16.Text = "Factura pago - pago objeto impuesto 08. 001 - ISR";
+ this.button16.UseVisualStyleBackColor = true;
+ this.button16.Click += new System.EventHandler(this.button16_Click);
+ //
+ // button15
+ //
+ this.button15.Location = new System.Drawing.Point(201, 285);
+ this.button15.Name = "button15";
+ this.button15.Size = new System.Drawing.Size(189, 60);
+ this.button15.TabIndex = 14;
+ this.button15.Text = "Factura pago - pago en MXN y DR en MXN";
+ this.button15.UseVisualStyleBackColor = true;
+ this.button15.Click += new System.EventHandler(this.button15_Click);
+ //
+ // button14
+ //
+ this.button14.Location = new System.Drawing.Point(201, 219);
+ this.button14.Name = "button14";
+ this.button14.Size = new System.Drawing.Size(189, 60);
+ this.button14.TabIndex = 13;
+ this.button14.Text = "Factura pago - pago solo traslados";
+ this.button14.UseVisualStyleBackColor = true;
+ this.button14.Click += new System.EventHandler(this.button14_Click);
+ //
+ // button13
+ //
+ this.button13.Location = new System.Drawing.Point(201, 153);
+ this.button13.Name = "button13";
+ this.button13.Size = new System.Drawing.Size(189, 60);
+ this.button13.TabIndex = 12;
+ this.button13.Text = "Factura pago - pago cobro por cuenta de terceros";
+ this.button13.UseVisualStyleBackColor = true;
+ this.button13.Click += new System.EventHandler(this.button13_Click);
+ //
+ // button12
+ //
+ this.button12.Location = new System.Drawing.Point(201, 87);
+ this.button12.Name = "button12";
+ this.button12.Size = new System.Drawing.Size(189, 60);
+ this.button12.TabIndex = 11;
+ this.button12.Text = "Factura pago - pago en MXN y DR en USD";
+ this.button12.UseVisualStyleBackColor = true;
+ this.button12.Click += new System.EventHandler(this.button12_Click);
+ //
+ // button11
+ //
+ this.button11.Location = new System.Drawing.Point(201, 21);
+ this.button11.Name = "button11";
+ this.button11.Size = new System.Drawing.Size(189, 60);
+ this.button11.TabIndex = 10;
+ this.button11.Text = "Factura pago - pago con IVA exento y retenciones";
+ this.button11.UseVisualStyleBackColor = true;
+ this.button11.Click += new System.EventHandler(this.button11_Click);
+ //
+ // button10
+ //
+ this.button10.Location = new System.Drawing.Point(6, 615);
+ this.button10.Name = "button10";
+ this.button10.Size = new System.Drawing.Size(189, 60);
+ this.button10.TabIndex = 9;
+ this.button10.Text = "Factura pago - pago con IVA exento";
+ this.button10.UseVisualStyleBackColor = true;
+ this.button10.Click += new System.EventHandler(this.button10_Click);
+ //
+ // button9
+ //
+ this.button9.Location = new System.Drawing.Point(6, 549);
+ this.button9.Name = "button9";
+ this.button9.Size = new System.Drawing.Size(189, 60);
+ this.button9.TabIndex = 8;
+ this.button9.Text = "Factura pago - IVA y retenciones al 16%";
+ this.button9.UseVisualStyleBackColor = true;
+ this.button9.Click += new System.EventHandler(this.button9_Click);
+ //
+ // button8
+ //
+ this.button8.Location = new System.Drawing.Point(6, 483);
+ this.button8.Name = "button8";
+ this.button8.Size = new System.Drawing.Size(189, 60);
+ this.button8.TabIndex = 7;
+ this.button8.Text = "Factura pago - pago misma monedaP y monedaDR";
+ this.button8.UseVisualStyleBackColor = true;
+ this.button8.Click += new System.EventHandler(this.button8_Click);
+ //
+ // button7
+ //
+ this.button7.Location = new System.Drawing.Point(6, 417);
+ this.button7.Name = "button7";
+ this.button7.Size = new System.Drawing.Size(189, 60);
+ this.button7.TabIndex = 6;
+ this.button7.Text = "Factura pago - pago en USD";
+ this.button7.UseVisualStyleBackColor = true;
+ this.button7.Click += new System.EventHandler(this.button7_Click);
+ //
+ // button6
+ //
+ this.button6.Location = new System.Drawing.Point(6, 351);
+ this.button6.Name = "button6";
+ this.button6.Size = new System.Drawing.Size(189, 60);
+ this.button6.TabIndex = 5;
+ this.button6.Text = "Factura pago - pago EUR y DR USD";
+ this.button6.UseVisualStyleBackColor = true;
+ this.button6.Click += new System.EventHandler(this.button6_Click);
+ //
+ // button5
+ //
+ this.button5.Location = new System.Drawing.Point(6, 285);
+ this.button5.Name = "button5";
+ this.button5.Size = new System.Drawing.Size(189, 60);
+ this.button5.TabIndex = 4;
+ this.button5.Text = "Factura pago - pago parcialidades";
+ this.button5.UseVisualStyleBackColor = true;
+ this.button5.Click += new System.EventHandler(this.button5_Click);
+ //
+ // button4
+ //
+ this.button4.Location = new System.Drawing.Point(6, 219);
+ this.button4.Name = "button4";
+ this.button4.Size = new System.Drawing.Size(189, 60);
+ this.button4.TabIndex = 3;
+ this.button4.Text = "Factura pago - sin impuestos";
+ this.button4.UseVisualStyleBackColor = true;
+ this.button4.Click += new System.EventHandler(this.button4_Click);
+ //
+ // button3
+ //
+ this.button3.Location = new System.Drawing.Point(6, 153);
+ this.button3.Name = "button3";
+ this.button3.Size = new System.Drawing.Size(189, 60);
+ this.button3.TabIndex = 2;
+ this.button3.Text = "Factura pago - solo retenciones";
+ this.button3.UseVisualStyleBackColor = true;
+ this.button3.Click += new System.EventHandler(this.button3_Click);
+ //
+ // button2
+ //
+ this.button2.Location = new System.Drawing.Point(6, 87);
+ this.button2.Name = "button2";
+ this.button2.Size = new System.Drawing.Size(189, 60);
+ this.button2.TabIndex = 1;
+ this.button2.Text = "Factura pago - pagos varios DR";
+ this.button2.UseVisualStyleBackColor = true;
+ this.button2.Click += new System.EventHandler(this.button2_Click);
+ //
+ // button1
+ //
+ this.button1.Location = new System.Drawing.Point(6, 21);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(189, 60);
+ this.button1.TabIndex = 0;
+ this.button1.Text = "Factura pago - RFC genérico";
+ this.button1.UseVisualStyleBackColor = true;
+ this.button1.Click += new System.EventHandler(this.button1_Click);
+ //
+ // PaymentComplementInvoiceForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(427, 715);
+ this.Controls.Add(this.groupBox1);
+ this.Name = "PaymentComplementInvoiceForm";
+ this.Text = "PaymentComplementInvoiceForm";
+ this.groupBox1.ResumeLayout(false);
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.GroupBox groupBox1;
+ private System.Windows.Forms.Button button1;
+ private System.Windows.Forms.Button button19;
+ private System.Windows.Forms.Button button18;
+ private System.Windows.Forms.Button button17;
+ private System.Windows.Forms.Button button16;
+ private System.Windows.Forms.Button button15;
+ private System.Windows.Forms.Button button14;
+ private System.Windows.Forms.Button button13;
+ private System.Windows.Forms.Button button12;
+ private System.Windows.Forms.Button button11;
+ private System.Windows.Forms.Button button10;
+ private System.Windows.Forms.Button button9;
+ private System.Windows.Forms.Button button8;
+ private System.Windows.Forms.Button button7;
+ private System.Windows.Forms.Button button6;
+ private System.Windows.Forms.Button button5;
+ private System.Windows.Forms.Button button4;
+ private System.Windows.Forms.Button button3;
+ private System.Windows.Forms.Button button2;
+ }
+}
\ No newline at end of file
diff --git a/FiscalApi.Samples.NetFramework/PaymentComplementInvoiceValueForm.cs b/FiscalApi.Samples.NetFramework/PaymentComplementInvoiceValueForm.cs
new file mode 100644
index 0000000..7477c13
--- /dev/null
+++ b/FiscalApi.Samples.NetFramework/PaymentComplementInvoiceValueForm.cs
@@ -0,0 +1,2528 @@
+using Fiscalapi.Common;
+using Fiscalapi.Models;
+using Fiscalapi.Services;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Windows.Forms;
+
+namespace FiscalApi.Samples.NetFramework
+{
+ public partial class PaymentComplementInvoiceForm : Form
+ {
+ private FiscalapiSettings _settings;
+
+ public PaymentComplementInvoiceForm(FiscalapiSettings settings)
+ {
+ InitializeComponent();
+ _settings = settings;
+ }
+
+ private async void button18_Click(object sender, EventArgs e)
+ {
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "601",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "URE180429TM6",
+ LegalName = "UNIVERSIDAD ROBOTICA ESPAÑOLA",
+ ZipCode = "86991",
+ TaxRegimeCode = "601",
+ CfdiUseCode = "CP01",
+ Email = "someone@somewhere.com"
+ };
+
+ var complement = new Complement
+ {
+ Payment = new InvoicePayment
+ {
+ PaymentDate = DateTime.Parse("2022-06-06T00:00:00"),
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ ExchangeRate = 1.00m,
+ Amount = 100.00m,
+ PaidInvoices = new List()
+ {
+ new PaidInvoice
+ {
+ Uuid = "bfc36522-4b8e-45c4-8f14-d11b289f9eb7",
+ CurrencyCode = "MXN",
+ PartialityNumber = 1,
+ PreviousBalance = 100.00m,
+ PaymentAmount = 100.00m,
+ RemainingBalance = 0.00m,
+ TaxObjectCode = "06",
+ Equivalence = 1.00m,
+ Subtotal = 100.00m,
+ PaidInvoiceTaxes = new List
+ {
+ new PaidInvoiceTax
+ {
+ TaxCode = "001",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.000000m,
+ TaxFlagCode = "R"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "001",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.350000m,
+ TaxFlagCode = "R"
+ }
+ }
+ }
+ }
+ }
+ };
+
+
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ CurrencyCode = "XXX",
+ TypeCode = "P",
+ ExpeditionZipCode = "42060",
+ Issuer = issuer,
+ Recipient = recipient,
+ Complement = complement,
+ ExportCode = "01",
+ PaymentMethodCode = ""
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button1_Click(object sender, EventArgs e)
+ {
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "601",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "XAXX010101000",
+ LegalName = "ESCUELA KEMPER URGATE",
+ ZipCode = "75700",
+ TaxRegimeCode = "616",
+ CfdiUseCode = "CP01",
+ Email = "someone@somewhere.com"
+ };
+
+ var complement = new Complement
+ {
+ Payment = new InvoicePayment
+ {
+ PaymentDate = DateTime.Parse("2022-09-09T17:33:38"),
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ ExchangeRate = 1m,
+ Amount = 6778.00m,
+ PaidInvoices = new List()
+ {
+ new PaidInvoice
+ {
+ Uuid = "b7c8d2bf-cb4e-4f84-af89-c68b6731206a",
+ Series = "FA",
+ Number = "N0000216349",
+ CurrencyCode = "MXN",
+ PartialityNumber = 2,
+ PreviousBalance = 6777.41m,
+ PaymentAmount = 6777.41m,
+ RemainingBalance = 0.00m,
+ TaxObjectCode = "02",
+ Equivalence = 1m,
+ Subtotal = 5842.600000m,
+ PaidInvoiceTaxes = new List
+ {
+ new PaidInvoiceTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ }
+ }
+ },
+ new PaidInvoice
+ {
+ Uuid = "94f4e541-bb38-4355-b779-02d337dc9720",
+ Series = "FA",
+ Number = "SI000032690",
+ CurrencyCode = "MXN",
+ PartialityNumber = 1,
+ PreviousBalance = 9610.81m,
+ PaymentAmount = 0.59m,
+ RemainingBalance = 9610.22m,
+ TaxObjectCode = "02",
+ Equivalence = 1m,
+ Subtotal = 0.510000m,
+ PaidInvoiceTaxes = new List
+ {
+ new PaidInvoiceTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ }
+ }
+ }
+ }
+ }
+ };
+
+
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ CurrencyCode = "XXX",
+ TypeCode = "P",
+ ExpeditionZipCode = "75700",
+ Issuer = issuer,
+ Recipient = recipient,
+ Complement = complement,
+ ExportCode = "01",
+ PaymentMethodCode = ""
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button2_Click(object sender, EventArgs e)
+ {
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "601",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "URE180429TM6",
+ LegalName = "UNIVERSIDAD ROBOTICA ESPAÑOLA",
+ ZipCode = "86991",
+ TaxRegimeCode = "601",
+ CfdiUseCode = "CP01",
+ Email = "someone@somewhere.com"
+ };
+
+ var complement = new Complement
+ {
+ Payment = new InvoicePayment
+ {
+ PaymentDate = DateTime.Parse("2022-09-09T17:33:38"),
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ ExchangeRate = 1m,
+ Amount = 323,
+ PaidInvoices = new List()
+ {
+ new PaidInvoice
+ {
+ Uuid = "b7c8d2bf-cb4e-4f84-af89-c68b6731206a",
+ Series = "FA",
+ Number = "N0000216349",
+ CurrencyCode = "MXN",
+ PartialityNumber = 2,
+ PreviousBalance = 200.00m,
+ PaymentAmount = 100.00m,
+ RemainingBalance = 100.00m,
+ TaxObjectCode = "02",
+ Equivalence = 1m,
+ Subtotal = 10.00m,
+ PaidInvoiceTaxes = new List
+ {
+ new PaidInvoiceTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ }
+ }
+ },
+ new PaidInvoice
+ {
+ Uuid = "94f4e541-bb38-4355-b779-02d337dc9720",
+ Series = "FA",
+ Number = "SI000032690",
+ CurrencyCode = "MXN",
+ PartialityNumber = 1,
+ PreviousBalance = 100.00m,
+ PaymentAmount = 100.00m,
+ RemainingBalance = 0.00m,
+ TaxObjectCode = "02",
+ Equivalence = 1m,
+ Subtotal = 100.00m,
+ PaidInvoiceTaxes = new List
+ {
+ new PaidInvoiceTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ }
+ }
+ }
+ }
+ }
+ };
+
+
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ CurrencyCode = "XXX",
+ TypeCode = "P",
+ ExpeditionZipCode = "75700",
+ Issuer = issuer,
+ Recipient = recipient,
+ Complement = complement,
+ ExportCode = "01",
+ PaymentMethodCode = ""
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button3_Click(object sender, EventArgs e)
+ {
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "601",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "URE180429TM6",
+ LegalName = "UNIVERSIDAD ROBOTICA ESPAÑOLA",
+ ZipCode = "86991",
+ TaxRegimeCode = "601",
+ CfdiUseCode = "CP01",
+ Email = "someone@somewhere.com"
+ };
+
+ var complement = new Complement
+ {
+ Payment = new InvoicePayment
+ {
+ PaymentDate = DateTime.Parse("2022-06-06T00:00:00"),
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ ExchangeRate = 1m,
+ Amount = 100.00m,
+ PaidInvoices = new List()
+ {
+ new PaidInvoice
+ {
+ Uuid = "bfc36522-4b8e-45c4-8f14-d11b289f9eb7",
+ CurrencyCode = "MXN",
+ PartialityNumber = 1,
+ PreviousBalance = 100.00m,
+ PaymentAmount = 100.00m,
+ RemainingBalance = 0.00m,
+ TaxObjectCode = "02",
+ Equivalence = 1m,
+ Subtotal = 100.00m,
+ PaidInvoiceTaxes = new List
+ {
+ new PaidInvoiceTax
+ {
+ TaxCode = "001",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.000000m,
+ TaxFlagCode = "R"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "001",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.350000m,
+ TaxFlagCode = "R"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.000000m,
+ TaxFlagCode = "R"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "R"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "003",
+ TaxTypeCode = "Cuota",
+ TaxRate = 0.000000m,
+ TaxFlagCode = "R"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "003",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.304000m,
+ TaxFlagCode = "R"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "003",
+ TaxTypeCode = "Cuota",
+ TaxRate = 0.040000m,
+ TaxFlagCode = "R"
+ }
+ }
+ }
+ }
+ }
+ };
+
+
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ CurrencyCode = "XXX",
+ TypeCode = "P",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Complement = complement,
+ ExportCode = "01",
+ PaymentMethodCode = ""
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button4_Click(object sender, EventArgs e)
+ {
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "601",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "URE180429TM6",
+ LegalName = "UNIVERSIDAD ROBOTICA ESPAÑOLA",
+ ZipCode = "86991",
+ TaxRegimeCode = "601",
+ CfdiUseCode = "CP01",
+ Email = "someone@somewhere.com"
+ };
+
+ var complement = new Complement
+ {
+ Payment = new InvoicePayment
+ {
+ PaymentDate = DateTime.Parse("2021-12-15T00:00:00"),
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ ExchangeRate = 1m,
+ Amount = 200.0m,
+ PaidInvoices = new List()
+ {
+ new PaidInvoice
+ {
+ Uuid = "bfc36522-4b8e-45c4-8f14-d11b289f9eb7",
+ Number = "N0000216349",
+ CurrencyCode = "MXN",
+ PartialityNumber = 1,
+ PreviousBalance = 200.00m,
+ PaymentAmount = 200.00m,
+ RemainingBalance = 0.00m,
+ TaxObjectCode = "01",
+ Equivalence = 1m,
+ Subtotal = 20.00m
+ }
+ }
+ }
+ };
+
+
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ CurrencyCode = "XXX",
+ TypeCode = "P",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Complement = complement,
+ ExportCode = "01",
+ PaymentMethodCode = ""
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button19_Click(object sender, EventArgs e)
+ {
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "601",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "URE180429TM6",
+ LegalName = "UNIVERSIDAD ROBOTICA ESPAÑOLA",
+ ZipCode = "86991",
+ TaxRegimeCode = "601",
+ CfdiUseCode = "CP01",
+ Email = "someone@somewhere.com"
+ };
+
+ var complement = new Complement
+ {
+ Payment = new InvoicePayment
+ {
+ PaymentDate = DateTime.Parse("2022-06-06T00:00:00"),
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ ExchangeRate = 1.00m,
+ Amount = 100.00m,
+ PaidInvoices = new List()
+ {
+ new PaidInvoice
+ {
+ Uuid = "bfc36522-4b8e-45c4-8f14-d11b289f9eb7",
+ CurrencyCode = "MXN",
+ PartialityNumber = 1,
+ PreviousBalance = 100.00m,
+ PaymentAmount = 100.00m,
+ RemainingBalance = 0.00m,
+ TaxObjectCode = "07",
+ Equivalence = 1.00m,
+ Subtotal = 63.40m,
+ PaidInvoiceTaxes = new List
+ {
+ new PaidInvoiceTax
+ {
+ TaxCode = "001",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.000000m,
+ TaxFlagCode = "R"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "001",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.350000m,
+ TaxFlagCode = "R"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "003",
+ TaxTypeCode = "Exento",
+ TaxFlagCode = "T"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "003",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.080000m,
+ TaxFlagCode = "T"
+ },
+ }
+ }
+ }
+ }
+ };
+
+
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ CurrencyCode = "XXX",
+ TypeCode = "P",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Complement = complement,
+ ExportCode = "01",
+ PaymentMethodCode = ""
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button17_Click(object sender, EventArgs e)
+ {
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "601",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "URE180429TM6",
+ LegalName = "UNIVERSIDAD ROBOTICA ESPAÑOLA",
+ ZipCode = "86991",
+ TaxRegimeCode = "601",
+ CfdiUseCode = "CP01",
+ Email = "someone@somewhere.com"
+ };
+
+ var complement = new Complement
+ {
+ Payment = new InvoicePayment
+ {
+ PaymentDate = DateTime.Parse("2022-06-06T00:00:00"),
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ ExchangeRate = 1.00m,
+ Amount = 100.00m,
+ PaidInvoices = new List()
+ {
+ new PaidInvoice
+ {
+ Uuid = "bfc36522-4b8e-45c4-8f14-d11b289f9eb7",
+ CurrencyCode = "MXN",
+ PartialityNumber = 1,
+ PreviousBalance = 100.00m,
+ PaymentAmount = 100.00m,
+ RemainingBalance = 0.00m,
+ TaxObjectCode = "07",
+ Equivalence = 1.00m,
+ Subtotal = 64.00m,
+ PaidInvoiceTaxes = new List
+ {
+ new PaidInvoiceTax
+ {
+ TaxCode = "003",
+ TaxTypeCode = "Cuota",
+ TaxRate = 0.000000m,
+ TaxFlagCode = "R"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "003",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.304000m,
+ TaxFlagCode = "R"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "003",
+ TaxTypeCode = "Cuota",
+ TaxRate = 0.040000m,
+ TaxFlagCode = "R"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "003",
+ TaxTypeCode = "Exento",
+ TaxFlagCode = "T"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "003",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.080000m,
+ TaxFlagCode = "T"
+ }
+ }
+ }
+ }
+ }
+ };
+
+
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ CurrencyCode = "XXX",
+ TypeCode = "P",
+ ExpeditionZipCode = "42060",
+ Issuer = issuer,
+ Recipient = recipient,
+ Complement = complement,
+ ExportCode = "01",
+ PaymentMethodCode = ""
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button16_Click(object sender, EventArgs e)
+ {
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "601",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "URE180429TM6",
+ LegalName = "UNIVERSIDAD ROBOTICA ESPAÑOLA",
+ ZipCode = "86991",
+ TaxRegimeCode = "601",
+ CfdiUseCode = "CP01",
+ Email = "someone@somewhere.com"
+ };
+
+ var complement = new Complement
+ {
+ Payment = new InvoicePayment
+ {
+ PaymentDate = DateTime.Parse("2022-06-06T00:00:00"),
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ ExchangeRate = 1.00m,
+ Amount = 100.00m,
+ PaidInvoices = new List()
+ {
+ new PaidInvoice
+ {
+ Uuid = "bfc36522-4b8e-45c4-8f14-d11b289f9eb7",
+ CurrencyCode = "MXN",
+ PartialityNumber = 1,
+ PreviousBalance = 100.00m,
+ PaymentAmount = 100.00m,
+ RemainingBalance = 0.00m,
+ TaxObjectCode = "08",
+ Equivalence = 1.00m,
+ Subtotal = 100.00m,
+ PaidInvoiceTaxes = new List
+ {
+ new PaidInvoiceTax
+ {
+ TaxCode = "001",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.000000m,
+ TaxFlagCode = "R"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "001",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.350000m,
+ TaxFlagCode = "R"
+ }
+ }
+ }
+ }
+ }
+ };
+
+
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ CurrencyCode = "XXX",
+ TypeCode = "P",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Complement = complement,
+ ExportCode = "01",
+ PaymentMethodCode = ""
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button15_Click(object sender, EventArgs e)
+ {
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "601",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "URE180429TM6",
+ LegalName = "UNIVERSIDAD ROBOTICA ESPAÑOLA",
+ ZipCode = "86991",
+ TaxRegimeCode = "601",
+ CfdiUseCode = "CP01",
+ Email = "someone@somewhere.com"
+ };
+
+ var complement = new Complement
+ {
+ Payment = new InvoicePayment
+ {
+ PaymentDate = DateTime.Parse("2022-01-31T17:49:04"),
+ PaymentFormCode = "03",
+ CurrencyCode = "MXN",
+ ExchangeRate = 1.00m,
+ Amount = 921.23m,
+ PaidInvoices = new List()
+ {
+ new PaidInvoice
+ {
+ Uuid = "4a5d025b-813a-4acf-9f32-8fb61f4918ac",
+ CurrencyCode = "MXN",
+ PartialityNumber = 1,
+ PreviousBalance = 921.23m,
+ PaymentAmount = 921.23m,
+ RemainingBalance = 0.00m,
+ TaxObjectCode = "02",
+ Equivalence = 1.00m,
+ Subtotal = 794.1638m,
+ PaidInvoiceTaxes = new List
+ {
+ new PaidInvoiceTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ }
+ }
+ }
+ }
+ }
+ };
+
+
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ CurrencyCode = "XXX",
+ TypeCode = "P",
+ ExpeditionZipCode = "42060",
+ Issuer = issuer,
+ Recipient = recipient,
+ Complement = complement,
+ ExportCode = "01",
+ PaymentMethodCode = ""
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button9_Click(object sender, EventArgs e)
+ {
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "601",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "URE180429TM6",
+ LegalName = "UNIVERSIDAD ROBOTICA ESPAÑOLA",
+ ZipCode = "86991",
+ TaxRegimeCode = "601",
+ CfdiUseCode = "CP01",
+ Email = "someone@somewhere.com"
+ };
+
+ var complement = new Complement
+ {
+ Payment = new InvoicePayment
+ {
+ PaymentDate = DateTime.Parse("2023-11-29T12:00:00"),
+ PaymentFormCode = "03",
+ CurrencyCode = "USD",
+ ExchangeRate = 1.00m,
+ Amount = 100.00m,
+ PaidInvoices = new List()
+ {
+ new PaidInvoice
+ {
+ Uuid = "a0476c1b-8829-448d-82ab-92d8b26be878",
+ CurrencyCode = "MXN",
+ PartialityNumber = 1,
+ PreviousBalance = 98.75m,
+ PaymentAmount = 98.75m,
+ RemainingBalance = 0.00m,
+ TaxObjectCode = "02",
+ Equivalence = 1.00m,
+ Subtotal = 100.00m,
+ PaidInvoiceTaxes = new List
+ {
+ new PaidInvoiceTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "R"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ }
+ }
+ }
+ }
+ }
+ };
+
+
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ CurrencyCode = "XXX",
+ TypeCode = "P",
+ ExpeditionZipCode = "06370",
+ Issuer = issuer,
+ Recipient = recipient,
+ Complement = complement,
+ ExportCode = "01",
+ PaymentMethodCode = ""
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private void groupBox1_Enter(object sender, EventArgs e)
+ {
+
+ }
+
+ private async void button5_Click(object sender, EventArgs e)
+ {
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "601",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "URE180429TM6",
+ LegalName = "UNIVERSIDAD ROBOTICA ESPAÑOLA",
+ ZipCode = "86991",
+ TaxRegimeCode = "601",
+ CfdiUseCode = "CP01",
+ Email = "someone@somewhere.com"
+ };
+
+ var complement = new Complement
+ {
+ Payment = new InvoicePayment
+ {
+ PaymentDate = DateTime.Parse("2021-12-15T00:00:00"),
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ ExchangeRate = 1m,
+ Amount = 116.0m,
+ PaidInvoices = new List()
+ {
+ new PaidInvoice
+ {
+ Uuid = "bfc36522-4b8e-45c4-8f14-d11b289f9eb7",
+ Number = "N0000216349",
+ CurrencyCode = "MXN",
+ PartialityNumber = 1,
+ PreviousBalance = 200.00m,
+ PaymentAmount = 100.00m,
+ RemainingBalance = 100.00m,
+ TaxObjectCode = "02",
+ Equivalence = 1m,
+ Subtotal = 100.00m,
+ PaidInvoiceTaxes = new List
+ {
+ new PaidInvoiceTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ }
+ }
+ }
+ }
+ }
+ };
+
+
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ CurrencyCode = "XXX",
+ TypeCode = "P",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Complement = complement,
+ ExportCode = "01",
+ PaymentMethodCode = ""
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button6_Click(object sender, EventArgs e)
+ {
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "601",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "URE180429TM6",
+ LegalName = "UNIVERSIDAD ROBOTICA ESPAÑOLA",
+ ZipCode = "86991",
+ TaxRegimeCode = "601",
+ CfdiUseCode = "CP01",
+ Email = "someone@somewhere.com"
+ };
+
+ var complement = new Complement
+ {
+ Payment = new InvoicePayment
+ {
+ PaymentDate = DateTime.Parse("2022-01-31T17:49:04"),
+ PaymentFormCode = "03",
+ CurrencyCode = "EUR",
+ ExchangeRate = 25.00m,
+ Amount = 100.0m,
+ PaidInvoices = new List()
+ {
+ new PaidInvoice
+ {
+ Uuid = "4a5d025b-813a-4acf-9f32-8fb61f4918ac",
+ CurrencyCode = "USD",
+ PartialityNumber = 1,
+ PreviousBalance = 116.00m,
+ PaymentAmount = 116.00m,
+ RemainingBalance = 0.00m,
+ TaxObjectCode = "02",
+ Equivalence = 1.160m,
+ Subtotal = 100.00m,
+ PaidInvoiceTaxes = new List
+ {
+ new PaidInvoiceTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ }
+ }
+ }
+ }
+ }
+ };
+
+
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ CurrencyCode = "XXX",
+ TypeCode = "P",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Complement = complement,
+ ExportCode = "01",
+ PaymentMethodCode = ""
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button7_Click(object sender, EventArgs e)
+ {
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "601",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "URE180429TM6",
+ LegalName = "UNIVERSIDAD ROBOTICA ESPAÑOLA",
+ ZipCode = "86991",
+ TaxRegimeCode = "601",
+ CfdiUseCode = "CP01",
+ Email = "someone@somewhere.com"
+ };
+
+ var complement = new Complement
+ {
+ Payment = new InvoicePayment
+ {
+ PaymentDate = DateTime.Parse("2022-01-31T17:49:04"),
+ PaymentFormCode = "03",
+ CurrencyCode = "USD",
+ ExchangeRate = 20.64m,
+ Amount = 5.62m,
+ PaidInvoices = new List()
+ {
+ new PaidInvoice
+ {
+ Uuid = "4a5d025b-813a-4acf-9f32-8fb61f4918ac",
+ CurrencyCode = "MXN",
+ PartialityNumber = 1,
+ PreviousBalance = 116.00m,
+ PaymentAmount = 116.00m,
+ RemainingBalance = 0.00m,
+ TaxObjectCode = "02",
+ Equivalence = 20.64m,
+ Subtotal = 100.00m,
+ PaidInvoiceTaxes = new List
+ {
+ new PaidInvoiceTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ }
+ }
+ }
+ }
+ }
+ };
+
+
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ CurrencyCode = "XXX",
+ TypeCode = "P",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Complement = complement,
+ ExportCode = "01",
+ PaymentMethodCode = ""
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button8_Click(object sender, EventArgs e)
+ {
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "601",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "URE180429TM6",
+ LegalName = "UNIVERSIDAD ROBOTICA ESPAÑOLA",
+ ZipCode = "86991",
+ TaxRegimeCode = "601",
+ CfdiUseCode = "CP01",
+ Email = "someone@somewhere.com"
+ };
+
+ var complement = new Complement
+ {
+ Payment = new InvoicePayment
+ {
+ PaymentDate = DateTime.Parse("2022-01-31T17:49:04"),
+ PaymentFormCode = "03",
+ CurrencyCode = "USD",
+ ExchangeRate = 18.012300m,
+ Amount = 1160.00m,
+ PaidInvoices = new List()
+ {
+ new PaidInvoice
+ {
+ Uuid = "4a5d025b-813a-4acf-9f32-8fb61f4918ac",
+ CurrencyCode = "USD",
+ PartialityNumber = 1,
+ PreviousBalance = 1160.00m,
+ PaymentAmount = 1160.00m,
+ RemainingBalance = 0.00m,
+ TaxObjectCode = "02",
+ Equivalence = 1.00m,
+ Subtotal = 10.00m,
+ PaidInvoiceTaxes = new List
+ {
+ new PaidInvoiceTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ }
+ }
+ }
+ }
+ }
+ };
+
+
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ CurrencyCode = "XXX",
+ TypeCode = "P",
+ ExpeditionZipCode = "20000",
+ Issuer = issuer,
+ Recipient = recipient,
+ Complement = complement,
+ ExportCode = "01",
+ PaymentMethodCode = ""
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button10_Click(object sender, EventArgs e)
+ {
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "601",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "XAXX010101000",
+ LegalName = "PUBLICO EN GENERAL",
+ ZipCode = "75700",
+ TaxRegimeCode = "616",
+ CfdiUseCode = "CP01",
+ Email = "someone@somewhere.com"
+ };
+
+ var complement = new Complement
+ {
+ Payment = new InvoicePayment
+ {
+ PaymentDate = DateTime.Parse("2022-09-09T17:33:38"),
+ PaymentFormCode = "01",
+ CurrencyCode = "MXN",
+ ExchangeRate = 1.00m,
+ Amount = 100.00m,
+ PaidInvoices = new List()
+ {
+ new PaidInvoice
+ {
+ Uuid = "b7c8d2bf-cb4e-4f84-af89-c68b6731206a",
+ Series = "FA",
+ Number = "N0000216349",
+ CurrencyCode = "MXN",
+ PartialityNumber = 2,
+ PreviousBalance = 100.00m,
+ PaymentAmount = 100.00m,
+ RemainingBalance = 0.00m,
+ TaxObjectCode = "02",
+ Equivalence = 1.00m,
+ Subtotal = 1.00m,
+ PaidInvoiceTaxes = new List
+ {
+ new PaidInvoiceTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Exento",
+ TaxFlagCode = "T"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "003",
+ TaxTypeCode = "Exento",
+ TaxFlagCode = "T"
+ }
+ }
+ }
+ }
+ }
+ };
+
+
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ CurrencyCode = "XXX",
+ TypeCode = "P",
+ ExpeditionZipCode = "75700",
+ Issuer = issuer,
+ Recipient = recipient,
+ Complement = complement,
+ ExportCode = "01",
+ PaymentMethodCode = ""
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button11_Click(object sender, EventArgs e)
+ {
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "601",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "URE180429TM6",
+ LegalName = "UNIVERSIDAD ROBOTICA ESPAÑOLA",
+ ZipCode = "86991",
+ TaxRegimeCode = "601",
+ CfdiUseCode = "CP01",
+ Email = "someone@somewhere.com"
+ };
+
+ var complement = new Complement
+ {
+ Payment = new InvoicePayment
+ {
+ PaymentDate = DateTime.Parse("2022-05-26T12:00:00"),
+ PaymentFormCode = "03",
+ CurrencyCode = "MXN",
+ ExchangeRate = 1.00m,
+ Amount = 100.00m,
+ PaidInvoices = new List()
+ {
+ new PaidInvoice
+ {
+ Uuid = "a0476c1b-8829-448d-82ab-92d8b26be878",
+ CurrencyCode = "MXN",
+ PartialityNumber = 1,
+ PreviousBalance = 98.75m,
+ PaymentAmount = 98.75m,
+ RemainingBalance = 0.00m,
+ TaxObjectCode = "02",
+ Equivalence = 1.00m,
+ Subtotal = 100.00m,
+ PaidInvoiceTaxes = new List
+ {
+ new PaidInvoiceTax
+ {
+ TaxCode = "001",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.000000m,
+ TaxFlagCode = "R"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "R"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "003",
+ TaxTypeCode = "Cuota",
+ TaxRate = 0.040000m,
+ TaxFlagCode = "R"
+ },
+ new PaidInvoiceTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Exento",
+ TaxFlagCode = "T"
+ }
+ }
+ }
+ }
+ }
+ };
+
+
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ CurrencyCode = "XXX",
+ TypeCode = "P",
+ ExpeditionZipCode = "75700",
+ Issuer = issuer,
+ Recipient = recipient,
+ Complement = complement,
+ ExportCode = "01",
+ PaymentMethodCode = ""
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button12_Click(object sender, EventArgs e)
+ {
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "601",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "URE180429TM6",
+ LegalName = "UNIVERSIDAD ROBOTICA ESPAÑOLA",
+ ZipCode = "86991",
+ TaxRegimeCode = "601",
+ CfdiUseCode = "CP01",
+ Email = "someone@somewhere.com"
+ };
+
+ var complement = new Complement
+ {
+ Payment = new InvoicePayment
+ {
+ PaymentDate = DateTime.Parse("2022-01-31T17:49:04"),
+ PaymentFormCode = "03",
+ CurrencyCode = "MXN",
+ ExchangeRate = 1.00m,
+ Amount = 921.23m,
+ PaidInvoices = new List()
+ {
+ new PaidInvoice
+ {
+ Uuid = "4a5d025b-813a-4acf-9f32-8fb61f4918ac",
+ CurrencyCode = "USD",
+ PartialityNumber = 1,
+ PreviousBalance = 41.76m,
+ PaymentAmount = 41.76m,
+ RemainingBalance = 0.00m,
+ TaxObjectCode = "02",
+ Equivalence = 0.045331m,
+ Subtotal = 36.00m,
+ PaidInvoiceTaxes = new List
+ {
+ new PaidInvoiceTax
+ {
+ TaxCode = "002",
+ TaxTypeCode = "Tasa",
+ TaxRate = 0.160000m,
+ TaxFlagCode = "T"
+ }
+ }
+ }
+ }
+ }
+ };
+
+ // Crear la factura
+ var invoice = new Invoice
+ {
+ VersionCode = "4.0",
+ Series = "SDK-F",
+ Date = DateTime.Now,
+ CurrencyCode = "XXX",
+ TypeCode = "P",
+ ExpeditionZipCode = "42060",
+ Issuer = issuer,
+ Recipient = recipient,
+ Complement = complement,
+ ExportCode = "01",
+ PaymentMethodCode = ""
+ };
+
+
+ // Timbrar la factura
+ var apiResponse = await fiscalApi.Invoices.CreateAsync(invoice);
+
+
+ if (apiResponse.Succeeded)
+ {
+ // Guardar el XML de la factura
+ var xml = apiResponse.Data.Responses.FirstOrDefault()?.InvoiceBase64.DecodeFromBase64();
+ File.WriteAllText($@"C:\facturas\{apiResponse.Data.Number}.xml", xml);
+
+ MessageBox.Show(JsonConvert.SerializeObject(apiResponse.Data, Formatting.Indented));
+ }
+ else
+ {
+ MessageBox.Show(apiResponse.Message);
+ MessageBox.Show(apiResponse.Details);
+ }
+ }
+
+ private async void button13_Click(object sender, EventArgs e)
+ {
+ // Crear fiscalapi client
+ var fiscalApi = FiscalApiClient.Create(_settings);
+
+ // Crear certificados de prueba (EKU9003173C9)
+ var sellos = new List()
+ {
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFsDCCA5igAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MTYwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MSgwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTE0MzUxWhcNMjcwNTE4MTE0MzUxWjCB1zEnMCUGA1UEAxMeRVNDVUVMQSBLRU1QRVIgVVJHQVRFIFNBIERFIENWMScwJQYDVQQpEx5FU0NVRUxBIEtFTVBFUiBVUkdBVEUgU0EgREUgQ1YxJzAlBgNVBAoTHkVTQ1VFTEEgS0VNUEVSIFVSR0FURSBTQSBERSBDVjElMCMGA1UELRMcRUtVOTAwMzE3M0M5IC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtmecO6n2GS0zL025gbHGQVxznPDICoXzR2uUngz4DqxVUC/w9cE6FxSiXm2ap8Gcjg7wmcZfm85EBaxCx/0J2u5CqnhzIoGCdhBPuhWQnIh5TLgj/X6uNquwZkKChbNe9aeFirU/JbyN7Egia9oKH9KZUsodiM/pWAH00PCtoKJ9OBcSHMq8Rqa3KKoBcfkg1ZrgueffwRLws9yOcRWLb02sDOPzGIm/jEFicVYt2Hw1qdRE5xmTZ7AGG0UHs+unkGjpCVeJ+BEBn0JPLWVvDKHZAQMj6s5Bku35+d/MyATkpOPsGT/VTnsouxekDfikJD1f7A1ZpJbqDpkJnss3vQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAFaUgj5PqgvJigNMgtrdXZnbPfVBbukAbW4OGnUhNrA7SRAAfv2BSGk16PI0nBOr7qF2mItmBnjgEwk+DTv8Zr7w5qp7vleC6dIsZFNJoa6ZndrE/f7KO1CYruLXr5gwEkIyGfJ9NwyIagvHHMszzyHiSZIA850fWtbqtythpAliJ2jF35M5pNS+YTkRB+T6L/c6m00ymN3q9lT1rB03YywxrLreRSFZOSrbwWfg34EJbHfbFXpCSVYdJRfiVdvHnewN0r5fUlPtR9stQHyuqewzdkyb5jTTw02D2cUfL57vlPStBj7SEi3uOWvLrsiDnnCIxRMYJ2UA2ktDKHk+zWnsDmaeleSzonv2CHW42yXYPCvWi88oE1DJNYLNkIjua7MxAnkNZbScNw01A6zbLsZ3y8G6eEYnxSTRfwjd8EP4kdiHNJftm7Z4iRU7HOVh79/lRWB+gd171s3d/mI9kte3MRy6V8MMEMCAnMboGpaooYwgAmwclI2XZCczNWXfhaWe0ZS5PmytD/GDpXzkX0oEgY9K/uYo5V77NdZbGAjmyi8cE2B2ogvyaN2XfIInrZPgEffJ4AB7kFA2mwesdLOCh0BLD9itmCve3A1FGR4+stO2ANUoiI3w3Tv2yQSg4bjeDlJ08lXaaFCLW2peEXMXjQUk7fmpb5MNuOUTW6BE=",
+ FileType = FileType.CertificateCsd,
+ Password = "12345678a"
+ },
+ new TaxCredential
+ {
+ Base64File =
+ "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS/AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucoZQObOaLUEm+I+QZ7Y8Giupo+F1XWkLvAsdk/uZlJcTfKLJyJbJwsQYbSpLOCLataZ4O5MVnnmMbfG//NKJn9kSMvJQZhSwAwoGLYDm1ESGezrvZabgFJnoQv8Si1nAhVGTk9FkFBesxRzq07dmZYwFCnFSX4xt2fDHs1PMpQbeq83aL/PzLCce3kxbYSB5kQlzGtUYayiYXcu0cVRu228VwBLCD+2wTDDoCmRXtPesgrLKUR4WWWb5N2AqAU1mNDC+UEYsENAerOFXWnmwrcTAu5qyZ7GsBMTpipW4Dbou2yqQ0lpA/aB06n1kz1aL6mNqGPaJ+OqoFuc8Ugdhadd+MmjHfFzoI20SZ3b2geCsUMNCsAd6oXMsZdWm8lzjqCGWHFeol0ik/xHMQvuQkkeCsQ28PBxdnUgf7ZGer+TN+2ZLd2kvTBOk6pIVgy5yC6cZ+o1Tloql9hYGa6rT3xcMbXlW+9e5jM2MWXZliVW3ZhaPjptJFDbIfWxJPjz4QvKyJk0zok4muv13Iiwj2bCyefUTRz6psqI4cGaYm9JpscKO2RCJN8UluYGbbWmYQU+Int6LtZj/lv8p6xnVjWxYI+rBPdtkpfFYRp+MJiXjgPw5B6UGuoruv7+vHjOLHOotRo+RdjZt7NqL9dAJnl1Qb2jfW6+d7NYQSI/bAwxO0sk4taQIT6Gsu/8kfZOPC2xk9rphGqCSS/4q3Os0MMjA1bcJLyoWLp13pqhK6bmiiHw0BBXH4fbEp4xjSbpPx4tHXzbdn8oDsHKZkWh3pPC2J/nVl0k/yF1KDVowVtMDXE47k6TGVcBoqe8PDXCG9+vjRpzIidqNo5qebaUZu6riWMWzldz8x3Z/jLWXuDiM7/Yscn0Z2GIlfoeyz+GwP2eTdOw9EUedHjEQuJY32bq8LICimJ4Ht+zMJKUyhwVQyAER8byzQBwTYmYP5U0wdsyIFitphw+/IH8+v08Ia1iBLPQAeAvRfTTIFLCs8foyUrj5Zv2B/wTYIZy6ioUM+qADeXyo45uBLLqkN90Rf6kiTqDld78NxwsfyR5MxtJLVDFkmf2IMMJHTqSfhbi+7QJaC11OOUJTD0v9wo0X/oO5GvZhe0ZaGHnm9zqTopALuFEAxcaQlc4R81wjC4wrIrqWnbcl2dxiBtD73KW+wcC9ymsLf4I8BEmiN25lx/OUc1IHNyXZJYSFkEfaxCEZWKcnbiyf5sqFSSlEqZLc4lUPJFAoP6s1FHVcyO0odWqdadhRZLZC9RCzQgPlMRtji/OXy5phh7diOBZv5UYp5nb+MZ2NAB/eFXm2JLguxjvEstuvTDmZDUb6Uqv++RdhO5gvKf/AcwU38ifaHQ9uvRuDocYwVxZS2nr9rOwZ8nAh+P2o4e0tEXjxFKQGhxXYkn75H3hhfnFYjik/2qunHBBZfcdG148MaNP6DjX33M238T9Zw/GyGx00JMogr2pdP4JAErv9a5yt4YR41KGf8guSOUbOXVARw6+ybh7+meb7w4BeTlj3aZkv8tVGdfIt3lrwVnlbzhLjeQY6PplKp3/a5Kr5yM0T4wJoKQQ6v3vSNmrhpbuAtKxpMILe8CQoo=",
+ FileType = FileType.PrivateKeyCsd,
+ Password = "12345678a"
+ }
+ };
+
+ // Emisor
+ var issuer = new InvoiceIssuer
+ {
+ Tin = "EKU9003173C9",
+ LegalName = "ESCUELA KEMPER URGATE",
+ TaxRegimeCode = "601",
+ TaxCredentials = sellos
+ };
+
+ // Receptor
+ var recipient = new InvoiceRecipient
+ {
+ Tin = "CACX7605101P8",
+ LegalName = "XOCHILT CASAS CHAVEZ",
+ ZipCode = "36257",
+ TaxRegimeCode = "626",
+ CfdiUseCode = "I08",
+ Email = "someone@somewhere.com"
+ };
+
+ var items = new List