Documentation Index
Fetch the complete documentation index at: https://docs.malga.io/llms.txt
Use this file to discover all available pages before exploring further.
O serviço de Sessões permite criar pedidos e links de pagamento processados pela Malga. Ele também pode ser combinado com o Malga Checkout para aumentar a segurança da implementação no front-end, usando uma publicKey de escopo restrito por sessão.
Existem dois modos principais:
- Sessão 1:1 (legado): quando
maxPayments não é enviado na criação, a sessão segue o fluxo de um único pagamento.
- Sessão 1:N: quando
maxPayments é enviado na criação, a sessão permite múltiplos pagamentos no mesmo link, com limite finito (1 a 99999) ou ilimitado (-1).
Você pode criar sessões com Pix, boleto, cartão de crédito e demais métodos aceitos pelo endpoint de criação. Para consultar o contrato completo, veja Criar nova sessão.
Utilizando as sessões
Para utilizar o serviço de Sessões, crie uma sessão definindo itens, valor, métodos de pagamento e, quando necessário, maxPayments. Depois, use a publicKey retornada na criação para chamar o endpoint de pagamento da sessão com uma chave de escopo restrito.
O fluxo conceitual desta seção se aplica a sessões 1:1 e 1:N. Em sessões 1:N,
cada chamada de pagamento aceita representa uma tentativa individual dentro da
capacidade configurada em maxPayments.
Criando uma sessão
Realize a criação usando POST /v1/sessions. A resposta completa retorna a sessão, a publicKey de escopo restrito e, quando aplicável, o objeto multiplePayments com a disponibilidade agregada do link.
curl --location --request POST 'https://api.malga.io/v1/sessions' \
--header 'X-Client-Id: <YOUR_CLIENT_ID>' \
--header 'X-Api-Key: <YOUR_API_KEY>' \
--header 'Content-Type: application/json' \
--data-raw '{
"amount": 100,
"name": "Pedido 1",
"merchantId": "<YOUR_MERCHANT_ID>",
"dueDate": "2026-02-20T23:59:59.000Z",
"createLink": true,
"maxPayments": 5,
"paymentMethods": [
{
"paymentType": "pix",
"expiresIn": 30
}
],
"items": [
{
"name": "Item",
"description": "Item do carrinho",
"unitPrice": 1000,
"quantity": 1,
"tangible": false
}
]
}'
< HTTP/2 200
{
"id": "c1db83fa-723c-4e1f-9722-bc19d1be6791",
"name": "Pedido 1",
"status": "created",
"isActive": true,
"clientId": "39d2d314-5412-431a-b34b-74f9f0fbe7e1",
"orderId": null,
"amount": 100,
"currency": "BRL",
"capture": true,
"merchantId": "<YOUR_MERCHANT_ID>",
"dueDate": "2026-02-20T23:59:59.000Z",
"description": null,
"statementDescriptor": null,
"items": [
{
"name": "Item 1",
"description": "Item do carrinho",
"unitPrice": 1000,
"quantity": 1,
"tangible": false
}
],
"paymentMethods": [
{
"paymentType": "pix",
"expiresIn": 30
}
],
"paymentLink": "https://link.malga.io/c1db83fa-723c-4e1f-9722-bc19d1be6791",
"multiplePayments": {
"allow": true,
"maxPayments": 5,
"paymentCount": 0,
"pendingCount": 0,
"status": "active"
},
"createdAt": "2026-02-20T09:28:45.000Z",
"updatedAt": "2026-02-20T09:28:45.000Z",
"publicKey": "8be71cdf-01dc-4b1a-823a-4c58be6e4cf1"
}
Veja todos os campos aceitos em Criar nova sessão.
Pagando uma sessão
Pague uma sessão usando POST /v1/sessions/{id}/charge. Use a publicKey retornada na criação da sessão no cabeçalho X-Api-Key.
Em sessões 1:N, a resposta deste endpoint representa a cobrança criada para uma tentativa de pagamento. Para acompanhar a disponibilidade agregada do link após o pagamento, consulte Recuperar detalhes de uma sessão.
curl --location --request POST 'https://api.malga.io/v1/sessions/{id}/charge' \
--header 'X-Client-Id: <YOUR_CLIENT_ID>' \
--header 'X-Api-Key: <PUBLIC_KEY_DA_SESSÃO>' \
--header 'Content-Type: application/json' \
--data-raw '{
"paymentMethod": {
"paymentType": "credit",
"installments": 1
},
"paymentSource": {
"sourceType": "card",
"card": {
"cardNumber": "5261424250184574",
"cardCvv": "321",
"cardExpirationDate": "06/2028",
"cardHolderName": "JOAO DA SILVA"
}
}
}'
< HTTP/2 201
{
"id": "148d5db0-f1c3-439f-902d-f1f268086e1d",
"status": "pending",
"clientId": "39d2d314-5412-431a-b34b-74f9f0fbe7e1",
"orderId": "b84b7694-d22f-4083-bee7-c1274b16eb4a",
"customerId": "eb70b146-85fd-4100-8fd4-a4dbb647aed3",
"amount": 100,
"originalAmount": 100,
"currency": "BRL",
"capture": true,
"merchantId": "9930c8d9-a7a8-4039-9faf-3715ad87baf8",
"statementDescriptor": "LOJA JOAO",
"paymentMethod": {
"paymentType": "credit",
"installments": 1
},
"paymentSource": {
"sourceType": "card",
"cardId": "148d5db0-f1c3-439f-902d-f1f268086e1d"
},
"transactionRequests": [
{
"id": "78601913-a176-4d71-b7e8-abb6fc49a340",
"idempotencyKey": "fafe857b176e45d6b12e32fcaf228996",
"providerId": "2c3b57d8-ee43-4b19-bc8a-949a88c51df1",
"providerType": "STRIPE",
"transactionId": "ch_3JYE7MHjGFBGEeiP0lfTD3Ob",
"amount": 100,
"authorizationNsu": "1cc8391c-f0d5-4b7a-9fcf-653cea26be13",
"requestStatus": "success",
"requestType": "authorization",
"responseTs": "2633ms",
"createdAt": "2021-08-12T16:08:39.536Z",
"updatedAt": "2021-08-12T16:08:42.212Z",
"providerAuthorization": {
"networkAuthorizationCode": "00",
"networkResponseCode": ""
}
}
],
"createdAt": "2022-10-25T22:49:06.588Z"
}
Veja todos os campos aceitos em Pagar uma sessão.
Fluxo 1:N e acompanhamento de status
Em sessões 1:N, o status agregado do link não deve ser inferido apenas pela resposta de uma cobrança individual. Acompanhe a sessão completa por GET /v1/sessions/{id} e use o histórico apenas como trilha de eventos.
| Campo | Como interpretar |
|---|
multiplePayments.allow | Indica se a sessão foi criada como 1:N. |
multiplePayments.maxPayments | Indica o limite configurado. -1 significa ilimitado e null indica sessão 1:1. |
multiplePayments.paymentCount | Quantidade de pagamentos já autorizados no link. |
multiplePayments.pendingCount | Quantidade de pagamentos pendentes de confirmação assíncrona, como Pix em aberto. |
multiplePayments.status | Disponibilidade conceitual do link para receber uma próxima cobrança. |
Para utilizar o Malga Checkout com o serviço de Sessões de uma maneira mais segura, crie uma sessão pelo seu back-end e use a publicKey de escopo restrito na aplicação front-end. Assim, você configura o checkout sem expor a publicKey de escopo mais amplo usada normalmente.
O fluxo com Malga Checkout vale para sessões 1:1 e 1:N. Em sessões 1:N, a
mesma sessão pode continuar disponível após uma tentativa aprovada, conforme o
limite configurado em maxPayments e o estado retornado em
multiplePayments.
Depois de criar a sessão, use o id dela e a publicKey retornada para configurar o Malga Checkout. Para manter a integração segura, recomendamos que o front-end tenha acesso apenas à chave pública da sessão.
<html lang="pt-BR">
<head>
<meta charset="utf-8" />
<meta
name="viewport"
content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=5.0"
/>
<script
type="module"
src="https://unpkg.com/@malga-checkout/core@latest/dist/malga-checkout/malga-checkout.esm.js"
></script>
<title>Malga Checkout Components</title>
</head>
<body>
<main>
<malga-checkout
sandbox="false"
public-key="<PUBLIC_KEY_DA_SESSÃO>"
client-id="<YOUR_CLIENT_ID>"
session-id="<ID_DA_SESSÃO>"
>
</malga-checkout>
</main>
<script>
const malgaCheckout = document.querySelector("malga-checkout");
malgaCheckout.addEventListener("paymentSuccess", (data) => {
// Suas especificações aqui
});
malgaCheckout.addEventListener("paymentFailed", (error) => {
// Suas especificações aqui
});
</script>
</body>
</html>