v51

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

Get payment details

The /payment_initiation/payment/get endpoint can be used to check the status of a payment, as well as to receive basic information such as recipient and payment amount. In the case of standing orders, the /payment_initiation/payment/get endpoint will provide information about the status of the overall standing order itself; the API cannot be used to retrieve payment status for individual payments within a standing order.

Polling for status updates in Production is highly discouraged. Repeatedly calling /payment_initiation/payment/get to check a payment's status is unreliable and may trigger API rate limits. Only the payment_status_update webhook should be used to receive real-time status updates in Production.

post/payment_initiation/payment/get

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.

payment_idstring required

The payment_id returned from /payment_initiation/payment/create.

Response

OK

payment_idstring required

The ID of the payment. Like all Plaid identifiers, the payment_id is case sensitive.

status'PAYMENT_STATUS_INPUT_NEEDED' | 'PAYMENT_STATUS_PROCESSING' | 'PAYMENT_STATUS_INITIATED' | 'PAYMENT_STATUS_COMPLETED' | 'PAYMENT_STATUS_INSUFFICIENT_FUNDS' | 'PAYMENT_STATUS_FAILED' | 'PAYMENT_STATUS_BLOCKED' | 'PAYMENT_STATUS_UNKNOWN' | 'PAYMENT_STATUS_EXECUTED' | 'PAYMENT_STATUS_SETTLED' | 'PAYMENT_STATUS_AUTHORISING' | 'PAYMENT_STATUS_CANCELLED' | 'PAYMENT_STATUS_ESTABLISHED' | 'PAYMENT_STATUS_REJECTED' required

The status of the payment.

Core lifecycle statuses:

PAYMENT_STATUS_INPUT_NEEDED: Transitional. The payment is awaiting user input to continue processing. It may re-enter this state if additional input is required.

PAYMENT_STATUS_AUTHORISING: Transitional. The payment is being authorised by the financial institution. It will automatically move on once authorisation completes.

PAYMENT_STATUS_INITIATED: The payment has been authorised and accepted by the financial institution. In many EU markets, PAYMENT_STATUS_EXECUTED is not supported, and a payment will remain in PAYMENT_STATUS_INITIATED until the funds settle, making this a terminal success state in those cases. A payment in PAYMENT_STATUS_INITIATED should be treated as a successfully submitted payment; do not gate downstream processing on reaching PAYMENT_STATUS_EXECUTED. For a full explanation of payment statuses and how to handle each, see the Payment Status guide.

PAYMENT_STATUS_EXECUTED: Terminal. The funds have left the payer's account and the payment is en route to settlement. Note that this status does not confirm that funds have arrived in the recipient's account; do not use it as proof of fund receipt. Support is more common in the UK than in the EU; where unsupported, a successful payment remains in PAYMENT_STATUS_INITIATED before settling. When using Plaid Virtual Accounts, PAYMENT_STATUS_EXECUTED is not terminal -- the payment will continue to PAYMENT_STATUS_SETTLED once funds are available.

PAYMENT_STATUS_SETTLED: Terminal. The funds are available in the recipient's account. Only available to customers using Plaid Virtual Accounts.

Failure statuses:

PAYMENT_STATUS_INSUFFICIENT_FUNDS: Terminal. The payment failed due to insufficient funds. No further retries will succeed until the payer's balance is replenished.

PAYMENT_STATUS_FAILED: Terminal (retryable). The payment could not be initiated due to a system error or outage. Retry once the root cause is resolved.

PAYMENT_STATUS_BLOCKED: Terminal (retryable). The payment was blocked by Plaid (e.g., flagged as risky). Resolve any compliance or risk issues and retry.

PAYMENT_STATUS_REJECTED: Terminal. The payment was rejected by the financial institution. No automatic retry is possible.

PAYMENT_STATUS_CANCELLED: Terminal. The end user cancelled the payment during authorisation.

Standing-order statuses:

PAYMENT_STATUS_ESTABLISHED: Terminal. A recurring/standing order has been successfully created.

Deprecated (to be removed in a future release):

PAYMENT_STATUS_UNKNOWN: The payment status is unknown.

PAYMENT_STATUS_PROCESSING: The payment is currently being processed.

PAYMENT_STATUS_COMPLETED: Indicates that the standing order has been successfully established.

recipient_idstring required

The ID of the recipient

referencestring required

A reference for the payment.

adjusted_referencestring nullable

The value of the reference sent to the bank after adjustment to pass bank validation rules.

last_status_updatestring date-time required

The date and time of the last time the status was updated, in ISO 8601 format

ibanstring nullable required

The International Bank Account Number (IBAN) for the sender, if specified in the /payment_initiation/payment/create call.

refund_idsstring[] nullable

Refund IDs associated with the payment.

wallet_idstring nullable

The EMI (E-Money Institution) wallet that this payment is associated with, if any. This wallet is used as an intermediary account to enable Plaid to reconcile the settlement of funds for Payment Initiation requests.

scheme'null' | 'LOCAL_DEFAULT' | 'LOCAL_INSTANT' | 'SEPA_CREDIT_TRANSFER' | 'SEPA_CREDIT_TRANSFER_INSTANT' nullable

Payment scheme. If not specified - the default in the region will be used (e.g. SEPA_CREDIT_TRANSFER for EU). In responses, if the scheme is not explicitly specified in the request, this value will be null. Using unsupported values will result in a failed payment.

LOCAL_DEFAULT: The default payment scheme for the selected market and currency will be used.

LOCAL_INSTANT: The instant payment scheme for the selected market and currency will be used (if applicable). Fees may be applied by the institution.

SEPA_CREDIT_TRANSFER: The standard payment to a beneficiary within the SEPA area.

SEPA_CREDIT_TRANSFER_INSTANT: Instant payment within the SEPA area. May involve additional fees and may not be available at some banks.

adjusted_scheme'null' | 'LOCAL_DEFAULT' | 'LOCAL_INSTANT' | 'SEPA_CREDIT_TRANSFER' | 'SEPA_CREDIT_TRANSFER_INSTANT' nullable

Payment scheme. If not specified - the default in the region will be used (e.g. SEPA_CREDIT_TRANSFER for EU). In responses, if the scheme is not explicitly specified in the request, this value will be null. Using unsupported values will result in a failed payment.

LOCAL_DEFAULT: The default payment scheme for the selected market and currency will be used.

LOCAL_INSTANT: The instant payment scheme for the selected market and currency will be used (if applicable). Fees may be applied by the institution.

SEPA_CREDIT_TRANSFER: The standard payment to a beneficiary within the SEPA area.

SEPA_CREDIT_TRANSFER_INSTANT: Instant payment within the SEPA area. May involve additional fees and may not be available at some banks.

consent_idstring nullable

The payment consent ID that this payment was initiated with. Is present only when payment was initiated using the payment consent.

transaction_idstring nullable

The transaction ID that this payment is associated with, if any. This is present only when a payment was initiated using virtual accounts.

end_to_end_idstring nullable

A unique identifier assigned by Plaid to each payment for tracking and reconciliation purposes.

Note: Not all banks handle end_to_end_id consistently. To ensure accurate matching, clients should convert both the incoming end_to_end_id and the one provided by Plaid to the same case (either lower or upper) before comparison. For virtual account payments, Plaid manages this field automatically.

request_idstring required

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