POST
/pagarme-create-order
https://auth.kleevopay.com/functions/v1/pagarme-create-order
Cria o pedido e processa o pagamento (cartão, Pix ou boleto).
🔑 Autenticação: nenhuma. Limite de requisições por IP.
Corpo da requisição
Principais campos:
| Campo | Tipo | Obrigatório | Descrição |
sellerId | string | sim | ID da sua loja na Kleevo |
paymentMethod | credit_card | pix | boleto | sim | Forma de pagamento |
amountCents | number | sim | Valor total em centavos |
currency | string | sim | Sempre “BRL” |
installments | number | não | Parcelas do cartão (1 até maxInstallments) |
cardToken | string | se cartão | Token gerado no navegador com a publicKey — nunca envie o número do cartão para seu servidor |
items | array | sim | [{ “productId”, “quantity” }] |
customer | objeto | sim | name, email, document (CPF/CNPJ), phone |
address / billingAddress | objeto | condicional | Obrigatório para produto físico e sempre para cartão |
shipping | objeto | condicional | Opção de frete escolhida (veja Calcular frete) |
checkoutAttemptId | string | recomendado | Identificador único da tentativa — evita cobrança duplicada se você reenviar a requisição |
Exemplo de requisição
cURL
curl --request POST \
--url https://auth.kleevopay.com/functions/v1/pagarme-create-order \
--header 'content-type: application/json' \
--data '{
"sellerId": "uuid",
"paymentMethod": "pix",
"amountCents": 15000,
"currency": "BRL",
"installments": 1,
"items": [{ "productId": "uuid", "quantity": 1 }],
"customer": {
"name": "Nome do cliente",
"email": "cliente@email.com",
"document": "00000000000",
"phone": "11999999999"
},
"address": {},
"shipping": {},
"checkoutAttemptId": "attempt-uuid"
}'
JavaScript
const response = await fetch(
'https://auth.kleevopay.com/functions/v1/pagarme-create-order',
{
method: 'POST',
headers: { 'content-type': 'application/json' },
body: JSON.stringify({
sellerId: 'uuid',
paymentMethod: 'pix',
amountCents: 15000,
currency: 'BRL',
installments: 1,
items: [{ productId: 'uuid', quantity: 1 }],
customer: {
name: 'Nome do cliente',
email: 'cliente@email.com',
document: '00000000000',
phone: '11999999999',
},
address: {},
shipping: {},
checkoutAttemptId: 'attempt-uuid',
}),
}
)
const order = await response.json()
Python
import requests
response = requests.post(
"https://auth.kleevopay.com/functions/v1/pagarme-create-order",
headers={"content-type": "application/json"},
json={
"sellerId": "uuid",
"paymentMethod": "pix",
"amountCents": 15000,
"currency": "BRL",
"installments": 1,
"items": [{"productId": "uuid", "quantity": 1}],
"customer": {
"name": "Nome do cliente",
"email": "cliente@email.com",
"document": "00000000000",
"phone": "11999999999",
},
"address": {},
"shipping": {},
"checkoutAttemptId": "attempt-uuid",
},
)
order = response.json()
Resposta 200 (aprovado)
{
"orderId": "uuid",
"status": "paid",
"statusToken": "token-opaco-para-consultar-status",
"paymentMethod": "pix",
"pix": { "qrCode": "...", "qrCodeUrl": "...", "expiresAt": "..." }
}
Resposta 400 (recusado)
{ "error": "Cartão recusado pela operadora.", "code": "PAYMENT_DECLINED", "retryable": true, "orderId": "uuid" }
💡 Importante: o valor, os produtos e o frete são sempre recalculados no nosso servidor a partir do que está cadastrado na sua loja. O
amountCents enviado é apenas conferido contra esse recálculo — ele nunca é a fonte da verdade do valor cobrado. Reenviar a mesma requisição com o mesmo checkoutAttemptId nunca gera uma segunda cobrança.🚫 Respostas de erro: seguem o formato padrão { “error”: “…” }, com code e retryable adicionais em recusas de pagamento.
