Klarna Docs - Account lifecycle webhooks
Account lifecycle webhooks

Configure account lifecycle webhooks to receive real-time notifications on status changes for Partner Accounts and Payment Products, ensuring timely actions and seamless transaction management.

A Partner Account has a defined lifecycle, which can only be manipulated by Klarna. This lifecycle is intricately linked with the product lifecycle, and processing logic should be developed around the product lifecycle.

stateDiagram-v2 direction LR classDef box1 fill:#FFA8CD classDef box2 fill:#FFC9E0 classDef box3 fill:#FFE9F3 classDef box4 fill:#BF7E9A [*] --> PARTIALLY_OPERATIONAL:::box2 : Onboard PARTIALLY_OPERATIONAL --> OPERATIONAL:::box1 : Setup done OPERATIONAL --> DISABLED:::box3 : Disable by Klarna DISABLED --> OPERATIONAL : Enable by Klarna
ParameterDefinition
PARTIALLY_OPERATIONALRepresents an account that was just onboarded and is currently being set up in our systems. The account can process transactions, but can not yet be managed. This state is transitional, and typically moves to OPERATIONAL within seconds
OPERATIONALRepresents an account that is fully operational and can both be managed and process transactions
DISABLEDRepresents an account that is no longer operational in any respect. The account cannot be managed by the partner or have any new products added to it. All products within an account are fully disabled as a part of this status

It is essential to configure account lifecycle webhooks to receive notifications about status changes in Partner accounts and Payment Products. Below is a table describing the events supported by Klarna webhooks for account management, which allows immediate notification and action on certain events.

Use caseWhenEvent name
Account fully onboarded webhooksAn account is fully set up on Klarna’s sidepartner.account.state-change.operational

The following example reflects the payload structure for partner.account.state-change.operational event webhook event triggered once the Partner Account is ready to transact.

It differs slightly from the general webhook format as it doesn’t specify the product_id, given this event affects the whole account.

JSON
{
  "metadata": {
    "event_id": "99bf6248-b3ed-42d9-b2b5-bf560668d42a",
    "event_type": "partner.account.state-change.operational",
    "event_version": "v1",
    "occurred_at": "2025-03-04T13:31:14.603057514Z",
    "account_id": "krn:partner:global:account:test:M48JTZF8",
    "recipient_account_id": "krn:partner:global:account:test:M48JTZF8",
    "subject_account_id": "krn:partner:global:account:test:M7UJ6WZ2",
    "webhook_id": "krn:partner:global:notification:webhook:8e3e2120-04fd-4975-88fa-fd26299c4280",