# Supported Events

Below are the support events available for subscription. Contact your account manager for information on accessing custom events.

Examples shared below for each event type will be sent to your URL handler within the `payload`field of the HTTP request. You can check the full HTTP request structure below:

```json
{
	"event": "<event-name>",
	"eventId": "<unique event id>",
	"version": "<version-of-the-event-payload>",
	"payload": {
		// detailed payload fields vary per event type
	}
}
```

### Webhook Test Event

This event only sent when the webhook test API is triggered. Should only be used for connectivity testing purposes.

**Event Name:** `webhook.test`&#x20;

**Event Version:** 1

**Example Payload Field**

```json
{
    "response": "<data added to your test request>"
}
```

### Transaction State Events

Transactions having a complicated flow of execution. Especially, when you initiate payments using API platform. State change events are only triggered when a transaction state is changed to `COMPLETED`  `CANCELLED` and `FAILED` states. You won't get webhooks for interim state changes.

**Event Name:** `transaction.state-changed`&#x20;

**Event Version: 1**

**Example payload for Outbound Transfers**

```json
{
  "transactionId": "d73c211c-10dc-47a0-9397-499ec2136d02",
  "origin": "TRANSFER",
  "state": "COMPLETED",
  "category": "TRANSFERS",
  "impactType": "CREDIT",
  "customerId": "995674ee-79fa-4873-b6f5-67c43574baf0",
  "amount": 100,
  "currencyCode": "GBP",
  "description": "Sent from Algbra",
  "exchangeRate": "1",
  "exchangeCurrencyCode": "GBP",
  "transactionDate": "2025-01-27T12:32:02.824Z",
  "sourceCounterparty": {
    "type": "PERSONAL",
    "details": { "firstName": "[REDACTED]", "lastName": "[REDACTED]" },
    "accountCurrency": "GBP",
    "accountReference": { "accountNumber": "[REDACTED]", "sortCode": "[REDACTED]" },
    "accountReferenceType": "UK_ACCOUNT"
  },
  "destinationCounterparty": {
    "type": "PERSONAL",
    "details": { "firstName": "[REDACTED]", "lastName": "[REDACTED]" },
    "accountCurrency": "GBP",
    "accountReference": { "accountNumber": "[REDACTED]", "sortCode": "[REDACTED]" },
    "accountReferenceType": "UK_ACCOUNT"
  }
}
```

**Example payloads for Account Funding with PISP**

**Successful Funding**

```json
{
    "transactionId": "68c3ec214994440ce72afb9f",
    "uniqueToken": "4fa34e10-643c-4402-9bae-6015dd8b1856",
    "origin": "TRANSFER",
    "state": "COMPLETED",
    "category": "TRANSFERS",
    "impactType": "CREDIT",
    "customerId": "518829b7-ddfc-4d28-ace5-71e974284210",
    "amount": 750,
    "currencyCode": "GBP",
    "description": "Easy-Test-39659817",
    "exchangeRate": "1",
    "exchangeCurrencyCode": "GBP",
    "transactionDate": "2025-09-12T09:47:33.467Z",
    "sourceCounterparty": {
      "type": "PERSONAL",
      "details": {
        "firstName": "J &+ SANDBRIDGE",
        "lastName": "JR."
      },
      "accountCurrency": "GBP",
      "accountReference": {
        "accountNumber": "01020304",
        "sortCode": "100000"
      },
      "accountReferenceType": "UK_ACCOUNT"
    },
    "destinationCounterparty": {
      "type": "PERSONAL",
      "details": {
        "firstName": "Mikail",
        "lastName": "Bal"
      },
      "accountCurrency": "GBP",
      "accountReference": {
        "accountNumber": "00009656",
        "sortCode": "040788"
      },
      "accountReferenceType": "UK_ACCOUNT"
    },
    "transferMetadata": {
      "transactionProgress": [
        {
          "date": "2025-09-12T09:47:13.964Z",
          "event": "PLATFORM_VERIFIED"
        },
        {
          "date": "2025-09-12T09:47:31.082Z",
          "event": "PAYMENT_VERIFIED"
        },
        {
          "date": "2025-09-12T09:47:35.047Z",
          "event": "COMPLETED"
        }
      ],
      "fundingSourceProvider": {
        "id": "mock-payments-gb-redirect",
        "name": "Mock UK Payments - Redirect Flow",
        "type": "PISP"
      }
    }
  }
```

