### GET /purchase/tags Source: https://api.quickfile.co.uk/d/v1_2/Purchase_Delete Returns a list of project tags based on a string search. ```APIDOC ## GET /purchase/tags ### Description Returns a list of project tags that match a given string search query. This is useful for finding existing tags or suggesting tags during data entry. ### Method GET ### Endpoint (Endpoint not explicitly provided in the source text, but inferred from context as likely `/purchase/tags`) ### Parameters #### Header Parameters - **AccNumber** (string) - Required - Account number. - **MD5Value** (string) - Required - An MD5 hash of "Account number, API Key and Submission Number". - **ApplicationID** (string) - Required - Unique identifier for the application making the request. - **MessageType** (string) - Required - Enumerated value: Request. - **DeviceID** (string) - Optional - ID of the calling device. - **SubmissionNumber** (string) - Required - A unique reference used for each API request. #### Query Parameters - **SearchParameters** (object) - Required - Contains the search criteria. - **TagName** (string) - Required - The partial tag name to search for. - **ReturnCount** (int) - Optional - How many records would you like the API to return (MAX 200). Minimum value: 1, Maximum value: 200. ### Request Example (No example provided in the source text) ### Response #### Success Response (200) (Response structure not detailed in the source text, but expected to be a list of tags matching the search criteria.) #### Response Example (No example provided in the source text) ``` -------------------------------- ### Webhook Signature Verification Example (Conceptual) Source: https://api.quickfile.co.uk/Webhooks This conceptual example demonstrates how to verify the authenticity of a webhook using the HookId, Secret Key, and Account Number. You would typically implement this logic in your backend to ensure the webhook originates from QuickFile. ```pseudo # Conceptual example for webhook signature verification # Given values from the webhook payload and your account settings hook_id = "7893782a-bdd3-461c-9c84-f50fe9a6b3da" secret_key = "abc123" account_number = "61314000001" # Construct the string to hash (order is important) string_to_hash = hook_id + secret_key + account_number # Calculate the MD5 hash calculated_signature = md5(string_to_hash) # Retrieve the signature sent in the webhook payload received_signature = "6b1025b9304caee85895dcdccdcb4500" # Compare the calculated signature with the received signature if calculated_signature == received_signature: print("Webhook is authentic!") else: print("Webhook signature mismatch! Potential security issue.") ``` -------------------------------- ### Payment API Endpoints Source: https://api.quickfile.co.uk/d/v1_2/Payment_Delete Overview of available payment-related API endpoints including create, get, get pay methods, and search. ```APIDOC ## Payment API Endpoints Overview ### Payment_Create * **Description**: Create a new payment record. * **Method**: POST (assumed) * **Endpoint**: /1_2/payment/create (assumed) ### Payment_Get * **Description**: Retrieve a payment record. * **Method**: GET (assumed) * **Endpoint**: /1_2/payment/get (assumed) ### Payment_GetPayMethods * **Description**: Get the collection of payment methods. * **Method**: GET (assumed) * **Endpoint**: /1_2/payment/getpaymethods (assumed) ### Payment_Search * **Description**: Search for a payment based on specific search parameters. * **Method**: GET or POST (assumed) * **Endpoint**: /1_2/payment/search (assumed) ``` -------------------------------- ### GET /client/get Source: https://api.quickfile.co.uk/d/v1_2/Client_Get Retrieves client and contact data for a specific client. You can specify which subsets of data to return, such as address, VAT details, preferences, contacts, financials, or GoCardless details. ```APIDOC ## GET /client/get ### Description Retrieves client and contact data. You can optionally specify which data subsets to return, such as Address, VATDetails, Preferences, ClientContacts, Financials, or GoCardlessDetails. ### Method GET ### Endpoint https://api.quickfile.co.uk/1_2/client/get ### Parameters #### Query Parameters - **ClientID** (int) - Required - The unique identifier for the client. - **ReturnData.Address** (boolean) - Optional - Returns the postal address. - **ReturnData.VATDetails** (boolean) - Optional - Returns VAT Number and EC Status. - **ReturnData.Preferences** (boolean) - Optional - Returns various client preferences. - **ReturnData.ClientContacts** (boolean) - Optional - Returns a list of client contacts associated with this client. - **ReturnData.Financials** (boolean) - Optional - Returns credits on account and balance info. - **ReturnData.GoCardlessDetails** (boolean) - Optional - Will return a new signup URL if no Pre-Auth exists. Otherwise, you will receive the GoCardless Pre-Auth ID. ### Request Example ```json { "ClientID": 12345, "ReturnData": { "Address": true, "ClientContacts": true } } ``` ### Response #### Success Response (200) - **ClientID** (int) - The unique identifier for the client. - **Address** (object) - The postal address details of the client. - **VATDetails** (object) - The VAT details of the client. - **Preferences** (object) - The client's preferences. - **ClientContacts** (array) - A list of contact objects associated with the client. - **Financials** (object) - Financial information including credits and balance. - **GoCardlessDetails** (object) - GoCardless related information. #### Response Example ```json { "ClientID": 12345, "Address": { "Line1": "123 Main St", "City": "Anytown", "PostCode": "AB1 2CD", "Country": "UK" }, "VATDetails": { "VATNumber": "GB123456789", "ECStatus": "Active" }, "Preferences": { "StatementLayout": "Default" }, "ClientContacts": [ { "ContactID": 1, "Name": "John Doe", "Email": "john.doe@example.com" } ], "Financials": { "Balance": 100.50, "Credit": 50.00 }, "GoCardlessDetails": { "SignupURL": "https://gocardless.com/signup/xyz" } } ``` ``` -------------------------------- ### GET /api/ledger/all Source: https://api.quickfile.co.uk/d/v1_2/Supplier_Create Returns a full list of nominal ledger balances for a set of given search parameters. ```APIDOC ## GET /api/ledger/all ### Description This endpoint retrieves a comprehensive list of nominal ledger balances. It allows for detailed filtering including nominal code ranges, date ranges, and options to exclude zero-balance ledgers or include ledger names and descriptions. ### Method GET ### Endpoint /api/ledger/all ### Parameters #### Query Parameters - **MessageType** (string) - Required. Enumerated value: Request. - **DeviceID** (string) - Optional. The ID of the calling device. Max length: 100. - **SubmissionNumber** (string) - Required. A unique reference for each API request. - **Authentication** (object) - Required. Contains authentication credentials. - **AccNumber** (string) - Required. Your account number. - **MD5Value** (string) - Required. MD5 hash of 'Account number, API Key and Submission Number'. - **ApplicationID** (string) - Optional. Unique identifier for the application. Min length: 1, Max length: 100. - **SearchParameters** (object) - Required. Contains the search criteria. - **StartNominalCode** (int) - Optional. The starting nominal code for the range. Defaults to 1. - **EndNominalCode** (int) - Optional. The ending nominal code for the range. Defaults to 9999. - **FromDate** (date) - Optional. The start date for filtering transactions. If excluded, returns all transactions from the beginning of time. - **ToDate** (date) - Optional. The end date for filtering transactions. If excluded, returns all transactions to the current date. - **ExcludeZeroBalanceLedgers** (boolean) - Optional. If true, excludes ledgers with a zero balance for the specified date range. Defaults to true. - **ReturnCodeName** (boolean) - Optional. If true, returns the nominal code name. Defaults to false. - **ReturnDescription** (boolean) - Optional. If true, returns the nominal code description. Defaults to false. ### Request Example ```json { "MessageType": "Request", "SubmissionNumber": "SUB11223", "Authentication": { "AccNumber": "ACC003", "MD5Value": "abcdef9876543210abcdef9876543210" }, "ApplicationID": "APP321", "SearchParameters": { "StartNominalCode": 100, "EndNominalCode": 500, "FromDate": "2023-01-01", "ToDate": "2023-12-31", "ExcludeZeroBalanceLedgers": false, "ReturnCodeName": true, "ReturnDescription": true } } ``` ### Response #### Success Response (200) - **MessageType** (string) - Type of message. - **ResponseCode** (int) - Response code indicating success or failure. - **ResponseText** (string) - Textual description of the response. - **LedgerEntries** (array) - A list of ledger entries. - **NominalCode** (int) - The nominal code. - **CodeName** (string) - The name of the nominal code (if requested). - **Description** (string) - The description of the nominal code (if requested). - **Balance** (decimal) - The balance for the nominal code. #### Response Example ```json { "MessageType": "Response", "ResponseCode": 0, "ResponseText": "Ledger entries retrieved successfully.", "LedgerEntries": [ { "NominalCode": 100, "CodeName": "Sales Income", "Description": "Revenue from sales", "Balance": 15000.00 }, { "NominalCode": 200, "CodeName": "Cost of Goods Sold", "Description": "Direct costs attributable to sales", "Balance": -8000.00 } ] } ``` ``` -------------------------------- ### GET /project/tagsearch Source: https://api.quickfile.co.uk/d/v1_2/Project_TagCreate Searches for a project tag based on a partial or complete string query. ```APIDOC ## GET /project/tagsearch ### Description Returns a list of project tags based on a string search. ### Method GET ### Endpoint https://api.quickfile.co.uk/1_2/project/tagsearch ### Parameters #### Header Parameters - **AccNumber** (string) - Required - Account number. - **MD5Value** (string) - Required - An MD5 hash of "Account number, API Key and Submission Number". - **ApplicationID** (string) - Required - Unique identifier for the application making the request. Mandatory from 10th Dec 2013. - **DeviceID** (string) - Optional - ID of the calling device where applicable. Use for mobile devices such as I-Phones and Android units. Minimum length: 0, Maximum length: 100. - **SubmissionNumber** (string) - Required - A unique reference used for each API request. The Submission Number is seeded within the Authentication MD5 Value to prevent cloning. #### Query Parameters - **SearchQuery** (string) - Required - The string to search for project tags. ### Request Example (No specific request example provided for this endpoint. Typically a GET request would not have a body.) ### Response #### Success Response (200) - **Tags** (array) - A list of project tags matching the search query. - **TagID** (int) - The unique identifier for the tag. - **TagName** (string) - The name of the tag. #### Response Example ```json { "Tags": [ { "TagID": 1, "TagName": "ProjectAlpha" }, { "TagID": 2, "TagName": "ProjectBeta" } ] } ``` ``` -------------------------------- ### Respond to Webhook with HTTP 200 OK (Node.js) Source: https://api.quickfile.co.uk/Webhooks This example shows how to acknowledge receipt of a webhook by sending an HTTP 200 OK response. This is crucial for QuickFile to confirm delivery. Failure to respond correctly or within a timely manner will result in retries. Ensure your endpoint handles this response appropriately. ```javascript const http = require('http'); // Assuming 'req' is the incoming request object and 'res' is the response object // When a webhook is received: res.writeHead(200, {'Content-Type': 'application/json'}); res.end(JSON.stringify({ message: 'Webhook received successfully' })); console.log('Webhook acknowledged with 200 OK'); ``` -------------------------------- ### GET /api/ledger/balances Source: https://api.quickfile.co.uk/d/v1_2/Supplier_Create Returns a full list of nominal ledger balances for a set of given search parameters. ```APIDOC ## GET /api/ledger/balances ### Description This endpoint retrieves a list of nominal ledger balances based on specified search parameters. You can filter by date range and specify whether to return the balance sheet as Net Book Value (NBV). ### Method GET ### Endpoint /api/ledger/balances ### Parameters #### Query Parameters - **MessageType** (string) - Required. Enumerated value: Request. - **DeviceID** (string) - Optional. The ID of the calling device. Max length: 100. - **SubmissionNumber** (string) - Required. A unique reference for each API request. - **Authentication** (object) - Required. Contains authentication credentials. - **AccNumber** (string) - Required. Your account number. - **MD5Value** (string) - Required. MD5 hash of 'Account number, API Key and Submission Number'. - **ApplicationID** (string) - Optional. Unique identifier for the application. Min length: 1, Max length: 100. - **SearchParameters** (object) - Required. Contains the search criteria. - **ToDate** (date) - Optional. The end date for the balance retrieval. If excluded, returns all transactions to the current date. - **ShowAsNBV** (boolean) - Optional. If set to true, displays the balance sheet as Net Book Value. ### Request Example ```json { "MessageType": "Request", "SubmissionNumber": "SUB67890", "Authentication": { "AccNumber": "ACC002", "MD5Value": "fedcba0987654321fedcba0987654321" }, "ApplicationID": "APP654", "SearchParameters": { "ToDate": "2023-12-31", "ShowAsNBV": true } } ``` ### Response #### Success Response (200) - **MessageType** (string) - Type of message. - **ResponseCode** (int) - Response code indicating success or failure. - **ResponseText** (string) - Textual description of the response. - **LedgerBalances** (array) - A list of ledger balances. - **NominalCode** (int) - The nominal code. - **Balance** (decimal) - The balance for the nominal code. #### Response Example ```json { "MessageType": "Response", "ResponseCode": 0, "ResponseText": "Ledger balances retrieved successfully.", "LedgerBalances": [ { "NominalCode": 1000, "Balance": 5000.75 }, { "NominalCode": 2000, "Balance": -1500.50 } ] } ``` ``` -------------------------------- ### GET /purchase/search Source: https://api.quickfile.co.uk/d/v1_2/Purchase_Delete Searches for purchase invoices based on provided criteria. ```APIDOC ## GET /purchase/search ### Description Returns a list of purchase records based on search parameters. Allows filtering and control over the number of results returned. ### Method GET ### Endpoint (Endpoint not explicitly provided in the source text, but inferred from context as likely `/purchase/search`) ### Parameters #### Header Parameters - **AccNumber** (string) - Required - Account number. - **MD5Value** (string) - Required - An MD5 hash of "Account number, API Key and Submission Number". - **ApplicationID** (string) - Required - Unique identifier for the application making the request. - **MessageType** (string) - Required - Enumerated value: Request. - **DeviceID** (string) - Optional - ID of the calling device. - **SubmissionNumber** (string) - Required - A unique reference used for each API request. #### Query Parameters - **SearchParameters** (object) - Required - Contains the criteria for searching purchase records. - **ReturnCount** (int) - Optional - How many records would you like the API to return (MAX 200). Minimum value: 1, Maximum value: 200. - **TagName** (string) - Optional - Search by partial tag name. ### Request Example (No example provided in the source text) ### Response #### Success Response (200) (Response structure not detailed in the source text, but expected to be a list of purchase records matching the search criteria.) #### Response Example (No example provided in the source text) ``` -------------------------------- ### Example Webhook JSON Payload Source: https://api.quickfile.co.uk/Webhooks This JSON object represents a typical webhook payload sent by QuickFile. It contains event details like InvoiceCreated, timestamp, and a signature for verification. Your application should parse this JSON to extract individual event data. ```json { "PayLoad": { "InvoicesCreated": [ { "TimeStamp": "2015-03-26T20:16:52", "Id": 123456, "InvoiceType": "INV", "FromRecurring": false, "RecurringParentId": 0 } ], "Timestamp": "2015-03-26T22:03:18", "Signature": "6b1025b9304caee85895dcdccdcb4500", "Hookid": "7893782a-bdd3-461c-9c84-f50fe9a6b3da" } } ``` -------------------------------- ### Webhooks Overview Source: https://api.quickfile.co.uk/Webhooks Information about QuickFile's webhook system, including how to enable, configure, and understand received webhook events. ```APIDOC ## Webhooks ### Description A Webhook is a lightweight package of information sent to a third-party server to notify the remote service of a specific event. QuickFile Webhooks are suitable for events that do not directly result from an account holder's input, such as when a client pays an invoice or accepts/declines a quotation. Webhooks negate the need to repeatedly poll the API for updates and deliver information to your specified endpoint as events occur. ### Enabling Webhooks Webhooks are available to users with a Power User Subscription. Access the Webhooks control panel from the main account settings screen under "3rd Party Integrations". To enable the Webhook service, provide an endpoint URI. Once enabled, Webhooks will be delivered to your endpoint within 5-10 minutes of activation for supported events. ### Supported Events QuickFile fires Webhooks for the following events: * Invoice/Estimate created * Invoice/Estimate updated * Invoice/Estimate deleted * Invoice/Estimate viewed by client * Invoice/Estimate paid by client * Estimate accepted or declined by client * Client created * Client updated * Client deleted * Client contact created * Client contact updated * Client contact deleted * Client Merged * Supplier created * Supplier updated * Supplier deleted * Supplier Merged * PaymentsCreated ### Webhooks Format Webhooks are delivered over HTTP/HTTPS in JSON format and are minimalistic. They contain ID values that allow you to pull additional information over the API. #### Request Example ```json { "PayLoad": { "InvoicesCreated": [ { "TimeStamp": "2015-03-26T20:16:52", "Id": 123456, "InvoiceType": "INV", "FromRecurring": false, "RecurringParentId": 0 } ], "Timestamp": "2015-03-26T22:03:18", "Signature": "6b1025b9304caee85895dcdccdcb4500", "Hookid": "7893782a-bdd3-461c-9c84-f50fe9a6b3da" } } ``` Webhooks are sent within 10 minutes of the event and may batch multiple events within a single payload. Your application should deserialize the JSON to parse individual events. ### Webhooks Security Considerations To ensure webhooks originate from QuickFile servers, use the `HookId` and `Signature` in conjunction with your `Secret Key` and QuickFile Account Number for verification. * **HookId**: A unique GUID assigned to each Webhook. * **Signature**: An MD5 hash of the `HookId`, `SecretKey`, and QuickFile Account Number. Example: * **HookId:** 7893782a-bdd3-461c-9c84-f50fe9a6b3da * **SecretKey:** abc123 * **AccNumber:** 61314000001 ``` -------------------------------- ### Registering Your Application Source: https://api.quickfile.co.uk/index Instructions on how to register a third-party application to obtain an ApplicationID, necessary for API authentication. ```APIDOC ## Registering Your Application ### Description Before making API submissions, you must register your application within your QuickFile developer account to obtain a unique **_ApplicationID_**. New applications have a daily limit of 1000 calls and are restricted to the account they are registered within. ### How to Register 1. Navigate to your main QuickFile account settings. 2. Under '3rd Party Integrations', click on 'Create a QuickFile App'. 3. Click the green button to create a new application. 4. Provide a name and description for your application. 5. Select the specific API methods you intend to use in your live environment. ### Parameters - **Application Name** (string) - Required - A name for your application. - **Application Description** (string) - Optional - A brief description of your application's purpose. - **API Methods** (array of strings) - Required - A list of API methods your application will use. ``` -------------------------------- ### System API Methods Source: https://api.quickfile.co.uk/method/system Provides endpoints for system-level operations such as creating notes, searching events, and retrieving account details. ```APIDOC ## System_CreateNote ### Description Create an invoice, purchase, client or supplier note. ### Method POST ### Endpoint /api/v1/System/CreateNote ### Parameters #### Request Body - **NoteType** (string) - Required - The type of note to create (e.g., "invoice", "purchase", "client", "supplier"). - **OwnerID** (integer) - Required - The ID of the item to which the note is attached. - **NoteContent** (string) - Required - The content of the note. ### Request Example ```json { "NoteType": "invoice", "OwnerID": 12345, "NoteContent": "This is a test note for invoice 12345." } ``` ### Response #### Success Response (200) - **Status** (string) - Indicates the success or failure of the operation. - **Message** (string) - A message providing details about the operation's outcome. #### Response Example ```json { "Status": "success", "Message": "Note created successfully." } ``` ## System_SearchEvents ### Description Query the system event log. ### Method GET ### Endpoint /api/v1/System/SearchEvents ### Parameters #### Query Parameters - **EventType** (string) - Optional - Filter events by type. - **StartDate** (string) - Optional - Filter events starting from this date (YYYY-MM-DD). - **EndDate** (string) - Optional - Filter events up to this date (YYYY-MM-DD). ### Response #### Success Response (200) - **Events** (array) - A list of event objects. - **EventID** (integer) - The unique ID of the event. - **Timestamp** (string) - The date and time the event occurred. - **EventType** (string) - The type of the event. - **Description** (string) - A description of the event. #### Response Example ```json { "Events": [ { "EventID": 1, "Timestamp": "2023-10-27T10:00:00Z", "EventType": "Login", "Description": "User logged in successfully." } ] } ``` ## System_GetAccountDetails ### Description Returns meta details for the authorised account. ### Method GET ### Endpoint /api/v1/System/GetAccountDetails ### Response #### Success Response (200) - **AccountName** (string) - The name of the account. - **AccountID** (string) - The unique ID of the account. - **Currency** (string) - The default currency of the account. #### Response Example ```json { "AccountName": "My Business Inc.", "AccountID": "ACC123456", "Currency": "GBP" } ``` ``` -------------------------------- ### System API Methods Source: https://api.quickfile.co.uk/method/System This section details the available system API methods for interacting with notes, event logs, and account details. ```APIDOC ## System_CreateNote ### Description Create an invoice, purchase, client or supplier note. ### Method POST ### Endpoint /api/v1/system/createnote ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body - **ObjectType** (string) - Required - The type of object to associate the note with (e.g., "invoice", "purchase", "client", "supplier"). - **ObjectGuid** (string) - Required - The unique identifier of the object. - **Note** (string) - Required - The content of the note. ### Request Example ```json { "ObjectType": "invoice", "ObjectGuid": "guid-of-the-invoice", "Note": "This is a test note for the invoice." } ``` ### Response #### Success Response (200) - **Status** (string) - Indicates the success or failure of the operation. #### Response Example ```json { "Status": "Success" } ``` ``` ```APIDOC ## System_SearchEvents ### Description Query the system event log. ### Method GET ### Endpoint /api/v1/system/searchevent ### Parameters #### Path Parameters None #### Query Parameters - **FromDate** (date) - Optional - Filter events from this date (YYYY-MM-DD). - **ToDate** (date) - Optional - Filter events up to this date (YYYY-MM-DD). - **EventType** (string) - Optional - Filter by event type. ### Request Example ``` /api/v1/system/searchevent?FromDate=2023-01-01&EventType=Login ``` ### Response #### Success Response (200) - **Events** (array) - A list of system events. - **Timestamp** (string) - The time the event occurred. - **EventType** (string) - The type of event. - **Description** (string) - A description of the event. #### Response Example ```json { "Events": [ { "Timestamp": "2023-10-27T10:00:00Z", "EventType": "Login", "Description": "User logged in successfully." } ] } ``` ``` ```APIDOC ## System_GetAccountDetails ### Description Returns meta details for the authorised account. ### Method GET ### Endpoint /api/v1/system/getaccountdetails ### Parameters #### Path Parameters None #### Query Parameters None ### Request Example ``` /api/v1/system/getaccountdetails ``` ### Response #### Success Response (200) - **CompanyName** (string) - The name of the company associated with the account. - **Currency** (string) - The default currency of the account. - **TimeZone** (string) - The time zone of the account. #### Response Example ```json { "CompanyName": "Example Ltd", "Currency": "GBP", "TimeZone": "Europe/London" } ``` ``` -------------------------------- ### Client_Create Source: https://api.quickfile.co.uk/d/v1_2/Client_Create Creates a new client record in the QuickFile system. This endpoint allows for the creation of a new client with contact details. ```APIDOC ## POST /client/create ### Description Creates a new client record. You can provide contact details such as first name, surname, email, and password. ### Method POST ### Endpoint https://api.quickfile.co.uk/1_2/client/create ### Parameters #### Request Body - **FirstName** (string) - Required - The first name of the client. - **Surname** (string) - Required - The surname of the client. - **Email** (string) - Required - The email address of the client. Must be between 6 and 20 characters. - **Password** (string) - Required - The password for the client account. Minimum length: 6, Maximum length: 20. - **TelephoneNumbers** (object) - Optional - A container for telephone numbers. - **Telephone** (string) - The telephone number. - **Telephone2** (string) - A second telephone number. ### Request Example ```json { "FirstName": "John", "Surname": "Doe", "Email": "john.doe@example.com", "Password": "securePassword123", "TelephoneNumbers": { "Telephone": "+441234567890", "Telephone2": "+440987654321" } } ``` ### Response #### Success Response (200) - **ClientID** (string) - The unique identifier for the newly created client. - **Status** (string) - Indicates the success status of the operation. #### Response Example ```json { "ClientID": "C12345", "Status": "Success" } ``` ``` -------------------------------- ### Notes_Create Source: https://api.quickfile.co.uk/d/v1_2/System_GetAccountDetails Creates a new note against a client, invoice, supplier, or purchase. ```APIDOC ## POST /api/v1/Notes ### Description Method for creating a new note against a client, invoice, supplier or purchase. ### Method POST ### Endpoint /api/v1/Notes ### Parameters #### Header Parameters - **AccNumber** (string) - Required - Your QuickFile Account Number. - **MD5Value** (string) - Required - An MD5 hash created from your Account Number, API Key, and Submission Number. - **ApplicationID** (string) - Required - Unique identifier for the application making the request. Mandatory from 10th Dec 2013. Minimum length: 1, Maximum length: 100. #### Request Body - **MessageType** (string) - Enumerated value: Request, Response. Default: Request. - **DeviceID** (string) - ID of the calling device where applicable. Use for mobile devices such as I-Phones and Android units. Minimum length: 0, Maximum length: 100. - **SubmissionNumber** (string) - A unique reference used for each API request. The Submission Number is seeded within the Authentication MD5 Value to prevent cloning. - **NoteDetails** (object) - Contains the details of the note to be created. - **DesignatedTo** (string) - Specifies the type of record to associate the note with. Enumerated value: Client, Invoice, Supplier, Purchase. - **ClientID** (int) - Optional - The ID of the client to associate the note with. - **InvoiceID** (int) - Optional - The ID of the invoice to associate the note with. Use this value to also add notes to estimates and recurring invoices. - **SupplierID** (int) - Optional - The ID of the supplier to associate the note with. - **PurchaseID** (int) - Optional - The ID of the purchase to associate the note with. - **Note** (string) - The text of the note. Maximum length: 1000. - **PostedBy** (string) - Optional - Enter the name of the person making the post. Maximum length: 50. ### Request Example ```json { "MessageType": "Request", "DeviceID": "MyMobileApp", "SubmissionNumber": "SUB12345", "NoteDetails": { "DesignatedTo": "Invoice", "InvoiceID": 9876, "Note": "This invoice requires urgent payment.", "PostedBy": "John Doe" } } ``` ### Response #### Success Response (200) - **MessageType** (string) - Enumerated value: Request, Response. - **DeviceID** (string) - ID of the calling device where applicable. Minimum length: 0, Maximum length: 100. - **SubmissionNumber** (string) - A unique reference used for each API request. #### Response Example ```json { "MessageType": "Response", "DeviceID": "MyMobileApp", "SubmissionNumber": "SUB12345" } ``` ``` -------------------------------- ### GET /invoice/get Source: https://api.quickfile.co.uk/d/v1_2/Invoice_Get Retrieves a single invoice, estimate, or recurring invoice template by its ID. ```APIDOC ## GET /invoice/get ### Description Retrieves a single invoice, estimate, or recurring invoice template by its ID. This endpoint is part of the Invoice API. ### Method GET ### Endpoint https://api.quickfile.co.uk/1_2/invoice/get ### Parameters #### Query Parameters - **InvoiceID** (int) - Required - The unique identifier for the invoice, estimate, or template to retrieve. - **AccNumber** (string) - Required - The account number for authentication. - **MD5Value** (string) - Required - An MD5 hash generated from the account number, API key, and submission number for authentication. - **ApplicationID** (string) - Required - A unique identifier for the application making the request. - **SubmissionNumber** (string) - Required - A unique reference for each API request. #### Request Body This endpoint does not have a request body. ### Request Example ```json { "AccNumber": "YOUR_ACC_NUMBER", "MD5Value": "YOUR_MD5_HASH", "ApplicationID": "YOUR_APP_ID", "SubmissionNumber": "YOUR_SUBMISSION_NUMBER" } ``` ### Response #### Success Response (200) - **Amount** (double) - The total amount of the invoice. - **Currency** (string) - The ISO code of the currency used for the invoice. - **Status** (string) - The current status of the invoice (e.g., DRAFT, SENT, PAIDFULL). - **PurchaseReference** (string) - The purchase reference number associated with the invoice. - **AdditionalParameters** (object) - An object containing additional parameters: - **ShowPurchaseRef** (boolean) - Indicates if the Purchase Reference should be shown. - **ShowNetAmount** (boolean) - Indicates if the Net Amount should be shown. - **ShowVatAmount** (boolean) - Indicates if the VAT Amount should be shown. - **MessageType** (string) - The type of message, typically "Response". - **DeviceID** (string) - The ID of the calling device. #### Response Example ```json { "Amount": 120.50, "Currency": "GBP", "Status": "SENT", "PurchaseReference": "PO12345", "AdditionalParameters": { "ShowPurchaseRef": true, "ShowNetAmount": true, "ShowVatAmount": true }, "MessageType": "Response", "DeviceID": "MOBILE123" } ``` ``` -------------------------------- ### Client Methods API Source: https://api.quickfile.co.uk/method/Client This section details the API methods available for managing client records and their associated data. ```APIDOC ## Client Methods API ### Description Provides endpoints for creating, retrieving, updating, and deleting client records, as well as managing client contacts and login URLs. ### Client_Create #### Description Create a new client record. #### Method POST (assumed, based on 'Create' action) #### Endpoint `/api/clients` (assumed) #### Parameters ##### Request Body - **client_data** (object) - Required - The data for the new client. ### Client_Delete #### Description Delete a client record. #### Method DELETE (assumed, based on 'Delete' action) #### Endpoint `/api/clients/{client_id}` (assumed, with client_id as path parameter) #### Parameters ##### Path Parameters - **client_id** (integer) - Required - The ID of the client to delete. ### Client_Get #### Description Retrieve client and contact data. #### Method GET (assumed, based on 'Retrieve' action) #### Endpoint `/api/clients/{client_id}` (assumed, with client_id as path parameter) #### Parameters ##### Path Parameters - **client_id** (integer) - Required - The ID of the client to retrieve. ### Client_InsertContacts #### Description Create a new contact record for an existing client. #### Method POST (assumed, based on 'Create' action) #### Endpoint `/api/clients/{client_id}/contacts` (assumed, with client_id as path parameter) #### Parameters ##### Path Parameters - **client_id** (integer) - Required - The ID of the client to add a contact to. ##### Request Body - **contact_data** (object) - Required - The data for the new contact. ### Client_LogIn #### Description Retrieve a passwordless login URL for a client. #### Method GET (assumed, based on 'Retrieve' action) #### Endpoint `/api/clients/{client_id}/login-url` (assumed, with client_id as path parameter) #### Parameters ##### Path Parameters - **client_id** (integer) - Required - The ID of the client to generate a login URL for. ### Client_NewDirectDebitCollection #### Description Initiate a new Direct Debit collection request. #### Method POST (assumed, based on 'Initiate' action) #### Endpoint `/api/direct-debits/collections` (assumed) #### Parameters ##### Request Body - **collection_data** (object) - Required - The details for the Direct Debit collection. ### Client_Search #### Description Retrieve client records based on a set of search parameters. #### Method GET (assumed, based on 'Retrieve' action) #### Endpoint `/api/clients/search` (assumed) #### Parameters ##### Query Parameters - **search_params** (object) - Required - Parameters to filter client records. ### Client_Update #### Description Update an existing client record. #### Method PUT (assumed, based on 'Update' action) #### Endpoint `/api/clients/{client_id}` (assumed, with client_id as path parameter) #### Parameters ##### Path Parameters - **client_id** (integer) - Required - The ID of the client to update. ##### Request Body - **update_data** (object) - Required - The data to update the client record with. ``` -------------------------------- ### Invoice Methods - Get Invoice Details Source: https://api.quickfile.co.uk/d/v1_2/Invoice_Get Retrieve details for a specific invoice by providing its InvoiceID. ```APIDOC ## GET /api/invoices/{InvoiceID} ### Description Retrieves the details of a specific invoice. ### Method GET ### Endpoint /api/invoices/{InvoiceID} ### Parameters #### Path Parameters - **InvoiceID** (int) - Required - The unique identifier of the invoice. #### Query Parameters - **MessageType** (string) - Optional - Enumerated value: Request, Response. Specifies the message type. - **DeviceID** (string) - Optional - ID of the calling device. Minimum length: 0, Maximum length: 100. - **SubmissionNumber** (string) - Optional - A unique reference for the API request. Used in Authentication. #### Request Body None ### Request Example None ### Response #### Success Response (200) - **InvoiceDetails** (object) - Contains detailed information about the invoice. - **InvoiceID** (int) - The invoice number. - **IssueDate** (date) - The date the invoice was issued. - **PurchaseReference** (string) - Optional purchase reference number. - ... (other invoice-specific fields) #### Response Example ```json { "InvoiceDetails": { "InvoiceID": 12345, "IssueDate": "2023-10-27", "PurchaseReference": "PO-XYZ", "ClientDetails": { "ClientID": 678, "ClientName": "Example Corp" }, "Total": 150.75, "Currency": "GBP" } } ``` ```