Cobrança com 2 Cartões (NOVO✨)

A cobrança com dois cartões, como o próprio nome sugere, permite que uma única fatura seja paga utilizando até dois cartões de crédito diferentes. Esse recurso oferece maior flexibilidade ao usuário no momento da transação, possibilitando dividir o valor da compra entre dois limites de crédito distintos ou até mesmo combinar diferentes bandeiras de cartão (Visa, Mastercard, Amex, Diners, Elo e Hipercard). Dessa forma, o usuário pode otimizar o uso de seus cartões, facilitando a aprovação da transação e proporcionando uma melhor gestão financeira.


O que está disponível ⚠️

Este recurso está em fase inicial de desenvolvimento e algumas features ainda não são compatíveis nesta versão. São eles:

  • Assinatura (Recorrência)
  • Estorno parcial
  • Parcelamento

Recipe 🧪

Clique na recipe abaixo e veja, na prática, a sequência de chamadas às APIs:


Como cobrar em 2 cartões?

📘

Ative este recurso

Certifique-se de que o recurso está ativado em sua conta em Alia > Configurações > Cartão de Crédito > marque a caixa de seleção Cobrança com 2 Cartões.

1. Tokenizar Cartão

Para qualquer cobrança deve-se tokenizar o cartão de crédito, portanto, tokenize-os utilizando o iugu.js ou o endpoint Criar TokenPOST /v1/payment_token

via endpoint

Para tokenizar usando a rota POST /v1/payment_token, faça uma chamada para cada cartão. Siga o seguinte exemplo a seguir:

💳

Uma chamada para cada cartão

A estrutura desta rota não permite adicionar um objeto data extra, portanto, faça uma chamada para cada um dos cartões.

Requisição exemplo

curl --request POST \
     --url https://api.iugu.com/v1/payment_token \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '
{
  "account_id": "27016E1AD888499A98994E781B6C3762",
  "method": "credit_card",
  "data": {
    "number": "5555 5555 5555 4444",
    "verification_value": "123",
    "first_name": "NOME",
    "last_name": "SOBRENOME",
    "month": "01",
    "year": "2030"
  }
}

account_id é conta que armazenará o token.

method é compatível apenas com credit_card

Retorno exemplo

