diff --git a/blog/260331-update-suppliers-bill-pay.md b/blog/260331-update-suppliers-bill-pay.md
new file mode 100644
index 0000000000..967b9c3807
--- /dev/null
+++ b/blog/260331-update-suppliers-bill-pay.md
@@ -0,0 +1,26 @@
+---
+title: "Bill Pay: update suppliers with ease"
+date: "2026-03-31"
+tags: ["Product", "Update", "Bill Pay"]
+authors: pzaichkina
+---
+
+You can now update existing suppliers directly through our Bill Pay solution.
+
+
+
+## What's new?
+
+We've expanded our [Bill Pay](/payables/overview) solution with the new [Update suppliers](/sync-for-payables-v2-api#/operations/update-supplier) endpoint.
+
+With this update, your customers can edit suppliers in their accounting software, and we will automatically sync these changes to your platform, keeping the records accurate and up-to-date.
+
+The endpoint currently supports our FreeAgent, QuickBooks Online, and Xero integrations.
+
+## Who is this relevant for?
+
+This update is relevant for all clients using Codat's Bill Pay solution who want to give their customers a seamless bill and supplier management experience.
+
+## How to get started?
+
+You can start using the endpoint right now. Check out the [Update suppliers](/sync-for-payables-v2-api#/operations/update-supplier) endpoint in our API reference, or explore Bill Pay's [Update supplier](/payables/sync/update-supplier) documentation for a full walkthrough.s
\ No newline at end of file
diff --git a/docs/payables/_manage-suppliers.md b/docs/payables/_manage-suppliers.md
index 25a04603ed..be3f9c47ae 100644
--- a/docs/payables/_manage-suppliers.md
+++ b/docs/payables/_manage-suppliers.md
@@ -155,4 +155,4 @@ supplierCreateResponse, err := payablesClient.Suppliers.Create(ctx, operations.C
-
+
\ No newline at end of file
diff --git a/docs/payables/configure-customer.md b/docs/payables/configure-customer.md
index cc2c6c32a0..14e48e5d30 100644
--- a/docs/payables/configure-customer.md
+++ b/docs/payables/configure-customer.md
@@ -126,23 +126,6 @@ Next, use the [Create connection](/sync-for-payables-v2-api#/operations/create-c
This will allow you to synchronize data with that source, fetching or creating suppliers, bills, and payment methods. In the request body, specify a `platformKey` of the accounting software you're looking to connect.
-
-
-
-
-| Accounting software | platformKey |
-| ------------------- | ----------- |
-| MYOB Business | `pdvj` |
-| Oracle NetSuite | `akxx` |
-| QuickBooks Online | `qhyg` |
-| QuickBooks Desktop | `pqsw` |
-| Sage Intacct | `knfz` |
-| Xero | `gbol` |
-
-
-
-
-
| Accounting software | platformKey |
| ------------------- | ----------- |
| FreeAgent | `fbrh` |
@@ -150,10 +133,6 @@ This will allow you to synchronize data with that source, fetching or creating s
| QuickBooks Online | `qhyg` |
| Xero | `gbol` |
-
-
-
-
As an example, let's create a QuickBooks Online (QBO) connection. In response, the endpoint returns a `dataConnection` object with a `PendingAuth` status and a `linkUrl`. Direct your customer to the `linkUrl` to initiate our [Link auth flow](/auth-flow/overview) and enable them to authorize this connection.
diff --git a/docs/payables/sync/bills.md b/docs/payables/sync/bills.md
index 7a51741a42..b863ae7ecf 100644
--- a/docs/payables/sync/bills.md
+++ b/docs/payables/sync/bills.md
@@ -1,6 +1,6 @@
---
title: Manage bills
-description: "View and create bills using Codat's sync Bill Pay solution"
+description: "View and create bills using Codat's Bill Pay solution"
sidebar_label: Create a bill
---
@@ -17,10 +17,11 @@ We distinguish between invoices where the company _owes_ money and those where t
## Overview
-In Codat, a bill represents an _accounts payable_ invoice issued to an SMB by their supplier. With synchronous Bill Pay, you can:
+In Codat, a bill represents an _accounts payable_ invoice issued to an SMB by their supplier. With Bill Pay, you can:
- Retrieve your customer's existing bills.
- Create new bills in your system and reflect them in your customer's accounting software.
+- Update existing bills and reflect the changes in your customer's accounting software.
We have highlighted this alternative sequence of steps in our detailed process diagram below.
@@ -43,6 +44,9 @@ We have highlighted this alternative sequence of steps in our detailed process d
else Create bill
app ->> codat: Creates bill
codat ->> acctg: Creates bill
+ else Update bill
+ app ->> codat: Updates bill
+ codat ->> acctg: Updates bill
end
```
@@ -52,7 +56,7 @@ We have highlighted this alternative sequence of steps in our detailed process d
:::tip Filter the bill list
-Bill endpoints of the sync Bill Pay solution only return **open** or **partially paid** bills from the accounting platform. You can use [query parameters](/using-the-api/querying) to change the scope of results.
+Bill endpoints of the Bill Pay solution only return **open** or **partially paid** bills from the accounting platform. You can use [query parameters](/using-the-api/querying) to change the scope of results.
:::
> app: Provides supplier details
app ->> codat: Creates supplier
codat ->> acctg: Creates supplier record
+ else Update supplier
+ smb ->> app: Provides updated supplier details
+ app ->> codat: Updates supplier
+ codat ->> acctg: Updates supplier record
end
```
@@ -44,7 +48,7 @@ To pay a bill in Bill Pay, you can use your customer's existing suppliers or cre
:::tip Narrow down the supplier list
-Supplier endpoints of the sync Bill Pay solution return only **active** suppliers from the accounting platform. You can use [query parameters](/using-the-api/querying) to narrow down the list of results further.
+Supplier endpoints of the Bill Pay solution return only **active** suppliers from the accounting platform. You can use [query parameters](/using-the-api/querying) to narrow down the list of results further.
:::
+## Update supplier
+
+If your customer's existing supplier changes address or business name, you can reflect this change in their accounting software using the [Update supplier](sync-for-payables-v2-api#/operations/update-supplier) endpoint.
+
+Include all fields in the request, even if their values haven't changed. If you leave a field out, its value will be **deleted** from the supplier record.
+
+:::info Software coverage
+
+This action is currently only supported for FreeAgent, QuickBooks Online, and Xero.
+
+:::
+
+### Software-specific behavior
+
+Each accounting software has some limitations when updating suppliers. We've summarized them below.
+
+#### Xero
+
+| Limitation | Description |
+|------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------|
+| **Supplier name** | It's not possible to clear the supplier name. Sending a `null` or `""` value for `supplierName`, or `null` value for both `supplierName` and `contactName` keeps the existing supplier name. |
+| **Duplicate names** | Supplier names must be unique. Updating a name to match an existing supplier returns a `400` response. |
+| **Archived suppliers** | It's not possible to update archived suppliers via the Xero API. To unarchive, do it manually in Xero.| |
+
+#### QuickBooks Online
+
+| Limitation | Description |
+|------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------|
+| **Supplier name** | If `supplierName` is `null` in the request, QBO uses the value in `contactName` instead. If both fields are `null`, QBO returns a `400` response.|
+| **Default currency** | It's not possible to update the supplier's currency. Sending a `defaultCurrency` in the request that differs from the current value results in a `400` response. Send a `null` value to leave it unchanged. |
+| **Archived suppliers** | All changes to archived suppliers are ignored. Include `"status": "Active"` in the update request to reactivate an archived supplier and apply the changes.|
+
+#### FreeAgent
+
+| Limitation | Description |
+|----------------------|------------------------------------------------------------------------------------------------------------------------------------|
+| **Supplier name** | If `supplierName` is `null` in the request, FreeAgent uses the value in `contactName` instead (the value must contain a space). If both fields are `null`, FreeAgent returns a `400` response. |
+| **Country** | It's not possible to clear the supplier's country. Sending a `null` value or excluding the field from the request sets the value to the company's default country. |
+| **Default currency** | FreeAgent doesn't support currency at supplier level. Any value sent in the request is ignored, and the response returns the company's base currency. |
+
:::tip Recap
You have learnt how to view, create, and update your customer's suppliers who provide them with goods and services.
diff --git a/docs/using-the-api/querying.md b/docs/using-the-api/querying.md
index 80f1027783..4444b1033d 100644
--- a/docs/using-the-api/querying.md
+++ b/docs/using-the-api/querying.md
@@ -916,7 +916,7 @@ Query: `dataConnections.status!=PendingAuth&&dataConnections.status!=Linked&&dat
- The page size value is obligatory for querying.
- The response will exclude companies that had connections but they were deleted.
- :::
+:::
diff --git a/sidebars/payables.js b/sidebars/payables.js
index 340349fba5..67f2a7f05d 100644
--- a/sidebars/payables.js
+++ b/sidebars/payables.js
@@ -29,8 +29,8 @@ module.exports = [
},
},
"payables/sync/bills",
- "payables/sync/pay-bill",
"payables/sync/update-bill",
+ "payables/sync/pay-bill",
{
type: "doc",
id: "payables/sync/sync-data-types",