---
title: "Sync transfer events"
method: POST
path: "/transfer/event/sync"
tags: ["plaid"]
---

# Sync transfer events

`POST /transfer/event/sync`

`/transfer/event/sync` allows you to request up to the next 25 transfer events that happened after a specific `event_id`. Use the `/transfer/event/sync` endpoint to guarantee you have seen all transfer events.

## Request body

- TransferEventSyncRequest — Defines the request schema for `/transfer/event/sync`
  - `client_id` string — Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header or as part of a request body.
  - `secret` string — Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part of a request body.
  - `after_id` integer, required — The latest (largest) `event_id` fetched via the sync endpoint, or 0 initially.
  - `count` integer, nullable — The maximum number of transfer events to return.

## Response `200`

OK

- TransferEventSyncResponse — Defines the response schema for `/transfer/event/sync`
  - `transfer_events` TransferEvent[], required
    - `event_id` integer, required — Plaid’s unique identifier for this event. IDs are sequential unsigned 64-bit integers.
    - `timestamp` string, date-time, required — The datetime when this event occurred. This will be of the form `2006-01-02T15:04:05Z`.
    - `event_type` 'pending' | 'cancelled' | 'failed' | 'posted' | 'settled' | 'funds_available' | 'returned' | 'swept' | 'swept_settled' | 'return_swept' | 'sweep.pending' | 'sweep.posted' | 'sweep.settled' | 'sweep.returned' | 'sweep.failed', required — The type of event that this transfer represents. Event types with prefix `sweep` represents events for Plaid Ledger sweeps. `pending`: A new transfer was created; it is in the pending state. `cancelled`: The transfer was cancelled by the client. `failed`: The transfer failed, no funds were moved. `posted`: The transfer has been successfully submitted to the payment network. `settled`: Credits are available to be withdrawn or debits have been deducted from the Plaid linked account. `funds_available`: Funds from the transfer have been released from hold and applied to the ledger's available balance. (Only applicable to ACH debits.) `returned`: A posted transfer was returned. `swept`: The transfer was swept to / from the sweep account. `swept_settled`: Credits are available to be withdrawn or debits have been deducted from the customer’s business checking account. `return_swept`: Due to the transfer being returned, funds were pulled from or pushed back to the sweep account. `sweep.pending`: A new ledger sweep was created; it is in the pending state. `sweep.posted`: The ledger sweep has been successfully submitted to the payment network. `sweep.settled`: The transaction has settled in the funding account. This means that funds withdrawn from Plaid Ledger balance have reached the funding account, or funds to be deposited into the Plaid Ledger Balance have been pulled, and the hold period has begun. `sweep.returned`: A posted ledger sweep was returned. `sweep.failed`: The ledger sweep failed, no funds were moved. `refund.pending`: A new refund was created; it is in the pending state. `refund.cancelled`: The refund was cancelled. `refund.failed`: The refund failed, no funds were moved. `refund.posted`: The refund has been successfully submitted to the payment network. `refund.settled`: The refund transaction has settled in the Plaid linked account. `refund.returned`: A posted refund was returned. `refund.swept`: The refund was swept from the sweep account. `refund.return_swept`: Due to the refund being returned, funds were pushed back to the sweep account.
    - `account_id` string — The account ID associated with the transfer. This field is omitted for Plaid Ledger Sweep events.
    - `funding_account_id` string, nullable, required — The id of the associated funding account, available in the Plaid Dashboard. If present, this indicates which of your business checking accounts will be credited or debited.
    - `transfer_id` string, required — Plaid’s unique identifier for a transfer. This field is `null` for Plaid Ledger Sweep events.
    - `origination_account_id` string, nullable, required — The ID of the origination account that this balance belongs to.
    - `transfer_type` 'debit' | 'credit' — The type of transfer. Valid values are `debit` or `credit`. A `debit` indicates a transfer of money into the origination account; a `credit` indicates a transfer of money out of the origination account. This field is omitted for Plaid Ledger Sweep events.
    - `transfer_amount` string — The amount of the transfer (decimal string with two digits of precision e.g. "10.00"). This field is omitted for Plaid Ledger Sweep events.
    - `failure_reason` TransferFailure, nullable, required — The failure reason if the event type for a transfer is `"failed"` or `"returned"`. Null value otherwise.
      - `ach_return_code` string, nullable — The ACH return code, e.g. `R01`. A return code will be provided if and only if the transfer status is `returned`. For a full listing of ACH return codes, see [Transfer errors](https://plaid.com/docs/errors/transfer/#ach-return-codes).
      - `description` string — A human-readable description of the reason for the failure or reversal.
    - `sweep_id` string, nullable, required — Plaid’s unique identifier for a sweep.
    - `sweep_amount` string, nullable, required — A signed amount of how much was `swept` or `return_swept` for this transfer (decimal string with two digits of precision e.g. "-5.50").
    - `refund_id` string, nullable, required — Plaid’s unique identifier for a refund. A non-null value indicates the event is for the associated refund of the transfer.
    - `originator_client_id` string, nullable, required — The Plaid client ID that is the originator of the transfer that this event applies to. Only present if the transfer was created on behalf of another client as a third-party sender (TPS).
  - `has_more` boolean, required — Whether there are more events to be pulled from the endpoint that have not already been returned
  - `request_id` string, required — A unique identifier for the request, which can be used for troubleshooting. This identifier, like all Plaid identifiers, is case sensitive.

## Other responses

- `default` — Error response

## Changes

- **2024-04-17** `943c632a075c` — 1 warning
  - added the new `funds_available` enum value to the `transfer_events/items/event_type` response property for the response status `200`
- **2024-03-28** `d36a08ae2134` — 1 info
  - added the required property `has_more` to the response with the `200` status
- **2024-02-21** `5de70cc1e6ca` — 2 breaking, 7 warning, 23 info
  - the `count` request property's max was decreased to `25.00`
  - removed the required property `has_more` from the response with the `200` status
  - removed the optional property `error_code_reason` from the response with the `default` status
  - removed the optional property `provided_account_subtypes` from the response with the `default` status
  - …28 more

[Change history](https://skmtc.dev/plaid/apis/the-plaid-api/changes/transfer/event/sync/post.md)

---

[API](https://skmtc.dev/plaid/apis/the-plaid-api.md) · [All operations](https://skmtc.dev/plaid/apis/the-plaid-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/plaid/the-plaid-api/revisions/a5b45bccb4e8/schema)
