# Pre-Authorization and Capture **Pre-Authorization** and **Capture** is a two-step payment process that allows you to first pre-authorize funds on a customer’s card and then capture them later. This method ensures that the card is valid and has sufficient funds before completing the transaction. With **xMoney**, you can pre-authorize an amount using `cardTransactionMode = auth` and later capture either the full or a partial amount. However, each pre-authorization supports only one capture—multiple captures are not allowed. ## Key concepts ### Pre-Authorization * **Purpose**: Reserves funds on the customer’s card. * **Transaction State**: No money moves yet; the issuing bank holds the pre-authorized amount pending capture. * **Use Cases**: Verifying funds for e-commerce orders, pre-shipment bookings, hotel and rental reservations. ### Capture * **Purpose**: Finalizes the transaction by transferring funds from the customer’s card to your account. * **Timing**: Performed after pre-authorization to confirm order details or product availability. * **Single Capture Only**: xMoney allows only one capture per pre-authorization, whether partial or full. Note If you do not capture funds before the pre-authorization expires, the pre-authorization is voided, and the funds are released back to the cardholder. ## Creating a Pre-Authorized Order Use `cardTransactionMode: auth` when creating an order. Example request: ```json { "siteId": "yourSiteId", "customer": { // customer details }, "order": { "orderId": "order1", "type": "purchase", "amount": 10, "currency": "EUR", "description": "Sample Pre-Auth Order" }, "cardTransactionMode": "auth" } ``` **Result**: The requested amount (e.g., 10 EUR) is pre-authorized on the customer’s card. **Transaction/Order IDs**: Retrieved from IPN/Webhook or direct response and stored for the capture request. ## Capturing funds Each pre-authorization supports a single capture—either full or partial. ### Full Capture Example cURL request to capture the full amount: ```bash curl -X PUT "https://api-stage.xmoney.com/transaction/{transactionId}" \ -H "Content-Type: application/x-www-form-urlencoded" \ -H "Accept: application/json" \ -H "Authorization: Bearer yourApiKey" \ --data-urlencode "amount=10" ``` * **transactionId**: Retrieved from the pre-authorization step. * **amount**: Must match the pre-authorized total for a full capture. ### Partial Capture If only part of the pre-authorized amount is needed (e.g., capturing 5 EUR from a 10 EUR pre-authorization), adjust the request: ```bash curl -X PUT "https://api-stage.xmoney.com/transaction/{transactionId}" \ -H "Content-Type: application/x-www-form-urlencoded" \ -H "Accept: application/json" \ -H "Authorization: Bearer yourApiKey" \ --data-urlencode "amount=5" ``` After a partial capture: * **Captured**: The specified amount (e.g., 5 EUR) is transferred to your account. * **Released**: The remaining funds are freed from pre-authorization. * **No Additional Captures**: Further capture attempts on the same pre-authorization will be rejected. ## Important notes * **Capture Amount**: Must be **≤** the pre-authorized amount; for partial captures, it must be strictly less. * **Single Capture**: Attempting a second capture on the same transaction will be denied. * **Pre-Authorization Expiry**: If you do not capture funds before expiry, they are automatically released. * **Status Monitoring**: Check transaction status to confirm successful captures (`complete-ok`). ## Conclusion Using **Pre-Authorization** and **Capture** with xMoney provides flexibility in how and when you finalize payments. Whether capturing the full amount post-confirmation or adjusting for partial shipments, xMoney’s single-capture approach simplifies workflows while maintaining security and efficiency.