Pre-authorized capture
Available for: Cards
Use the pre-authorized capture when the customer is only charged (totally or partially) when goods or services are provided afterwards.
This flow resembles the “one time purchase” flow, but an additional step is required to actually charge the customer for the goods or services – the Capture (please refer to the Backoffice operations for further details).
The Capture can be for the total amount of the purchase, or for part of it, in which case, multiple Captures accepted up to the authorisation’s full amount.
Before you start:
Create the order with the required data and guarantee the following information:
- Include the payment type, amount, currency and payment methods allowed;
- If you are already sure that only Card payment is required, then only include “CARD” in the transaction.paymentMethod list;
- Make sure the transaction.paymentType holds the value “AUTH”
Generate the transaction:
Note that the following request needs an Authorisation Header with the transactionSignature returned from checkout operation.
In this requests, the Bearer Token is replaced by the checkout response transactionSignature.
Here’s an example:
Expected Response:
A successful technical response comprises of an HTTP-200 status and a returnStatus.statusCode=”000″.
The paymentStatus in the response informs on whether the transaction itself was accepted, declined, still pending a final result, or requiring additional action to be taken.
- Success: The authorisation has been processed successfully and the customer funds have been validated.
- Declined: The authorisation has been declined.
- Pending: The final result of the authorisation is not yet known. You will need to inquiry on the status of this transaction until it reaches a final state, or you decide to cancel it.
- Partial: The authorisation is partially accepted, but requires additional actions to the completed (e.g. 3D-Secure authentication). The actionResponse element is provided for instructions on how to proceed.
Make the future capture(s):
A Capture is used to request clearing for previously authorized funds.
A Capture request is performed using a previous preauthorisation (AUTH) payment by referencing its transactionID and sending a POST request over HTTPS to the /payments/{transactionID}/capture endpoint.
Captures can happen in different ways:
- Full, capture the full amount authorized and finish the purchase
- Partial, split the capture over one or several capture requests, up to the total amount authorized
Capture Description
Operation
Operation Type
Operation Method & Endpoint
Operation Description
Observations
Product
Card
Synchronous Call
POST
version-id/{original-tx-id}/capture
Requests the financial capture (parcial amount or total amount) related to a previous authorisation.
Capture Request
Location
Data Element
Type
Condition
Description
Path
original-tx-id
String
Mandatory
Original Transaction Id (transaction identification of the original authorization
Request Header
Content-Type
String
Mandatory
application/json
Request Header
authorization
String
Mandatory
Bearer Token. Based on OAuth2 authentication performed in a pre-step.
Request Header
x-ibm-client-id
String
Mandatory
Token that identifies a client organization. It is provided during onboarding process and must be used in every call.
Request Body
merchant
Merchant
Mandatory
Object that defines a Merchant.
Request Body.merchant
terminalId
Max10NumericText
Merchant Terminal Identification.
Request Body.merchant
channel
string
Channel used in the transaction.
Request Body.merchant
merchantTransactionId
string
Unique identifier of the transaction in the merchant perspective.
Request Body
customer
Customer
Mandatory
Object that defines a Customer.
Request Body.customer
customerInfo
CustomerInfo
Mandatory
Object that defines the predefined customer information.
Request Body.customer.customerInfo
customerName
string
Customer name.
Request Body.customer.customerInfo
shippingAdress
Adress
Mandatory
Customer Address. When applicable used for shipping products.
Request Body.customer.customerInfo.shippingAdress
street1
Max70Text
Shipping Address Street
Request Body.customer.customerInfo.shippingAdress
street2
Max70Text
Shipping Address Additional Street
Request Body.customer.customerInfo.shippingAdress
city
Max35Text
Shipping Address city or town.
Request Body.customer.customer.Info.shippingAdress
postcode
Max16Text
Shipping Address Postal Code.
Request Body.customer.customer.Info.shippingAdress
countrySubDivision
Max35Text
Shipping Address Subdivision . Subdivision of a country such as state, region, county.
Request Body.customer.customer.Info.shippingAdress
country
Country Code
Shipping Country Code. Alpha2
Request Body.customer.customerInfo
billingAddress
Address
Mandatory
Customer Billing Address.
Request Body.customer.customerInfo.billingAddress
street1
Max70Text
Billing Address Street.
Request Body.customer.customerInfo.billingAddress
street2
Max70Text
Billing Address Additional Street
Request Body.customer.customerInfo.billingAddress
city
Max35Text
Billing Address city or town.
Request Body.customer.customerInfo.billingAddress
postcode
Max16Text
Billing Address Postal Code.
Request Body.customer.customerInfo.billingAddress
countrySubDivision
Max35Text
Billing Address Subdivision . Subdivision of a country such as state, region, county.
Request Body.customer.customerInfo.billingAddress
country
Country Code
Billing Country Code. Alpha2
Request Body.customer.customerInfo
billingAddressSameAsAddress
Boolean
Flag that identifies that the billing address is the same as the shipping address.
Request Body.customer
extendedInfo
ExtendedInfo
Mandatory
Key Value tuple array.
Request Body.customer.extendedInfo
key
string
Request Body.customer.extendedInfo
value
string
Request Body
transaction
Transaction
Mandatory
Object that defines a transaction.
Request Body.transaction
transactionTimeStamp
ISODateTime
Transaction timestamp.
Request Body.transaction
description
string
Transaction short description.
Request Body.transaction
amount
Amount
Mandatory
Parameter with the value and currency of the transaction.
Request Body.transaction.amount
value
Number (double)
Amount in the transaction.
Request Body.transaction.amount
currency
Currency Code
Currency used in the transaction. Alpha3
Request Body.transaction.amount
settlementPoint
settlementPoints
Optional
Transaction Amount Settlement Points Array
Request Body.transaction.settlementPoint
identifier
Max36Text
Mandatory
Settlement Point Unique Identifier
Request Body.transaction.settlementPoint
amount
Amount
Mandatory
Settlement Point amount with the value and currency of the transaction.
Request Body.transaction.settlementPoint.amount
value
Number (double)
Mandatory
Amount in the transaction.
Request Body.transaction.settlementPoint.amount
currency
Currency Code
Mandatory
Currency used in the transaction. ISO 4217 Alpha-3 Code.
Request Body
originalTransaction
OriginalTransaction
Object that identifies an Original Transaction.
Request Body.originalTransaction
id
string
Original Transaction Identification.
Request Body.originalTransaction
datetime
ISODateTime
Original Transaction Timestamp.
Request Body
saleContext
SaleContext
Mandatory
Object that defines the back office operation sale context.
Request Body.saleContext
splitPayment
SplitPayment
Mandatory
Object that defines the split payment options.
Request Body.saleContext.splitPayment
split
Boolean
Indicates if it is to split or not.
Request Body.saleContext.splitPayment
paymentNumber
Integer
Indicates the Payment Number.
Request Body.saleContext.splitPayment
maxPayments
Integer
Indicates the maximum number of payments.
Request Body
retry
string
Mandatory
Retry counter for repeated invocations.
Request Body.retry
counter
Integer
Counter for the number of retries for repeating invocations.