Webhook Library Extension - Account Transaction
Learn about the Account Transaction webhook for detecting funds transfers affecting your bank account, including credit categorisation and reconciliation.
Account Transaction
"type": "transaction.account"
Object type: Account Transaction
This webhook is triggered when the Lean system detects a funds transfer that affects your bank account.
This is a universal webhook that covers all incoming and outgoing transfers that change the balance of your bank account. You can determine the type of transfer using the
"payload"."type"value.Below you'll find more details on the various payload types.
Credit Transactions
"type": "transaction.account" and "payload"."type" is "CREDIT"
"type": "transaction.account.post_process" and "payload"."type" is "CREDIT"
When Lean detects an incoming credit to your bank account, you will receive:
- A
transaction.accountwebhook immediately when the credit transaction is created (money detected as credited). - A
transaction.account.post_processwebhook later, after Lean completes a recognition process and can provide categorisation details. The recognition time varies by bank; usually fast, but it may take up to 15 minutes.
For all newly detected incoming credits to your account, Lean's reconciliation solution will attempt to automatically categorise and recognise the payment source. You can find the recognition result in
"payload"."post_processing_operations":
- Reconciled credit (Lean-initiated payment)
payment_method.type = "LEAN_PAYMENT_INITIATION"payer.type = "CUSTOMER"- Manual credit (recognized customer, but not linked to a Lean payment initiation)
payment_method.type = "UNKNOWN"payer.type = "CUSTOMER"- Unrecognized credit (unknown payer)
payment_method.type = "UNKNOWN"payer.type = "UNRECOGNIZED"
Initial Credit webhook
"type": "transaction.account" and "payload"."type" is "CREDIT"
This webhook indicates that the Lean system detected a new incoming transfer, and the "payload"."post_processing_operations" is empty.
Note that the counterparty object is provided based on availability. Sometimes the data cannot be extracted or was lost during the transmission. In this case, it may be empty.
{
"type": "transaction.account",
"payload": {
"type": "CREDIT",
"id": "8a1a9dc2-5e5f-4359-bde8-d4fd66f089f3",
"application_id": "12345",
"created_at": "2025-10-09T11:39:58.704236Z",
"last_updated_at": "2026-10-09T11:39:58.704236Z",
"status": "PROCESSED",
"sub_status": null,
"failure_details": null,
"reference": "ref",
"amount": {
"currency": "AED",
"amount": 1
},
"post_processing_operations": [], //empty list
"credit_indicator": "CREDIT",
"account_id": "11111111-1111-1111-1111-111111111111",
"description": "XXXXXXXXXXX",
"counterparty": { //may not be present
"account_identifier": {
"type": "IBAN",
"iban": "AE810NNNNNNNNNNNNNNNNNN"
},
"name": "John Doe",
"financial_institution": {
"name": "Test Bank Ltd"
}
}
},
"message": "An account transaction has been created or has changed state",
"timestamp": "2020-11-09T13:59:40.999956Z",
"event_id": "00405221-21fc-4aa2-a237-3edfe4c38411"
}Credit postprocessing webhook - Option 1: Reconciled Lean Payment
"type": "transaction.account.post_process" and "payload"."type" is "CREDIT"
payment_method.type = "LEAN_PAYMENT_INITIATION"payer.type = "CUSTOMER"
This webhook indicates that the Lean system reconciled the credit with a payment initiation.
{
"type": "transaction.account.post_process",
"payload": {
"type": "CREDIT",
"id": "8a1a9dc2-5e5f-4359-bde8-d4fd66f089f3",
"application_id": "12345",
"created_at": "2025-10-09T11:39:58.704236Z",
"last_updated_at": "2026-10-09T11:39:58.704236Z",
"status": "PROCESSED",
"sub_status": null,
"failure_details": null,
"reference": "ref",
"amount": {
"currency": "AED",
"amount": 1
},
"post_processing_operations": [{
"type": "CREDIT_CATEGORIZATION",
"payment_method": {
"type": "LEAN_PAYMENT_INITIATION",
"payment_initiation_id": "aaaaaaaa-0000-1111-0000-000000000002"
},
"payer": {
"type": "CUSTOMER",
"customer_id": "aaaaaaaa-0000-1111-0000-000000000003"
},
"created_at": "2026-02-09T18:07:25.988371Z"
}],
"credit_indicator": "CREDIT",
"account_id": "11111111-1111-1111-1111-111111111111",
"description": "description",
"counterparty": { //may not be present
"account_identifier": {
"type": "IBAN",
"iban": "AE810NNNNNNNNNNNNNNNNNN"
},
"name": "John Doe",
"financial_institution": {
"name": "Test Bank Ltd"
}
}
},
"message": "New account transaction post processing operations have been performed",
"timestamp": "2020-11-09T13:59:40.999956Z",
"event_id": "aaaaaaaa-0000-1111-0000-000000000003"
}Credit postprocessing webhook - Option 2: Manual Payment
"type": "transaction.account.post_process" and "payload"."type" is "CREDIT"
payment_method.type = "UNKNOWN"payer.type = "CUSTOMER"
This webhook indicates that the Lean system detected a new incoming external transfer and recognised the customer.
{
"type": "transaction.account.post_process",
"payload": {
"type": "CREDIT",
"id": "8a1a9dc2-5e5f-4359-bde8-d4fd66f089f3",
"application_id": "12345",
"created_at": "2025-10-09T11:39:58.704236Z",
"last_updated_at": "2026-10-09T11:39:58.704236Z",
"status": "PROCESSED",
"sub_status": null,
"failure_details": null,
"reference": "ref",
"amount": {
"currency": "AED",
"amount": 1
},
"post_processing_operations": [{
"type": "CREDIT_CATEGORIZATION",
"payment_method": {
"type": "UNKNOWN"
},
"payer": {
"type": "CUSTOMER",
"customer_id": "aaaaaaaa-0000-1111-0000-000000000003"
},
"created_at": "2026-02-09T18:07:25.988898Z"
}],
"credit_indicator": "CREDIT",
"account_id": "11111111-1111-1111-1111-111111111111",
"description": "description",
"counterparty": { //may not be present
"account_identifier": {
"type": "IBAN",
"iban": "AE810NNNNNNNNNNNNNNNNNN"
},
"name": "John Doe",
"financial_institution": {
"name": "Test Bank Ltd"
}
}
},
"message": "New account transaction post processing operations have been performed",
"timestamp": "2020-11-09T13:59:40.999956Z",
"event_id": "aaaaaaaa-0000-1111-0000-000000000003"
}Credit postprocessing webhook - Option 3: Unrecognized Credit
"type": "transaction.account.post_process" and "payload"."type" is "CREDIT"
payment_method.type = "UNKNOWN"payer.type = "UNRECOGNIZED"
This webhook indicates that the Lean system detected a new incoming external transfer but did not recognise the source.
{
"type": "transaction.account.post_process",
"payload": {
"type": "CREDIT",
"id": "8a1a9dc2-5e5f-4359-bde8-d4fd66f089f3",
"application_id": "12345",
"created_at": "2025-10-09T11:39:58.704236Z",
"last_updated_at": "2026-10-09T11:39:58.704236Z",
"status": "PROCESSED",
"sub_status": null,
"failure_details": null,
"reference": "ref",
"amount": {
"currency": "AED",
"amount": 1
},
"post_processing_operations": [{
"type": "CREDIT_CATEGORIZATION",
"payment_method": {
"type": "UNKNOWN"
},
"payer": {
"type": "UNRECOGNIZED"
},
"created_at": "2026-02-09T18:07:25.988898Z"
}],
"credit_indicator": "CREDIT",
"account_id": "11111111-1111-1111-1111-111111111111",
"description": "description",
"counterparty": { //may not be present
"account_identifier": {
"type": "IBAN",
"iban": "AE810NNNNNNNNNNNNNNNNNN"
},
"name": "John Doe",
"financial_institution": {
"name": "Test Bank Ltd"
}
}
},
"message": "New account transaction post processing operations have been performed",
"timestamp": "2020-11-09T13:59:40.999956Z",
"event_id": "aaaaaaaa-0000-1111-0000-000000000003"
}Updated about 12 hours ago
