# Freeagent API: client\_contact\_name works via web UI but is ignored by estimates api

**URL:** <https://api-discuss.freeagent.com/t/freeagent-api-client-contact-name-works-via-web-ui-but-is-ignored-by-estimates-api/6611>\
**Category:** Uncategorized\
**Created:** [5 July 2026 22:07 UTC](https://api-discuss.freeagent.com/t/freeagent-api-client-contact-name-works-via-web-ui-but-is-ignored-by-estimates-api/6611 "2026-07-05T22:07:55Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![andycutting](https://api-discuss.freeagent.com/user_avatar/api-discuss.freeagent.com/andycutting/32/1240_2.png) [@andycutting](https://api-discuss.freeagent.com/u/andycutting)\
**Post date:** [5 July 2026 22:07 UTC](https://api-discuss.freeagent.com/t/freeagent-api-client-contact-name-works-via-web-ui-but-is-ignored-by-estimates-api/6611/1 "2026-07-05T22:07:55Z")

</div>

Hi all,

I’m trying to use the FreeAgent API to create/update draft Quotes/Estimates and override the displayed recipient/contact name using client\_contact\_name.

The Estimates API documentation says:

`> client_contact_name — Will override the default contact name on this estimate.`

My understanding is that this should allow the estimate to remain linked to the normal FreeAgent contact, while changing the name displayed on the estimate/quote itself.

The use case is simply that we sometimes need the quote recipient name to include a “C/O” name, without changing the underlying accounting contact.

For example, simplified create payload:

`json`  
`{`  
`"estimate": {`  
`"status": "Draft",`  
`"estimate_type": "Quote",`  
`"contact": "``https://api.freeagent.com/v2/contacts/12345678``",`  
`"reference": "API-TEST-001",`  
`"dated_on": "2026-07-05",`  
`"currency": "GBP",`  
`"client_contact_name": "Example C/O Name",`  
`"notes": "API test draft - do not send",`  
`"estimate_items": [`  
`{`  
`"item_type": "Services",`  
`"description": "API test line item",`  
`"quantity": 1,`  
`"price": 1,`  
`"sales_tax_rate": 0`  
`}`  
`]`  
`}`  
`}`

The estimate is created successfully as a draft quote. However, the API response includes the normal contact\_name, but completely omits client\_contact\_name.

A follow-up GET request also omits client\_contact\_name.

I have also tested updating an existing draft estimate via PUT with client\_contact\_name included in the payload. The API request is accepted, the estimate updates successfully, and updated\_at changes. However, the displayed contact name does not change and client\_contact\_name is still omitted from the response.

The confusing part is that if I open the same draft estimate in the FreeAgent web interface and manually change the contact/recipient name there, the API then does return client\_contact\_name on a subsequent GET request.

So the behaviour I’m seeing is:

- Creating an estimate via API with client\_contact\_name:

- estimate is created successfully
- no validation error
- client\_contact\_name is omitted from the response
- displayed recipient name remains the default FreeAgent contact name

- Updating an existing estimate via API with client\_contact\_name:

- estimate update succeeds
- updated\_at changes
- no validation error
- displayed recipient name does not change
- client\_contact\_name is omitted from the response, unless it had previously been set manually in the web UI

- Manually changing the recipient/contact name in the FreeAgent web UI:

- the displayed name changes correctly
- subsequent API GET requests then include client\_contact\_name

That makes it look as though client\_contact\_name exists and is readable through the API, but is not actually writable through the Estimates API.

Has anyone else managed to set client\_contact\_name on an Estimate/Quote through the API?

If it is not writable via the API, is there another supported way to override the recipient name shown on the quote PDF while keeping the estimate linked to the original FreeAgent contact?

Any confirmation or workaround would be appreciated.

Thanks.

---

<div class="post-metadata">

**Author:** ![andycutting](https://api-discuss.freeagent.com/user_avatar/api-discuss.freeagent.com/andycutting/32/1240_2.png) [@andycutting](https://api-discuss.freeagent.com/u/andycutting)\
**Post date:** [19 July 2026 20:17 UTC](https://api-discuss.freeagent.com/t/freeagent-api-client-contact-name-works-via-web-ui-but-is-ignored-by-estimates-api/6611/2 "2026-07-19T20:17:28Z")

</div>

Hi, can someone look in to this for me? I am still unable to set client\_contact\_name via the api for estimates but all ok on the invoice endpoint.

---

<div class="post-metadata">

**Author:** ![georgebaker](https://api-discuss.freeagent.com/user_avatar/api-discuss.freeagent.com/georgebaker/32/639_2.png) [@georgebaker](https://api-discuss.freeagent.com/u/georgebaker)\
**Post date:** [3 August 2026 08:44 UTC](https://api-discuss.freeagent.com/t/freeagent-api-client-contact-name-works-via-web-ui-but-is-ignored-by-estimates-api/6611/3 "2026-08-03T08:44:20Z")

</div>

Hey @andycutting - thanks for flagging this and sorry for the delay in responding. I’ve had a look into this and it looks like the `client_contact_name` param was silently being ignored by our estimate API create/update endpoints, which I’ve now fixed. Sorry about that, and hopefully it’ll now be working! Let us know how you get on.
