Webhooks
Merchant Account Events
Trigger
- Description: Sent when a merchant account status changes. For tenants with the PCI feature enabled, this event is also sent when
pciStatus,saqStatus, orsaqExpiresAtchanges (sub-day expiry drift from upstream re-anchoring is absorbed and does not trigger a delivery).
Payload
createdAt: Unix timestamp indicating when the event was created.type: Always 'MERCHANT' for this webhook.status: Merchant account lifecycle status. One of:INITIATEDPENDINGCAPABILITIES_BLOCKEDNEEDS_ORGANIZATIONASSIGNING_ORGANIZATIONACTIVEINACTIVESUSPENDEDCLOSINGCLOSEDARCHIVED
pspMerchantAccountName: The name of the parent Adyen merchant account the merchant belongs to.merchantAccountId: Unique ID for the merchant account.organizationId: The ID of the organization to which the merchant account belongs, or null.merchantReferenceId: Merchant reference ID that matches the account in your system, or null.balanceAccountId: The ID for the balance account from Adyen associated with this merchant account.accountHolderId: The ID for the account holder from Adyen associated with this merchant account.recurringFeesGroupId: The ID of the recurring fee configuration assigned to the merchant account, or null if none assigned.splitConfigurationId: The split configuration ID associated with the merchant's primary store.inviteeEmail: The invited contact's email address. Only present while an invitation is associated with the account.stores: List of associated storesstoreId: Adyen's store idstoreReferenceId: Store reference id, used when initiating platform payments with Adyen's API.balanceAccountId: The ID for the balance account from Adyen associated with the store.splitConfigurationId: The ID of the split configuration from Adyen associated with the store.status: Store status. One ofINITIATED,ACTIVE,INACTIVE,UPDATING, orCLOSED.
merchantAccountAttributes: List of custom attributes assigned to the merchant account. Empty array if none are set.name: The attribute name, matching a custom attribute configured in Zentact admin.value: The attribute value.
storeId,storeReferenceId(deprecated): The primary store's ID and reference. Usestoresinstead.
Custom attributes for externally boarded merchants
When a merchant is boarded outside of Zentact and imported, Adyen account holder metadata key-value pairs are mapped into merchantAccountAttributes. Only metadata keys that match a custom attribute name configured in Zentact admin (matched case-insensitively) are kept. Unrecognized keys and values longer than 80 characters are dropped. If no custom attributes are configured for your tenant, this array will always be empty. Configure the expected attribute names in Zentact admin before boarding merchants externally.
PCI Compliance Fields
For tenants with the PCI feature enabled, the payload includes a nested pciStatuses object. When the feature is off, the pciStatuses object is omitted from the payload entirely. When the feature is on but a merchant has no compliance record yet, pciStatus is NOT_REGISTERED, saqStatus is NOT_STARTED, and saqExpiresAt is null.
Nested under `pciStatuses`
On this webhook the PCI fields are nested inside a pciStatuses object (pciStatuses.pciStatus, pciStatuses.saqStatus, pciStatuses.saqExpiresAt). Note this differs from the Merchant Accounts API, where the same three fields are returned at the top level.
The pciStatuses object contains:
pciStatus: Overall PCI DSS compliance status. One of:NOT_REGISTERED: The merchant has not been registered with the PCI compliance provider yet, so no compliance record exists.DISABLED: PCI compliance monitoring has been turned off for this merchant.COMPLIANT: The merchant has satisfied all PCI DSS compliance requirements.NEEDS_ATTENTION: The merchant has partial or in-progress compliance items that require follow-up (for example, an unsigned or expiring SAQ).NON_COMPLIANT: The merchant has failed one or more PCI DSS compliance requirements.
saqStatus: Self-Assessment Questionnaire status. One of:NOT_STARTED: The merchant has not begun the Self-Assessment Questionnaire.IN_PROGRESS: The merchant has started the SAQ but has not yet signed and submitted it.COMPLIANT: The merchant has signed a valid, unexpired SAQ.EXPIRING: The signed SAQ is within 90 days of its expiration date and needs to be renewed.EXPIRED: The signed SAQ has passed its expiration date and is no longer valid.
saqExpiresAt: ISO 8601 timestamp indicating when the merchant's current SAQ expires, ornullwhen the SAQ has not been signed.
Example
{
"createdAt": 1697339819,
"type": "MERCHANT",
"status": "ACTIVE",
"pspMerchantAccountName": "DentalSolutions_US",
"merchantAccountId": "MERP3PFH5NJZ6",
"organizationId": "bf368afb-ed57-4345-a04a-7c7213431a99",
"merchantReferenceId": "a5ac988f-857d-43b6-a9ee-e98c7568299f",
"balanceAccountId": "BA32272223222K5JDZCH7DLSZ",
"accountHolderId": "AH3227C223222K5JDZCBHCJL6",
"recurringFeesGroupId": "IFGYKMKL2LWVT",
"splitConfigurationId": "SCNF4224Q223223W5K9BKK88X557JG",
"stores": [
{
"storeId": "ST3224Z22322425JDZCB69NWZ",
"storeReferenceId": "yyy92999yyyy",
"balanceAccountId": "BA32272223222K5JDZCH7DLSZ",
"splitConfigurationId": "SCNF4224Q223223W5K9BKK88X557JG",
"status": "ACTIVE"
}
],
"merchantAccountAttributes": [
{
"name": "Sales_Rep",
"value": "Amy"
},
{
"name": "Opportunity_ID",
"value": "0061U00000ce0xWQAQ"
}
],
"pciStatuses": {
"pciStatus": "COMPLIANT",
"saqStatus": "EXPIRING",
"saqExpiresAt": "2026-08-15T00:00:00.000Z"
},
"storeId": "ST3224Z22322425JDZCB69NWZ", // deprecated
"storeReferenceId": "yyy92999yyyy" // deprecated
}