Retry a payment or refund

Retries the payment's latest attempted money movement. Normally, this retries a failed payment to its original recipient. Retrying a failed employee or contractor disbursement requires an active bank_account owned by that recipient. For a payment with status refund_failed and a failed employer refund attempt, this retries the employer refund by ACH and requires an active bank_account owned by the employer that differs from the account used by the failed refund. If no employer refund attempt was created, start the refund again instead. Refunds for payrolls funded by a payroll advance cannot be retried.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…

Setting the payment_type parameter to wire, instant, or ach indicates how the failed payment will be retried. Note that only debit payments can be retried using wires. The wire details for this retry attempt are provided in the wire_details object in the first (most recent) payment attempt after the /retry endpoint is called.

Setting the bank_account parameter indicates the failed payment will be retried using a new bank account. Both credits and debits may be retried using a new bank account.

Retry limits: A debit can be attempted by ACH at most three times in total. The original debit counts as the first attempt, and any automatic redebits Check sends count toward the limit along with retries you request, including retries to a different bank account. Once a debit has used all three ACH attempts, an ACH retry returns a 400 error and the debit can only be retried by wire. Wire retries have no limit.

Deprecation Notice: The use_wire parameter has been deprecated in favor of the payment_type field.

If use_wire is provided:

  • When true, it is treated as if payment_type="wire" was set.
  • If payment_type is also provided, payment_type takes precedence, and use_wire is ignored.

Please update your integrations accordingly.

Note that the can_retry field on the Payment object communicates whether a payment can be retried. We recommend relying on this field to determine whether a retry is possible. A debit that has reached the ACH limit can still show can_retry as true, because a wire retry remains available.

Retrying a failed refund

When Check sends an employer refund for an employee or contractor payment and that refund fails, the payment moves to refund_failed and can_refund is set to false. can_retry is true when the refund meets the requirements below. Retry the refund with this endpoint, not with Refund a payment, which rejects it.

A refund retry has these requirements:

  • bank_account is required. The account must be active, belong to the employer, and differ from the account used by the failed refund.
  • Refunds are retried by ACH only. Setting payment_type to wire or instant, or use_wire to true, is rejected.
  • The payroll must be funded and the company must be in good standing.
  • Refunds for payrolls funded by a payroll advance cannot be retried.

A successful retry sends the refund to the new bank account and moves the payment back to refund_processing. The failed refund attempt stays in payment_attempts with status failed.

When a refund retry does not meet these requirements, the endpoint returns a 400 with type payment_ineligible_for_retry, and message gives the reason:

{
  "error": {
    "type": "payment_ineligible_for_retry",
    "message": "bank_account is required when retrying a failed refund"
  }
}
Path Params
string
required

ID of the payment desired for retry.

Body Params
boolean
Defaults to false

Boolean parameter indicating whether a wire retry is desired

string

An active bank account to use for the retry. For a failed employee or contractor disbursement, this parameter is required and the account must belong to the recipient. For a failed employer debit, omit it to reuse the payment's current bank account. For a refund_failed payment with a failed employer refund attempt, this parameter is required and the account must belong to the employer and differ from the account used by the failed refund.

string
Responses

Language
Credentials
Header
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json