Reserve values - Payment management - Mercado Pago Developers
Which documentation are you looking for?

Do not know how to start integrating? 

Check the first steps

Reserve values

A reserve of values happens when a purchase is made and its amount is reserved from the total limit of the card, ensuring that the value is kept until the completion of processing.

To carry out a reserve authorization, send a POST with all the necessary attributes and add the attribute capture=false to the endpoint /v1/payments and execute the request or, if you prefer, use one of the SDKs below.

  use MercadoPago\Client\Payment\PaymentClient;


  $client = new PaymentClient();
  $request_options = new RequestOptions();
  $request_options->setCustomHeaders(["X-Idempotency-Key: <SOME_UNIQUE_VALUE>"]);

  $payment = $client->create([
    "transaction_amount" => 100.0,
    "token" => "123456",
    "description" => "My product",
    "installments" => 1,
    "payment_method_id" => "visa",
    "payer" => [
      "email" => "",
    "capture" => false
  ], $request_options);
  echo implode($payment);


PaymentClient client = new PaymentClient();

PaymentCreateRequest request =
.transactionAmount(new BigDecimal("100"))
.description("Product Title")


import { MercadoPagoConfig, Payment } from 'mercadopago';

const client = new MercadoPagoConfig({ accessToken: 'YOUR_ACCESS_TOKEN' });
const payment = new Payment(client);

const body = {
transaction_amount: 100,
token: '123456',
description: 'My product',
installments: 1,
payment_method_id: 'visa',
payer: {
email: '',
capture: false

payment.create({ body: body, requestOptions: { idempotencyKey: '<SOME_UNIQUE_VALUE>' } }).then(console.log).catch(console.log);

require 'mercadopago'


payment_request = {
transaction_amount: 100,
token: 'ff8080814c11e237014c1ff593b57b4d',
description: 'Product title',
installments: 1,
payment_method_id: 'visa',
payer: {
email: ''
capture: false

payment_response = sdk.payment.create(payment_request)
payment = payment[:response]

using MercadoPago.Client.Payment;
using MercadoPago.Config;
using MercadoPago.Resource.Payment;

MercadoPagoConfig.AccessToken = "ENV_ACCESS_TOKEN";

var paymentRequest = new PaymentCreateRequest
TransactionAmount = 100,
Token = "ff8080814c11e237014c1ff593b57b4d",
Description = "Product Title",
Installments = 1,
PaymentMethodId = "visa",
Payer = new PaymentPayerRequest
Email = "",
capture = false,

var client = new PaymentClient();
Payment payment = await client.CreateAsync(paymentRequest);

import market
sdk = Mercadopago.SDK("ENV_ACCESS_TOKEN")

payment_data = {
"transaction_amount": 100,
"token": 'ff8080814c11e237014c1ff593b57b4d',
"description": "Title of what you are paying for",
"installations": 1,
"payment_method_id": "visa",
"payer": {
"email": ""
"capture": False
payment_response = sdk.payment().create(payment_data)
payment = payment_response["response"]

curl -X POST \
    -H 'accept: application/json' \
    -H 'content-type: application/json' \
    -H 'Authorization: Bearer ENV_ACCESS_TOKEN' \
    '' \
    -d '
   "description":"Product title",


The response indicates that the payment is authorized and pending capture.

"status": "authorized",
"status_detail": "pending_capture",
"captured": false,


In addition, it is also possible to return as rejected or pending. In case it returns as pending, you should pay attention to the notifications to know what the final status of the payment is.

Please note that authorized values cannot be used by your client until they are captured. We recommend capturing as soon as possible.

The reserve will be valid for 7 days. If you do not capture it within this period, it will be canceled. In addition, it is necessary to save the payment ID in order to complete the process.