v51

latestOpenAPI 3.0.0raw.githubusercontent.com2026-07-313352,3122.9 MB
plaid

Create a refund

Use the /transfer/refund/create endpoint to create a refund for a transfer. A transfer can be refunded if the transfer was initiated in the past 180 days.

Refunds come out of the available balance of the ledger used for the original debit transfer. If there are not enough funds in the available balance to cover the refund amount, the refund will be rejected. You can create a refund at any time. Plaid does not impose any hold time on refunds.

A refund can still be issued even if the Item's access_token is no longer valid (e.g. if the user revoked OAuth consent or the Item was deleted via /item/remove), as long as the account and routing number pair used to make the original transaction is still valid. A refund cannot be issued if the Item has an invalidated TAN, which can occur at Chase or PNC.

post/transfer/refund/create

Request body

client_idstring

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.

secretstring

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.

transfer_idstring required

The ID of the transfer to refund.

amountstring required

The amount of the refund (decimal string with two digits of precision e.g. "10.00").

idempotency_keystring required

A random key provided by the client, per unique refund. Maximum of 50 characters.

The API supports idempotency for safely retrying requests without accidentally performing the same operation twice. For example, if a request to create a refund fails due to a network connection error, you can retry the request with the same idempotency key to guarantee that only a single refund is created.

Response

OK

request_idstring required

A unique identifier for the request, which can be used for troubleshooting. This identifier, like all Plaid identifiers, is case sensitive.