# Capture order Available only for terminals configured in `PDV` mode, this endpoint allows you to fully or partially capture a Mercado Pago Point order previously authorized in [payment reservation mode](/developers/en/docs/mp-point/payment-processing#bookmark_create_a_payment_reservation_order), which is activated when creating an order [POST /v1/orders](/developers/en/reference/in-person-payments/point/orders/create-order/post) in `manual` mode (`processing_mode=manual`). **The two-step authorization and capture feature must be enabled for your account in advance by the Mercado Pago sales team. Contact your sales representative to request activation.** For a **full order capture**, send an empty `body` and, for a **partial capture**, send the `transactions.payments` `array` with the payment ID and the amount to capture. In case of success, the request will return a response with status 200. **POST** `/v1/orders/{order_id}/capture` ## Request parameters ### Header - `X-Idempotency-Key` (string, required) This feature allows you to safely retry requests without the risk of accidentally performing the same action more than once. This is useful for avoiding errors, such as capturing the same order twice. To ensure that each request is unique, you must use an exclusive value for each call. If you use a value already assigned to another request, you will receive the information corresponding to that existing resource in response, not this new request. We suggest using a UUID V4 or random strings. ### Path - `order_id` (string, required) Identifier of the order to be captured. This value is returned in the response to the order creation request made to the endpoint [POST /v1/orders](/developers/en/reference/in-person-payments/point/orders/create-order/post). - `transactions` (object, optional) Sending this parameter and its attributes is required only for a **partial capture**, and multiple partial captures on the same order are not supported. For a **full capture**, send an empty _body_. - `transactions.payments` (array, optional) - `transactions.payments[].id` (string, optional) Identifier of the payment to capture, returned in `transactions.payments.id` at order creation. - `transactions.payments[].amount` (string, optional) Amount to capture in decimal format, with a maximum of 2 decimal places. It must be greater than 0 and less than or equal to the authorized amount at order creation. The uncaptured balance will be automatically released to the buyer. ## Response parameters - `id` (string, optional) Identifier of the captured order. - `status` (string, optional) Current status of the order after the capture. Possible enum values: - `processed` The order was successfully captured and processed. - `status_detail` (string, optional) Details about the status of the order after the capture. Possible enum values: - `accredited` Payment accredited. - `transactions` (object, optional) Contains information about the captured payment. - `transactions.payments` (array, optional) Contains information about the captured payment. - `transactions.payments[].id` (string, optional) Identifier of the payment transaction created in the request, automatically generated by Mercado Pago. - `transactions.payments[].amount` (string, optional) Authorized amount of the payment. - `transactions.payments[].paid_amount` (string, optional) Amount effectively captured. For partial captures, it corresponds to the amount sent in the request body and may be less than the amount authorized at order creation. - `transactions.payments[].status` (string, optional) Status of the captured payment. Possible enum values: - `processed` The payment was successfully captured. - `transactions.payments[].status_detail` (string, optional) Details about the status of the captured payment. Possible enum values: - `accredited` The payment amount was accredited to the seller. ## Errors | Status | Error | Description | | ------- | ------- | ----------- | | 400 | empty_required_header | The `X-Idempotency-Key` header is required and was not sent. Make the request again including it. | | 400 | bad_request | The `order_id` provided in the request path is not correct. Please verify and provide a valid ID to try again. | | 400 | unsupported_properties | The request `body` contains unsupported properties. For full capture, send an empty `body`. For partial capture, only the `transactions.payments.id` and `transactions.payments.amount` properties are accepted. | | 401 | unauthorized | The value sent as Access Token is incorrect. Please check and try again with the correct value. | | 404 | order_not_found | Order not found. Please check if you provided the correct order ID. | | 409 | cannot_capture_order | The order cannot be captured. Only orders with status=action_required and status_detail=waiting_capture can be captured. Check the current order status before trying again. | | 409 | idempotency_key_already_used | The value sent as the idempotency header (`X-Idempotency-Key`) has already been used with a different request within the last 24 hours. Please try the request again with a new value. | | 409 | operation_not_supported | This operation is not supported for the order in its current state. Check the status and status_detail of the order. | | 422 | invalid_capture_amount | The capture amount is invalid. It must be greater than 0 and less than or equal to the authorized amount at order creation. Check the capture amount and try again. | | 422 | capture_exceeds_authorized | The capture amount exceeds the authorized amount. The capture amount cannot be greater than the amount authorized at order creation. Adjust the amount and try again. | | 500 | idempotency_validation_failed | Idempotency validation failed. Please try submitting the request again. | | 500 | 500 | Generic error. Please try submitting the request again. | ## Request example ### cURL ```bash curl -X POST \ 'https://api.mercadopago.com/v1/orders/{order_id}/capture' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer ' \ -d '{ "transactions": { "payments": [ { "id": "PAY01ABCDEFGHIJKLMNOPQRSTUVWX", "amount": "35.00" } ] } }' ``` ## Response example ```json { "id": "ORD01ABCDEFGHIJKLMNOPQRSTUVWX", "status": "processed", "status_detail": "accredited", "transactions": { "payments": [ { "id": "PAY01ABCDEFGHIJKLMNOPQRSTUVWX", "amount": "1500.00", "paid_amount": "35.00", "status": "processed", "status_detail": "accredited" } ] } } ```