--- title: "Fund transfer-related events" description: "Learn which webhooks are sent for each event." url: "https://docs.adyen.com/capital/webhook-types/fund-transfers-webhooks" source_url: "https://docs.adyen.com/capital/webhook-types/fund-transfers-webhooks.md" canonical: "https://docs.adyen.com/capital/webhook-types/fund-transfers-webhooks" last_modified: "2026-05-25T12:55:00+02:00" language: "en" --- # Fund transfer-related events Learn which webhooks are sent for each event. [View source](/capital/webhook-types/fund-transfers-webhooks.md) Adyen sends webhooks for the following fund transfer-related events when it disburses a grant or receives a repayment from the user: * [Grant disbursement initiated](#disbursement-initiated) * [Grant disbursement authorised](#disbursement-authorised) * [Grant disbursement booked](#disbursement-booked) * [Regular repayment initiated](#regular-repayment-initiated) * [Regular repayment authorised](#regular-repayment-authorised) * [Regular repayment booked](#regular-repayment-booked) * [Unscheduled repayment initiated](#unscheduled-repayment-initiated) * [Unscheduled repayment authorised](#unscheduled-repayment-authorised) * [Unscheduled repayment booked](#unscheduled-repayment-booked) * [Transaction created](#transaction-created) The following sections provide code samples for the specified events, focusing on cases where the transfer is successfully processed. For a complete list of possible outcomes, refer to the [status](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.created#request-data-status) field in our API documentation. ## Grant disbursement initiated After the grant has been configured and the user has completed required actions, Adyen initiates grant disbursement and sends a [balancePlatform.transfer.created](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.created) webhook with the following information: * `direction`: **incoming** * `category`: **grants** * `type`: **grant** * `reference`: Contains the ID of the related grant. For example, **GR00000000000000000000001**. * `status`: **received** **Grant disbursement initiated** ```json { "data": { "balancePlatform": "TestBalancePlatform", "id": "1OUUU768NUBED14V", "creationDate": "2025-10-15T18:53:08+02:00", "createdAt": "2025-10-15T18:52:54+02:00", "status": "received", "reason": "approved", "direction": "incoming", "balanceAccount": { "id": "BA00000000000000000000001", "description": "", "reference": "BA-ref-01" }, "accountHolder": { "id": "AH00000000000000000000001", "reference": "AH-ref-01" }, "category": "grants", "type": "grant", "amount": { "value": 1850000, "currency": "GBP" }, "reference": "GR00000000000000000000001", "referenceForBeneficiary": "GR00000000000000000000001", "description": "GR00000000000000000000001", "updatedAt": "2025-10-15T18:53:08+02:00", "sequenceNumber": 1, "balances": [ { "currency": "GBP", "received": 1850000 } ], "events": [ { "id": "EV0000000000000000000000000001", "status": "received", "bookingDate": "2025-10-15T18:53:08+02:00", "type": "accounting", "mutations": [ { "currency": "GBP", "received": 1850000 } ] } ], "eventId": "EV0000000000000000000000000001" }, "environment": "test", "timestamp": "2025-10-15T16:53:11.336Z", "type": "balancePlatform.transfer.created" } ``` ## Grant disbursement authorised After the grant disbursement request has been received, Adyen sends a [balancePlatform.transfer.updated](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.updated) webhook with the following information: * `direction`: **incoming** * `category`: **grants** * `type`: **grant** * `reference`: Contains the ID of the related grant. For example, **GR00000000000000000000001**. * `status`: **authorized** **Grant disbursement authorised** ```json { "data": { "balancePlatform": "TestBalancePlatform", "id": "1OUUU768NUBED14V", "creationDate": "2025-10-15T18:53:08+02:00", "createdAt": "2025-10-15T18:52:54+02:00", "status": "authorised", "reason": "approved", "direction": "incoming", "balanceAccount": { "id": "BA00000000000000000000001", "description": "", "reference": "BA-ref-01" }, "accountHolder": { "id": "AH00000000000000000000001", "reference": "AH-ref-01" }, "category": "grants", "type": "grant", "amount": { "value": 1850000, "currency": "GBP" }, "reference": "GR00000000000000000000001", "referenceForBeneficiary": "GR00000000000000000000001", "description": "GR00000000000000000000001", "updatedAt": "2025-10-15T18:53:08+02:00", "sequenceNumber": 2, "balances": [ { "reserved": 1850000, "currency": "GBP", "received": 0 } ], "events": [ { "id": "EV0000000000000000000000000001", "status": "received", "bookingDate": "2025-10-15T18:53:08+02:00", "type": "accounting", "mutations": [ { "currency": "GBP", "received": 1850000 } ] }, { "id": "EV0000000000000000000000000002", "status": "authorised", "bookingDate": "2025-10-15T18:53:08+02:00", "type": "accounting", "mutations": [ { "reserved": 1850000, "currency": "GBP", "received": -1850000 } ] } ], "eventId": "EV0000000000000000000000000002" }, "environment": "test", "timestamp": "2025-10-15T16:53:11.336Z", "type": "balancePlatform.transfer.updated" } ``` ## Grant disbursement booked After the grant disbursement request has been authorized, Adyen sends another [balancePlatform.transfer.updated](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.updated) webhook with the following information: * `direction`: **incoming** * `category`: **grants** * `type`: **grant** * `reference`: Contains the ID of the related grant. For example, **GR00000000000000000000001**. * `status`: **booked** **Grant disbursement booked** ```json { "data": { "balancePlatform": "TestBalancePlatform", "id": "1OUUU768NUBED14V", "creationDate": "2025-10-15T18:53:08+02:00", "createdAt": "2025-10-15T18:52:54+02:00", "status": "booked", "reason": "approved", "direction": "incoming", "balanceAccount": { "id": "BA00000000000000000000001", "description": "", "reference": "BA-ref-01" }, "accountHolder": { "id": "AH00000000000000000000001", "reference": "AH-ref-01" }, "category": "grants", "type": "grant", "amount": { "value": 1850000, "currency": "GBP" }, "reference": "GR00000000000000000000001", "referenceForBeneficiary": "GR00000000000000000000001", "description": "GR00000000000000000000001", "updatedAt": "2025-10-15T18:53:08+02:00", "sequenceNumber": 3, "balances": [ { "reserved": 0, "balance": 1850000, "currency": "GBP", "received": 0 } ], "events": [ { "id": "EV0000000000000000000000000001", "status": "received", "bookingDate": "2025-10-15T18:53:08+02:00", "type": "accounting", "mutations": [ { "currency": "GBP", "received": 1850000 } ] }, { "id": "EV0000000000000000000000000002", "status": "authorised", "bookingDate": "2025-10-15T18:53:08+02:00", "type": "accounting", "mutations": [ { "reserved": 1850000, "currency": "GBP", "received": -1850000 } ] }, { "id": "EV0000000000000000000000000003", "status": "booked", "transactionId": "EV000000000000000000000000000GBP", "bookingDate": "2025-10-15T18:53:08+02:00", "valueDate": "2025-10-15T18:53:08+02:00", "type": "accounting", "mutations": [ { "reserved": -1850000, "balance": 1850000, "currency": "GBP", "received": 0 } ] } ], "eventId": "EV0000000000000000000000000003" }, "environment": "test", "timestamp": "2025-10-15T16:53:11.36Z", "type": "balancePlatform.transfer.updated" } ``` ## Regular repayment initiated After the regular repayment request has been initiated, Adyen sends a [balancePlatform.transfer.created](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.created) webhook with the following information: * `direction`: **outgoing** * `category`: **grants** * `type`: **repayment** * `reference`: Contains the ID of the related grant. For example, **GR00000000000000000000001**. * `description`: Contains information about the related grant ID, balance account ID, and processing date. For example, **\\/GREF\\/GR00000000000000000000001\\/FBAC\\/BA00000000000000000000001\\/DATE\\/2025-10-17T01:31:15+02:00\\/**. * `status`: **received** **Regular repayment initiated** ```json { "data": { "balancePlatform": "TestBalancePlatform", "id": "38E9LB68OCJZ21JB", "creationDate": "2025-10-17T01:31:15+02:00", "createdAt": "2025-10-17T01:31:08+02:00", "status": "received", "reason": "approved", "direction": "outgoing", "balanceAccount": { "id": "BA00000000000000000000001", "description": "", "reference": "BA-ref-01" }, "accountHolder": { "id": "AH00000000000000000000001", "reference": "AH-ref-01" }, "category": "grants", "type": "repayment", "amount": { "value": 15000, "currency": "GBP" }, "reference": "GR00000000000000000000001", "description": "\/GREF\/GR00000000000000000000001\/FBAC\/BA00000000000000000000001\/DATE\/1*********020251016\/", "updatedAt": "2025-10-17T01:31:15+02:00", "sequenceNumber": 1, "balances": [ { "currency": "GBP", "received": -15000 } ], "events": [ { "id": "EV0000000000000000000000000001", "status": "received", "bookingDate": "2025-10-17T01:31:15+02:00", "type": "accounting", "mutations": [ { "currency": "GBP", "received": -15000 } ] } ], "eventId": "EV0000000000000000000000000001" }, "environment": "test", "timestamp": "2025-10-16T23:33:19.804Z", "type": "balancePlatform.transfer.created" } ``` ## Regular repayment authorised After the regular repayment request has been received, Adyen sends a [balancePlatform.transfer.updated](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.updated) webhook with the following information: * `direction`: **outgoing** * `category`: **grants** * `type`: **repayment** * `reference`: Contains the ID of the related grant. For example, **GR00000000000000000000001**. * `description`: Contains information about the related grant ID, balance account ID, and processing date. For example, **\\/GREF\\/GR00000000000000000000001\\/FBAC\\/BA00000000000000000000001\\/DATE\\/2025-10-17T01:31:15+02:00\\/**. * `status`: **authorized** **Regular repayment authorised** ```json { "data": { "balancePlatform": "TestBalancePlatform", "id": "38E9LB68OCJZ21JB", "creationDate": "2025-10-17T01:31:15+02:00", "createdAt": "2025-10-17T01:31:08+02:00", "status": "authorised", "reason": "approved", "direction": "outgoing", "balanceAccount": { "id": "BA00000000000000000000001", "description": "", "reference": "BA-ref-01" }, "accountHolder": { "id": "AH00000000000000000000001", "reference": "AH-ref-01" }, "category": "grants", "type": "repayment", "amount": { "value": 15000, "currency": "GBP" }, "reference": "GR00000000000000000000001", "description": "\/GREF\/GR00000000000000000000001\/FBAC\/BA00000000000000000000001\/DATE\/1*********020251016\/", "updatedAt": "2025-10-16T23:33:19.835Z", "sequenceNumber": 2, "balances": [ { "currency": "GBP", "received": 0, "reserved" : -15000 } ], "events": [ { "id": "EV0000000000000000000000000001", "status": "received", "bookingDate": "2025-10-17T01:31:15+02:00", "type": "accounting", "mutations": [ { "currency": "GBP", "received": -15000 } ] }, { "id": "EV0000000000000000000000000002", "status": "authorised", "bookingDate": "2025-10-17T01:31:15+02:00", "type": "accounting", "mutations": [ { "currency": "GBP", "received": 15000, "reserved": -15000 } ] } ], "eventId": "EV0000000000000000000000000002" }, "timestamp": "2025-10-16T23:33:19.835Z", "environment": "test", "type": "balancePlatform.transfer.updated" } ``` ## Regular repayment booked After the [regular repayment](/capital/how-capital-works#regular-repayments) request has been authorized, Adyen sends a [balancePlatform.transfer.updated](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.updated) webhook with the following information: * `direction`: **outgoing** * `category`: **grants** * `type`: **repayment** * `reference`: Contains the ID of the related grant. For example, **GR00000000000000000000001**. * `description`: Contains information about the related grant ID, balance account ID, and processing date. For example, **\\/GREF\\/GR00000000000000000000001\\/FBAC\\/BA00000000000000000000001\\/DATE\\/2025-10-17T01:31:15+02:00\\/**. * `status`: **booked** **Regular repayment booked** ```json { "data": { "balancePlatform": "TestBalancePlatform", "id": "38E9LB68OCJZ21JB", "creationDate": "2025-10-17T01:31:15+02:00", "createdAt": "2025-10-17T01:31:08+02:00", "status": "booked", "reason": "approved", "direction": "outgoing", "balanceAccount": { "id": "BA00000000000000000000001", "description": "", "reference": "BA-ref-01" }, "accountHolder": { "id": "AH00000000000000000000001", "reference": "AH-ref-01" }, "category": "grants", "type": "repayment", "amount": { "value": 15000, "currency": "GBP" }, "reference": "GR00000000000000000000001", "description": "\/GREF\/GR00000000000000000000001\/FBAC\/BA00000000000000000000001\/DATE\/1*********020251016\/", "updatedAt": "2025-10-17T01:31:15+02:00", "sequenceNumber": 3, "balances": [ { "currency": "GBP", "received": 0, "reserved" : 0, "balance": 0 } ], "events": [ { "id": "EV0000000000000000000000000001", "status": "received", "bookingDate": "2025-10-17T01:31:15+02:00", "type": "accounting", "mutations": [ { "currency": "GBP", "received": -15000 } ] }, { "id": "EV0000000000000000000000000002", "status": "authorised", "bookingDate": "2025-10-17T01:31:15+02:00", "type": "accounting", "mutations": [ { "currency": "GBP", "received": 15000, "reserved": -15000 } ] }, { "id": "EV0000000000000000000000000003", "status": "booked", "transactionId" : "EV0000000000000000000000000003GBP", "bookingDate": "2025-10-17T01:31:15+02:00", "valueDate": "2025-10-17T01:31:15+02:00", "type": "accounting", "mutations": [ { "currency": "GBP", "received": 0, "reserved": 15000, "balance": -15000 } ] } ], "eventId": "EV0000000000000000000000000003" }, "type": "balancePlatform.transfer.created", "environment": "test", "timestamp": "2025-10-16T23:33:19.865Z" } ``` ## Unscheduled repayment initiated An [unscheduled repayment](/capital/how-capital-works#unscheduled-repayments) first triggers an **incoming** transfer to Adyen's internal Capital fund collection account. After this transfer is processed, an **outgoing** transfer completes the repayment on the grant according to the [regular repayment flow](#regular-repayment-initiated). After the unscheduled repayment request has been initiated, Adyen sends a [balancePlatform.transfer.created](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.created) webhook with the following information: * `direction`: **incoming** * `category`: **grants** * `type`: **capitalFundsCollection** * `reference` and `description`: Contains the ID of Adyen's internal Capital fund collection account. For example, **CPTL00000000000000000000000001**. * `status`: **received** **Unscheduled repayment initiated** ```json { "data": { "balancePlatform": "TestBalancePlatform", "id": "3CE02F68VMWYNNI9", "creationDate": "2025-11-04T09:11:03+01:00", "createdAt": "2025-11-04T09:10:58+01:00", "status": "received", "reason": "approved", "direction": "incoming", "balanceAccount": { "id": "BA00000000000000000000001", "description": "", "reference": "BA-ref-01" }, "accountHolder": { "id": "AH00000000000000000000001", "reference": "AH-ref-01" }, "category": "grants", "type": "capitalFundsCollection", "amount": { "value": 100000, "currency": "GBP" }, "reference": "CPTL00000000000000000000000001", "description": "CPTL00000000000000000000000001", "updatedAt": "2025-11-04T09:11:03+01:00", "sequenceNumber": 1, "balances": [ { "currency": "GBP", "received": -100000 } ], "events": [ { "id": "EV0000000000000000000000000011", "status": "received", "bookingDate": "2025-10-17T01:31:15+02:00", "type": "accounting", "mutations": [ { "currency": "GBP", "received": 100000 } ] } ], "eventId": "EV0000000000000000000000000011" }, "environment": "test", "timestamp": "2025-11-04T08:11:06.614Z", "type": "balancePlatform.transfer.created" } ``` ## Unscheduled repayment authorised An [unscheduled repayment](/capital/how-capital-works#unscheduled-repayments) first triggers an **incoming** transfer to Adyen's internal Capital fund collection account. After this transfer is processed, an **outgoing** transfer completes the repayment on the grant according to the [regular repayment flow](#regular-repayment-initiated). After the unscheduled repayment request has been received, Adyen sends a [balancePlatform.transfer.updated](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.updated) webhook with the following information: * `direction`: **incoming** * `category`: **grants** * `type`: **capitalFundsCollection** * `reference` and `description`: Contains the ID of Adyen's internal Capital fund collection account. For example, **CPTL00000000000000000000000001**. * `status`: **authorized** **Unscheduled repayment authorised** ```json { "data": { "balancePlatform": "TestBalancePlatform", "id": "3CE02F68VMWYNNI9", "creationDate": "2025-11-04T09:11:04+01:00", "createdAt": "2025-11-04T09:10:58+01:00", "status": "authorised", "reason": "approved", "direction": "incoming", "balanceAccount": { "id": "BA00000000000000000000001", "description": "", "reference": "BA-ref-01" }, "accountHolder": { "id": "AH00000000000000000000001", "reference": "AH-ref-01" }, "category": "grants", "type": "capitalFundsCollection", "amount": { "value": 100000, "currency": "GBP" }, "reference": "CPTL00000000000000000000000001", "description": "CPTL00000000000000000000000001", "updatedAt": "2025-11-04T09:11:04+01:00", "sequenceNumber": 2, "balances": [ { "currency": "GBP", "received": 0, "reserved": 100000 } ], "events": [ { "id": "EV0000000000000000000000000011", "status": "received", "bookingDate": "2025-10-17T01:31:15+02:00", "type": "accounting", "mutations": [ { "currency": "GBP", "received": 100000 } ] }, { "id": "EV0000000000000000000000000012", "status": "authorised", "bookingDate": "2025-11-04T09:11:04+01:00", "type": "accounting", "mutations": [ { "currency": "GBP", "received": -100000, "reserved": 100000 } ] } ], "eventId": "EV0000000000000000000000000012" }, "environment": "test", "timestamp": "2025-11-04T08:11:06.621Z", "type": "balancePlatform.transfer.updated" } ``` ## Unscheduled repayment booked An [unscheduled repayment](/capital/how-capital-works#unscheduled-repayments) first triggers an **incoming** transfer to Adyen's internal Capital fund collection account. After this transfer is processed, an **outgoing** transfer completes the repayment on the grant according to the [regular repayment flow](#regular-repayment-initiated). After the unscheduled repayment request has been authorized, Adyen sends a [balancePlatform.transfer.updated](https://docs.adyen.com/api-explorer/transfer-webhooks/latest/post/balancePlatform.transfer.updated) webhook with the following information: * `direction`: **incoming** * `category`: **grants** * `type`: **capitalFundsCollection** * `reference` and `description`: Contains the ID of Adyen's internal Capital fund collection account. For example, **CPTL00000000000000000000000001**. * `status`: **booked** **Unscheduled repayment booked** ```json { "data": { "balancePlatform": "TestBalancePlatform", "id": "3CE02F68VMWYNNI9", "creationDate": "2025-11-04T09:11:04+01:00", "createdAt": "2025-11-04T09:10:58+01:00", "status": "booked", "reason": "approved", "direction": "incoming", "balanceAccount": { "id": "BA00000000000000000000001", "description": "", "reference": "BA-ref-01" }, "accountHolder": { "id": "AH00000000000000000000001", "reference": "AH-ref-01" }, "category": "grants", "type": "capitalFundsCollection", "amount": { "value": 100000, "currency": "GBP" }, "reference": "CPTL00000000000000000000000001", "description": "CPTL00000000000000000000000001", "updatedAt" : "2025-11-04T09:11:04+01:00", "sequenceNumber": 3, "balances": [ { "balance" : 100000, "currency": "GBP", "received": 0, "reserved": -100000 } ], "events": [ { "id": "EV0000000000000000000000000011", "status": "received", "bookingDate": "2025-10-17T01:31:15+02:00", "type": "accounting", "mutations": [ { "currency": "GBP", "received": 100000 } ] }, { "id": "EV0000000000000000000000000012", "status": "authorised", "bookingDate": "2025-11-04T09:11:04+01:00", "type": "accounting", "mutations": [ { "currency": "GBP", "received": -100000, "reserved": 100000 } ] }, { "id": "EV0000000000000000000000000013", "status": "booked", "transactionId" : "EV0000000000000000000000000013GBP", "bookingDate": "2025-11-04T09:11:04+01:00", "valueDate": "2025-11-04T09:11:04+01:00", "type": "accounting", "mutations": [ { "balance": 100000, "currency": "GBP", "received": 0, "reserved": -100000 } ] } ], "eventId": "EV0000000000000000000000000013" }, "environment": "test", "timestamp": "2025-11-04T08:11:06.758Z", "type": "balancePlatform.transfer.updated" } ``` ## Fund movement transaction When a grant is disbursed to a receiving balance account or a user makes a repayment, and the transfer is recorded, Adyen sends a [balancePlatform.transaction.created](https://docs.adyen.com/api-explorer/transaction-webhooks/latest/post/balancePlatform.transaction.created) webhook. The webhook includes details about the transaction and the corresponding transfer ID and grant ID. **Grant disbursement transaction created** ```json { "data": { "balancePlatform": "TestBalancePlatform", "id": "3JFBE65XIXOPZ30N", "accountHolderId": "AH00000000000000000000001", "amount": { "currency": "GBP", "value": -1850000 }, "balanceAccountId": "BA00000000000000000000001", "bookingDate": "2023-01-09T16:36:35+01:00", "counterparty": { "balanceAccountId": "BA00000000000000000000002" }, "createdAt": "2023-01-09T16:36:34+01:00", "description": "GR00000000000000000000001", "instructedAmount": { "currency": "GBP", "value": -1850000 }, "reference": "GR00000000000000000000001", "referenceForBeneficiary": "GR00000000000000000000001", "transferId": "1OUUU768NUBED14V", "valueDate": "2025-10-15T18:54:08+02:00" }, "environment": "test", "type": "balancePlatform.transaction.created" } ``` ## See also * [Webhook structures and types for Capital](/capital/webhook-types) * [Grant lifecycle and status](/capital/grant-lifecycle-and-status)