Skip to main content

FreeAgent Destination

Nexla's bi-directional connectors allow data to flow both to and from any location, making it simple to create a FlexFlow data flow that sends data to a FreeAgent location.
free_agent_api.png

FreeAgent

  1. Click the + icon on the Nexset that will be sent to the FreeAgent destination, and select the Send to Destination option from the menu.

  2. Select the FreeAgent connector from the list of available destination connectors. Then, select the credential that will be used to connect to the FreeAgent organization, and click Next; or, create a new FreeAgent credential for use in this flow.

  3. In Nexla, FreeAgent destinations can be created using pre-built endpoint templates, which expedite destination setup for common FreeAgent endpoints. Each template is designed specifically for the corresponding FreeAgent endpoint, making data destination setup easy and efficient.
    • To configure this destination using a template, follow the instructions in Configure Using a Template.

    FreeAgent destinations can also be configured manually, allowing you to send data to FreeAgent endpoints not included in the pre-built templates or apply further customizations to exactly suit your needs.
    • To configure this destination manually, follow the instructions in Configure Manually.

Configure Using a Template

Nexla provides pre-built templates that can be used to rapidly configure destinations to send data to common FreeAgent endpoints. Each template is designed specifically for the corresponding FreeAgent endpoint, making destination setup easy and efficient.

