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 Token — POST
/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 comcredit_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
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 Fatura — POST
/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ões — POST
/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"
}
]
}
Updated 3 days ago