using System.Text.Json; using Complyance.SDK; using Complyance.SDK.Models; using SysEnv = System.Environment; class PurchaseInvoiceRetrieval { static async Task Main(string[] args) { var sources = new List { new Source("my-source", "1.0.0", SourceType.FirstParty) }; var config = new SDKConfig( SysEnv.GetEnvironmentVariable("COMPLYANCE_API_KEY") ?? "", Complyance.SDK.Models.Environment.Sandbox, sources ); GETSUnifySDK.Configure(config); await GetSinglePurchaseInvoice(); await PollPurchaseInvoicesByDateRange(); await PollPurchaseInvoicesWithCursor(); } static async Task GetSinglePurchaseInvoice() { string documentId = "01KT0SHAH3K21158AC72ZXVX4Z"; var invoice = await GETSUnifySDK.GetPurchaseInvoiceAsync(documentId); Console.WriteLine("Document ID: " + invoice.DocumentId); Console.WriteLine("Country: " + invoice.Country); Console.WriteLine("State: " + invoice.State); Console.WriteLine("Is Terminal: " + invoice.IsTerminal); Console.WriteLine("Document Number: " + invoice.DocumentNumber); Console.WriteLine("Compliance UUID: " + invoice.Compliance?.Uuid); } static async Task PollPurchaseInvoicesByDateRange() { var filters = new Dictionary { { "from", "2026-06-01" }, { "to", "2026-06-08" }, { "limit", "5" } }; var result = await GETSUnifySDK.ListPurchaseInvoicesAsync(filters); if (result["data"] is not JsonElement data) return; var items = data.GetProperty("items"); Console.WriteLine("Items found: " + items.GetArrayLength()); Console.WriteLine("Has more: " + data.GetProperty("hasMore").GetBoolean()); foreach (var item in items.EnumerateArray()) { Console.WriteLine( "- " + item.GetProperty("documentId").GetString() + " " + item.GetProperty("invoiceNumber").GetString() + " " + item.GetProperty("supplierName").GetString() ); } } static async Task PollPurchaseInvoicesWithCursor() { var filters = new Dictionary { { "from", "2026-06-01" }, { "limit", "100" } }; var firstPage = await GETSUnifySDK.ListPurchaseInvoicesAsync(filters); if (firstPage["data"] is not JsonElement data) return; var items = data.GetProperty("items"); var nextCursor = data.TryGetProperty("nextCursor", out var cursorProp) ? cursorProp.GetString() : null; Console.WriteLine("First page items: " + items.GetArrayLength()); Console.WriteLine("Next cursor: " + nextCursor); if (!string.IsNullOrEmpty(nextCursor)) { var cursorFilters = new Dictionary { { "from", "2026-06-01" }, { "limit", "100" }, { "cursor", nextCursor } }; var nextPage = await GETSUnifySDK.ListPurchaseInvoicesAsync(cursorFilters); if (nextPage["data"] is not JsonElement nextData) return; var nextItems = nextData.GetProperty("items"); Console.WriteLine("Next page items: " + nextItems.GetArrayLength()); Console.WriteLine("Has more: " + nextData.GetProperty("hasMore").GetBoolean()); } } }