As much as we hate seeing Transfers fail, it's important to note that from time to time they don't go through and it's important you handle those scenarios. In most cases Transfers fail up front rather than later on. If a Transfer does fail, its failureReason property will be updated with a short message explaining the failure that occurred.

Please see the 'Errors' section in the API specification for more information:

Here are a few common situation where failure may occur:

Missing/invalid Fields: If a Transfer is created and any required information is missing the API will throw a ValidationException, which includes information on which fields may be missing or formatted incorrectly.

Insufficient Funds: If a Transfer is confirmed and the source you specified does not have enough funds you will receive an InsufficientFundsException.

Expired Quote: If you attempt to confirm a Transfer outside of the 30 second confirmation window you will get a ValidationException.