curl --request POST \
--url https://api.malga.io/v1/purchases \
--header 'Content-Type: application/json' \
--header 'X-Api-Key: <api-key>' \
--header 'X-Client-Id: <api-key>' \
--header 'X-Idempotency-Key: <x-idempotency-key>' \
--data '
{
"amount": 15000,
"currency": "BRL",
"capture": true,
"merchantId": "3b8c1f2a-4d5e-6f70-8192-a3b4c5d6e7f8",
"orderId": "pedido-1001",
"metadata": {
"channel": "checkout"
},
"splitRules": [
{
"sellerId": "11111111-1111-1111-1111-111111111111",
"percentage": 60,
"processingFee": true,
"liable": true
},
{
"sellerId": "22222222-2222-2222-2222-222222222222",
"percentage": 40,
"processingFee": false,
"liable": false
}
],
"payments": [
{
"amount": 10000,
"paymentMethod": {
"paymentType": "credit",
"installments": 1
},
"paymentSource": {
"sourceType": "card",
"cardId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"cardCvv": "123"
}
},
{
"amount": 5000,
"paymentMethod": {
"paymentType": "credit",
"installments": 3
},
"paymentSource": {
"sourceType": "token",
"tokenId": "9f8e7d6c-5b4a-3928-1706-5e4d3c2b1a09"
}
}
]
}
'{
"id": "550e8400-e29b-41d4-a716-446655440000",
"merchantId": "3b8c1f2a-4d5e-6f70-8192-a3b4c5d6e7f8",
"amount": 15000,
"currency": "BRL",
"capture": true,
"status": "pending",
"orderId": "pedido-1001",
"metadata": {
"channel": "checkout"
},
"splitRules": [
{
"sellerId": "11111111-1111-1111-1111-111111111111",
"percentage": 60,
"processingFee": true,
"liable": true
},
{
"sellerId": "22222222-2222-2222-2222-222222222222",
"percentage": 40,
"processingFee": false,
"liable": false
}
],
"payments": [
{
"slotIndex": 0,
"amount": 10000,
"paymentMethod": {
"paymentType": "credit",
"installments": 1
},
"status": "pending",
"refundedAmount": 0,
"paymentSource": {
"sourceType": "card",
"cardId": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
},
"splitRules": [
{
"sellerId": "11111111-1111-1111-1111-111111111111",
"percentage": 60,
"processingFee": true,
"liable": true
},
{
"sellerId": "22222222-2222-2222-2222-222222222222",
"percentage": 40,
"processingFee": false,
"liable": false
}
]
},
{
"slotIndex": 1,
"amount": 5000,
"paymentMethod": {
"paymentType": "credit",
"installments": 3
},
"status": "pending",
"refundedAmount": 0,
"paymentSource": {
"sourceType": "token",
"tokenId": "9f8e7d6c-5b4a-3928-1706-5e4d3c2b1a09"
},
"splitRules": [
{
"sellerId": "11111111-1111-1111-1111-111111111111",
"percentage": 60,
"processingFee": true,
"liable": true
},
{
"sellerId": "22222222-2222-2222-2222-222222222222",
"percentage": 40,
"processingFee": false,
"liable": false
}
]
}
],
"createdAt": "2026-07-27T18:00:00Z",
"updatedAt": "2026-07-27T18:00:00Z",
"operation": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"type": "authorize",
"status": "pending"
}
}Criar uma Venda com múltiplos cartões
Cria uma Venda paga com 2 ou 3 cartões de crédito e responde 202 com status: pending. O processamento é assíncrono: consulte GET /v1/purchases/{id} para acompanhar o desfecho.
O campo capture define o que acontece depois das autorizações:
capture: false: a Venda permanecependingcom os cartõespre_authorized. Você captura emPOST /v1/purchases/{id}/capture.capture: true: a Malga captura automaticamente os cartões pré-autorizados. Se todos os cartões já estiveremauthorized, a Venda vai direto parapaid.
Envie o header X-Idempotency-Key em toda criação. Reenviar a mesma chave com o mesmo corpo devolve 202 com o estado atual da Venda. A mesma chave com corpo diferente, ou uma chave já usada em captura ou cancelamento, devolve 409 com idempotency_key_payload_mismatch.
Informe cada cartão por referência, com cardId ou tokenId. Dados de cartão em claro (PAN) em paymentSource, metadata ou fraudAnalysis devolvem 422 com pan_not_allowed.
curl --request POST \
--url https://api.malga.io/v1/purchases \
--header 'Content-Type: application/json' \
--header 'X-Api-Key: <api-key>' \
--header 'X-Client-Id: <api-key>' \
--header 'X-Idempotency-Key: <x-idempotency-key>' \
--data '
{
"amount": 15000,
"currency": "BRL",
"capture": true,
"merchantId": "3b8c1f2a-4d5e-6f70-8192-a3b4c5d6e7f8",
"orderId": "pedido-1001",
"metadata": {
"channel": "checkout"
},
"splitRules": [
{
"sellerId": "11111111-1111-1111-1111-111111111111",
"percentage": 60,
"processingFee": true,
"liable": true
},
{
"sellerId": "22222222-2222-2222-2222-222222222222",
"percentage": 40,
"processingFee": false,
"liable": false
}
],
"payments": [
{
"amount": 10000,
"paymentMethod": {
"paymentType": "credit",
"installments": 1
},
"paymentSource": {
"sourceType": "card",
"cardId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"cardCvv": "123"
}
},
{
"amount": 5000,
"paymentMethod": {
"paymentType": "credit",
"installments": 3
},
"paymentSource": {
"sourceType": "token",
"tokenId": "9f8e7d6c-5b4a-3928-1706-5e4d3c2b1a09"
}
}
]
}
'{
"id": "550e8400-e29b-41d4-a716-446655440000",
"merchantId": "3b8c1f2a-4d5e-6f70-8192-a3b4c5d6e7f8",
"amount": 15000,
"currency": "BRL",
"capture": true,
"status": "pending",
"orderId": "pedido-1001",
"metadata": {
"channel": "checkout"
},
"splitRules": [
{
"sellerId": "11111111-1111-1111-1111-111111111111",
"percentage": 60,
"processingFee": true,
"liable": true
},
{
"sellerId": "22222222-2222-2222-2222-222222222222",
"percentage": 40,
"processingFee": false,
"liable": false
}
],
"payments": [
{
"slotIndex": 0,
"amount": 10000,
"paymentMethod": {
"paymentType": "credit",
"installments": 1
},
"status": "pending",
"refundedAmount": 0,
"paymentSource": {
"sourceType": "card",
"cardId": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
},
"splitRules": [
{
"sellerId": "11111111-1111-1111-1111-111111111111",
"percentage": 60,
"processingFee": true,
"liable": true
},
{
"sellerId": "22222222-2222-2222-2222-222222222222",
"percentage": 40,
"processingFee": false,
"liable": false
}
]
},
{
"slotIndex": 1,
"amount": 5000,
"paymentMethod": {
"paymentType": "credit",
"installments": 3
},
"status": "pending",
"refundedAmount": 0,
"paymentSource": {
"sourceType": "token",
"tokenId": "9f8e7d6c-5b4a-3928-1706-5e4d3c2b1a09"
},
"splitRules": [
{
"sellerId": "11111111-1111-1111-1111-111111111111",
"percentage": 60,
"processingFee": true,
"liable": true
},
{
"sellerId": "22222222-2222-2222-2222-222222222222",
"percentage": 40,
"processingFee": false,
"liable": false
}
]
}
],
"createdAt": "2026-07-27T18:00:00Z",
"updatedAt": "2026-07-27T18:00:00Z",
"operation": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"type": "authorize",
"status": "pending"
}
}Headers
Chave de idempotência da criação. Ausente, a API devolve 422 com invalid_request
1 - 255Body
Dados para criar uma Venda com 2 ou 3 cartões
Valor total em centavos. Deve ser igual à soma de payments[].amount
x >= 200Moeda da Venda. Somente BRL
BRL Define o que acontece depois das autorizações. Vale para todos os cartões da Venda.
false: a Venda permanecependingcom os cartõespre_authorized, até você chamarPOST /v1/purchases/{id}/capture.true: a Malga captura automaticamente os cartões pré-autorizados. Se todos já estiveremauthorized, a Venda vai direto parapaid.
Identificador do merchant da Venda
Cartões da Venda, de 2 a 3
2 - 3 elementsShow child attributes
Show child attributes
Identificador do pedido no seu sistema
Identificador de uma Session de origem, apenas para rastreio. Não cria vínculo com a Session e permite filtrar a listagem
Pares de chave e valor livres, devolvidos na resposta. Faz parte da comparação de idempotência. Dados de cartão em claro devolvem 422 com pan_not_allowed
Regras de split da Venda. Cada cartão recebe a parcela correspondente em payments[].splitRules
Show child attributes
Show child attributes
Dados de antifraude da Venda, informados uma única vez. A Malga repete o objeto em cada cobrança da Venda. O campo faz parte da comparação de idempotência e nunca é retornado nas respostas, por conter dados pessoais do comprador. Dados de cartão em claro devolvem 422 com pan_not_allowed.
Show child attributes
Show child attributes
Response
Venda aceita com status: pending, ou repetição idempotente (mesma chave e mesmo corpo) com o estado atual da Venda. Na primeira resposta, operation traz type: authorize e status: pending; na repetição, operation pode ser omitido. payments[].card aparece quando a Malga já conhece a bandeira e os últimos quatro dígitos do cartão. pendingReview não é retornado na criação.
Venda paga com 2 ou 3 cartões
Identificador da Venda
Identificador do merchant da Venda
Valor total da Venda em centavos
x >= 200BRL Indica o modo de captura informado na criação. false exige captura explícita; true captura automaticamente
Status da Venda
pending, paid, failed, cancelled 2 - 3 elementsShow child attributes
Show child attributes
Sinal de que a Venda precisa de revisão. A Venda permanece pending e você deve interromper o polling automático
Show child attributes
Show child attributes
Operação pending ou processing em andamento na Venda (a mais recente). Omitido quando não há operação ativa. Nas respostas 202, a operação aceita vem em operation
Show child attributes
Show child attributes
Identificador do pedido no seu sistema
Session de origem informada na criação
Metadados informados na criação. Omitido quando não enviados
Regras de split informadas na criação. Omitido quando não enviadas
Show child attributes
Show child attributes
Operação assíncrona aceita por esta chamada. Na criação, vem com type: authorize e pode ser omitida numa repetição idempotente
Show child attributes
Show child attributes
Was this page helpful?