1. Crea una cuenta y un proyecto
Regístrate con tu e-mail y envía un proyecto: nombre, sitio web, facturación mensual media, país y un contacto de Telegram o Discord. Sin documentos de identidad. Recibes al instante una clave de proyecto y un secreto de prueba; el secreto real funciona cuando nuestro equipo aprueba el proyecto.
2. Elige una integración
- Checkout alojado: POST /payments devuelve pay_url. Redirige al usuario, ábrelo en una ventana emergente o pon embed_url en un iframe. Lo más rápido de lanzar.
- Pagos directos: GET /inventory devuelve los ítems del usuario con precios; tú creas el selector y llamas a POST /payments/direct. Control total de la interfaz.
Ambos envían los mismos webhooks y van al mismo saldo.
3. Gestiona el webhook
Configura la URL de tu webhook en la página del proyecto. Cada evento se firma con HMAC-SHA256 sobre "<timestamp>.<raw body>" usando tu secreto whsec_. Verifica la firma, rechaza los timestamps de más de cinco minutos y vuelve a leer el pago con GET /payments/{id} antes de acreditar nada.
Acredita con deposit.in_hold para ir más rápido, o con deposit.success cuando haya pasado la protección de intercambio de Steam.
4. Pruébalo todo
Con tu secreto sk_test_, cada intercambio es simulado: nombres y precios de ítems reales, un saldo de prueba y un botón para cada resultado en el checkout. POST /test/payments/{id}/simulate controla los resultados desde tu código.
5. Pasa a producción
Cuando se apruebe el proyecto, cambia al secreto sk_live_. Los cobros se hacen en USDT, USDC, BTC, ETH, LTC, SEPA, PayPal o Wise desde $25.
La primera llamada a la API
Crea un pago y envía al cliente a pay_url. Todos los endpoints: Referencia de la 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"])Preguntas frecuentes
¿Cuánto tarda la aprobación?
Nuestro equipo revisa cada proyecto a mano. Tus claves de prueba funcionan desde el primer minuto, así que puedes desarrollar mientras esperas.
¿Puedo aceptar ítems de Dota 2 y Rust con el mismo código?
Sí, cambia el parámetro game.
¿Hay alguna comisión?
0% de comisión en pagos, compras y cobros.