1. Crie uma conta e um projeto
Cadastre-se com seu e-mail e envie um projeto: nome, site, faturamento mensal médio, país e um contato no Telegram ou Discord. Sem documentos de identidade. Você recebe na hora uma chave de projeto e um segredo de teste; o segredo live funciona assim que nossa equipe aprovar o projeto.
2. Escolha uma integração
- Checkout hospedado — POST /payments retorna pay_url. Redirecione o usuário, abra em um pop-up ou coloque o embed_url em um iframe. O jeito mais rápido de lançar.
- Pagamentos diretos — GET /inventory retorna os itens do usuário com preços; você monta o seletor e chama POST /payments/direct. Controle total da interface.
Os dois enviam os mesmos webhooks e caem no mesmo saldo.
3. Processe o webhook
Defina a URL do webhook na página do projeto. Cada evento é assinado com HMAC-SHA256 sobre "<timestamp>.<raw body>" usando seu segredo whsec_. Verifique a assinatura, recuse timestamps com mais de cinco minutos e depois leia o pagamento de novo com GET /payments/{id} antes de creditar qualquer coisa.
Credite no deposit.in_hold para ter velocidade, ou no deposit.success depois que a proteção de troca do Steam terminar.
4. Teste tudo
Com seu segredo sk_test_, toda troca é simulada: nomes e preços reais de itens, um saldo de teste e um botão para cada resultado no checkout. POST /test/payments/{id}/simulate controla os resultados pelo seu código.
5. Entre em produção
Quando o projeto for aprovado, troque para o segredo sk_live_. Os saques saem em USDT, USDC, BTC, ETH, LTC, SEPA, PayPal ou Wise a partir de $25.
A primeira chamada de API
Crie um pagamento e envie o cliente para pay_url. Todos os endpoints: Referência da API.
curl -X POST 'https://skinplata.com/api/v1/payments' \
-H 'X-Project-Key: pk_your_key' \
-H 'X-Project-Secret: sk_test_your_secret' \
-H 'Content-Type: application/json' \
-d '{"order_id":"inv-1042","game":"cs2","currency":"usd","min_amount":5,"metadata":{"user_id":"8812"}}'<?php
$ch = curl_init('https://skinplata.com/api/v1/payments');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'X-Project-Key: pk_your_key',
'X-Project-Secret: sk_test_your_secret',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'order_id' => 'inv-1042',
'game' => 'cs2',
'currency' => 'usd',
'min_amount' => 5,
'metadata' => [
'user_id' => '8812',
],
]),
]);
$response = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);const res = await fetch('https://skinplata.com/api/v1/payments', {
method: 'POST',
headers: {
'X-Project-Key': 'pk_your_key',
'X-Project-Secret': 'sk_test_your_secret',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"order_id": "inv-1042",
"game": "cs2",
"currency": "usd",
"min_amount": 5,
"metadata": {
"user_id": "8812"
}
}),
});
const data = await res.json();
if (!res.ok) throw new Error(data.error.message);import requests
r = requests.post(
"https://skinplata.com/api/v1/payments",
headers={"X-Project-Key": "pk_your_key", "X-Project-Secret": "sk_test_your_secret"},
json={
"order_id": "inv-1042",
"game": "cs2",
"currency": "usd",
"min_amount": 5,
"metadata": {
"user_id": "8812"
}
},
timeout=30,
)
data = r.json()
if not r.ok:
raise RuntimeError(data["error"]["message"])Perguntas frequentes
Quanto tempo leva a aprovação?
Nossa equipe revisa cada projeto manualmente. Suas chaves de teste funcionam desde o primeiro minuto, então você pode desenvolver enquanto espera.
Posso aceitar itens de Dota 2 e Rust com o mesmo código?
Sim — basta mudar o parâmetro game.
Tem taxa?
Taxa de 0% em pagamentos, compras e saques.