Editing Merchants
Open a merchant from Merchants (company name, or ⋯ → ✏️ Edit). Stay on Overview. Click Edit Merchant in the page header (next to Delete Merchant). Editing is inline on the Merchant card, both Contact cards, Finance Offer Summary, and App → Environment. The header button itself is the save control — it is not a popup editor.
Toast: Edit mode enabled. Click "Save Changes" when done. The header button becomes Save Changes. Cancel appears beside it.
Creating a merchant is a different path: Add Merchant still opens Add New Merchant. Adding Merchants.
If Admin tab actions (History, JSON, Quote) opened the wrong
merchant while the URL showed another ID, see the Critical: mixed
merchant troubleshooting section in
Merchant Page Editing.
Prefer hard refresh; the address bar ?id= is the reliable
anchor.
Click Edit Merchant
- Merchants → open the merchant → Overview.
- Click Edit Merchant. Inline inputs replace the read-only values. Display N/A becomes an empty input.
- Change fields. Cancel discards the draft and restores the last loaded values (including N/A).
- Click Save Changes. The header button shows Saving... and is disabled until the request finishes. A second click while Saving... is ignored.
- Success toast: Merchant updated successfully! Edit mode exits and the page reloads the saved values.
If the merchant in view no longer matches the one you started editing: Save blocked: you started editing id but are now viewing id. Please cancel and re-enter edit mode. or Save blocked: edit started on id but detail view now shows id. Cancel and re-enter edit mode. Missing inputs: Required form fields not found. Please refresh and try again.
What becomes inline
On the Merchant card:
| Live label | What you get |
|---|---|
| Merchant ID | Text input. Placeholder: MXXXXXX or FM-XXXX-XXXX-XXXX. Changing it runs the change-id write before the profile update. |
| Company Name | Text input. Required. |
| Company Number | Text input. Optional. |
| Domain | Text input. Placeholder: merchant.com. |
| Testing domain | Text input. Placeholder: merchant.com. Optional. |
| Ecommerce platform | Dropdown. Other… shows a name field with placeholder e.g. BigCommerce, Wix, Squarespace. Ecommerce platform. |
| FCA status | Dropdown: Not specified, Authorised, Not authorised. Merchant FCA status. |
Finance Assistant API Key and CreditSafe stay read-only.
On App: Environment becomes Production, Staging, or Test. ⓘ How App environment works. Check env stays a separate control.
Both Contact cards swap First Name, Last Name, Email, and Phone into inputs. Contact cards.
Finance Offer Summary templates become the inline template editor. Merchant Page Editing.
Save Changes
Save Changes (PUT /api/merchants/:id, or change-id first when
Merchant ID changed):
- Client checks: Company name is required. / Domain is required.
- Domain and Testing domain are normalized (protocol optional;
www.and path/query stripped; saved ashttps://host). - Contact cards sync through the Contacts API (create / update /
delete); the profile keeps
contactIdsonly. - If Environment, Domain, or Testing domain changed, router metadata
and CORS (primary + testing, including
wwwvariants) update with the profile. - Header returns to Edit Merchant. Cancel is removed.
ID change success: Merchant ID changed to new id and merchant
updated successfully! plus any auth-reconcile warning. The address
bar ?id= updates to the new id.
Merchant ID
Change this only when you must. Integrations key off the id.
- Formats:
MXXXXXX(6 digits) or legacyFM-XXXX-XXXX-XXXX. Placeholder: MXXXXXX or FM-XXXX-XXXX-XXXX. - Leave it unchanged to keep the current id.
- Live API reject: ID must be in format MXXXXXX or FM-XXXX-XXXX-XXXX.
- Duplicate: Merchant with ID id already exists.
- Same as current: New ID must be different from current ID.
Valid: M000101, M290756, FM-0294-8617-5039. Invalid: M12345
(5 digits), M1234567 (7 digits), MABC123 (letters).
Domain and Testing domain
Placeholder on both: merchant.com. Prefer host-only input.
- Protocol is optional.
www.is stripped. Path and query are stripped. Saved as canonicalhttps://merchant.com. - Invalid: Domain must be a valid domain or URL (e.g., merchant.com).
- Testing domain uses the same rule, or leave blank: Testing domain must be a valid domain or URL (e.g., merchant.com).
Changing Domain does not crawl the new host. Use Check snippet, or wait for the next daily snapshot.
Ecommerce platform and FCA status
Ecommerce platform only writes when you actually change the dropdown. Other… with a blank name: Ecommerce platform: please enter a name for "Other…", or pick one of the listed platforms. A built-in name typed as custom is rejected. Hint under Other…: Tracked for analytics. Cannot match a built-in platform name (Shopify, WooCommerce, Magento, Custom).
FCA status only writes when you change it. Switching to Not authorised asks for confirm: Set FCA status to "Not authorised"? then the lock copy. Merchant FCA status.
What Save does not do
- No snippet re-check. Use Check snippet on the merchant page.
- Stripe link / unlink is unchanged. Use Link / Unlink on Stripe Billing, or Link Customer on the merchants table. James-only Settings preview: FinMatch Account → Stripe first row is the same Link / Unlink.
- Features tile on/off is Save features, not Save Changes.
If someone else saved the same merchant while you were in edit: Profile changed while you were editing. See Merchant Page Editing.
Other write failures: the API message, or Failed to update
merchant. Please try again. Merchant not found means the
profile was deleted — refresh and start again.
Next Steps
- Merchant Page Editing — tabs, Features, Admin
- Adding Merchants — Add New Merchant
- Managing Merchants — delete and Stripe link