# 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.