You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A comprehensive .NET 10 wrapper for the Quickfile API supporting both the modern v2 REST API (with Bearer token authentication) and the legacy v1.2 API (supporting JSON and XML across all endpoints), plus Webhook consumption and signature validation.
Features
.NET 10.0 optimized.
REST API (v2) Support: Complete coverage of all 45 REST endpoints with Bearer token authentication, pagination, and multi-part document uploads.
Dual Format Legacy (v1.2) Support: Switch between JSON and XML seamlessly via configuration.
Full API Coverage: Clients, Invoices, Banks, Purchases, Purchase Orders, Suppliers, Inventory, Journals, Projects, Ledgers, Payments (Client & Supplier), Reports, and Account Management.
Dependency Injection: First-class support for Microsoft.Extensions.DependencyInjection.
Strongly Typed: Strongly-typed request/response and parameter models.
Webhooks: Built-in webhook payload parsing and MD5 HMAC validation.
Installation
dotnet add package Quickfile.Net
Configuration
Add to your Program.cs or Startup.cs:
builder.Services.AddQuickfile(options =>{// --- Modern REST API (v2) ---options.BearerToken="YOUR_REST_BEARER_TOKEN";// Optional: defaults to "https://api-beta.quickfile.co.uk"// options.RestBaseUrl = "https://api-beta.quickfile.co.uk";// --- Legacy API (v1.2) ---options.AccountNumber="YOUR_ACCOUNT_NUMBER";options.ApiKey="YOUR_API_KEY";options.ApplicationId="YOUR_APPLICATION_ID";options.Format=QuickfileFormat.Json;// Optional: Default is Json. Use QuickfileFormat.Xml for XML.// --- Webhooks ---options.WebhookSecret="YOUR_WEBHOOK_SECRET";});
REST API (v2) Endpoints
The unified QuickfileClient exposes all v2 REST endpoints (prefixed with Rest...):
Account
RestGetAccountMeAsync(): Get connected account business details and stats.
Bank
RestGetBankAccountsAsync(parameters): List bank accounts with optional nominal/type filters.
RestCreateBankAccountAsync(request): Create a new bank account.
RestGetBankBalanceAsync(accountId): Get bank balance for an account.
RestGetBankTransactionsAsync(accountId, parameters): Query bank transactions with date, nominal, amount filters.
RestCreateBankTransactionsAsync(accountId, request): Create untagged bank transactions.
RestGetSupportedBanksAsync(): List supported bank institutions.
Clients
RestSearchClientsAsync(parameters): Search client records with pagination.
RestCreateClientAsync(request): Create a client.
RestGetClientAsync(id, parameters): Retrieve full client & contact details.
RestUpdateClientAsync(id, request): Update an existing client.
RestDeleteClientAsync(id): Delete a client record.
RestGetClientContactsAsync(id): Get client contacts.
RestCreateClientContactAsync(id, request): Add a client contact.
RestUpdateClientContactAsync(id, contactId, request): Update a client contact.
RestDeleteClientContactAsync(id, contactId): Delete a client contact.
publicclassMyAccountingService{privatereadonlyQuickfileClient_client;publicMyAccountingService(QuickfileClientclient){_client=client;}publicasyncTaskProcessInvoices(){// 1. Search for a clientvarsearchResult=await_client.SearchClientAsync(newClientSearchRequest{SearchParameters=newClientSearchParameters{CompanyName="Mear Technology"}});// 2. Create an invoiceif(searchResult?.Record.Count>0){varclientId=searchResult.Record[0].ClientID;varinvoice=await_client.CreateInvoiceAsync(newInvoiceCreateRequest{InvoiceData=newInvoiceData{ClientID=clientId,IssueDate=DateTime.Now.ToString("yyyy-MM-dd"),InvoiceLines=newInvoiceLines{Item=newList<InvoiceItem>{newInvoiceItem{ItemDescription="Services",UnitCost=100,Qty=1}}}}});}}}
License
MIT
About
A .NET wrapper for the Quickfile API, providing easy integration for accounting and invoicing tasks.