Realtime Returns

Column allows you to return incoming Realtime transfers if you receive a transfer in error. You can use our Realtime Return API to initiate a new outgoing Realtime transfer to send funds back to the originating financial institution that sent the transfer.

When you return an incoming Realtime transfer, the status of the original transfer is not changed and the return transfer follows its own lifecycle as if it were an ordinary outgoing Realtime transfer. See Realtime Notifications and States for more information.

Return Reasons

You can return an incoming Realtime transfer at any time after receipt. We currently only allow incoming Realtime returns for the following reasons:

  • The beneficiary account number is invalid
  • The beneficiary information in the Realtime transfer does not match the corresponding information on the account
  • The beneficiary is refusing the Realtime transfer
  • The beneficiary is reversing the Realtime transfer as per the sender's request

If there is a an additional reason you are interested in supporting, please email us at developers@column.com.

Linking the Original Transfer and Reversal Transfer

The return_pair_transfer_id field of the realtime_transfer object is used to link the original transfer and the reversal transfer as:

original_transfer.return_pair_transfer_id = reversal_transfer.id
reversal_transfer.return_pair_transfer_id = original_transfer.id

The original_transfer.return_pair_transfer_id is finalized once the return_transfer.status is completed and no other reversals on original_transfer will be permitted. Further, another reversal cannot be initiated on original_transfer while return_transfer is in progress. A new reversal can only be initiated if and when return_transfer.status becomes rejected.

Return Requests on Incoming Transfers

It's possible Column receives a return request from the Realtime transfer originator on an incoming transfer. Column exposes Realtime return requests to you via API so that you may accept or reject a return request.

You'll receive a return request with event realtime.incoming_return_request.pending when Column receives the return request. You may then accept or reject the request. If you accept a request, Column will create a new outgoing transfer linked to the original incoming transfer.

When rejecting a Realtime Return Request, you can provide a reason to explain why the return request is being rejected. The following reasons are supported:

  • beneficiary_account_closed - Account is closed
  • non_sufficient_funds - Amount of funds available to cover specified message amount is insufficient
  • funds_already_returned - Already returned
  • rejected_by_beneficiary - Rejected by the beneficiary
  • legal_decision - Request rejected due to regulatory or legal rules
  • no_response_from_beneficiary - Return request rejected due to no response from the beneficiary

Additional considerations for incoming Realtime transfer return requests:

  • You can provide a comment to explain why the return request is being rejected
  • You may receive more than one incoming Realtime return request for a single Realtime transfer
  • You may only respond to one Realtime transfer return request per Realtime transfer, regardless of how many requests were received

Return Requests on Outgoing Transfers

We offer the ability for you to initiate an outgoing return request on a Realtime transfer previously sent by you. When you initiate an outgoing return request for a Realtime tranfer, you must specify a reason for the return request. We currently only allow outgoing Realtime return requests for the following reasons:

  • incorrect_beneficiary_account - Account number is invalid or has been closed
  • incorrect_amount - Amount is not the amount agreed or expected
  • requested_by_originator - Cancellation requested by the Debtor
  • duplicate - Payment is a duplicate of another payment
  • fraud - Cancellation requested following a transaction that was originated fraudulently
  • tech - Cancellation requested following technical problems resulting in an erroneous transaction
  • payment_not_justified - Payment is not justified (missing critical information)

Additional considerations for outgoing Realtime transfer return requests:

  • The receiving financial insitution may or may not accept the Realtime return request
  • Realtime transfer return requests that are neither accepted or rejected will remain in the pending status indefinitely
  • You may only create one Realtime return request per Realtime transfer