Capture

Complete a previously authorised transaction by sending a capture request

Capture is usually the second step of a transaction. While authorisation ensures the validity of a card and puts a temporary hold on the balance, capture completes the transaction from the merchant's perspective and triggers the money transfer between the issuer and acquirer.

Initiating a Capture

A capture can only be initiated for a successful authorisation, so, it requires you to provide the identifier of the transaction you are attempting to capture, along with a new unique identifier within that transaction for the capture operation. The only other property to initiate a capture is the amount to be captured.

Cards Connect allows various capture scenarios depending on the amount, which are:

  • Full Capture: The transaction might be captured exactly as the authorised amount, which is the usual case for most of the transactions.
  • Partial Capture: The merchant may decide to capture less than the authorised amount because of various operational reasons, such as fulfilling the order partially due to procurement issues. Partial capture is allowed to all merchants by default. When you decide to capture a transaction partially, after your request is accepted, Cards Connect automatically voids the remaining authorisation amount to release the hold on the cardholder's limit.
  • Over Capture: The merchant may capture more than the authorised amount, usually because of extra expenses incurred during the fulfillment or, additional usage of goods or services by the cardholder. Over-capture needs to be enabled explicitly at the merchant level and allowed within the limits also specified in the merchant configuration. Depending on the over-capture permission and the limit, Cards Connect either accepts the over-capture request or rejects it.

❗️

Multiple Capture Attempts

Cards Connect does not allow multiple captures on a transaction in its current version. If a merchant tries to request another capture for a transaction that already has a capture on it, the system rejects the request with the respective error regardless of the capture amount.

In a case a merchant needs to capture more funds from a card, we advise the merchant to communicate with the cardholder to initiate a new authorisation.

Capture Response

A capture request in Cards Connect is processed differently compared to an authorisation or a refund due to the underlying nature of the capture operation. So, when Cards Connect receives a request to capture a transaction, after validating the request it returns a response with "Accepted" as the outcome. This outcome eventually gets updated with the response we receive from the issuer which is expected to be successful considering merchant is acting on an existing authorisation. So, you do not need to check the outcome of the transaction to continue your side of the transaction flow and treat the initial "Accepted" as a sign of success for the capture. However, if there's a specific need to check the actual outcome of the capture attempt, you may use the Get Capture API.

❗️

Declined of Failed Captures

Even though Cards Connect accepts a Capture request, this is not a guaranty of an approval from an issuer. In certain edge cases, the issuer may decline a Capture advice. In such a scenario, Cards Connect does not update the status of the transaction but because of the ambiguity caused by the declined Capture, it rejects your subsequent Capture and Refund operations for the transaction.

Retrieving the Details of a Capture

Cards Connect offers two ways of accessing the capture details. You may call the Get Capture API with specifying the transactionId as well as the captureId to fetch the details of a capture operation or you may call the same endpoint by passing just the transactionId.

GET transactions/b72805e2-9dcd-4962-a32f-25099e012e78/captures/d8ba4038-e792-47d5-b71c-dd36edfcd406

{
  "transactionId": "b72805e2-9dcd-4962-a32f-25099e012e78",
  "reconciliationId": "e8dd3707-0d8f-4dde-8691-dec639ba6f5e",
  "capture": {
    "id": "d8ba4038-e792-47d5-b71c-dd36edfcd406",
    "amount": 300,
    "outcome": "Accepted",
    "responseCode": null,
    "responseDescription": null,
    "createdAt": "2024-06-18T03:09:16.1488927Z"
  }
}