# Manually capture a payment session Call this endpoint to capture funds you have previously authorized on a payment session. You can only call this endpoint when the payment session is in status Approved and its captureFlow value is Manual. Endpoint: POST /payment-sessions/{paymentSessionId}/captures Version: 1.1.0 Security: secretApiKeyAuth ## Path parameters: - `paymentSessionId` (string, required) Payment Id to update Example: "ps_01FCTS1XMKH9FF43CAFA4CXT3P" ## Header parameters: - `Account` (string) The linked accountId (use this when operating on payments related to a linked account) Example: "ac_3fe8398f-8cdb-43a3-9be2-806c4f84c327" ## Request fields (application/json): - `amount` (integer,null) The amount to capture in minor digits. This must be <= to the amount already authorised on the payment. If you don't supply this then we will capture the full amount. Note: typically any remainder will be reversed/refunded to the customer on the same day, however not all acquirers support this and will instead return the remainder once the initial authorization has expired (e.g. after 7 days). Example: 500 - `captureType` (string,null) The type of capture. Typically only used for payments that support multi-capture. Once Final, any remaining uncaptured amount will be marked as void within 7 days. Note that if your account or the chosen payment does not support multi-capture then this field will be ignored. Enum: "Final", "NotFinal" - `platformFee` (integer,null) The amount (if any) that will be taken and applied to the platform account. This cannot be greater than the amount to capture. Supply this if you also are supplying the "Account" header and want to take a fee from that account as part of this capture. If not supplied this defaults to the platformFee used when creating the payment session (if any) but still cannot be greater than the amount to capture here. Example: 50 - `splits` (object,null) Use this field to facilitate split-payments. This will divide up the amount as specified in the forms of split-payments to each sub account once payment is successfully captured. The total of all items must be <= to the amount on the payment session. Cannot be used in conjunction with platformFee or passThroughProcessingFee. You must also not specify a sub account ID in the Account header. Note that any splits provided as part of a capture request will overwrite those that were given during authorization. Howver, if you are using multi-capture (i.e. NotFinal) then any subsequent splits will not be written to the PaymentSession. Instead you need to store the Id of the capture transaction and refer to that to track each capture. - `splits.items` (array) - `splits.items.accountId` (string, required) The ID of the sub account who will receive this split payment amount in the form of a SplitPayment. Example: "ac_b83f2653-06d7-44a9-a548-5825e8186004" - `splits.items.amount` (integer, required) Example: 50 - `splits.items.description` (string) A short description of this split that will be displayed to the account. Example: "2 x The Selfish Gene" - `splits.items.fee` (object) - `splits.items.metadata` (object,null) The metadata to attach to this part of the split. This will be used to populate metadata on the SplitPayment once it is subsequently created. You can have a maximum of 3 pieces of metadata. Example: {"productId":"123","productTitle":"The Selfish Gene"} - `settings` (object) Allows for customisation of various settings for this particular transaction. - `settings.platform` (object,null) Only applicable to payments under the platform model. Use this field to control various settings relating to payments done under as a platform. - `settings.platform.paymentFees` (object,null) ## Response 202 fields (application/json): - `id` (string) The unique identifier for the transaction Example: "txn_01FCTS1XMKH9FF43CAFA4CXT3P_01FCTS1XMKH9FF43CAFA4CXT3P" - `paymentSessionId` (string) The unique paymentSessionId that this transaction relates to Example: "ps_01FCTS1XMKH9FF43CAFA4CXT3P" - `amount` (integer) The amount of the transaction in minor digits Example: 250 - `currency` (string) The ISO currency code Example: "GBP" - `type` (string) Enum: "Authorization", "Void", "Capture", "Refund", "Chargeback", "ChargebackReversal" - `status` (string) Enum: "Pending", "Failed", "Succeeded" - `refundedAmount` (integer,null) The amount of the transaction that has been refunded, in minor digits. Example: 50 - `platformFee` (integer,null) Only supplied for 'capture' transactions. The amount of the capture that will be taken and applied to the platform account, in minor digits. Example: 50 - `platformFeeRefundedAmount` (integer,null) Only supplied for 'capture' transactions. The amount of the capture that has been refunded to the platform account, in minor digits. Example: 50 - `reason` (string,null) An optional reason to describe this transaction. Typically used for refunds whereby the reason for the refund is recorded. Example: "Requested by the customer" - `captureType` (string,null) Only supplied for 'capture' transactions. The type of capture. Typically only used for payments that support multi-capture. Once Final, any remaining uncaptured amount will be marked as void within 7 days. Enum: "Final", "NotFinal" - `paymentMethod` (object,null) - `paymentMethod.tokenizedDetails` (object,null) The details of any tokenized payment method used - `paymentMethod.tokenizedDetails.id` (string) The Id of the tokenized payment method Example: "pmt_01G0EYVFR02KBBVE2YWQ8AKMGJ" - `paymentMethod.tokenizedDetails.stored` (boolean) Flag to indicate whether or not the tokenized payment method was stored (against the customer) Example: true - `paymentMethod.card` (object,null) Details of the card used - `paymentMethod.card.scheme` (string) Enum: "Visa", "Mastercard", "Amex" - `paymentMethod.card.last4` (string) The last 4 digits of the card used Example: "4242" - `paymentMethod.wallet` (object,null) Details of the wallet used (Google Pay / Apple Pay) - `paymentMethod.billingAddress` (object,null) - `paymentMethod.billingAddress.firstName` (string) The first name of the customer Example: "Nathan" - `paymentMethod.billingAddress.lastName` (string) The last name of the customer Example: "Jones" - `paymentMethod.billingAddress.lineOne` (string) First line of the address Example: "123 Test Street" - `paymentMethod.billingAddress.lineTwo` (string) Second line of the address Example: "456 Lane" - `paymentMethod.billingAddress.city` (string) The address city/town Example: "Manchester" - `paymentMethod.billingAddress.country` (string, required) The two-character ISO country code Example: "GB" - `paymentMethod.billingAddress.postalCode` (string, required) The postal code/zip of the address Example: "SP4 7DE" - `paymentMethod.billingAddress.region` (string,null) The state/county/province/region Required if the address is in the US/Canada and must be a 2-character ISO state/province code Example: "NY" - `paymentMethod.checks` (object,null) - `paymentMethod.checks.avsResponseCode` (string,null) The response from Address Verification Service (AVS) that determines the match or partial match of the customer's billing address. Possible values: - A - Partial Match (street address matches, postal/zip code does not match) - B - Partial Match (street address matches, postal/zip code not verified) - C - No Match (street address and postal/zip code not verified) - D - Full Match (street address and postal/zip code match) - F - Full Match (street address and postal/zip code match) - G - Not Supported (address information not verified) - I - No Match (address information not verified) - M - Full Match (street address and postal/zip code match) - N - No Match (neither street address not postal/zip code match) - P - Partial Match (postal/zip code matches, street address not verified) - R - System Unavailable (unable to perform verification) - S - Not Supported (AVS currently not supported by issuer) - U - System Unavailable (address information not verified due to no data from issuer) - W - Partial Match (postal/zip code matches, street address does not match) - X - Full Match (street address and postal/zip code match) - Y - Full Match (street address and postal/zip code match) - Z - Partial Match (postal/zip code matches, street address does not match) Example: "Y" - `paymentMethod.checks.cvvResponseCode` (string,null) The response from the check on the Card Verification Value (CVV/CVV2/CVC) Possible values: - M - Match (Visa and MC) - Y - Match (Amex) - N - No Match - P - Not Processed - S - Should be on card - U - Issuer does not participate Example: "M" - `splitPaymentDetail` (object,null) - `splitPaymentDetail.items` (array) - `splitPaymentDetail.items.id` (string) The unique identifier for this split payment item. Note that this will be the id of the SplitPayment created once payment is captured. Example: "sp_01FCTS1XMKH9FF43CAFA4CXT3P" - `splitPaymentDetail.items.accountId` (string) The ID of the sub account who will receive this split payment amount in the form of a SplitPayment. Must be unique, i.e. you cannot have > 1 splits to the same account in your request. Example: "ac_b83f2653-06d7-44a9-a548-5825e8186004" - `splitPaymentDetail.items.amount` (integer) Example: 50 - `splitPaymentDetail.items.fee` (object) - `splitPaymentDetail.items.description` (string) A short description of this split that will be displayed to the account. Example: "2 x The Selfish Gene" - `splitPaymentDetail.items.metadata` (object,null) The metadata to attach to this part of the split. This will be used to populate metadata on the SplitPayment once it is subsequently created. Example: {"productId":"123","productDescription":"The Selfish Gene"} - `inPersonDetail` (object,null) - `inPersonDetail.terminalDetail` (object) - `inPersonDetail.terminalDetail.id` (string) The ID of the in-person terminal the payment was processed through Example: "tml_01FCTS1XMKH9FF43CAFA4CXT3P" - `createdTimestamp` (integer) The epoch timestamp (seconds) when the transaction was initiated Example: 1470989538 - `lastUpdatedTimestamp` (integer) The epoch timestamp (seconds) when the transaction was last updated Example: 1470989538 - `processingFee` (integer,null) This field is now deprecated. Please use the /balance-transactions endpoint to see the fees paid on these transactions. The processing fee that was taken for this transaction. Example: 7 ## Response 400 fields (application/json): - `requestId` (string) Example: "b83f2653-06d7-44a9-a548-5825e8186004" - `code` (string) Example: "400" - `errors` (array) - `errors.message` (string) Example: "Required property 'amount' not found in JSON" ## Response 500 fields (application/json): - `requestId` (string) Example: "b83f2653-06d7-44a9-a548-5825e8186004" - `code` (string) Example: "400" - `errors` (array) - `errors.message` (string) Example: "Required property 'amount' not found in JSON"