Read FreeAgent contacts, invoices, bills, banking and reports; add contacts, draft invoices, time.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Create a client or supplier contact. Give either organisation_name, or first_name and last_name. FreeAgent: POST /v2/contacts.
Town or city.
Email address.
Invoice language locale, e.g. en.
Mobile number.
Region / county.
Country name, e.g. United Kingdom.
Address line 1.
Address line 2.
Address line 3.
Postcode.
Contact last name.
Contact first name.
Phone number.
Email address invoices are sent to.
Whether to charge VAT/sales tax.
Organisation / company name.
Show the contact's name on invoices.
Default payment terms for invoices to this contact.
The contact's VAT registration number.
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
Create a client or supplier contact. Give either organisation_name, or first_name and last_name. FreeAgent: POST /v2/contacts.
| Argument | Type | Description |
|---|---|---|
| town | string | Town or city. |
| string | Email address. | |
| locale | string | Invoice language locale, e.g. en. |
| mobile | string | Mobile number. |
| region | string | Region / county. |
| country | string | Country name, e.g. United Kingdom. |
| address1 | string | Address line 1. |
| address2 | string | Address line 2. |
| address3 | string | Address line 3. |
| postcode | string | Postcode. |
| last_name | string | Contact last name. |
| first_name | string | Contact first name. |
| phone_number | string | Phone number. |
| billing_email | string | Email address invoices are sent to. |
| charge_sales_tax | string | Whether to charge VAT/sales tax. |
| organisation_name | string | Organisation / company name. |
| contact_name_on_invoices | boolean | Show the contact's name on invoices. |
| default_payment_terms_in_days | integer | Default payment terms for invoices to this contact. |
| sales_tax_registration_number | string | The contact's VAT registration number. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"town": {
"type": "string",
"description": "Town or city."
},
"email": {
"type": "string",
"description": "Email address."
},
"locale": {
"type": "string",
"description": "Invoice language locale, e.g. en."
},
"mobile": {
"type": "string",
"description": "Mobile number."
},
"region": {
"type": "string",
"description": "Region / county."
},
"country": {
"type": "string",
"description": "Country name, e.g. United Kingdom."
},
"address1": {
"type": "string",
"description": "Address line 1."
},
"address2": {
"type": "string",
"description": "Address line 2."
},
"address3": {
"type": "string",
"description": "Address line 3."
},
"postcode": {
"type": "string",
"description": "Postcode."
},
"last_name": {
"type": "string",
"description": "Contact last name."
},
"first_name": {
"type": "string",
"description": "Contact first name."
},
"phone_number": {
"type": "string",
"description": "Phone number."
},
"billing_email": {
"type": "string",
"description": "Email address invoices are sent to."
},
"charge_sales_tax": {
"enum": [
"Auto",
"Always",
"Never"
],
"type": "string",
"description": "Whether to charge VAT/sales tax."
},
"organisation_name": {
"type": "string",
"description": "Organisation / company name."
},
"contact_name_on_invoices": {
"type": "boolean",
"description": "Show the contact's name on invoices."
},
"default_payment_terms_in_days": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Default payment terms for invoices to this contact."
},
"sales_tax_registration_number": {
"type": "string",
"description": "The contact's VAT registration number."
}
}
}Create a sales invoice in DRAFT status. Nothing is sent to the customer and nothing is posted as income until it is marked sent in FreeAgent; a draft can be edited or discarded there. FreeAgent: POST /v2/invoices.
| Argument | Type | Description |
|---|---|---|
| due_on | string | Explicit due date, if not derived from payment terms (YYYY-MM-DD). |
| contact* | string | The contact being invoiced's numeric id or full FreeAgent URL. |
| project | string | The project's numeric id or full FreeAgent URL. |
| comments | string | Comments printed on the invoice. |
| currency | string | ISO currency code, e.g. GBP (defaults to the company currency). |
| dated_on* | string | Invoice date (YYYY-MM-DD). |
| reference | string | Invoice reference/number; omit to use the next in sequence. |
| po_reference | string | The customer's purchase-order reference. |
Log time against a project task for a user. Get the user from freeagent_get_current_user and the task from freeagent_list_tasks. Editable or removable in FreeAgent afterwards. FreeAgent: POST /v2/timeslips.
| Argument | Type | Description |
|---|---|---|
| task* | string | The task's numeric id or full FreeAgent URL. |
| user* | string | The user's numeric id or full FreeAgent URL. |
| hours* | number | Hours worked, e.g. 1.5. |
| comment | string | What the time was spent on. |
| project* | string | The project's numeric id or full FreeAgent URL. |
| dated_on* | string | Day the work was done (YYYY-MM-DD). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"user",
"project",
"task",
"dated_on",
"hours"
],
"properties": {
"task": {
"type": "string",
"description": "The task's numeric id or full FreeAgent URL."
},
"user": {
"type": "string",
"description": "The user's numeric id or full FreeAgent URL."
},
"hours": {
"type": "number",
"maximum": 24,
"description": "Hours worked, e.g. 1.5.",
"exclusiveMinimum": 0
},
"comment": {
"type": "string",
"description": "What the time was spent on."
},
"project": {
"type": "string",
"description": "The project's numeric id or full FreeAgent URL."
},
"dated_on": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Day the work was done (YYYY-MM-DD)."
}
}
}Balance sheet — capital and current assets, liabilities and owners' equity — as at a date (default today). FreeAgent: GET /v2/accounting/balance_sheet.
| Argument | Type | Description |
|---|---|---|
| as_at_date | string | Balance sheet date (YYYY-MM-DD). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"as_at_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Balance sheet date (YYYY-MM-DD)."
}
}
}Fetch the FreeAgent company these credentials belong to — name, type (e.g. UkLimitedCompany), currency, start date and VAT registration status. A cheap way to confirm the setup works. FreeAgent: GET /v2/company.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Fetch a single contact by id or URL. FreeAgent: GET /v2/contacts/:id.
| Argument | Type | Description |
|---|---|---|
| contact* | string | The contact's numeric id or full FreeAgent URL. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"contact"
],
"properties": {
"contact": {
"type": "string",
"description": "The contact's numeric id or full FreeAgent URL."
}
}
}Fetch the FreeAgent user the token acts as, including their URL (needed for freeagent_create_timeslip) and permission level. FreeAgent: GET /v2/users/me.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Fetch a single invoice by id or URL, with its line items, totals, due and paid values. FreeAgent: GET /v2/invoices/:id.
| Argument | Type | Description |
|---|---|---|
| invoice* | string | The invoice's numeric id or full FreeAgent URL. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"invoice"
],
"properties": {
"invoice": {
"type": "string",
"description": "The invoice's numeric id or full FreeAgent URL."
}
}
}Profit and loss summary — income, expenses, operating and retained profit — for a date range or an accounting period (defaults to the current year to date). FreeAgent: GET /v2/accounting/profit_and_loss/summary.
| Argument | Type | Description |
|---|---|---|
| to_date | string | Period end (YYYY-MM-DD). |
| from_date | string | Period start (YYYY-MM-DD). |
| accounting_period | string | An accounting year instead of dates, e.g. 2025/26. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"to_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Period end (YYYY-MM-DD)."
},
"from_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Period start (YYYY-MM-DD)."
},
"accounting_period": {
"type": "string",
"pattern": "^\\d{4}\\/\\d{2}$",
"description": "An accounting year instead of dates, e.g. 2025/26."
}
}
}List upcoming tax deadlines and amounts due — VAT returns, corporation tax, self assessment and so on. FreeAgent: GET /v2/company/tax_timeline.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}List bank, credit-card and PayPal accounts with their current balances. Use an account's URL with freeagent_list_bank_transactions. FreeAgent: GET /v2/bank_accounts.
| Argument | Type | Description |
|---|---|---|
| view | string | Only one kind of account. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"view": {
"enum": [
"standard_bank_accounts",
"credit_card_accounts",
"paypal_accounts"
],
"type": "string",
"description": "Only one kind of account."
}
}
}List the transactions on one bank account, e.g. view=unexplained for what still needs reconciling. FreeAgent: GET /v2/bank_transactions?bank_account=….
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, starting at 1. |
| view | string | Filter (default all). unexplained = not yet reconciled. |
| to_date | string | Transactions dated on or before (YYYY-MM-DD). |
| per_page | integer | Items per page, 1-100 (default 25). |
| from_date | string | Transactions dated on or after (YYYY-MM-DD). |
| bank_account* | string | The bank account's numeric id or full FreeAgent URL. |
| last_uploaded | boolean | Only transactions from the latest statement upload. |
| updated_since | string | Only records updated since this ISO 8601 timestamp, e.g. 2026-01-01T00:00:00Z. |
List supplier bills (purchases), optionally by date range, contact or project, filtered by status. FreeAgent: GET /v2/bills.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, starting at 1. |
| view | string | Filter by status. |
| contact | string | Only for this contact — its numeric id or full FreeAgent URL. |
| project | string | Only for this project — its numeric id or full FreeAgent URL. |
| to_date | string | Bills dated on or before (YYYY-MM-DD). |
| per_page | integer | Items per page, 1-100 (default 25). |
| from_date | string | Bills dated on or after (YYYY-MM-DD). |
| updated_since | string | Only records updated since this ISO 8601 timestamp, e.g. 2026-01-01T00:00:00Z. |
| nested_bill_items | boolean | Include each bill's line items. |
List contacts (clients and suppliers), with their account balance. FreeAgent: GET /v2/contacts.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, starting at 1. |
| sort | string | Sort order; a leading - means descending. |
| view | string | Filter (default active). open_clients = clients with unpaid invoices. |
| per_page | integer | Items per page, 1-100 (default 25). |
| updated_since | string | Only records updated since this ISO 8601 timestamp, e.g. 2026-01-01T00:00:00Z. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number, starting at 1."
},
"sort": {
"enum": [
"name",
"-name",
"created_at",
"-created_at",
"updated_at",
"-updated_at"
],
"type": "string",
"description": "Sort order; a leading - means descending."
},
"view": {
"enum": [
"all",
"active",
"clients",
"suppliers",
"active_projects",
"completed_projects",
"open_clients",
"open_suppliers",
"hidden"
],
"type": "string",
"description": "Filter (default active). open_clients = clients with unpaid invoices."
},
"per_page": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Items per page, 1-100 (default 25)."
},
"updated_since": {
"type": "string",
"description": "Only records updated since this ISO 8601 timestamp, e.g. 2026-01-01T00:00:00Z."
}
}
}List expense claims (out-of-pocket spending and mileage), optionally by date range or project. FreeAgent: GET /v2/expenses.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, starting at 1. |
| view | string | recent or recurring expenses. |
| project | string | Only for this project — its numeric id or full FreeAgent URL. |
| to_date | string | Expenses dated on or before (YYYY-MM-DD). |
| per_page | integer | Items per page, 1-100 (default 25). |
| from_date | string | Expenses dated on or after (YYYY-MM-DD). |
| updated_since | string | Only records updated since this ISO 8601 timestamp, e.g. 2026-01-01T00:00:00Z. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number, starting at 1."
},
"view": {
"enum": [
"recent",
"recurring"
],
"type": "string",
"description": "recent or recurring expenses."
},
"project": {
"type": "string",
"description": "Only for this project — its numeric id or full FreeAgent URL."
},
"to_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Expenses dated on or before (YYYY-MM-DD)."
},
"per_page": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Items per page, 1-100 (default 25)."
},
"from_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Expenses dated on or after (YYYY-MM-DD)."
},
"updated_since": {
"type": "string",
"description": "Only records updated since this ISO 8601 timestamp, e.g. 2026-01-01T00:00:00Z."
}
}
}List sales invoices, optionally for one contact or project, filtered by status. FreeAgent: GET /v2/invoices.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, starting at 1. |
| sort | string | Sort order (default created_at); a leading - means descending. |
| view | string | Filter: all, recent_open_or_overdue, open, overdue, open_or_overdue, draft, paid, scheduled_to_email, thank_you_emails, reminder_emails, or last_N_months (e.g. last_3_months). |
| contact | string | Only for this contact — its numeric id or full FreeAgent URL. |
| project | string | Only for this project — its numeric id or full FreeAgent URL. |
| per_page | integer | Items per page, 1-100 (default 25). |
| updated_since | string | Only records updated since this ISO 8601 timestamp, e.g. 2026-01-01T00:00:00Z. |
| nested_invoice_items | boolean | Include each invoice's line items. |
List projects, optionally for one contact. FreeAgent: GET /v2/projects.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, starting at 1. |
| sort | string | Sort order; a leading - means descending. |
| view | string | Filter by status. |
| nested | boolean | Embed the related contact instead of its URL. |
| contact | string | Only for this contact — its numeric id or full FreeAgent URL. |
| per_page | integer | Items per page, 1-100 (default 25). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number, starting at 1."
},
"sort": {
"enum": [
"name",
"-name",
"contact_name",
"-contact_name",
"contact_display_name",
"-contact_display_name",
"created_at",
"-created_at",
"updated_at",
"-updated_at"
],
"type": "string",
"description": "Sort order; a leading - means descending."
},
"view": {
"enum": [
"active",
"completed",
"cancelled",
"hidden"
],
"type": "string",
"description": "Filter by status."
},
"nested": {
"type": "boolean",
"description": "Embed the related contact instead of its URL."
},
"contact": {
"type": "string",
"description": "Only for this contact — its numeric id or full FreeAgent URL."
},
"per_page": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Items per page, 1-100 (default 25)."
}
}
}List project tasks with their billing rates, optionally for one project. A task's URL is needed for freeagent_create_timeslip. FreeAgent: GET /v2/tasks.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, starting at 1. |
| sort | string | Sort order (default name). |
| view | string | Filter by status (default all). |
| project | string | Only for this project — its numeric id or full FreeAgent URL. |
| per_page | integer | Items per page, 1-100 (default 25). |
| updated_since | string | Only records updated since this ISO 8601 timestamp, e.g. 2026-01-01T00:00:00Z. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number, starting at 1."
},
"sort": {
"enum": [
"name",
"project",
"billing_rate",
"created_at",
"updated_at"
],
"type": "string",
"description": "Sort order (default name)."
},
"view": {
"enum": [
"all",
"active",
"completed",
"hidden"
],
"type": "string",
"description": "Filter by status (default all)."
},
"project": {
"type": "string",
"description": "Only for this project — its numeric id or full FreeAgent URL."
},
"per_page": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Items per page, 1-100 (default 25)."
},
"updated_since": {
"type": "string",
"description": "Only records updated since this ISO 8601 timestamp, e.g. 2026-01-01T00:00:00Z."
}
}
}List logged time, optionally by date range, user, task or project; view=unbilled for time not yet invoiced. FreeAgent: GET /v2/timeslips.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, starting at 1. |
| task | string | Only for this task — its numeric id or full FreeAgent URL. |
| user | string | Only for this user — its numeric id or full FreeAgent URL. |
| view | string | Filter (default all). |
| nested | boolean | Embed related user, task and project instead of URLs. |
| project | string | Only for this project — its numeric id or full FreeAgent URL. |
| to_date | string | Timeslips dated on or before (YYYY-MM-DD). |
| per_page | integer | Items per page, 1-100 (default 25). |
| from_date | string | Timeslips dated on or after (YYYY-MM-DD). |
Update fields on an existing contact; only the fields you pass change. status=Hidden hides it (reversible with Active). FreeAgent: PUT /v2/contacts/:id.
| Argument | Type | Description |
|---|---|---|
| town | string | Town or city. |
| string | Email address. | |
| locale | string | Invoice language locale, e.g. en. |
| mobile | string | Mobile number. |
| region | string | Region / county. |
| status | string | Hide or unhide the contact. |
| contact* | string | The contact's numeric id or full FreeAgent URL. |
| country | string | Country name, e.g. United Kingdom. |
| address1 | string | Address line 1. |
| address2 | string | Address line 2. |
| exchange_rate |
| number |
| Exchange rate for a foreign-currency invoice. |
| invoice_items* | array | The invoice lines. |
| discount_percent | number | Whole-invoice discount percentage. |
| payment_terms_in_days* | integer | Payment terms in days; 0 = due on receipt. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"contact",
"dated_on",
"payment_terms_in_days",
"invoice_items"
],
"properties": {
"due_on": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Explicit due date, if not derived from payment terms (YYYY-MM-DD)."
},
"contact": {
"type": "string",
"description": "The contact being invoiced's numeric id or full FreeAgent URL."
},
"project": {
"type": "string",
"description": "The project's numeric id or full FreeAgent URL."
},
"comments": {
"type": "string",
"description": "Comments printed on the invoice."
},
"currency": {
"type": "string",
"maxLength": 3,
"minLength": 3,
"description": "ISO currency code, e.g. GBP (defaults to the company currency)."
},
"dated_on": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Invoice date (YYYY-MM-DD)."
},
"reference": {
"type": "string",
"description": "Invoice reference/number; omit to use the next in sequence."
},
"po_reference": {
"type": "string",
"description": "The customer's purchase-order reference."
},
"exchange_rate": {
"type": "number",
"description": "Exchange rate for a foreign-currency invoice.",
"exclusiveMinimum": 0
},
"invoice_items": {
"type": "array",
"items": {
"type": "object",
"required": [
"description"
],
"properties": {
"price": {
"type": "number",
"description": "Unit price, in the invoice currency (required for non time-based items)."
},
"quantity": {
"type": "number",
"description": "Quantity (default 0)."
},
"item_type": {
"enum": [
"Hours",
"Days",
"Weeks",
"Months",
"Years",
"Products",
"Services",
"Training",
"Expenses",
"Comment",
"Bills",
"Discount",
"Credit",
"VAT",
"Stock"
],
"type": "string",
"description": "Unit type of the line (e.g. Hours, Days, Services, Products)."
},
"description": {
"type": "string",
"description": "Line description."
},
"sales_tax_rate": {
"type": "number",
"minimum": 0,
"description": "VAT rate percentage for this line, e.g. 20."
}
}
},
"minItems": 1,
"description": "The invoice lines."
},
"discount_percent": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Whole-invoice discount percentage."
},
"payment_terms_in_days": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Payment terms in days; 0 = due on receipt."
}
}
}{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"bank_account"
],
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number, starting at 1."
},
"view": {
"enum": [
"all",
"unexplained",
"explained",
"manual",
"imported",
"marked_for_review"
],
"type": "string",
"description": "Filter (default all). unexplained = not yet reconciled."
},
"to_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Transactions dated on or before (YYYY-MM-DD)."
},
"per_page": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Items per page, 1-100 (default 25)."
},
"from_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Transactions dated on or after (YYYY-MM-DD)."
},
"bank_account": {
"type": "string",
"description": "The bank account's numeric id or full FreeAgent URL."
},
"last_uploaded": {
"type": "boolean",
"description": "Only transactions from the latest statement upload."
},
"updated_since": {
"type": "string",
"description": "Only records updated since this ISO 8601 timestamp, e.g. 2026-01-01T00:00:00Z."
}
}
}{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number, starting at 1."
},
"view": {
"enum": [
"all",
"open",
"overdue",
"open_or_overdue",
"open_or_overdue_payments",
"open_or_overdue_refunds",
"paid",
"recurring",
"hire_purchase",
"cis"
],
"type": "string",
"description": "Filter by status."
},
"contact": {
"type": "string",
"description": "Only for this contact — its numeric id or full FreeAgent URL."
},
"project": {
"type": "string",
"description": "Only for this project — its numeric id or full FreeAgent URL."
},
"to_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Bills dated on or before (YYYY-MM-DD)."
},
"per_page": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Items per page, 1-100 (default 25)."
},
"from_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Bills dated on or after (YYYY-MM-DD)."
},
"updated_since": {
"type": "string",
"description": "Only records updated since this ISO 8601 timestamp, e.g. 2026-01-01T00:00:00Z."
},
"nested_bill_items": {
"type": "boolean",
"description": "Include each bill's line items."
}
}
}{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number, starting at 1."
},
"sort": {
"enum": [
"created_at",
"-created_at",
"updated_at",
"-updated_at"
],
"type": "string",
"description": "Sort order (default created_at); a leading - means descending."
},
"view": {
"type": "string",
"pattern": "^(all|recent_open_or_overdue|open|overdue|open_or_overdue|draft|paid|scheduled_to_email|thank_you_emails|reminder_emails|last_\\d+_months)$",
"description": "Filter: all, recent_open_or_overdue, open, overdue, open_or_overdue, draft, paid, scheduled_to_email, thank_you_emails, reminder_emails, or last_N_months (e.g. last_3_months)."
},
"contact": {
"type": "string",
"description": "Only for this contact — its numeric id or full FreeAgent URL."
},
"project": {
"type": "string",
"description": "Only for this project — its numeric id or full FreeAgent URL."
},
"per_page": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Items per page, 1-100 (default 25)."
},
"updated_since": {
"type": "string",
"description": "Only records updated since this ISO 8601 timestamp, e.g. 2026-01-01T00:00:00Z."
},
"nested_invoice_items": {
"type": "boolean",
"description": "Include each invoice's line items."
}
}
}| updated_since |
| string |
| Only records updated since this ISO 8601 timestamp, e.g. 2026-01-01T00:00:00Z. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number, starting at 1."
},
"task": {
"type": "string",
"description": "Only for this task — its numeric id or full FreeAgent URL."
},
"user": {
"type": "string",
"description": "Only for this user — its numeric id or full FreeAgent URL."
},
"view": {
"enum": [
"all",
"unbilled",
"running"
],
"type": "string",
"description": "Filter (default all)."
},
"nested": {
"type": "boolean",
"description": "Embed related user, task and project instead of URLs."
},
"project": {
"type": "string",
"description": "Only for this project — its numeric id or full FreeAgent URL."
},
"to_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Timeslips dated on or before (YYYY-MM-DD)."
},
"per_page": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Items per page, 1-100 (default 25)."
},
"from_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Timeslips dated on or after (YYYY-MM-DD)."
},
"updated_since": {
"type": "string",
"description": "Only records updated since this ISO 8601 timestamp, e.g. 2026-01-01T00:00:00Z."
}
}
}| address3 | string | Address line 3. |
| postcode | string | Postcode. |
| last_name | string | Contact last name. |
| first_name | string | Contact first name. |
| phone_number | string | Phone number. |
| billing_email | string | Email address invoices are sent to. |
| charge_sales_tax | string | Whether to charge VAT/sales tax. |
| organisation_name | string | Organisation / company name. |
| contact_name_on_invoices | boolean | Show the contact's name on invoices. |
| default_payment_terms_in_days | integer | Default payment terms for invoices to this contact. |
| sales_tax_registration_number | string | The contact's VAT registration number. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"contact"
],
"properties": {
"town": {
"type": "string",
"description": "Town or city."
},
"email": {
"type": "string",
"description": "Email address."
},
"locale": {
"type": "string",
"description": "Invoice language locale, e.g. en."
},
"mobile": {
"type": "string",
"description": "Mobile number."
},
"region": {
"type": "string",
"description": "Region / county."
},
"status": {
"enum": [
"Active",
"Hidden"
],
"type": "string",
"description": "Hide or unhide the contact."
},
"contact": {
"type": "string",
"description": "The contact's numeric id or full FreeAgent URL."
},
"country": {
"type": "string",
"description": "Country name, e.g. United Kingdom."
},
"address1": {
"type": "string",
"description": "Address line 1."
},
"address2": {
"type": "string",
"description": "Address line 2."
},
"address3": {
"type": "string",
"description": "Address line 3."
},
"postcode": {
"type": "string",
"description": "Postcode."
},
"last_name": {
"type": "string",
"description": "Contact last name."
},
"first_name": {
"type": "string",
"description": "Contact first name."
},
"phone_number": {
"type": "string",
"description": "Phone number."
},
"billing_email": {
"type": "string",
"description": "Email address invoices are sent to."
},
"charge_sales_tax": {
"enum": [
"Auto",
"Always",
"Never"
],
"type": "string",
"description": "Whether to charge VAT/sales tax."
},
"organisation_name": {
"type": "string",
"description": "Organisation / company name."
},
"contact_name_on_invoices": {
"type": "boolean",
"description": "Show the contact's name on invoices."
},
"default_payment_terms_in_days": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Default payment terms for invoices to this contact."
},
"sales_tax_registration_number": {
"type": "string",
"description": "The contact's VAT registration number."
}
}
}