Failed Funding

```json
{
    "transactionId": "68c3e8a24994440ce72afb9d",
    "uniqueToken": "c8be4dd8-c577-47ba-889b-bf85ea24a823",
    "origin": "TRANSFER",
    "state": "FAILED",
    "category": "TRANSFERS",
    "impactType": "CREDIT",
    "customerId": "518829b7-ddfc-4d28-ace5-71e974284210",
    "amount": 500,
    "currencyCode": "GBP",
    "description": "Easy-Test-52716186",
    "exchangeRate": "1",
    "exchangeCurrencyCode": "GBP",
    "transactionDate": "2025-09-12T09:47:30.507Z",
    "transferMetadata": {
      "transactionProgress": [
        {
          "date": "2025-09-12T09:32:18.754Z",
          "event": "PLATFORM_VERIFIED"
        },
        {
          "date": "2025-09-12T09:47:30.507Z",
          "event": "CANCELLED"
        }
      ],
      "fundingSourceProvider": {
        "id": "mock-payments-gb-redirect",
        "name": "Mock UK Payments - Redirect Flow",
        "type": "PISP"
      }
    }
  }
```

### Account Lifecycle Events

Webhooks have the following account lifecycle events.

1. **`READY`**: This is the phase where the account is fully set up and operational for funding operations.
2. **`CLOSED`**: This marks the final phase in the lifecycle of an account. Reaching the terminated state implies that the account is no longer active and accessible. The transition to this state may result from various triggers, such as policy enforcement.&#x20;

**Event Name:** `account.state-changed`&#x20;

**Event Version: 1**

**Example payload for the Account State Change**

```json
{
  "id": "e0cab2dd-739f-43de-b131-3e423e935bf1",
  "customerId": "a2b9649e-df7f-4349-adff-1c57283fef10",
  "partnerId": "2ecf0e23-3215-462c-97c4-9e5a147656d7",
  "primaryAccountId": "ae66fcb2-2852-4568-990d-accc78572e4d",
  "type": "PRIMARY",
  "currencyCode": "GBP",
  "createDate": "2025-01-01",
  "identifiers": [
    {
      "type": "UK_ACCOUNT",
      "beneficiary": "John Doe",
      "bankAddress": "Threadneedle St, London EC2R 8AH, United Kingdom",
      "data": {
        "type": "UK_ACCOUNT",
        "sortCode": "010102",
        "accountNumber": "12345678"
      }
    }
  ],
  "state": "READY"
}
```

### Prospect Onboarding Events

The onboarding journey varies between personal users and business clients. Personal users typically require a straightforward journey, focusing on individual information about the prospect. In contrast, business prospects need a more complex onboarding process that requires additional information about the business structure. Therefore, the supporting events are different.

#### Personal prospect onboarding journey

**Event Name:** `onboarding.personal.state-changed`&#x20;

**Event Version: 1**

**Example payload for the Personal Onboarding State Changes**

```json
{
  "prospectId": "a2b9649e-df7f-4349-adff-1c57283fef10",
  "partnerId": "2ecf0e23-3215-462c-97c4-9e5a147656d7",
  "externalId": "123e4567-e89b-12d3-a456-426614174000",
  "onboardingState": "IDLE",
  "onboardingStateLastUpdate": "2025-10-21T11:11:47.628Z"
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developer.algbralabs.com/partner-banking/concepts/webhooks/supported-events.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
