---
updatedAt: 2026-04-06T17:24:21.000Z
agentTools:
  projectIndex: https://docs.pagar.me/v4/llms.txt
---

# Cartão de crédito

> ❗️ Você está na versão correta da documentação?
>
> Verifique na sua [Dashboard](https://dashboard.pagar.me/#/myaccount/apikeys), em *Ver minha conta > Configurações > API Keys*, a versão da API que você está usando. Você deve usar a documentação correspondente. Para saber mais, veja: [Versionamento](https://docs.pagar.me/v1/docs/versionamento).

## Realizando uma transação

Após [obter](https://docs.pagar.me/docs/obtendo-os-dados-do-cartao) os dados do cartão, gerar o `card_hash` e enviá-lo para o seu servidor, você deve realizar a transação junto à API Pagar.me, que então efetua o fluxo de cobrança no cartão do cliente.

Abaixo você encontrará o exemplo de uma transação de cartão de crédito de uma companhia com o antifraude habilitado.

> 📘 Quando submeter informações sobre o comprador?
>
> Os campos `customer`, `billing` e `items` são obrigatórios no caso de transações de cartão de crédito de companhias com o antifraude habilitado. O campo `shipping` é opcional e deve ser preenchido no caso da venda de um bem físico. Para mais informações, clique [**aqui**](https://docs.pagar.me/v3/reference#criar-transacao)

```curl cURL
curl -X POST 'https://api.pagar.me/1/transactions' -H 'content-type: application/json' -d '{
    "api_key": "SUA_API_KEY",
    "amount": 21000,
    "card_number": "4111111111111111",
    "card_cvv": "123",
    "card_expiration_date": "0922",
    "card_holder_name": "Morpheus Fishburne",
    "customer": {
      "external_id": "#3311",
      "name": "Morpheus Fishburne",
      "type": "individual",
      "country": "br",
      "email": "mopheus@nabucodonozor.com",
      "documents": [
        {
          "type": "cpf",
          "number": "00000000000"
        }
      ],
      "phone_numbers": ["+5511999998888", "+5511888889999"],
      "birthday": "1965-01-01"
    },
    "billing": {
      "name": "Trinity Moss",
      "address": {
        "country": "br",
        "state": "sp",
        "city": "Cotia",
        "neighborhood": "Rio Cotia",
        "street": "Rua Matrix",
        "street_number": "9999",
        "zipcode": "06714360"
      }
    },
    "shipping": {
      "name": "Neo Reeves",
      "fee": 1000,
      "delivery_date": "2000-12-21",
      "expedited": true,
      "address": {
        "country": "br",
        "state": "sp",
        "city": "Cotia",
        "neighborhood": "Rio Cotia",
        "street": "Rua Matrix",
        "street_number": "9999",
        "zipcode": "06714360"
      }
    },
    "items": [
      {
        "id": "r123",
        "title": "Red pill",
        "unit_price": 10000,
        "quantity": 1,
        "tangible": true
      },
      {
        "id": "b123",
        "title": "Blue pill",
        "unit_price": 10000,
        "quantity": 1,
        "tangible": true
      }
    ]
}'
```
```python
import pagarme

pagarme.authentication_key('SUA_API_KEY')

params = {
    "amount": "21000",
    "card_number": "4111111111111111",
    "card_cvv": "123",
    "card_expiration_date": "0922",
    "card_holder_name": "Morpheus Fishburne",
    "customer": {
      "external_id": "#3311",
      "name": "Morpheus Fishburne",
      "type": "individual",
      "country": "br",
      "email": "mopheus@nabucodonozor.com",
      "documents": [
        {
          "type": "cpf",
          "number": "00000000000"
        }
      ],
      "phone_numbers": ["+5511999998888", "+5511888889999"],
      "birthday": "1965-01-01"
    },
    "billing": {
      "name": "Trinity Moss",
      "address": {
        "country": "br",
        "state": "sp",
        "city": "Cotia",
        "neighborhood": "Rio Cotia",
        "street": "Rua Matrix",
        "street_number": "9999",
        "zipcode": "06714360"
      }
    },
    "shipping": {
      "name": "Neo Reeves",
      "fee": "1000",
      "delivery_date": "2000-12-21",
      "expedited": True,
      "address": {
        "country": "br",
        "state": "sp",
        "city": "Cotia",
        "neighborhood": "Rio Cotia",
        "street": "Rua Matrix",
        "street_number": "9999",
        "zipcode": "06714360"
      }
    },
    "items": [
      {
        "id": "r123",
        "title": "Red pill",
        "unit_price": "10000",
        "quantity": "1",
        "tangible": True
      },
      {
        "id": "b123",
        "title": "Blue pill",
        "unit_price": "10000",
        "quantity": "1",
        "tangible": True
      }
    ]
}

trx = pagarme.transaction.create(params)

print(trx)
```
```csharp
using System;
using PagarMe;

PagarMeService.DefaultApiKey = "SUA_CHAVE_DE_API";
PagarMeService.DefaultEncryptionKey = "SUA_CHAVE_DE_CRIPTOGRAFIA";

Transaction transaction = new Transaction();

transaction.Amount = 2100;
transaction.Card = new Card
{
  Id = "card_cj95mc28g0038cy6ewbwtwwx2"
};

transaction.Customer = new Customer
{
  ExternalId = "#3311",
  Name = "Rick",
  Type = CustomerType.Individual,
  Country = "br",
  Email = "rick@morty.com",
  Documents = new[]
  {
    new Document{
      Type = DocumentType.Cpf,
      Number = "11111111111"
    },
    new Document{
      Type = DocumentType.Cnpj,
      Number = "83134932000154"
    }
  },
  PhoneNumbers = new string[]
  {
    "+5511982738291",
    "+5511829378291"
  },
  Birthday = new DateTime(1991, 12, 12).ToString("yyyy-MM-dd")
};

transaction.Billing = new Billing 
{
  Name = "Morty",
  Address = new Address()
  {
    Country = "br",
    State = "sp",
    City = "Cotia",
    Neighborhood = "Rio Cotia",
    Street = "Rua Matrix",
    StreetNumber = "213",
    Zipcode = "04250000"
  }
};

var Today = DateTime.Now;

transaction.Shipping = new Shipping 
{ 
  Name = "Rick",
  Fee = 100,
  DeliveryDate = Today.AddDays(4).ToString("yyyy-MM-dd"),
  Expedited = false,
  Address = new Address()
  {
    Country = "br",
    State = "sp",
    City = "Cotia",
    Neighborhood = "Rio Cotia",
    Street = "Rua Matrix",
    StreetNumber = "213",
    Zipcode = "04250000"
  }
};

transaction.Item = new[]
{
  new Item()
  {
    Id = "1",
    Title = "Little Car",
    Quantity = 1,
    Tangible = true,
    UnitPrice = 1000
  },
  new Item()
  {
    Id = "2",
    Title = "Baby Crib",
    Quantity = 1,
    Tangible = true,
    UnitPrice = 1000
  }
};

transaction.Save()
```
```php
<?php
$transaction = $pagarme->transactions()->create([
  'amount' => 1000,
  'payment_method' => 'credit_card',
  'card_holder_name' => 'Anakin Skywalker',
  'card_cvv' => '123',
  'card_number' => '4242424242424242',
  'card_expiration_date' => '1220',
  'customer' => [
    'external_id' => '1',
    'name' => 'Nome do cliente',
    'type' => 'individual',
    'country' => 'br',
    'documents' => [
      [
        'type' => 'cpf',
        'number' => '00000000000'
      ]
    ],
    'phone_numbers' => [ '+551199999999' ],
    'email' => 'cliente@email.com'
  ],
  'billing' => [
    'name' => 'Nome do pagador',
    'address' => [
      'country' => 'br',
      'street' => 'Avenida Brigadeiro Faria Lima',
      'street_number' => '1811',
      'state' => 'sp',
      'city' => 'Sao Paulo',
      'neighborhood' => 'Jardim Paulistano',
      'zipcode' => '01451001'
    ]
  ],
  'shipping' => [
    'name' => 'Nome de quem receberá o produto',
    'fee' => 1020,
    'delivery_date' => '2018-09-22',
    'expedited' => false,
    'address' => [
      'country' => 'br',
      'street' => 'Avenida Brigadeiro Faria Lima',
      'street_number' => '1811',
      'state' => 'sp',
      'city' => 'Sao Paulo',
      'neighborhood' => 'Jardim Paulistano',
      'zipcode' => '01451001'
    ]
  ],
  'items' => [
    [
      'id' => '1',
      'title' => 'R2D2',
      'unit_price' => 300,
      'quantity' => 1,
      'tangible' => true
    ],
    [
      'id' => '2',
      'title' => 'C-3PO',
      'unit_price' => 700,
      'quantity' => 1,
      'tangible' => true
    ]
  ]
]);
```

É dessa forma que você consegue criar uma transação de cartão de crédito. Viu como é simples? ;-)

## Parâmetros de uma transação

Descrição dos parâmetros passados no exemplo:

<Table align={["left","left","left"]}>
  <thead>
    <tr>
      <th>
        Parâmetro
      </th>

      <th>
        Padrão
      </th>

      <th>
        Descrição
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        amount
      </td>

      <td>

      </td>

      <td>
        Valor total a ser cobrado (em centavos). Ex: R$14,99 = `1499`
      </td>
    </tr>

    <tr>
      <td>
        card\_hash
      </td>

      <td>

      </td>

      <td>
        Representação segura dos dados de cartão de crédito
      </td>
    </tr>

    <tr>
      <td>
        installments
      </td>

      <td>
        1
      </td>

      <td>
        Número de parcelas a serem cobradas no cartão de crédito
      </td>
    </tr>

    <tr>
      <td>
        payment\_method
      </td>

      <td>
        credit\_card
      </td>

      <td>
        Meio de pagamento que será utilizado
      </td>
    </tr>

    <tr>
      <td>
        postback\_url
      </td>

      <td>

      </td>

      <td>
        URL para receber notificações sobre alterações no status da transação
      </td>
    </tr>

    <tr>
      <td>
        soft\_descriptor
      </td>

      <td>

      </td>

      <td>
        Texto (de até 13 caracteres, somente letras e números) que aparecerá na fatura do cartão do cliente ao lado do nome da sua loja
      </td>
    </tr>

    <tr>
      <td>
        customer
      </td>

      <td>

      </td>

      <td>
        Objeto que deve possuir as informações do cliente. Obrigatório com o antifraude habilitado.  Para mais informações, clique [**aqui**](https://docs.pagar.me/v3/reference#objeto-cliente)
      </td>
    </tr>

    <tr>
      <td>
        billing
      </td>

      <td>

      </td>

      <td>
        Objeto que deve possuir as informações de cobrança da transação. Obrigatório com o antifraude habilitado.  Para mais informações, clique [**aqui**](https://docs.pagar.me/v3/reference#objeto-billing-dados-de-cobrança)
      </td>
    </tr>

    <tr>
      <td>
        shipping
      </td>

      <td>

      </td>

      <td>
        Objeto que deve possuir as informações de envio do que foi comprado. Deve ser preenchido no caso da venda de um bem físico. Para mais informações, clique [**aqui**](https://docs.pagar.me/v3/reference#objeto-shipping-dados-de-envio)
      </td>
    </tr>

    <tr>
      <td>
        items
      </td>

      <td>

      </td>

      <td>
        Objeto que deve possuir as informações sobre os produtos comprados. Obrigatório com o antifraude habilitado. Para mais informações, clique [**aqui**](https://docs.pagar.me/v3/reference#objeto-items-itens)
      </td>
    </tr>

    <tr>
      <td>
        metadata
      </td>

      <td>

      </td>

      <td>
        Objeto JSON para você receber dados de sua plataforma, como: id do pedido, descrição do produto/serviço, etc
      </td>
    </tr>

    <tr>
      <td>
        session
      </td>

      <td>

      </td>

      <td>
        Valor único que identifica a sessão do usuário acessando o site
      </td>
    </tr>
  </tbody>
</Table>

Aprenda mais sobre a lista completa de parâmetros em: [Criar transação](https://docs.pagar.me/reference/criar-transacao)

## Observações

### **[card\_hash](https://docs.pagar.me/docs/overview-transacao)**

> 🚧 Vale ressaltar:
>
> Após gerado, o `card_hash` tem validade de 5 minutos. Além disso, ele pode ser utilizado uma única vez.

### **Análises antifraude com transações assíncronas**

> ❗️ Análise manual pelo antifraude
>
> Caso a sua loja esteja habilitada com análise manual pelo antifraude, é imprescindível que toda transação possua o campo [async](https://docs.pagar.me/v3/reference#criar-transacao) com o valor `true`. É necessário também fornecer um [postback\_url](https://docs.pagar.me/v3/reference#postbacks), através do qual você receberá atualizações sobre o status da transação.

### **Dados de customer**

> 🚧 Por que passar os dados do cliente (customer, billing, shipping e items) na transação?
>
> São dados essenciais para que o antifraude consiga avaliar a transação e evitar compras ilegítimas.

### **Ao usar os exemplos**

> 🚧 Mudança de API KEY:
>
> Não se esqueça de substituir `ak_test_grXijQ4GicOa2BLGZrDRTR5qNQxJW0` pela sua [Chave de API](https://dashboard.pagar.me/#/myaccount/apikeys), que está disponível em sua [Dashboard](https://dashboard.pagar.me/).

### **Status de uma transação após ser criada**

Após realizar uma transação de Cartão de crédito, ela fica com o status `paid`, indicando que o cartão do usuário foi debitado com sucesso. No entanto, caso ela seja recusada pelo banco emissor, fica com o status `refused`. Você pode aprender mais sobre os possíveis status de uma transação em: [Status das transações](https://docs.pagar.me/reference/status-das-transacoes)

## Simulações em teste

### Como simular uma transação recusada pelo banco emissor?

> 📘 Testando transações recusadas
>
> No ambiente de testes, você pode simular uma transação recusada pelo banco emissor. Basta passar um `card_cvv` que começa com o número `6`.

### Como simular uma transação recusada pelo antifraude ?

> 📘 Testando transação recusada por antifraude
>
> Você pode fazer este teste passando um `document_number` igual à `11111111111`.

## Capturando uma transação posteriormente

Com a API Pagar.me, você pode separar o processo de autorização (reserva de saldo no cartão) e captura (confirmação para cobrança em fatura). Isso é feito através de um parâmetro chamado `capture`.

O primeiro passo é passar este parâmetro como `false` no momento da criação de uma transação, como é mostrado nesse exemplo:

```curl cURL
curl -X POST 'https://api.pagar.me/1/transactions' -H 'content-type: application/json' -d '{
    "api_key": "SUA_API_KEY",
    "capture": "false", 
    "amount": 21000,
    "card_number": "4111111111111111",
    "card_cvv": "123",
    "card_expiration_date": "0922",
    "card_holder_name": "Morpheus Fishburne",
    "customer": {
      "external_id": "#3311",
      "name": "Morpheus Fishburne",
      "type": "individual",
      "country": "br",
      "email": "mopheus@nabucodonozor.com",
      "documents": [
        {
          "type": "cpf",
          "number": "00000000000"
        }
      ],
      "phone_numbers": ["+5511999998888", "+5511888889999"],
      "birthday": "1965-01-01"
    },
    "billing": {
      "name": "Trinity Moss",
      "address": {
        "country": "br",
        "state": "sp",
        "city": "Cotia",
        "neighborhood": "Rio Cotia",
        "street": "Rua Matrix",
        "street_number": "9999",
        "zipcode": "06714360"
      }
    },
    "shipping": {
      "name": "Neo Reeves",
      "fee": 1000,
      "delivery_date": "2000-12-21",
      "expedited": true,
      "address": {
        "country": "br",
        "state": "sp",
        "city": "Cotia",
        "neighborhood": "Rio Cotia",
        "street": "Rua Matrix",
        "street_number": "9999",
        "zipcode": "06714360"
      }
    },
    "items": [
      {
        "id": "r123",
        "title": "Red pill",
        "unit_price": 10000,
        "quantity": 1,
        "tangible": true
      },
      {
        "id": "b123",
        "title": "Blue pill",
        "unit_price": 10000,
        "quantity": 1,
        "tangible": true
      }
    ]
}'
```
```php
<?php
$transaction = $pagarme->transactions()->create([
  'amount' => 1000,
  'payment_method' => 'credit_card',
  'card_holder_name' => 'Anakin Skywalker',
  'card_cvv' => '123',
  'card_number' => '4242424242424242',
  'card_expiration_date' => '1220',
  'capture' => false,
  'customer' => [
    'external_id' => '1',
    'name' => 'Nome do cliente',
    'type' => 'individual',
    'country' => 'br',
    'documents' => [
      [
        'type' => 'cpf',
        'number' => '00000000000'
      ]
    ],
    'phone_numbers' => [ '+551199999999' ],
    'email' => 'cliente@email.com'
  ],
  'billing' => [
    'name' => 'Nome do pagador',
    'address' => [
      'country' => 'br',
      'street' => 'Avenida Brigadeiro Faria Lima',
      'street_number' => '1811',
      'state' => 'sp',
      'city' => 'Sao Paulo',
      'neighborhood' => 'Jardim Paulistano',
      'zipcode' => '01451001'
    ]
  ],
  'shipping' => [
    'name' => 'Nome de quem receberá o produto',
    'fee' => 1020,
    'delivery_date' => '2018-09-22',
    'expedited' => false,
    'address' => [
      'country' => 'br',
      'street' => 'Avenida Brigadeiro Faria Lima',
      'street_number' => '1811',
      'state' => 'sp',
      'city' => 'Sao Paulo',
      'neighborhood' => 'Jardim Paulistano',
      'zipcode' => '01451001'
    ]
  ],
  'items' => [
    [
      'id' => '1',
      'title' => 'R2D2',
      'unit_price' => 300,
      'quantity' => 1,
      'tangible' => true
    ],
    [
      'id' => '2',
      'title' => 'C-3PO',
      'unit_price' => 700,
      'quantity' => 1,
      'tangible' => true
    ]
  ]
]);
```

Desta forma, a API Pagar.me retorna uma transação com status `authorized`, assim como no exemplo a seguir:

```json
{
    "object": "transaction",
    "status": "authorized",
    "refuse_reason": null,
    "status_reason": "acquirer",
    "acquirer_response_code": "0000",
    "acquirer_name": "pagarme",
    "acquirer_id": "58a49047916d40fa539ba926",
    "authorization_code": "421974",
    "soft_descriptor": null,
    "tid": 1828542,
    "nsu": 1828542,
    "date_created": "2017-08-14T17:35:40.242Z",
    "date_updated": "2017-08-14T17:35:40.501Z",
    "amount": 21000,
    "authorized_amount": 21000,
    "paid_amount": 0,
    "refunded_amount": 0,
    "installments": 1,
    "id": 1828542,
    "cost": 0,
    "card_holder_name": "Morpheus Fishburne",
    "card_last_digits": "1111",
    "card_first_digits": "411111",
    "card_brand": "visa",
    "card_pin_mode": null,
    "postback_url": null,
    "payment_method": "credit_card",
    "capture_method": "ecommerce",
    "antifraud_score": null,
    "boleto_url": null,
    "boleto_barcode": null,
    "boleto_expiration_date": null,
    "referer": "api_key",
    "ip": "10.2.13.68",
    "subscription_id": null,
    "phone": null,
    "address": null,
    "customer": {
        "object": "customer",
        "id": 232990,
        "external_id": "#3311",
        "type": "individual",
        "country": "br",
        "document_number": null,
        "document_type": "cpf",
        "name": "Morpheus Fishburne",
        "email": "mopheus@nabucodonozor.com",
        "phone_numbers": [
            "+5511999998888",
            "+5511888889999"
        ],
        "born_at": null,
        "birthday": "1965-01-01",
        "gender": null,
        "date_created": "2017-08-14T17:35:40.125Z",
        "documents": [
            {
                "object": "document",
                "id": "doc_cj6cfx08k0ah6cm6eq0lxx9th",
                "type": "cpf",
                "number": "00000000000"
            }
        ]
    },
    "billing": {
        "address": {
            "object": "address",
            "street": "Rua Matrix",
            "complementary": null,
            "street_number": "9999",
            "neighborhood": "Rio Cotia",
            "city": "Cotia",
            "state": "sp",
            "zipcode": "06714360",
            "country": "br",
            "id": 145689
        },
        "object": "billing",
        "id": 27,
        "name": "Trinity Moss"
    },
    "shipping": {
        "address": {
            "object": "address",
            "street": "Rua Matrix",
            "complementary": null,
            "street_number": "9999",
            "neighborhood": "Rio Cotia",
            "city": "Cotia",
            "state": "sp",
            "zipcode": "06714360",
            "country": "br",
            "id": 145690
        },
        "object": "shipping",
        "id": 23,
        "name": "Neo Reeves",
        "fee": 1000,
        "delivery_date": "2000-12-21",
        "expedited": true
    },
    "items": [
        {
            "object": "item",
            "id": "r123",
            "title": "Red pill",
            "unit_price": 10000,
            "quantity": 1,
            "category": null,
            "venue": null,
            "date": null
        },
        {
            "object": "item",
            "id": "b123",
            "title": "Blue pill",
            "unit_price": 10000,
            "quantity": 1,
            "category": null,
            "venue": null,
            "date": null
        }
    ],
    "card": {
        "object": "card",
        "id": "card_cj6cfx0au0ah7cm6e2uhdgkcj",
        "date_created": "2017-08-14T17:35:40.230Z",
        "date_updated": "2017-08-14T17:35:40.561Z",
        "brand": "visa",
        "holder_name": "Morpheus Fishburne",
        "first_digits": "411111",
        "last_digits": "1111",
        "country": "UNITED STATES",
        "fingerprint": "3ace8040fba3f5c3a0690ea7964ea87d97123437",
        "valid": true,
        "expiration_date": "0922"
    },
    "split_rules": null,
    "metadata": {},
    "antifraud_metadata": {},
    "reference_key": null
}
```

### **Chamada para fazer a captura**

Posteriormente, você pode **confirmar** e pedir a captura. É importante lembrar que isso precisa ser feito até [5 dias](https://docs.pagar.me/docs/overview-transacao) após a autorização. Confirme a captura com a seguinte chamada:

```curl
curl -X POST https://api.pagar.me/1/transactions/:id/capture -H 'content-type: application/json' -d '{
    "api_key": "SUA API KEY"
}'
```
```ruby
require 'pagarme'

PagarMe.api_key = 'SUA API KEY'

transaction = PagarMe::Transaction.find 123
transaction.capture()
```
```php
<?php
require("vendor/autoload.php");
$pagarme = new PagarMe\Client('SUA_CHAVE_DE_API');

$capturedTransaction = $pagarme->transactions()->capture([
  'id' => 'ID_OU_TOKEN_DA_TRANSAÇÃO',
  'amount' => VALOR_TOTAL_EM_CENTAVOS
]);
```
```csharp
PagarMeService.DefaultApiKey = "SUA API KEY";

var transaction = PagarMeService.GetDefaultService().Transactions.Find ("Transaction ID");

transaction.Capture();
```
```java
import java.util.HashMap;
import java.util.Map;

import me.pagar.model.Address;
import me.pagar.model.Customer;
import me.pagar.model.PagarMe;
import me.pagar.model.PagarMeException;
import me.pagar.model.Phone;
import me.pagar.model.Transaction;
import me.pagar.model.Transaction.PaymentMethod;

PagarMe.init("SUA_API_KEY");

Transaction transaction = new Transaction().find(194351);
transaction.capture(1000);
```
```javascript JS
import pagarme from 'pagarme'

pagarme.client.connect({ api_key: 'SUA_API_KEY' })
  .then(client => client.transactions.capture({ id: 1399451 }))
```
```python
import pagarme

pagarme.authentication_key("SUA_API_KEY")

transaction = pagarme.transaction.find_by({
    "id": "TRANSACTION_ID"
})

capture = pagarme.transaction.capture(
    transaction[0]['id'],
    {"amount": "Valor a ser capturado"} 
}
print(capture)
```

Perceba que, no caminho da request, é necessário especificar o `ID` da transação que foi criada anteriormente.

## Captura parcial

Também pela API Pagar.me é possível especificar o quanto você gostaria de efetivamente capturar desta transação. Para isso você precisa apenas especificar o parâmetro amount, como no exemplo a seguir:

```curl
curl -X POST https://api.pagar.me/1/transactions/:id/capture -H 'content-type: application/json' -d '{
    "amount": "10000", 
    "api_key": "SUA API KEY"
}'
```
```ruby
require 'pagarme'

PagarMe.api_key = 'SUA API KEY'

transaction = PagarMe::Transaction.find 123
transaction.capture(amount: 6234)
```
```php
<?php
require("vendor/autoload.php");
$pagarme = new PagarMe\Client('SUA_CHAVE_DE_API');

$capturedTransaction = $pagarme->transactions()->capture([
  'id' => 'ID_OU_TOKEN_DA_TRANSAÇÃO',
  'amount' => VALOR_PARCIAL_EM_CENTAVOS
]);
```
```php PHP v3
<?php
	require __DIR__.'/vendor/autoload.php';

	$pagarMe = new \PagarMe\Sdk\PagarMe('SUA_API_KEY');

  $amount = "6234";
  $transaction = $pagarMe->transaction()->get(194351);
  $transaction = $pagarMe->transaction()->capture(
    $transaction,
    $amount
  );
```
```csharp
PagarMeService.DefaultApiKey = "SUA API KEY";

var transaction = PagarMeService.GetDefaultService().Transactions.Find ("Transaction ID");

transaction.Capture(6234);
```
```java
import java.util.HashMap;
import java.util.Map;

import me.pagar.model.Address;
import me.pagar.model.Customer;
import me.pagar.model.PagarMe;
import me.pagar.model.PagarMeException;
import me.pagar.model.Phone;
import me.pagar.model.Transaction;
import me.pagar.model.Transaction.PaymentMethod;

PagarMe.init("SUA_API_KEY");

Transaction transaction = new Transaction().find(194351);
transaction.capture(6234);
```
```javascript JS
import pagarme from 'pagarme'

pagarme.client.connect({ api_key: 'SUA_API_KEY' })
  .then(client => client.transactions.capture({
    id: 1399451,
    amount: 6234
  }))
```
```python
import pagarme

pagarme.authentication_key("SUA_API_KEY")

transaction = pagarme.transaction.find_by({
    "id": "TRANSACTION_ID"
})

capture = pagarme.transaction.capture(
    transaction[0]['id'],
    {"amount": "Valor a ser capturado"} 
}
print(capture)
```

Quando uma captura parcial é feita, você consegue ver o resultado refletido no campo paid\_amount da transaction, como o exemplo a seguir:

```json
{
    "object": "transaction",
    "status": "paid",
    "refuse_reason": null,
    "status_reason": "acquirer",
    "acquirer_response_code": "0000",
    "acquirer_name": "pagarme",
    "acquirer_id": "58a49047916d40fa539ba926",
    "authorization_code": "421974",
    "soft_descriptor": null,
    "tid": 1828542,
    "nsu": 1828542,
    "date_created": "2017-08-14T17:35:40.242Z",
    "date_updated": "2017-08-14T17:47:07.370Z",
    "amount": 21000,
    "authorized_amount": 21000,
    "paid_amount": 10000,
    "refunded_amount": 0,
    "installments": 1,
    "id": 1828542,
    "cost": 50,
    "card_holder_name": "Morpheus Fishburne",
    "card_last_digits": "1111",
    "card_first_digits": "411111",
    "card_brand": "visa",
    "card_pin_mode": null,
    "postback_url": null,
    "payment_method": "credit_card",
    "capture_method": "ecommerce",
    "antifraud_score": null,
    "boleto_url": null,
    "boleto_barcode": null,
    "boleto_expiration_date": null,
    "referer": "api_key",
    "ip": "10.2.13.68",
    "subscription_id": null,
    "phone": null,
    "address": null,
    "customer": {
        "object": "customer",
        "id": 232990,
        "external_id": "#3311",
        "type": "individual",
        "country": "br",
        "document_number": null,
        "document_type": "cpf",
        "name": "Morpheus Fishburne",
        "email": "mopheus@nabucodonozor.com",
        "phone_numbers": [
            "+5511999998888",
            "+5511888889999"
        ],
        "born_at": null,
        "birthday": "1965-01-01",
        "gender": null,
        "date_created": "2017-08-14T17:35:40.125Z",
        "documents": [
            {
                "object": "document",
                "id": "doc_cj6cfx08k0ah6cm6eq0lxx9th",
                "type": "cpf",
                "number": "00000000000"
            }
        ]
    },
    "billing": {
        "address": {
            "object": "address",
            "street": "Rua Matrix",
            "complementary": null,
            "street_number": "9999",
            "neighborhood": "Rio Cotia",
            "city": "Cotia",
            "state": "sp",
            "zipcode": "06714360",
            "country": "br",
            "id": 145689
        },
        "object": "billing",
        "id": 27,
        "name": "Trinity Moss"
    },
    "shipping": {
        "address": {
            "object": "address",
            "street": "Rua Matrix",
            "complementary": null,
            "street_number": "9999",
            "neighborhood": "Rio Cotia",
            "city": "Cotia",
            "state": "sp",
            "zipcode": "06714360",
            "country": "br",
            "id": 145690
        },
        "object": "shipping",
        "id": 23,
        "name": "Neo Reeves",
        "fee": 1000,
        "delivery_date": "2000-12-21",
        "expedited": true
    },
    "items": [
        {
            "object": "item",
            "id": "r123",
            "title": "Red pill",
            "unit_price": 10000,
            "quantity": 1,
            "category": null,
            "venue": null,
            "date": null
        },
        {
            "object": "item",
            "id": "b123",
            "title": "Blue pill",
            "unit_price": 10000,
            "quantity": 1,
            "category": null,
            "venue": null,
            "date": null
        }
    ],
    "card": {
        "object": "card",
        "id": "card_cj6cfx0au0ah7cm6e2uhdgkcj",
        "date_created": "2017-08-14T17:35:40.230Z",
        "date_updated": "2017-08-14T17:35:40.561Z",
        "brand": "visa",
        "holder_name": "Morpheus Fishburne",
        "first_digits": "411111",
        "last_digits": "1111",
        "country": "UNITED STATES",
        "fingerprint": "3ace8040fba3f5c3a0690ea7964ea87d97123437",
        "valid": true,
        "expiration_date": "0922"
    },
    "split_rules": null,
    "metadata": {},
    "antifraud_metadata": {},
    "reference_key": null
}
```

> 🚧 Vale ressaltar
>
> A captura parcial só é permitida para transações criadas usando uma API Key, tanto para cartão de crédito ou boleto.
>
> Logo, para transações feitas com o [Checkout Pagar.Me](https://docs.pagar.me/docs/inserindo-o-formulario), o valor de captura deve ser sempre igual ao total do carrinho de compras em sua plataforma.

## Captura com split rules e metadata

Em um [Marketplace](https://docs.pagar.me/docs/overview-marketplace), é no momento da captura que você precisa passar os dados de [Split Rules](https://docs.pagar.me/docs/split-rules) — isto é, as regras de divisão de uma transação.

Além disso, é também na captura que você precisa enviar os parâmetros de [metadata](https://docs.pagar.me/docs/usando-metadata) com informações de sua plataforma. Veja os exemplos:

```curl
curl -X POST -H "Content-Type: application/json"  -d '{
  "api_key":"SUA API KEY",
  "split_rules": [
    {
      "recipient_id": "re_ciyol0qac00xnlg6dkaftvn9j",
      "percentage": 55,
      "liable": true,
      "charge_processing_fee": true
    },{
      "recipient_id": "re_ciyoloogb0100l46dy6f1iuww",
      "percentage": 45,
      "liable": false,
      "charge_processing_fee": false
    }
  ],
  "metadata": {
       "id_pedido": "13933139"
   }
}' "https://api.pagar.me/1/transactions/:id/capture" -H 'content-type: application/json' -d '{}'
```
```ruby
require 'pagarme'

PagarMe.api_key = 'SUA API KEY'

transaction = PagarMe::Transaction.find 123
transaction.capture({
  split_rules: [
    {
      recipient_id: 're_ciyoloogb0100l46dy6f1iuww',
      liable: true,
      charge_processing_fee: true,
      percentage: 55
    },
    {
      recipient_id: 're_ciyol0qac00xnlg6dkaftvn9j',
      liable: false,
      charge_processing_fee: false,
      percentage: 45
    }
  ],
  metadata: {
    id_pedido: '13933139'  
  }
})
```
```php
<?php
require("vendor/autoload.php");

$pagarme = new PagarMe\Client('SUA_CHAVE_DE_API');

$capturedTransaction = $pagarme->transactions()->capture([
  "id" => 'ID_OU_TOKEN_DA_TRANSAÇÃO',
  "split_rules" => [
    [
      "recipient_id" => "re_ciyoloogb0100l46dy6f1iuww",
      "liable" => "true",
      "charge_processing_fee" => "true",
      "percentage" => "55",
    ],
    [
      "recipient_id" => "re_ciyol0qac00xnlg6dkaftvn9j",
      "liable" => "false",
      "charge_processing_fee" => "false",
      "percentage" => "45",    
    ] 
  ],
  "metadata" => [
    "id_pedido" => "13933139"
  ]
]);
```
```csharp
Feature ainda não disponível para esse SDK
```
```java
Feature ainda não disponível para esse SDK
```
```javascript JS
import pagarme from 'pagarme'

pagarme.client.connect({ api_key: 'SUA_API_KEY' })
  .then(client => client.transactions.capture({
    id: 1399451,
    split_rules: [
      {
        'recipient_id': 're_ciyoloogb0100l46dy6f1iuww',
        'liable': 'true',
        'charge_processing_fee': 'true',
        'percentage': '55',
      },
      {
        'recipient_id': 're_ciyol0qac00xnlg6dkaftvn9j',
        'liable': 'false',
        'charge_processing_fee': 'false',
        'percentage': '45',
      }
    ],
    metadata: {
      'id_pedido': '13933139'
    }
  }))
```
```python
import pagarme

pagarme.authentication_key("SUA_API_KEY")

transaction = pagarme.transaction.find_by({
    "id": "TRANSACTION_ID"
})

params = {
	"split_rules": [
    {
      "recipient_id": "re_ciyol0qac00xnlg6dkaftvn9j",
      "percentage": 55,
      "liable": true,
      "charge_processing_fee": true
    },{
      "recipient_id": "re_ciyoloogb0100l46dy6f1iuww",
      "percentage": 45,
      "liable": false,
      "charge_processing_fee": false
    }
  ],
  "metadata": {
       "id_pedido": "13933139"
   }
} 

capture = pagarme.transaction.capture(
    transaction[0]['id'],
    params 
}
print(capture)
```

## Criando um cartão para one-click buy

Com a API Pagar.me você consegue criar um cartão para possíveis cobranças posteriores em transações e assinaturas. Para fazer isso, você precisa primeiramente de um `card_hash`, como mostra o exemplo a seguir:

```curl
curl -X POST 'https://api.pagar.me/1/cards' -H 'content-type: application/json' -d '{
    "api_key": "ak_test_grXijQ4GicOa2BLGZrDRTR5qNQxJW0", 
    "card_hash": "CARD_HASH"
}'
```
```ruby
require 'pagarme'

PagarMe.api_key = 'SUA API KEY'

card = PagarMe::Card.create(card_hash: 'CARD_HASH_GERADO')
```
```php
<?php
require("vendor/autoload.php");

$pagarme = new PagarMe\Client('SUA_CHAVE_DE_API');

$card = $pagarme->cards()->create([
  'holder_name' => 'Yoda',
  'number' => '4242424242424242',
  'expiration_date' => '1225',
  'cvv' => '123'
]);
```
```csharp
PagarMeService.DefaultApiKey = "ak_test_grXijQ4GicOa2BLGZrDRTR5qNQxJW0";
PagarMeService.DefaultEncryptionKey = "ek_test_Ec8KhxISQ1tug1b8bCcxC2nXfxqRnk";

Card card = new Card();
card.Number = "4242424242424242";
card.HolderName = "API CUSTOMER";
card.ExpirationDate = "0117";
card.Cvv = "314";

//O próprio SDK vai gerar o card_hash, antes de enviar a API
card.Save();
```
```java
import java.util.Collection;

import me.pagar.model.Card;
import me.pagar.model.PagarMe;
import me.pagar.model.PagarMeException;

PagarMe.init("SUA_API_KEY");

Card card = new Card();
card.setNumber("4242424242424242");
card.setHolderName("API CUSTOMER");
card.setExpiresAt("1219");
card.setCvv(314);
card.save();
```
```javascript JS
const pagarme = require('pagarme')

pagarme.client.connect({ api_key: 'SUA API KEY' })
    .then(client => client.cards.create({
        card_number: '4242424242424242',
        card_holder_name: 'Aardvark Silva',
        card_expiration_date: '1225',
        card_cvv: '123',
    }))
    .then(card => console.log(card.id))
```
```python
import pagarme

pagarme.authentication_key('SUA_API_KEY')

card_data = {
    "card_expiration_date": "1122",
    "card_number": "4018720572598048",
    "card_cvv": "123",
    "card_holder_name": "Cersei Lannister"
}

print (pagarme.card.create(card_data))
```

O que todos estes exemplos retornam em comum é um `card_id`, dado que funciona como um ID para o cartão criado. Com ele, você consegue criar transações e assinaturas da mesma maneira que faz com `card_hash`. Exemplo de Card ID: **card\_cj2ebvhnm011lkd6dj683vn0j\&#xA;**

### **As vantagens de um Card ID**

* Ele pode ser usado indefinidamente, ou enquanto o cartão em si tenha validade com o banco emissor.
* Pode ser armazenado em sua base de dados, pois não expira após 5 minutos como acontece com o Card Hash.