---
title: "Merchant Status Updated"
method: POST
path: "merchantStatusUpdated"
tags: ["Merchants"]
---

# Merchant Status Updated

`POST merchantStatusUpdated` (webhook)

Sent when a merchant's status changes. Delivered to the endpoint configured via `webhooksUrl` on the merchant (see CreateMerchantRequest/ UpdateMerchantRequest); subscription/registration of that endpoint is out of scope for this page.

## Payload

- MerchantWebhookEnvelope: CloudEvents 1.0.2 context attributes shared by every PPRO webhook envelope; delivery mechanics (retries, signing) are handled elsewhere.
  - `specversion` '1.0.2', required: The CloudEvents specification version.
  - `id` string, required: Unique event id (idempotency key for consumers).
  - `source` string, required
  - `subject` string, required: The resource this event is about, e.g. the merchantId or enrollmentId.
  - `time` string, date-time, required
  - `datacontenttype` 'application/json', required: The event content type.
  - `type` 'MERCHANT_STATUS_UPDATED', required: Discriminator selecting the shape of `data`.
  - `data` MerchantStatusUpdatedData, required
    - `type` 'MERCHANT_STATUS_UPDATED', required: Matches the envelope's `type` - required for discriminator resolution.
    - `merchantId` string, required: Unique identifier for the merchant
    - `externalMerchantReference` string: Unique reference, assigned by external client.
    - `currentStatus` MerchantCurrentStatusSnapshot, required: MerchantStatusSnapshot for the event's new status, where the producer guarantees statusReason is set on SUSPENDED/CLOSED. Not used for previousStatus - a historical snapshot may predate that guarantee.
      - `status` 'PENDING' | 'ACTIVE' | 'SUSPENDED' | 'CLOSED', required: Merchant lifecycle status.
      - `updatedAt` string, date-time, required
      - `statusReason` StatusReason
        - `reasonCode` 'RISK_CHECK' | 'PROHIBITED_MCC' | 'PROHIBITED_COUNTRY' | 'CUSTOMER_REQUEST', required: External reason code for a merchant status, coarsened from the internal reason code.
        - `reasonMessage` string: Human-readable message. Free text - not for programmatic branching, use reasonCode instead.
      - `capabilities` MerchantStatusCapabilities, required: Capability flags of a merchant.
        - `canPay` boolean, required: Whether the merchant can process payments.
        - `canRefund` boolean, required: Whether the merchant can process refunds.
    - `previousStatus` MerchantStatusSnapshot
      - `status` 'PENDING' | 'ACTIVE' | 'SUSPENDED' | 'CLOSED', required: Merchant lifecycle status.
      - `updatedAt` string, date-time, required
      - `statusReason` StatusReason
        - `reasonCode` 'RISK_CHECK' | 'PROHIBITED_MCC' | 'PROHIBITED_COUNTRY' | 'CUSTOMER_REQUEST', required: External reason code for a merchant status, coarsened from the internal reason code.
        - `reasonMessage` string: Human-readable message. Free text - not for programmatic branching, use reasonCode instead.

## Acknowledgement `200`

Webhook received.

## Other responses

- `default`: Any non-2xx response (or a timeout) is treated as delivery failure and triggers a retry.

---

[API](https://skmtc.dev/ppro/apis/onboarding.md) - [All operations](https://skmtc.dev/ppro/apis/onboarding/llms.txt) - [OpenAPI document](https://skmtc.dev/ppro/apis/onboarding/revisions/32c4db4523ac?raw)
