---
title: "Transfer events"
---
Transfer events notify you when the status of a transfer changes. These events help you track fund movements in real time.

## When transfer events are sent

Gravv sends transfer events when:

* A transfer is initiated between accounts or wallets.
* The transfer is complete.

## Transfer event types

The following event types are available for transfers:

| Event type                        | Description                                                |
| :-------------------------------- | :--------------------------------------------------------- |
| transfer.status.pending           | transfer initiated and processing                          |
| transfer.status.completed         | transfer completed successfully                            |
| transfer.status.failed            | transfer failed                                            |
| transfer.inflow.deposit_received  | inbound deposit detected; funds are being credited         |
| transfer.inflow.completed         | inbound deposit credited to the account                    |
| transfer.inflow.deposit_settled   | inbound deposit fully settled on-chain                     |
| transfer.inflow.compensated       | inbound deposit was reversed or compensated                |
| transfer.inflow.payout_failed     | inbound deposit payout to the destination account failed   |

## Transfer event structure

The `event_data` object for transfer events contains the following fields:

| Field            | Type   | Description                                  |
| :--------------- | :----- | :------------------------------------------- |
| amount           | string | amount transferred                           |
| remark           | string | optional transfer description                |
| source           | object | details about where the funds came from      |
| tx_hash          | string | blockchain transaction hash for verification |
| destination      | object | details about where the funds are going      |
| client_reference | string | optional reference identifier                |

The `source` object contains the following fields:

| Field       | Type   | Description                                                                                    |
| :---------- | :----- | :--------------------------------------------------------------------------------------------- |
| id          | string | identifier for the source account or wallet                                                    |
| source_type | string | type of source, which can either be internal_account, internal_crypto_wallet, or crypto_wallet |

The `destination` object contains the following fields:

| Field              | Type   | Description                                                                                         |
| :----------------- | :----- | :-------------------------------------------------------------------------------------------------- |
| id                 | string | identifier for the destination account                                                              |
| destination_type   | string | type of destination, which can either be internal_account, external_account, crypto_wallet, or card |
| rail               | string | transfer rail, which can either be ach, wire, or sepa                                               |
| wallet_address     | string | blockchain address if sending to a crypto wallet                                                    |
| blockchain_network | string | blockchain network if sending to crypto wallet                                                      |
| blockchain_memo    | string | memo required for specific networks like Stellar                                                    |

The following is a sample payload for transfer events:

```json title="sample transfer event payload"
{
  "event_id": "6c54b861-7116-4cbc-b479-4a64264eda51",
  "tenant_id": "6d45104f-12db-4485-bea2-ffc3e44d60ee",
  "timestamp": "2025-08-31T18:58:15.733245361Z",
  "event_data": {
    "amount": "1",
    "remark": null,
    "source": {
      "id": "fd84a244-dc5a-4232-af7d-f2047bf59542",
      "source_type": "internal_account"
    },
    "tx_hash": "57132d61922afff3653d665de84bf00f7b0a5898fb7f7f026377bd67fe2ab7ae",
    "destination": {
      "id": null,
      "rail": null,
      "wallet_address": "GDUCZEMOM4PCW2IMEIWZMW7HOZADEIAXSUFSY4GULJ2ZEYHLWLG4KRUP",
      "blockchain_memo": null,
      "destination_type": "crypto_wallet",
      "blockchain_network": "stellar"
    },
    "client_reference": "2893843"
  },
  "event_type": "transfer.status.completed",
  "event_category": "transfer",
  "event_group_id": "47ef7fbd-3c4d-479a-932a-7c75c6e2842f"
}
```

For the required fields in all Gravv webhook payloads, see [Webhook payload structure](/platform/webhooks/webhooks-overview#webhook-payload-structure).

