{
"id": "123e4567-e89b-12d3-a456-426614174000",
"subscription_id": "123e4567-e89b-12d3-a456-426614174000",
"organization_id": "123e4567-e89b-12d3-a456-426614174000",
"membership_id": "123e4567-e89b-12d3-a456-426614174000",
"type": "v1/transfers",
"created_at": "2025-04-22T12:00:00Z",
"data": {
"event": "created",
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"initiator_id": "8b1a9953-2c31-4f9d-9c0e-1f2b3c4d5e6f",
"bank_account_id": "b3f1c2d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
"amount": 1100.50,
"amount_cents": 110050,
"amount_currency": "EUR",
"status": "pending",
"beneficiary_id": "c4d5e6f7-a8b9-4c0d-8e2f-3a4b5c6d7e8f",
"reference": "Lease payment",
"note": "Lease payment for offices in Paris",
"declined_reason": null,
"scheduled_date": "2025-04-22",
"created_at": "2025-04-22T12:00:00Z",
"processed_at": null,
"completed_at": null,
"transaction_id": null,
"recurring_transfer_id": null
}
}
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"subscription_id": "123e4567-e89b-12d3-a456-426614174000",
"organization_id": "123e4567-e89b-12d3-a456-426614174000",
"membership_id": "123e4567-e89b-12d3-a456-426614174000",
"type": "v1/transfers",
"created_at": "2025-04-22T14:30:00Z",
"data": {
"event": "settled",
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"initiator_id": "8b1a9953-2c31-4f9d-9c0e-1f2b3c4d5e6f",
"bank_account_id": "b3f1c2d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
"amount": 1100.50,
"amount_cents": 110050,
"amount_currency": "EUR",
"status": "settled",
"beneficiary_id": "c4d5e6f7-a8b9-4c0d-8e2f-3a4b5c6d7e8f",
"reference": "Lease payment",
"note": "Lease payment for offices in Paris",
"declined_reason": null,
"scheduled_date": "2025-04-22",
"created_at": "2025-04-22T12:00:00Z",
"processed_at": "2025-04-22T12:05:00Z",
"completed_at": "2025-04-22T14:30:00Z",
"transaction_id": "d5e6f7a8-b9c0-4d1e-8f3a-4b5c6d7e8f90",
"recurring_transfer_id": null
}
}
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"subscription_id": "123e4567-e89b-12d3-a456-426614174000",
"organization_id": "123e4567-e89b-12d3-a456-426614174000",
"membership_id": "123e4567-e89b-12d3-a456-426614174000",
"type": "v1/transfers",
"created_at": "2025-04-22T12:06:00Z",
"data": {
"event": "declined",
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"initiator_id": "8b1a9953-2c31-4f9d-9c0e-1f2b3c4d5e6f",
"bank_account_id": "b3f1c2d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
"amount": 1100.50,
"amount_cents": 110050,
"amount_currency": "EUR",
"status": "declined",
"beneficiary_id": "c4d5e6f7-a8b9-4c0d-8e2f-3a4b5c6d7e8f",
"reference": "Lease payment",
"note": null,
"declined_reason": "debit_account_insufficient_funds",
"scheduled_date": "2025-04-22",
"created_at": "2025-04-22T12:00:00Z",
"processed_at": "2025-04-22T12:05:00Z",
"completed_at": "2025-04-22T12:06:00Z",
"transaction_id": null,
"recurring_transfer_id": null
}
}
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"subscription_id": "123e4567-e89b-12d3-a456-426614174000",
"organization_id": "123e4567-e89b-12d3-a456-426614174000",
"membership_id": "123e4567-e89b-12d3-a456-426614174000",
"type": "v1/transfers",
"created_at": "2025-04-22T12:03:00Z",
"data": {
"event": "canceled",
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"initiator_id": "8b1a9953-2c31-4f9d-9c0e-1f2b3c4d5e6f",
"bank_account_id": "b3f1c2d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
"amount": 1100.50,
"amount_cents": 110050,
"amount_currency": "EUR",
"status": "canceled",
"beneficiary_id": "c4d5e6f7-a8b9-4c0d-8e2f-3a4b5c6d7e8f",
"reference": "Lease payment",
"note": "Lease payment for offices in Paris",
"declined_reason": null,
"scheduled_date": "2025-04-22",
"created_at": "2025-04-22T12:00:00Z",
"processed_at": null,
"completed_at": "2025-04-22T12:03:00Z",
"transaction_id": null,
"recurring_transfer_id": null
}
}
v1/transfers
OAuth scope: organization.read
Webhook that delivers events related to SEPA transfers.
Supported events:
created— The transfer was created. Fires for transfers initiated outside your integration, and for each execution spawned by a recurring transfer.processing— The account balance was debited and a transaction was created. Can last several hours until the transfer is sent on the network.settled— The transfer was sent to the network. Permanent status.declined— The transfer was declined.data.declined_reasonindicates why. Permanent status.canceled— The transfer was canceled by a user. Permanent status.
Events are delivered for the same transfers that GET /v2/sepa/transfers returns. The recurring
transfer resource itself is not covered here — subscribe to v1/recurring-transfers for that.
Deliveries are not deduplicated, so treat them idempotently: an unchanged transfer being saved again can re-deliver the event matching its current status.
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"subscription_id": "123e4567-e89b-12d3-a456-426614174000",
"organization_id": "123e4567-e89b-12d3-a456-426614174000",
"membership_id": "123e4567-e89b-12d3-a456-426614174000",
"type": "v1/transfers",
"created_at": "2025-04-22T12:00:00Z",
"data": {
"event": "created",
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"initiator_id": "8b1a9953-2c31-4f9d-9c0e-1f2b3c4d5e6f",
"bank_account_id": "b3f1c2d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
"amount": 1100.50,
"amount_cents": 110050,
"amount_currency": "EUR",
"status": "pending",
"beneficiary_id": "c4d5e6f7-a8b9-4c0d-8e2f-3a4b5c6d7e8f",
"reference": "Lease payment",
"note": "Lease payment for offices in Paris",
"declined_reason": null,
"scheduled_date": "2025-04-22",
"created_at": "2025-04-22T12:00:00Z",
"processed_at": null,
"completed_at": null,
"transaction_id": null,
"recurring_transfer_id": null
}
}
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"subscription_id": "123e4567-e89b-12d3-a456-426614174000",
"organization_id": "123e4567-e89b-12d3-a456-426614174000",
"membership_id": "123e4567-e89b-12d3-a456-426614174000",
"type": "v1/transfers",
"created_at": "2025-04-22T14:30:00Z",
"data": {
"event": "settled",
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"initiator_id": "8b1a9953-2c31-4f9d-9c0e-1f2b3c4d5e6f",
"bank_account_id": "b3f1c2d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
"amount": 1100.50,
"amount_cents": 110050,
"amount_currency": "EUR",
"status": "settled",
"beneficiary_id": "c4d5e6f7-a8b9-4c0d-8e2f-3a4b5c6d7e8f",
"reference": "Lease payment",
"note": "Lease payment for offices in Paris",
"declined_reason": null,
"scheduled_date": "2025-04-22",
"created_at": "2025-04-22T12:00:00Z",
"processed_at": "2025-04-22T12:05:00Z",
"completed_at": "2025-04-22T14:30:00Z",
"transaction_id": "d5e6f7a8-b9c0-4d1e-8f3a-4b5c6d7e8f90",
"recurring_transfer_id": null
}
}
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"subscription_id": "123e4567-e89b-12d3-a456-426614174000",
"organization_id": "123e4567-e89b-12d3-a456-426614174000",
"membership_id": "123e4567-e89b-12d3-a456-426614174000",
"type": "v1/transfers",
"created_at": "2025-04-22T12:06:00Z",
"data": {
"event": "declined",
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"initiator_id": "8b1a9953-2c31-4f9d-9c0e-1f2b3c4d5e6f",
"bank_account_id": "b3f1c2d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
"amount": 1100.50,
"amount_cents": 110050,
"amount_currency": "EUR",
"status": "declined",
"beneficiary_id": "c4d5e6f7-a8b9-4c0d-8e2f-3a4b5c6d7e8f",
"reference": "Lease payment",
"note": null,
"declined_reason": "debit_account_insufficient_funds",
"scheduled_date": "2025-04-22",
"created_at": "2025-04-22T12:00:00Z",
"processed_at": "2025-04-22T12:05:00Z",
"completed_at": "2025-04-22T12:06:00Z",
"transaction_id": null,
"recurring_transfer_id": null
}
}
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"subscription_id": "123e4567-e89b-12d3-a456-426614174000",
"organization_id": "123e4567-e89b-12d3-a456-426614174000",
"membership_id": "123e4567-e89b-12d3-a456-426614174000",
"type": "v1/transfers",
"created_at": "2025-04-22T12:03:00Z",
"data": {
"event": "canceled",
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"initiator_id": "8b1a9953-2c31-4f9d-9c0e-1f2b3c4d5e6f",
"bank_account_id": "b3f1c2d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
"amount": 1100.50,
"amount_cents": 110050,
"amount_currency": "EUR",
"status": "canceled",
"beneficiary_id": "c4d5e6f7-a8b9-4c0d-8e2f-3a4b5c6d7e8f",
"reference": "Lease payment",
"note": "Lease payment for offices in Paris",
"declined_reason": null,
"scheduled_date": "2025-04-22",
"created_at": "2025-04-22T12:00:00Z",
"processed_at": null,
"completed_at": "2025-04-22T12:03:00Z",
"transaction_id": null,
"recurring_transfer_id": null
}
}
created— The transfer was recorded. Fires for transfers initiated outside your integration, and for each execution spawned by a recurring transfer.processing— The account balance was debited and a transaction was created. Can last several hours until the transfer is sent on the network.settled— The transfer was sent to the network. Permanent status.declined— The transfer was declined.data.declined_reasonindicates why. Permanent status.canceled— The transfer was canceled by a user. Permanent status.data.completed_atis set to the cancellation time, same as it is forsettledanddeclined.
data carries the same fields as GET /v2/sepa/transfers/{id}, so you can upsert the transfer locally without a follow-up request — except for updated_at, which is left out since data.event already identifies which transition triggered the delivery. data.transaction_id links the transfer to its ledger transaction, letting you reconcile against the v1/transactions topic.
Events are delivered for the same transfers that GET /v2/sepa/transfers returns. The recurring transfer resource itself is not covered here — subscribe to v1/recurring-transfers for that. Individual executions of a recurring transfer are delivered on this topic, with data.recurring_transfer_id set.
Deliveries are not deduplicated. Treat them idempotently: an unchanged transfer being saved again can re-deliver the event matching its current status.
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"subscription_id": "123e4567-e89b-12d3-a456-426614174000",
"organization_id": "123e4567-e89b-12d3-a456-426614174000",
"membership_id": "123e4567-e89b-12d3-a456-426614174000",
"type": "v1/transfers",
"created_at": "2025-04-22T12:00:00Z",
"data": {
"event": "created",
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"initiator_id": "8b1a9953-2c31-4f9d-9c0e-1f2b3c4d5e6f",
"bank_account_id": "b3f1c2d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
"amount": 1100.50,
"amount_cents": 110050,
"amount_currency": "EUR",
"status": "pending",
"beneficiary_id": "c4d5e6f7-a8b9-4c0d-8e2f-3a4b5c6d7e8f",
"reference": "Lease payment",
"note": "Lease payment for offices in Paris",
"declined_reason": null,
"scheduled_date": "2025-04-22",
"created_at": "2025-04-22T12:00:00Z",
"processed_at": null,
"completed_at": null,
"transaction_id": null,
"recurring_transfer_id": null
}
}
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"subscription_id": "123e4567-e89b-12d3-a456-426614174000",
"organization_id": "123e4567-e89b-12d3-a456-426614174000",
"membership_id": "123e4567-e89b-12d3-a456-426614174000",
"type": "v1/transfers",
"created_at": "2025-04-22T14:30:00Z",
"data": {
"event": "settled",
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"initiator_id": "8b1a9953-2c31-4f9d-9c0e-1f2b3c4d5e6f",
"bank_account_id": "b3f1c2d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
"amount": 1100.50,
"amount_cents": 110050,
"amount_currency": "EUR",
"status": "settled",
"beneficiary_id": "c4d5e6f7-a8b9-4c0d-8e2f-3a4b5c6d7e8f",
"reference": "Lease payment",
"note": "Lease payment for offices in Paris",
"declined_reason": null,
"scheduled_date": "2025-04-22",
"created_at": "2025-04-22T12:00:00Z",
"processed_at": "2025-04-22T12:05:00Z",
"completed_at": "2025-04-22T14:30:00Z",
"transaction_id": "d5e6f7a8-b9c0-4d1e-8f3a-4b5c6d7e8f90",
"recurring_transfer_id": null
}
}
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"subscription_id": "123e4567-e89b-12d3-a456-426614174000",
"organization_id": "123e4567-e89b-12d3-a456-426614174000",
"membership_id": "123e4567-e89b-12d3-a456-426614174000",
"type": "v1/transfers",
"created_at": "2025-04-22T12:06:00Z",
"data": {
"event": "declined",
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"initiator_id": "8b1a9953-2c31-4f9d-9c0e-1f2b3c4d5e6f",
"bank_account_id": "b3f1c2d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
"amount": 1100.50,
"amount_cents": 110050,
"amount_currency": "EUR",
"status": "declined",
"beneficiary_id": "c4d5e6f7-a8b9-4c0d-8e2f-3a4b5c6d7e8f",
"reference": "Lease payment",
"note": null,
"declined_reason": "debit_account_insufficient_funds",
"scheduled_date": "2025-04-22",
"created_at": "2025-04-22T12:00:00Z",
"processed_at": "2025-04-22T12:05:00Z",
"completed_at": "2025-04-22T12:06:00Z",
"transaction_id": null,
"recurring_transfer_id": null
}
}
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"subscription_id": "123e4567-e89b-12d3-a456-426614174000",
"organization_id": "123e4567-e89b-12d3-a456-426614174000",
"membership_id": "123e4567-e89b-12d3-a456-426614174000",
"type": "v1/transfers",
"created_at": "2025-04-22T12:03:00Z",
"data": {
"event": "canceled",
"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"initiator_id": "8b1a9953-2c31-4f9d-9c0e-1f2b3c4d5e6f",
"bank_account_id": "b3f1c2d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
"amount": 1100.50,
"amount_cents": 110050,
"amount_currency": "EUR",
"status": "canceled",
"beneficiary_id": "c4d5e6f7-a8b9-4c0d-8e2f-3a4b5c6d7e8f",
"reference": "Lease payment",
"note": "Lease payment for offices in Paris",
"declined_reason": null,
"scheduled_date": "2025-04-22",
"created_at": "2025-04-22T12:00:00Z",
"processed_at": null,
"completed_at": "2025-04-22T12:03:00Z",
"transaction_id": null,
"recurring_transfer_id": null
}
}
Authorizations
The signature header follows the format t={timestamp},v1={signature}.
Verification steps:
- Extract the timestamp and signature from the signature header
- Reject the request if the timestamp is older than 5 minutes
- Recreate the signed payload: '{timestamp}.{raw_request_body}'
- Compute HMAC-SHA256 of the signed payload using your webhook secret as the key
- Compare the computed signature with the one in the header
Body
Webhook payload for topic v1/transfers. Events: created (transfer recorded, including each execution of a recurring transfer), processing (balance debited, transaction created), settled (sent on the network, permanent), declined (see declined_reason, permanent), canceled (canceled by a user, permanent).
Response
Webhook received successfully
Was this page helpful?