POST
/payment_initiation/payment/getGet payment details
Retrieves the status and basic details of a payment initiation payment. Use payment_id returned by /payment_initiation/payment/create to obtain the recipient, amount, status, references, and related payment information. For standing orders, the status describes the overall standing order rather than an individual payment.
- RetriesRetries up to 2×, 500ms backoff, 30s timeout.
Credentials and the payment identifier to retrieve.
client_idstringoptional
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.
secretstringoptional
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_idstringrequired
The `payment_id` returned from `/payment_initiation/payment/create`.
200Returns the payment details, including `payment_id`, amount, status, recipient, references, last status update, and related refund or scheme information, together with a unique `request_id`.
payment_idstringrequired
The ID of the payment. Like all Plaid identifiers, the `payment_id` is case sensitive.
amountobjectrequired
The amount and currency of a payment
statusstringrequired
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](https://plaid.com/docs/payment-initiation/payment-status/).
**`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](https://plaid.com/docs/payment-initiation/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_idstringrequired
The ID of the recipient
referencestringrequired
A reference for the payment.
adjusted_referencestringoptional
The value of the reference sent to the bank after adjustment to pass bank validation rules.
last_status_updatestringrequired
The date and time of the last time the `status` was updated, in ISO 8601 format
scheduleobjectoptional
The schedule that the payment will be executed on. If a schedule is provided, the payment is automatically set up as a standing order. If no schedule is specified, the payment will be executed only once.
refund_detailsobjectoptional
Details about external payment refund
bacsobjectrequired
An object containing a Bacs account number and sort code. If an IBAN is not provided or if this recipient needs to accept domestic GBP-denominated payments, Bacs data is required.
ibanstringrequired
The International Bank Account Number (IBAN) for the sender, if specified in the `/payment_initiation/payment/create` call.
refund_idsarray<string>optional
Refund IDs associated with the payment.
amount_refundedobjectoptional
The amount and currency of a payment
wallet_idstringoptional
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.
schemestringoptional
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_schemestringoptional
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_idstringoptional
The payment consent ID that this payment was initiated with. Is present only when payment was initiated using the payment consent.
transaction_idstringoptional
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_idstringoptional
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.
errorobjectoptional
Errors are identified by `error_code` and categorized by `error_type`. Use these in preference to HTTP status codes to identify and handle specific errors. HTTP status codes are set and provide the broadest categorization of errors: 4xx codes are for developer- or user-related errors, and 5xx codes are for Plaid-related errors, and the status will be 2xx in non-error cases. An Item with a non-`null` error object will only be part of an API response when calling `/item/get` to view Item status. Otherwise, error fields will be `null` if no error has occurred; if an error has occurred, an error code will be returned instead.
request_idstringrequired
A unique identifier for the request, which can be used for troubleshooting. This identifier, like all Plaid identifiers, is case sensitive.
defaultError response
error_typestringrequired
A broad categorization of the error. Safe for programmatic use.
error_codestringrequired
The particular error code. Safe for programmatic use.
error_code_reasonstringoptional
The specific reason for the error code. Currently, reasons are only supported for OAuth-based item errors; `null` will be returned otherwise. Safe for programmatic use.
Possible values:
`OAUTH_INVALID_TOKEN`: The user's OAuth connection to this institution has been invalidated.
`OAUTH_CONSENT_EXPIRED`: The user's access consent for this OAuth connection to this institution has expired.
`OAUTH_USER_REVOKED`: The user's OAuth connection to this institution is invalid because the user revoked their connection.
error_messagestringrequired
A developer-friendly representation of the error code. This may change over time and is not safe for programmatic use.
display_messagestringrequired
A user-friendly representation of the error code. `null` if the error is not related to user action.
This may change over time and is not safe for programmatic use.
request_idstringoptional
A unique ID identifying the request, to be used for troubleshooting purposes. This field will be omitted in errors provided by webhooks.
causesarrayoptional
In this product, a request can pertain to more than one Item. If an error is returned for such a request, `causes` will return an array of errors containing a breakdown of these errors on the individual Item level, if any can be identified.
`causes` will be provided for the `error_type` `ASSET_REPORT_ERROR` or `CHECK_REPORT_ERROR`. `causes` will also not be populated inside an error nested within a `warning` object.
statusintegeroptional
The HTTP status code associated with the error. This will only be returned in the response body when the error information is provided via a webhook.
documentation_urlstringoptional
The URL of a Plaid documentation page with more information about the error
suggested_actionstringoptional
Suggested steps for resolving the error
required_account_subtypesarray<string>optional
A list of the account subtypes that were requested via the `account_filters` parameter in `/link/token/create`. Currently only populated for `NO_ACCOUNTS` errors from Items with `investments_auth` as an enabled product.
provided_account_subtypesarray<string>optional
A list of the account subtypes that were extracted but did not match the requested subtypes via the `account_filters` parameter in `/link/token/create`. Currently only populated for `NO_ACCOUNTS` errors from Items with `investments_auth` as an enabled product.
Error handling
payment_id is required and must identify a payment created through /payment_initiation/payment/create. Do not repeatedly poll this endpoint in production; use the payment_status_update webhook for real-time status updates.