API de depósito de skins para CS2, Dota 2 y Rust
Acepta skins de CS2, Dota 2 y Rust con unas pocas llamadas REST. Checkout alojado si quieres rapidez, pagos directos si quieres tu propia interfaz.
Todo lo que cubre la integración
Pagos alojados
POST /payments devuelve pay_url y embed_url. Redirección, ventana emergente o iframe.
Pagos directos
GET /inventory devuelve los ítems del cliente con precios; POST /payments/direct envía el intercambio.
Webhooks firmados
HMAC-SHA256 sobre el timestamp y el cuerpo, tolerancia de 5 minutos, reintentos durante unos dos días.
Modo de prueba
Claves sk_test_, intercambios simulados, POST /test/payments/{id}/simulate para cada resultado.
OpenAPI 3.1
Importa /api/openapi.json en Postman, Insomnia o tu generador de código.
Autenticación con dos cabeceras
X-Project-Key + X-Project-Secret, lista de IP permitidas opcional, secretos guardados con hash.
Cómo funciona
Consigue tus claves
Regístrate y envía un proyecto; las claves de prueba funcionan al instante.
Crear un pago
Un POST con tu id de pedido.
Gestiona el webhook
Verifica la firma, vuelve a leer el pago y acredita a tu usuario.
Crear un pago
Una llamada devuelve el enlace de checkout. Referencia completa con 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"])Una integración, tres juegos
- Checkout alojado o tu propio selector de ítems con la API
- Precios en vivo para cada ítem, en 16 monedas
- Una oferta de intercambio por pago, que tu cliente acepta en Steam
- Webhooks firmados para cada estado, con reintentos durante dos días
- Modo de prueba con intercambios simulados y saldo de prueba
- Cobros en USDT, USDC, BTC, ETH, LTC, SEPA, PayPal o Wise




Preguntas frecuentes
¿Hay un SDK?
La API es lo bastante pequeña para llamarla directamente; la referencia tiene ejemplos en cURL, PHP, Node.js y Python, y el archivo OpenAPI genera clientes para cualquier lenguaje.
¿Cuáles son los límites de solicitudes?
600 solicitudes por minuto por proyecto y 1200 por IP.
¿Los pagos son idempotentes?
Sí. order_id es único por proyecto y modo; una repetición responde 409.