Two-Step Payments Overview
Two-Step Payments is a payment process that includes authorization and capture. Authorization checks that the transaction can be made and reserves the amount before the actual charge. Capture is the charge itself.
Two-Step Payments via API
In terms of API, the Two-Step process requires two calls to be made. The first call designates the payment as Two-Step, and the second call captures it.
Designating a payment as Two-Step via API
There are two ways to designate a payment as Two-Step. Which way to chose depends on the type of API integration: Redirect or Direct.
Two-Step Payments in Redirect integration
Redirect integration uses a payment page provided by the Payment Gateway. To indicate that the payment is Two-Step, call POST /sessions
passing the value manual
in paymentData.captureMethod
parameter. The default value of this parameter is automatic
, it corresponds to One-Step payment.
See the detailed description of the /sessions
request in the API Reference.
Two-Step Payments in Direct integration
In Direct integration, you provide your own payment page. This flow does not rely on /sessions
call. Therefore, the parameter captureMethod
of /payments
should be used instead - pass the value manual
.
The response will include an amountCapturable
parameter that indicates the amount that can be captured. Also, the returned status
will be requiresCapture
. However, if a 3DS flow is initiated, the status will be requiresAction
. Once 3DS verification is complete, the status will become requiresCapture
.
See the detailed description of the /payments
request in the API Reference.
Capturing a Two-Step payment
No matter the type of integration, call POST /payments/{id}/capture
to settle the transaction. {id}
is the identifier of payment to be captured. Use the value received in the id
parameter of the response to /payments
call.
See the detailed description of the /payments/{id}/capture
request in the API Reference.
Partial and Multiple captures
The Payment Gateway supports partial and multilpe captures for cases when a lesser amount has to be charged or a charge is made in increments. This feature is reflected by the value of captureType
parameter of POST /payments/{id}/capture
request. The value incremental
means that this is not a final capture, while the value last
stands for the final charge. The payment status becomes succeded
only upon receipt of last
capture. Note that the response also includes amountCapturable
and amountReceived
parameters denoting, respectively, the amount that is still avalable for capture, and the amount already charged.
If you want to use Partial and Multiple captures, please contact our support team so that they enable this feature for you on the backend.
Auto-Capture and Auto-Reverse
A payment can be set to be captured or reversed automatically upon a configurable timeout. The way to do it is to use manualCaptureOptions
parameter of POST /payments/{id}/capture
request:
"manualCaptureOptions": {
"autoCancelAt": "2023-02-17T16:30:55+03:00"
}