Cards - Payments submission - Mercado Pago Developers
Which documentation are you looking for?

Do not know how to start integrating? 

Check the first steps



With all the information collected in the backend, send a POST with the necessary attributes to the endpoint /v1/payments and execute the request or, if you prefer, send the information using our SDKs.

  require_once 'vendor/autoload.php';
  $contents = json_decode(file_get_contents('php://input'), true);
  $payment = new MercadoPago\Payment();
  $payment->transaction_amount = $contents['transaction_amount'];
  $payment->token = $contents['token'];
  $payment->installments = $contents['installments'];
  $payment->payment_method_id = $contents['payment_method_id'];
  $payment->issuer_id = $contents['issuer_id'];
  $payer = new MercadoPago\Payer();
  $payer->email = $contents['payer']['email'];
  $payer->identification = array(
     "type" => $contents['payer']['identification']['type'],
     "number" => $contents['payer']['identification']['number']
  $payment->payer = $payer;
  $response = array(
     'status' => $payment->status,
     'status_detail' => $payment->status_detail,
     'id' => $payment->id
  echo json_encode($response);

var mercadopago = require('mercadopago');

var payment_data = {
  amount: req.body.amount,
  .then(function(response) {
    const { status, status_detail, id } = response.body;
    res.status(response.status).json({ status, status_detail, id });
  .catch(function(error) {

PaymentClient client = new PaymentClient();

PaymentCreateRequest paymentCreateRequest =


require 'mercadopago'

payment_data = {
  transaction_amount: params[:transactionAmount].to_f,
  token: params[:token],
  description: params[:description],
  installments: params[:installments].to_i,
  payment_method_id: params[:paymentMethodId],
  payer: {
    email: params[:cardholderEmail],
    identification: {
      type: params[:identificationType],
      number: params[:identificationNumber]
    first_name: params[:cardholderName]

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

puts payment

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

MercadoPagoConfig.AccessToken = "YOUR_ACCESS_TOKEN";

var paymentRequest = new PaymentCreateRequest
    TransactionAmount = decimal.Parse(Request["transactionAmount"]),
    Token = Request["token"],
    Description = Request["description"],
    Installments = int.Parse(Request["installments"]),
    PaymentMethodId = Request["paymentMethodId"],
    Payer = new PaymentPayerRequest
        Email = Request["cardholderEmail"],
        Identification = new IdentificationRequest
            Type = Request["identificationType"],
            Number = Request["identificationNumber"],
        FirstName = Request["cardholderName"]

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


import mercadopago
sdk = mercadopago.SDK("ACCESS_TOKEN")

payment_data = {
    "transaction_amount": float(request.POST.get("transaction_amount")),
    "token": request.POST.get("token"),
    "description": request.POST.get("description"),
    "installments": int(request.POST.get("installments")),
    "payment_method_id": request.POST.get("payment_method_id"),
    "payer": {
        "email": request.POST.get("cardholderEmail"),
        "identification": {
            "type": request.POST.get("identificationType"), 
            "number": request.POST.get("identificationNumber")
        "first_name": request.POST.get("cardholderName")

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 YOUR_ACCESS_TOKEN' \
    '' \
    -d '{
          "transaction_amount": 100,
          "token": "ff8080814c11e237014c1ff593b57b4d",
          "description": "Blue shirt",
          "installments": 1,
          "payment_method_id": "visa",
          "issuer_id": 310,
          "payer": {
            "email": "PAYER_EMAIL_HERE",
            "identification": {
                "number": 19119119100,
                "type": "CPF"




    "status": "approved",
    "status_detail": "accredited",
    "id": 3055677,
    "date_approved": "2019-02-23T00:01:10.000-04:00",
    "payer": {
    "payment_method_id": "visa",
    "payment_type_id": "credit_card",
    "refunds": [],

The onSubmit callback contains all the necessary data for a payment creation, however, if you wish, it is possible to include additional details, which can facilitate the purchase recognition by the payer, and increase the payment approval rate.

To do that, add the relevant fields to the recieved object, contained in the Brick's onSubmit callback. Some of these fields are: description (this field can be shown in created tickets) and external_reference (id of the purchase in your website, which eases the purchase recognition for the buyer). It is also possible to add complementary buyer's data.

We recommend adherence to the 3DS 2.0 protocol, in order to increase the probability of approval of your payments, which can be done as described here.

Check API References to learn about all the available fields for full payments.