Endpoint Settings

  • Select the endpoint to which this destination will send data from the Endpoint pulldown menu. Available endpoint templates are listed in the expandable boxes below. Click on an endpoint to see more information about it and how to configure your destination for this endpoint.

    Create Invoice

    Creates a new invoice in FreeAgent. Use this endpoint to programmatically generate sales invoices from Nexset data.

    • Sends a POST request to the FreeAgent invoices endpoint; the request body must include required fields such as the contact URL, invoice items, and currency.
    • The FreeAgent API returns the newly created invoice object — including the system-assigned invoice URL and reference — in the response body. Enable the Response Webhook to capture these values for downstream flows.

    FreeAgent invoice creation requires a valid contact URL (e.g., https://api.freeagent.com/v2/contacts/12345) as the contact reference. Ensure the contact exists in FreeAgent before creating invoices.

    Update Invoice

    Updates an existing invoice in FreeAgent identified by its ID. Use this endpoint to modify invoice details such as line items, due dates, or reference numbers.

    • Sends a PUT request to the FreeAgent invoice endpoint for the specified invoice; the invoice ID must be provided.
    • Only the fields included in the request body are updated — fields not included retain their existing values.

    Configure the following parameter: Id — the FreeAgent invoice ID or URL for the invoice to be updated. Invoices in a locked accounting period cannot be modified.

    Take Payment using GoCardless Direct Debit Mandate

    Processes a payment for a FreeAgent invoice using a GoCardless Direct Debit mandate. Use this endpoint to trigger automated invoice payments via GoCardless from Nexla.

    • Sends a POST request to the FreeAgent GoCardless payment endpoint for the specified invoice.
    • The request initiates a direct debit collection via the GoCardless mandate associated with the invoice's contact.

    Configure the following parameter: Id — the FreeAgent invoice ID for which payment should be collected. A valid GoCardless Direct Debit mandate must be in place for the invoice's contact before using this endpoint.

    Create / Import a Bank Transaction

    Creates or imports a bank transaction into a FreeAgent bank account. Use this endpoint to push transaction data from external sources into FreeAgent for reconciliation.

    • Sends a POST request to the FreeAgent bank transactions endpoint; the request body must include the bank account URL, transaction date, amount, and description.
    • Returns the created bank transaction object in the response — enable the Response Webhook to capture the new transaction URL for downstream reconciliation flows.

    Imported transactions initially appear as unreconciled in FreeAgent. Use the Explain (reconcile) bank transaction endpoint or manual reconciliation in FreeAgent to match transactions against invoices, bills, or expenses.

    Create a Supplier Bill / Purchase Invoice

    Creates a supplier bill (purchase invoice) in FreeAgent. Use this endpoint to record supplier invoices from procurement or accounts payable systems into FreeAgent.

    • Sends a POST request to the FreeAgent bills endpoint; required fields include the contact URL, bill reference, dated on, due on, and at least one line item with a category and total value.
    • Returns the newly created bill object in the response, including the system-assigned bill URL.

    Bills require a valid supplier contact URL. Ensure the supplier exists in FreeAgent as a contact before creating bills. Line items must include a valid FreeAgent category URL for proper ledger posting.

    Create an Expense Claim

    Creates an expense claim in FreeAgent. Use this endpoint to submit employee expense claims from expense management systems into FreeAgent for reimbursement processing.

    • Sends a POST request to the FreeAgent expenses endpoint; required fields include the user URL, category, dated on, total value, and currency.
    • Returns the newly created expense object in the response, including the system-assigned expense URL.

    Expense claims are associated with a specific FreeAgent user. Ensure the target user URL is available in your Nexset data or use a lookup macro to reference the correct user.

    Explain (Reconcile) a Bank Transaction Against an Invoice, Bill, or Expense

    Reconciles (explains) a FreeAgent bank transaction against an invoice, bill, or expense. Use this endpoint to automate the matching of bank transactions to FreeAgent accounting documents.

    • Sends a POST request to the FreeAgent bank transaction explanation endpoint; the request body must reference both the bank transaction URL and the document (invoice, bill, or expense) URL to reconcile against.
    • Successfully explained transactions are marked as reconciled in FreeAgent and removed from the unreconciled transaction queue.

    Both the bank transaction URL and the document URL must reference existing FreeAgent records. This endpoint is commonly used in conjunction with the List Bank Transactions source endpoint and a matching/lookup step in Nexla.

    Create a New Contact (Customer or Supplier)

    Creates a new contact (customer or supplier) in FreeAgent. Use this endpoint to synchronize contact records from CRM systems, e-commerce platforms, or other data sources into FreeAgent.

    • Sends a POST request to the FreeAgent contacts endpoint; required fields include the contact's first and last name (or organisation name) and at least one contact method.
    • Returns the newly created contact object in the response, including the system-assigned contact URL needed for referencing this contact in invoices, bills, and other records.

    Enable the Response Webhook to capture the new contact URL from the response — this URL is required when creating invoices or bills for the contact in subsequent flow steps.

    Create an Estimate / Quote

    Creates an estimate (quote) in FreeAgent. Use this endpoint to generate customer-facing quotes from proposal or quoting system data.

    • Sends a POST request to the FreeAgent estimates endpoint; required fields include the contact URL, dated on, and at least one line item with a description and price.
    • Returns the newly created estimate object in the response, including the system-assigned estimate URL and reference number.

    Estimates can be converted to invoices within FreeAgent once accepted. Use the Response Webhook to capture the estimate URL for downstream status tracking.

    Create a Project

    Creates a project in FreeAgent. Use this endpoint to push project records from project management tools into FreeAgent for time and billing tracking.

    • Sends a POST request to the FreeAgent projects endpoint; required fields include the project name and associated contact URL.
    • Returns the newly created project object in the response, including the system-assigned project URL used for associating tasks and timeslips.

    Enable the Response Webhook to capture the new project URL — this is required when creating tasks or timeslips associated with the project in downstream flow steps.

    Log a Timeslip (Time Entry) Against a Task/Project

    Logs a timeslip (time entry) against a task or project in FreeAgent. Use this endpoint to sync time tracking data from external time management tools into FreeAgent for billing and reporting.

    • Sends a POST request to the FreeAgent timeslips endpoint; required fields include the user URL, task URL, dated on, and hours worked.
    • Returns the newly created timeslip object in the response.

    Timeslips require valid URLs for both the associated user and task. Ensure both the user and task records exist in FreeAgent before creating timeslips. The timeslip date must be in YYYY-MM-DD format.

    Update an Existing Contact

    Updates an existing contact in FreeAgent. Use this endpoint to keep FreeAgent contact records in sync with changes from CRM or other authoritative source systems.

    • Sends a PUT request to the FreeAgent contact endpoint for the specified contact; only the fields included in the request body are updated.
    • Returns the updated contact object in the response.

    Configure the following parameter: Id — the FreeAgent contact ID or URL for the contact to be updated. Ensure the contact exists in FreeAgent before attempting an update.

    Create a Manual Journal Entry

    Creates a manual journal entry in FreeAgent. Use this endpoint to post adjusting entries, accruals, or other manual accounting adjustments directly from Nexla.

    • Sends a POST request to the FreeAgent journal entries endpoint; the request body must include the journal entry date and at least two balanced debit/credit line items referencing valid FreeAgent ledger account URLs.
    • Returns the newly created journal entry in the response.

    Journal entries must balance — total debits must equal total credits. Each line item must reference a valid FreeAgent chart-of-accounts category URL. Manual journal entries are typically used for period-end adjustments and corrections.

Endpoint Testing

Once the selected endpoint template has been configured, Nexla can send a test payload to the FreeAgent API to verify the destination is configured correctly before activating.

  • To send a test payload, select the Test button at the top of the Sample Payload panel, and click on a listed sample payload to expand it.

  • If any modifications to the sample payload are needed, make the necessary changes directly within the sample window.

  • Click the Send Test Data button at the top of a sample payload to send the test payload to the FreeAgent API using the current settings.

Configure Manually

FreeAgent destinations can also be configured manually, allowing you to send data to any valid FreeAgent API endpoint. You can also configure Nexla to automatically send the response received from the FreeAgent API after each call to a new Nexla webhook data source.

First, select the API method that will be used for calls to the FreeAgent API from the Method pulldown menu.

Common HTTP methods used when writing data to the FreeAgent API include:

  • POST: For creating new resources (e.g., creating a new contact, invoice, expense, or bill)
  • PUT: For replacing an existing resource in full (e.g., updating all fields of an existing contact or invoice)
  • PATCH: For partial updates to an existing resource (e.g., updating only specific fields of an existing invoice)
  • DELETE: For removing a resource

The FreeAgent API base URL for production is https://api.freeagent.com/v2. Most write operations use POST for creation and PUT for updates. For example, creating a new contact uses POST https://api.freeagent.com/v2/contacts, while updating an existing contact uses PUT https://api.freeagent.com/v2/contacts/{id}. Refer to the FreeAgent API documentation for the exact HTTP method and URL path for each resource.

Data Format

  1. Select the format in which the Nexset data will be sent to the FreeAgent API from the Content Format pulldown menu. Nexla will automatically convert the data to the selected format for each API call.

    The FreeAgent API accepts data in JSON format. Select JSON as the content format to ensure compatibility with the FreeAgent API's expected request body structure.

API Endpoint URL

  1. Enter the URL of the FreeAgent API endpoint to which you want to send the Nexset data in the URL field. For update/upsert operations, include the ID of the object to be updated at the end of the URL.

    Common FreeAgent API endpoint URL patterns for write operations include:

    • Create Contact: https://api.freeagent.com/v2/contacts
    • Update Contact: https://api.freeagent.com/v2/contacts/{id}
    • Create Invoice: https://api.freeagent.com/v2/invoices
    • Create Bill: https://api.freeagent.com/v2/bills
    • Create Expense: https://api.freeagent.com/v2/expenses
    • Create Timeslip: https://api.freeagent.com/v2/timeslips
    • Create Project: https://api.freeagent.com/v2/projects
    • Create Bank Transaction: https://api.freeagent.com/v2/bank_transactions

    For resource-specific update operations, you must include the FreeAgent resource ID or URL at the end of the endpoint path (e.g., https://api.freeagent.com/v2/contacts/12345). The FreeAgent API also accepts resource URLs as identifiers in some contexts — for example, a contact's URL (https://api.freeagent.com/v2/contacts/12345) can be used as a reference field when creating related resources such as invoices. For complete details on resource structures and required fields, refer to the FreeAgent API reference.

Request Headers

Optional
  • If Nexla should include any additional request headers in API calls to this destination, enter the headers & corresponding values as comma-separated pairs in the Request Headers field (e.g., header1:value1,header2:value2).

    You do not need to include the OAuth Authorization header — this is handled automatically by Nexla using the FreeAgent credential. The FreeAgent API expects JSON request bodies for write operations; the Content-Type: application/json header is typically set automatically based on your selected Content Format.

Exclude Attributes from the Call

Optional
  • If any record attributes in the Nexset should be omitted when sending data to this FreeAgent destination, select the attributes from the Exclude Attributes pulldown menu.

  • Any number of attributes can be selected for exclusion, and all excluded attributes will be shown in the field. To remove an attribute from the list, click the X icon next to the attribute name.

Record Batching

Optional
  1. If records should be sent to this destination in batched API calls, check the box next to Would you like to batch your records together? to enable record batching.

  2. Enter the maximum number of records that should be batched together in a single API call in the Batch Size field. By default, this value is set to 100.

  3. Select the algorithm that will be used to group records into batches from the Grouping Algorithm pulldown menu. The sample request shown in the panel on the right will be updated to reflect the current batching settings. Some algorithms require additional settings — click on an algorithm listed below to view instructions for configuring these settings.

    Most FreeAgent API write endpoints operate on individual resources (one record per API call). Record batching is most applicable when using a custom endpoint or a FreeAgent API endpoint that supports bulk operations. For standard FreeAgent resource endpoints, sending one record per call (the default) is recommended for compatibility.

Response Webhook

Optional

Nexla can automatically send the response received from the FreeAgent API after each call to a new Nexla webhook data source. This option allows you to keep track of the status of each API call and any additional information returned after each call.

  • To enable this option, check the box next to Would you like to process the API response as a Nexla Webhook source?.

    Enabling the Response Webhook is useful for capturing FreeAgent API responses that include the newly created resource — for example, after creating an invoice via POST /v2/invoices, FreeAgent returns the full invoice object including the system-assigned resource URL and ID. Capturing these responses allows you to use the new resource identifiers in downstream flows.

Sample Request Payload

Sample request payloads containing a portion of the Nexset data that will be sent to the FreeAgent API endpoint based on the current settings are shown in the Sample Payload panel on the right. These samples can be referenced to ensure that the destination and request settings are correctly configured.

  • Click on a sample request payload to expand it and view the complete payload content.

  • Sample payloads are automatically updated with each setting change, making it easy to verify that changes achieve the desired effect.

Endpoint Testing

After all endpoint settings have been configured, Nexla can send a test payload to the FreeAgent API to ensure that the destination is configured correctly.

  1. To send a test payload, select the Test button at the top of the Sample Payload panel, and click on a listed sample payload to expand it.

  2. If any modifications to the sample payload are needed, make the necessary changes directly within the sample window.

  3. Click the Send Test Data button at the top of a sample payload to send the test payload to the FreeAgent API using the current settings.

Save & Activate the Destination

  • Once all endpoint settings have been configured, click the Done button in the upper right corner of the screen to save and create the destination. To send the data to the configured FreeAgent endpoint, open the destination resource menu, and select Activate.

    The Nexset data will not be sent to FreeAgent until the destination is activated. Destinations can be activated immediately or at a later time, providing full control over data movement.