{
  "id": "ac2a7578-41a5-4851-a9c2-6b302c75f37e",
  "method": "credit_card",
  "extra_info": {
    "bin": "5555",
    "year": 2030,
    "month": 1,
    "brand": "MASTER",
    "holder_name": "Primeiro Nome Sobrenome",
    "display_number": "XXXX-XXXX-XXXX-4444"
  }

via iugu.js

O iugu.js conta com o objeto cc (credit card), mas para dois cartões, utilize cc1 e cc2. Por exemplo:

cc1 = Iugu.CreditCard("4111111111111111", 
                     "12", "2030", "Nome", 
                     "Sobrenome", "123");

cc2 = Iugu.CreditCard("5555555555554444", 
                     "12", "2033", "Nome", 
                     "Sobrenome", "123");

📘

Saiba mais sobre iugu.js

Confira o artigo completo do iugu.js aqui.


2. Criar Fatura

Para a próxima etapa, é necessário associar um invoice_id à chamada. Portanto, crie uma fatura utilizando a rota Criar FaturaPOST /v1/invoices.

Requisição e retorno exemplo

curl --request POST \
     --url 'https://api.iugu.com/v1/invoices?api_token=api_token' \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '
{
  "email": "[email protected]",
  "due_date": "2025-02-20",
  "items": [
    {
      "description": "Descrição do Item",
      "quantity": 1,
      "price_cents": 10000
    }
  ],
  "payable_with": [
    "credit_card"
  ]
}
'
{
  "id": "1234567890ABCDEF1234567890ABCDEF",
  "due_date": "2025-01-31",
  "currency": "BRL",
  "discount_cents": null,
  "email": "[email protected]",
  "items_total_cents": 400,
  "notification_url": null,
  "return_url": null,
  "status": "pending",
  "tax_cents": null,
  "total_cents": 400,
  "total_paid_cents": 0,
  "taxes_paid_cents": null,
  "paid_at": null,
  "paid_cents": null,
  "cc_emails": null,
  "financial_return_date": null,
  "payable_with": "all",
  "overpaid_cents": null,
  "ignore_due_email": null,
  "ignore_canceled_email": null,
  "advance_fee_cents": null,
  "commission_cents": null,
  "early_payment_discount": false,
  "order_id": null,
  "updated_at": "2025-01-07T14:12:57-03:00",
  "credit_card_brand": null,
  "credit_card_bin": null,
  "credit_card_last_4": null,
  "credit_card_captured_at": null,
  "credit_card_tid": null,
  "external_reference": null,
  "max_installments_value": null,
  "payer_name": "Fictício Pagador",
  "payer_email": null,
  "payer_cpf_cnpj": "00000000000",
  "payer_phone": null,
  "payer_phone_prefix": null,
  "payer_address_zip_code": null,
  "payer_address_street": null,
  "payer_address_district": null,
  "payer_address_city": null,
  "payer_address_state": null,
  "payer_address_number": null,
  "payer_address_complement": null,
  "payer_address_country": null,
  "late_payment_fine": 1,
  "late_payment_fine_cents": null,
  "split_id": null,
  "external_payment_id": null,
  "external_payment_description": null,
  "payment_booklet_id": null,
  "subscription_id": null,
  "variables": [
    {
      "variable": "barcode_v1",
      "value": "40195997800000004002025007000000000000207417"
    },
    {
      "variable": "barcode_version",
      "value": "1"
    },
    {
      "variable": "payer.cpf_cnpj",
      "value": "00000000000"
    },
    {
      "variable": "payer.name",
      "value": "Fictício Pagador"
    },
    {
      "variable": "payment_data.transaction_number",
      "value": "000000000000000"
    }
  ],
  "custom_variables": [],
  "logs": [
    {
      "id": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
      "description": "Email de Lembrete enviado!",
      "notes": "Lembrete enviado com sucesso para: [email protected]",
      "created_at": "07/01, 14:12"
    },
    {
      "id": "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB",
      "description": "Fatura criada com sucesso!",
      "notes": "Fatura criada!",
      "created_at": "07/01, 14:12"
    }
  ],
  "credit_card_transaction": null,
  "account_id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
  "bank_account_branch": "0001",
  "bank_account_number": "0000000-0",
  "account_name": "Conta Fictícia",
  "secure_id": "12345678-1234-1234-1234-123456789012-b601",
  "secure_url": "https://checkout.example.com/invoices/12345678-1234-1234-1234-123456789012-b601",
  "customer_id": null,
  "customer_ref": null,
  "customer_name": null,
  "user_id": null,
  "total": "R$ 4,00",
  "taxes_paid": "R$ 0,00",
  "total_paid": "R$ 0,00",
  "total_overpaid": "R$ 0,00",
  "total_refunded": "R$ 0,00",
  "fine_cents": 0,
  "commission": "R$ 0,00",
  "fines_on_occurrence_day": "R$ 0,00",
  "total_on_occurrence_day": "R$ 0,00",
  "fines_on_occurrence_day_cents": 0,
  "total_on_occurrence_day_cents": 0,
  "refunded_cents": 0,
  "remaining_captured_cents": 0,
  "advance_fee": null,
  "estimated_advance_fee": null,
  "paid": "R$ 0,00",
  "original_payment_id": null,
  "double_payment_id": null,
  "per_day_interest": false,
  "per_day_interest_value": null,
  "per_day_interest_cents": 0,
  "interest": null,
  "discount": null,
  "duplicated_invoice_id": null,
  "bank_slip_extra_due": 0,
  "created_at": "07/01, 14:12",
  "created_at_iso": "2025-01-07T14:12:57-03:00",
  "authorized_at": null,
  "authorized_at_iso": null,
  "expired_at": null,
  "expired_at_iso": null,
  "refunded_at": null,
  "refunded_at_iso": null,
  "canceled_at": null,
  "canceled_at_iso": null,
  "protested_at": null,
  "protested_at_iso": null,
  "chargeback_at": null,
  "chargeback_at_iso": null,
  "occurrence_date": null,
  "refundable": null,
  "installments": null,
  "transaction_number": 0,
  "payment_method": null,
  "financial_return_dates": null,
  "bank_slip": {
    "digitable_line": "40192025080700000000500002074177599780000000400",
    "barcode_data": "40195997800000004002025007000000000000207417",
    "barcode": "https://api.example.com/v1/public/invoice/12345678-1234-1234-1234-123456789012-b601/barcode",
    "bank_slip_url": "https://boletos.example.com/v1/public/invoice/12345678-1234-1234-1234-123456789012-b601/bank_slip",
    "bank_slip_pdf_url": "https://boletos.example.com/v1/public/invoice/12345678-1234-1234-1234-123456789012-b601/bank_slip.pdf",
    "bank_slip_bank": 401,
    "bank_slip_status": "pending",
    "bank_slip_error_code": null,
    "bank_slip_error_message": null,
    "recipient_cpf_cnpj": "00000000000000"
  },
  "pix": {
    "qrcode": "https://faturas.example.com/qr_code/12345678-1234-1234-1234-123456789012-b601",
    "qrcode_text": "00020101021226890014br.gov.bcb.pix2567qr.example.com/public/payload/v2/cobv/1234567890ABCDEF1234567890ABCDEF52040000530398654044.005802BR5925Fictícia Instituição6009SAO PAULO62070503***6304A60A",
    "status": "qr_code_created",
    "payer_cpf_cnpj": null,
    "payer_name": null,
    "end_to_end_id": null,
    "end_to_end_refund_id": null,
    "account_number_last_digits": null
  },
  "items": [
    {
      "id": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
      "description": "Descrição do Item",
      "price_cents": 400,
      "quantity": 1,
      "created_at": "2025-01-07T14:12:57-03:00",
      "updated_at": "2025-01-07T14:12:57-03:00",
      "price": "R$ 4,00"
    }
  ],
  "early_payment_discounts": [],
  "split_rules": null
}

3. Cobrar

Com os tokens e ID de fatura em mãos, utilize o endpoint Cobrança Direta com 2 CartõesPOST /v1/charge_two_credit_cards.

Requisição exemplo

curl --request POST \
     --url https://api.iugu.com/v1/charge_two_credit_cards \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '
{
  "api_token": "api_token",
  "invoiced_id": "1234567890ABCDEF1234567890ABCDEF",
  "iugu_credit_card_payment": [
    {
      "token": "Ac2a7578-41a5-4851-a9c2-6b302c75f37e",
      "amount": 500
    },
    {
      "token": "Bc2a7578-41a5-4851-a9c2-6b302c75f37e",
      "amount": 500
    }
  ]
}
'

Retorno exemplo

{
  "invoice": {
    "status": "paid"
  },
  "credit_card_transactions": [
    {
      "reversible": true,
      "last4": "5076",
      "bin": 516292,
      "brand": "Master",
      "token": "token",
      "message": "Transacao capturada com sucesso",
      "success": true,
      "issuer": "BANCO X",
      "invoice_id": "BD9B9AE34DD44B08A75AB245CEA9B78D",
      "LR": "00"
    },
    {
      "reversible": true,
      "last4": "1111",
      "bin": 549354,
      "brand": "Master",
      "token": "token",
      "message": "Transacao capturada com sucesso",
      "success": true,
      "issuer": "BANCO Y",
      "invoice_id": "BD9B9AE34DD44B08A75AB245CEA9B78D",
      "LR": "00"
    }
  ]
}