Update merchant
PUT
/api/merchants/{id}
deprecated
Requires: Merchants.Merchants.Update, merchant scope.
Updates an existing merchant's account information and settings.
Example request
Every block below sends the same request. Replace {{BASE_URL}} with the address of the API you are calling and {{API_KEY}} with your own key.
The request body is a MerchantUpdateDto. See the Request body section below for its fields.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
id
required |
path | string (uuid) | |
suppressNulls
required |
query | boolean | If true, omit properties with null values. |
Request body
application/json
, required
| Field | Type | Description |
|---|---|---|
createdFromTemplateId
required |
string (uuid) | nullable |
name
required |
string | The name of the merchant. nullablemin length 5max length 100 |
isActive
required |
boolean | Indicates whether the merchant is active. |
resellerId
required |
string (uuid) | The unique identifier of the reseller associated with the merchant. |
customIdentifier
required |
string | Custom identifier for the merchant. Conditional: When CustomIdentifier is not empty. Length: 5 to 100. nullable |
dba
required |
string | Doing Business As (DBA) name for the merchant. Conditional: When Dba is not empty. Length: 5 to 100. nullable |
mcc
required |
string | Four-character ISO 18245 Merchant Category Code identifying the merchant's industry. Required for new merchants. Existing merchants without an MCC may load and view, but any save attempt that leaves this null will fail validation. Conditional: When Mcc is not empty. nullable |
isTest
required |
boolean | Indicates whether the merchant is a test account. |
environment
required |
all of MerchantEnvironment | The merchant's lifecycle environment. nullable |
processorMode
required |
all of MerchantProcessorMode | Which processor a sandbox merchant's transactions route to. nullable |
contactDetail
required |
all of MerchantContactDetail | Contact details for the merchant. |
businessInfo
required |
all of MerchantBusinessInfo | Business information for the merchant. |
virtualTerminal
required |
all of VirtualTerminalSettings | Virtual terminal settings for the merchant. |
processing
required |
all of ProcessingSettingsDto | Processing settings for the merchant. |
features
required |
all of MerchantFeatureSettings | Feature settings for the merchant. |
customFields
required |
array of CustomField | Custom fields for the merchant. nullable |
branding
required |
all of MerchantBranding | Gets or sets the merchant-level branding configuration for receipts and customer-facing communications. |
accountUpdater
required |
all of AccountUpdaterSettingsDto | Account updater settings for the merchant. |
merchantFlowConfig
required |
all of MerchantFlowConfig | Gets or sets the optional transaction flow configuration that controls how transactions are orchestrated for this merchant. Conditional: When MerchantFlowConfig is not null. |
billingAssignment
required |
all of MerchantBillingAssignment | Gets or sets the billing plan assignment for this merchant. A null value means the merchant has no active billing plan and will be skipped by billing runs. Conditional: When BillingAssignment is not null. |
notes
required |
array of EntityNote | Operational notes attached to the merchant. nullable |
digitalWallets
required |
array of MerchantDigitalWallet | Per-merchant digital wallet bindings (Apple Pay, Google Pay, …). At most one entry per `WalletProviderType`; each row carries the master enable flag and a pointer to the `WalletProviderRegistration` row this merchant uses (platform-level or merchant-level). nullable |
threeDSBindings
required |
array of MerchantThreeDSBinding | Per-merchant 3-D Secure provider bindings. At most one entry per `ThreeDSProviderType`; each row carries the master enable flag, the policy mode, and the vendor credentials. The JWT secret is write-only. It is never returned on a read, so a caller round-tripping a merchant sends null back here; a null or empty secret on a save keeps the one already stored, and a non-empty one replaces it. There is therefore no payload that clears a secret without also removing the binding. Conditional: When ThreeDSBindings is not null. nullable |
taxBindings
required |
array of MerchantTaxBinding | Per-merchant tax provider bindings. At most one entry per provider name; each row carries the master enable flag, whose provider account the lookups are billed to, and the provider's configuration values. Secret field values are write-only. They are never returned on a read, so a caller round-tripping a merchant sends null back here; a null or empty secret on a save keeps the one already stored, and a non-empty one replaces it. There is therefore no payload that clears a secret without also removing the binding. A binding whose credential source is `Gateway` must carry no field values: the gateway holds those credentials, and a copy of them on a merchant document is exactly what the credential source exists to avoid. The validator refuses a gateway-sourced binding that supplies any. Conditional: When TaxBindings is not null. nullable |
shippingBindings
required |
array of MerchantShippingBinding | Per-merchant shipping rate provider bindings. At most one entry per provider name; each row carries the master enable flag, whose provider account the quotes are billed to, and the provider's configuration values. Secret field values are write-only. They are never returned on a read, so a caller round-tripping a merchant sends null back here; a null or empty secret on a save keeps the one already stored, and a non-empty one replaces it. There is therefore no payload that clears a secret without also removing the binding. A binding whose credential source is `Gateway` must carry no field values: the gateway holds those credentials, and a copy of them on a merchant document is exactly what the credential source exists to avoid. The validator refuses a gateway-sourced binding that supplies any. Conditional: When ShippingBindings is not null. nullable |
paymentEncryptionBindings
required |
array of MerchantPaymentEncryptionBinding | Per-merchant payment encryption provider bindings. At most one entry per provider name; each row carries the master enable flag, whose provider account the decryption calls are billed to, the provider's configuration values, and the key serial identifier table. Secret field values and key references are write-only. They are never returned on a read, so a caller round-tripping a merchant sends null back here; a null or empty value on a save keeps the one already stored, and a non-empty one replaces it. There is therefore no payload that clears a secret without also removing the binding or the key entry. A binding whose credential source is `Gateway` must carry no field values: the gateway holds those credentials, and a copy of them on a merchant document is exactly what the credential source exists to avoid. The validator refuses a gateway-sourced binding that supplies any. Key entries are unaffected: a key serial identifier maps the merchant's own devices whichever account the calls are billed to. Conditional: When PaymentEncryptionBindings is not null. nullable |
concurrencyStamp
required |
string | Gets or sets the concurrency stamp used for optimistic concurrency control during updates. nullable |
This request body has no documented fields.
Responses
200 OK
Body: MerchantDto
Each item has these fields.
| Field | Type | Description |
|---|---|---|
extraProperties
required |
object | nullableread only |
id
required |
string (uuid) | |
creationTime
required |
string (date-time) | The date and time when this entity was created. |
creatorId
required |
string (uuid) | The ID of the user who created this entity. nullable |
lastModificationTime
required |
string (date-time) | The date and time when this entity was last modified. nullable |
lastModifierId
required |
string (uuid) | The ID of the user who last modified this entity. nullable |
isDeleted
required |
boolean | Indicates whether this entity has been deleted. |
deleterId
required |
string (uuid) | The ID of the user who deleted this entity, if it is deleted. nullable |
deletionTime
required |
string (date-time) | The date and time when this entity was deleted, if it is deleted. nullable |
createdFromTemplateId
required |
string (uuid) | The template this record was created from, or `null` for one started blank. Set by the create-from-template path and by the add/edit page's Load Template action when the record is saved. nullable |
name
required |
string | Gets or sets the display name of the merchant. nullable |
concurrencyStamp
required |
string | Gets or sets the concurrency stamp used for optimistic concurrency control. nullable |
tenantId
required |
string (uuid) | Gets the tenant identifier for multi-tenancy isolation. nullableread only |
resellerId
required |
string (uuid) | Gets or sets the unique identifier of the reseller that owns this merchant. |
resellerName
required |
string | Gets or sets the display name of the owning reseller. nullable |
entityVersion
required |
integer (int32) | Gets the entity version number, incremented on each update for optimistic concurrency. read only |
customIdentifier
required |
string | Gets or sets an optional custom identifier assigned to the merchant by the reseller or integrator. nullable |
dba
required |
string | Gets or sets the "Doing Business As" (DBA) name for the merchant. nullable |
legacyNumber
required |
integer (int64) | Gets the merchant's legacy numeric key, the integer identifier the v1 API addresses merchants by (its `MerchantKey`). Server-owned and stamped once at create; null on merchants written before the field existed until the v1 data migration back-fills them. nullable |
mcc
required |
string | Gets or sets the four-character ISO 18245 Merchant Category Code identifying the merchant's industry. Null on legacy merchants that have not yet been backfilled; the merchant grid and detail view surface a warning indicator in that case so internal staff can address it. nullable |
isTest
required |
boolean | Gets or sets a value indicating whether this merchant is a test account used for non-production transactions. |
environment
required |
all of MerchantEnvironment | Gets or sets the merchant's lifecycle environment. |
planCode
required |
string | Gets or sets the plan this merchant is on, or `null` when it is on none. nullable |
trialExpiresAt
required |
string (date-time) | Gets or sets when this merchant's trial ends, UTC, or `null` when it is not on a time-limited plan. nullable |
trialExpiryWarnedThresholdDays
required |
integer (int32) | Gets or sets the most recent trial expiry reminder sent in the current trial window, as the number of days before `trialExpiresAt` it was sent at. nullable |
processorMode
required |
all of MerchantProcessorMode | Gets or sets which processor a sandbox merchant's transactions route to. nullable |
isActive
required |
boolean | Gets or sets a value indicating whether the merchant is currently active and able to process transactions. |
contactDetail
required |
all of MerchantContactDetail | Gets or sets the merchant's contact details including addresses, phone numbers, and email. |
businessInfo
required |
all of MerchantBusinessInfo | Gets or sets the merchant's business information such as currency, tax IDs, and industry codes. |
virtualTerminal
required |
all of VirtualTerminalSettings | Gets or sets the virtual terminal field configuration for the merchant. |
processing
required |
all of ProcessingSettingsDto | Gets or sets the processing settings including duplicate checks, card verification, and processor profiles. |
features
required |
all of MerchantFeatureSettings | Gets or sets the feature flags and capability settings for the merchant. |
capabilities
required |
all of MerchantCapabilitiesDto | Gets or sets the read-only, server-computed capability flags derived from the merchant's configuration (e.g., active processor profiles' enabled tenders). Intended for UI affordance decisions; not enforced at submit time. Populated by the AutoMapper profile on read; not accepted on Create/Update. |
customFields
required |
array of CustomField | Gets or sets the collection of custom fields defined for the merchant. nullable |
branding
required |
all of MerchantBranding | Gets or sets the merchant-level branding configuration for receipts and customer-facing communications. |
accountUpdater
required |
all of AccountUpdaterSettingsDto | Gets or sets the account updater configuration for this merchant. |
merchantFlowConfig
required |
all of MerchantFlowConfig | Gets or sets the optional transaction flow configuration that controls how transactions are orchestrated for this merchant. |
billingAssignment
required |
all of MerchantBillingAssignment | Gets or sets the billing plan assignment for this merchant. A null value means the merchant has no active billing plan and will be skipped by billing runs. |
notes
required |
array of EntityNote | Gets or sets operational notes attached to the merchant. nullable |
saveWarnings
required |
array of MerchantSaveWarning | Non-blocking informational warnings produced by the most recent create/update of this merchant (e.g. international-AVS-on-US-only-surface advisories). `null` on read responses, populated (possibly with an empty list) on create/update responses, so clients can distinguish "this isn't a save response" (omitted from JSON via `WhenWritingDefault`) from "saved successfully with no warnings" (empty array). Not persisted. nullable |
volumeTrend
required |
array of number (double) | Metered transaction count per calendar month for this merchant, oldest to newest, as an activity trend. `null` on every response that does not populate it (which is all of them except the merchant list), so it is omitted from JSON entirely rather than serialized as null. Not persisted. nullable |
digitalWallets
required |
array of MerchantDigitalWallet | Gets or sets the per-merchant digital wallet bindings (Apple Pay, Google Pay, …). At most one entry per `WalletProviderType`; each carries the master enable flag and a pointer to the `WalletProviderRegistration` row this merchant uses (platform-level or merchant-level). nullable |
threeDSBindings
required |
array of MerchantThreeDSBinding | Gets or sets the per-merchant 3-D Secure provider bindings. At most one entry per `ThreeDSProviderType`; each carries the master enable flag, the policy mode, and the vendor credentials. <b>The JWT secret is never populated on a read.</b> It is stripped server-side before this DTO leaves the application service, so a caller sees null there whether or not one is stored. Sending null or an empty string back on a save keeps the stored secret; sending a value replaces it. nullable |
taxBindings
required |
array of MerchantTaxBinding | Gets or sets the per-merchant tax provider bindings. At most one entry per provider name; each carries the master enable flag, whose provider account the lookups are billed to, and the provider's configuration values. <b>Secret field values are never populated on a read.</b> They are stripped server-side before this DTO leaves the application service, and each field reports `isConfigured` instead so an operator can tell a stored secret from an empty one. Sending null or an empty string back on a save keeps the stored secret; sending a value replaces it. A binding whose credential source is `Gateway` carries no values at all: the gateway's own provider credentials are never copied onto a merchant, and are resolved at lookup time instead. nullable |
shippingBindings
required |
array of MerchantShippingBinding | Gets or sets the per-merchant shipping rate provider bindings. At most one entry per provider name; each carries the master enable flag, whose provider account the quotes are billed to, and the provider's configuration values. <b>Secret field values are never populated on a read.</b> They are stripped server-side before this DTO leaves the application service, and each field reports `isConfigured` instead so an operator can tell a stored secret from an empty one. Sending null or an empty string back on a save keeps the stored secret; sending a value replaces it. A binding whose credential source is `Gateway` carries no values at all: the gateway's own provider credentials are never copied onto a merchant, and are resolved at quote time instead. nullable |
paymentEncryptionBindings
required |
array of MerchantPaymentEncryptionBinding | Gets or sets the per-merchant payment encryption provider bindings. At most one entry per provider name; each carries the master enable flag, whose provider account the decryption calls are billed to, the provider's configuration values, and the key serial identifier table. <b>Secret field values and key references are never populated on a read.</b> They are stripped server-side before this DTO leaves the application service. Each field reports `isConfigured` and each key entry reports `isKeyReferenceConfigured` in their place, so an operator can tell a stored value from an empty one. Sending null or an empty string back on a save keeps the stored value; sending a value replaces it. A binding whose credential source is `Gateway` carries no field values at all: the gateway's own provider credentials are never copied onto a merchant, and are resolved at decryption time instead. Key entries are the merchant's either way, because a key serial identifier maps that merchant's own device fleet. nullable |
promotedAt
required |
string (date-time) | When this merchant was promoted to `Production` through the promotion action, UTC. Null for a merchant that has never been promoted that way. nullable |
promotedByUserId
required |
string (uuid) | The user who ran the promotion that stamped `promotedAt`, or null when the merchant has never been promoted through that action. nullable |
isLocked
required |
boolean | nullable |
lockedAt
required |
string (date-time) | nullable |
lockedByUserId
required |
string (uuid) | nullable |
lockedByUserName
required |
string | nullable |
lockReason
required |
string | nullable |
This response has no documented body fields.
403 Forbidden
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
401 Unauthorized
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
400 Bad Request
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
404 Not Found
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
501 Not Implemented
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
500 Internal Server Error
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
default The request failed. The body carries the standard error envelope: a machine-readable `error.code`, a human-readable `error.message`, and `error.validationErrors` when the failure was a validation rejection. See the error-code reference in this document's description for the values `error.code` can take.
Body: RemoteServiceErrorResponse
Each item has these fields.
| Field | Type | Description |
|---|---|---|
error
required |
RemoteServiceErrorInfo |
This response has no documented body fields.
429 The request was refused because a rate limit was exceeded. Wait at least the interval `Retry-After` names before retrying, then back off. Limits are tuned per deployment, so read the allowance from the response headers rather than assuming a fixed ceiling.
Body: RateLimitProblemDetails
Each item has these fields.
| Field | Type | Description |
|---|---|---|
type
required |
string | The problem type identifier. Always the same value: the failure is the status code itself, so there is no sub-type for a caller to branch on. nullable |
title
required |
string | A short, human-readable summary of the problem type. nullable |
status
required |
integer (int32) | The HTTP status code, repeated in the body as the problem-details format defines. |
detail
required |
string | A human-readable explanation of this occurrence of the problem. nullable |
retryAfterSeconds
required |
integer (int32) | How long to wait before retrying, in whole seconds, carrying the same figure as the `Retry-After` header. Always at least one: a value of zero would invite an immediate retry that is certain to be rejected again. |
This response has no documented body fields.
Errors
A failed request returns the platform error envelope. The
error reference lists every value
error.code can carry and shows the four response shapes.