Delay the capture of payments authorized by a Reader SDK application.
Reader SDK

Delay the Capture of Payments

Java (Android)

Delay the capture of payments authorized by a Reader SDK application.

By default, the Reader SDK immediately captures all card payments in a transaction, but the SDK also supports the delayed capture of card payments. For example, when a customer makes an in-store purchase from a seller, the seller might want to authorize funds at the time of purchase and capture the funds when the item ships from the warehouse. The CheckoutManager can be configured to delay the capture of all card payments in a transaction.

You need to configure your Android project to use the Reader SDK.

Did you know?

Authorization versus Capture. Card payments are authorized by the issuing bank at the moment of purchase. An authorized transaction means that the bank has put a hold on the funds but the seller has not received the payment. Customers see this as a pending transaction on their credit card statement. At some later point, transactions are reconciled by capturing the transaction.

A captured transaction means that the seller receives the funds previously put on hold by the issuing bank.

To delay the capture of all card payments in a transaction, set delayCapture to true on the CheckoutParameters.Builder instance used to configure the checkout flow.

Important

Setting delayCapture to true skips the receipt, tipping, and signature screens and the following parameters are ignored: tipSettings, skipReceipt, and collectSignature.

Important

As of August 15, 2019, the CaptureTransaction endpoint has been marked as deprecated; however, you must still use this endpoint for capturing transactions.

After the checkout completes successfully, you can call the CaptureTransaction Square Connect endpoint from your backend to capture all card payments in the transaction. To do that, you need to get the transaction ID and location ID from the checkout result and then send those values to your backend.

Important

Square automatically cancels a transaction if it is not captured within 36 hours of its creation.

The CaptureTransaction endpoint requires a Square transaction ID and location ID. The Reader SDK returns both for any successful checkout that contains card payments.

Delayed transactions can't be voided with the VoidTransaction endpoint.

You cannot capture a delayed transaction with the Reader SDK. Transactions are captured using the Transactions API on a backend service. If you have not already added transaction capture logic to your backend service, you need to do so before you capture delayed transactions.

If you need more assistance, contact Developer Support or ask for help in the Developer Forums.