> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sellauth.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Skinloop

> Let buyers pay with CS2 and Rust skins through your own Skinloop account.

Skinloop lets buyers pay with skins from their Steam inventory. The buyer picks Skinloop at checkout, chooses skins on Skinloop's page, and Skinloop handles the Steam trade. SellAuth delivers the order once Skinloop confirms the payment. Funds settle to your Skinloop balance, and SellAuth adds no fee.

Setup takes two values from Skinloop, an API key and a webhook signing secret. You also copy two values from SellAuth into Skinloop, because Skinloop can't be configured through its API.

> [!WARNING]
>
> Finish onboarding in Skinloop first by adding your business details and policy links under **Settings**. Skinloop keeps processing locked until you do.

## Settings

**API key.** Created in Skinloop under **API Keys & Webhooks**. It needs the `checkout:create` and `checkout:read` scopes. The games allowed on the key decide what buyers can pay with on your shop.

**Webhook signing secret.** Starts with `whsec_`. Skinloop shows it once, when you add the webhook.

**Checkout redirect origin.** Shown on the SellAuth payment method page for you to copy. It's `https://api.sellauth.com` for every shop, so changing your shop's domain later doesn't affect it.

**Webhook URL.** Shown on the SellAuth payment method page for you to copy. It's unique to your shop.

## Connect your account

**1. Create the API key**

In Skinloop, open **API Keys & Webhooks** and click **Create API Key**. Name it `SellAuth`, tick `checkout:create` and `checkout:read`, and leave the other scopes off. Under **Allowed games**, keep the games you want to accept. Copy the key, since Skinloop only shows it once.

**2. Approve the redirect origin**

On the same page, add `https://api.sellauth.com` under **Checkout Redirect Origins**. Buyers return through this address after paying. You can leave **Checkout Redirect Defaults** empty, because SellAuth sends the return URLs with every checkout.

**3. Add the webhook**

In SellAuth, create a Skinloop payment method and copy its **Webhook URL**. In Skinloop, click **Add Webhook** under **Webhooks**, paste the URL into **Endpoint URL** and save. Make sure it receives the payment pending, completed and reverted events. Copy the signing secret, since Skinloop only shows it once.

**4. Paste both values and save**

Put the API key and the signing secret on the SellAuth payment method page and save.

> [!NOTE]
>
> When you save a new API key, SellAuth tests it with a \$1.00 Skinloop checkout that nobody can pay and that expires in five minutes. If Skinloop refuses it, the error tells you what to fix and nothing is saved. You may see this checkout in your Skinloop dashboard.

## Test it

Skinloop has no test mode, so testing means a real trade. Buy something cheap from your own shop and pay with a Rust skin, since Rust has no trade hold and you'll see the result right away. Check that the invoice completes and delivers once.

Then start a second order and cancel it on Skinloop's page. Nothing should be delivered.

## How payments work

1. The buyer picks Skinloop. SellAuth creates a checkout with your API key and sends the buyer to Skinloop's page.
2. The buyer chooses skins worth at least the order total and completes the Steam trade.
3. The invoice shows **Confirming** while the trade is verified.
4. Once Skinloop confirms the payment, SellAuth marks the invoice paid and delivers the order.

A buyer who abandons Skinloop's page can come back to the order page and continue. SellAuth opens a new Skinloop checkout if the previous one expired.

## CS2 trade holds

Steam can hold a CS2 trade for up to 8 days, and Skinloop only completes the payment once the hold clears. The invoice stays **Confirming** until then, and the buyer sees a note explaining the wait. Rust payments usually finish in minutes.

You don't need to change anything for this. An invoice with a trade in progress doesn't expire.

Stock isn't reserved during a hold. If the last unit sells to someone else in the meantime, the item is marked out of stock when the hold clears, and you can restock it or refund the buyer. To avoid holds entirely, allow only Rust on your API key.

## Fees and limits

All of the [shared method settings](https://docs.sellauth.com/guides/payment-methods.md#settings-shared-by-every-method) apply, including a percentage or fixed fee or discount for choosing Skinloop.

Skinloop charges in US dollars. If your shop or a product uses another currency, SellAuth converts the total to USD when the checkout opens.

Skinloop charges no transaction fee. Payouts from your Skinloop balance are paid in USDT on Ethereum, with a 4% payout fee, a $2.00 network fee and a $10.00 minimum, after a manual review. Check [Skinloop's payout terms](https://docs.skinloop.io/payouts) for current details.

A buyer may pick skins worth more than the order total. The order is delivered as normal, and the extra value stays with you in Skinloop. SellAuth doesn't refund it or credit it to the buyer.

Subscriptions can't be paid with Skinloop.

## Reversals

If Skinloop reverses a payment during a hold, the invoice fails and nothing is delivered. If it reverses a payment after delivery, the invoice moves to **Charged back** and the reversal appears under [disputes](https://docs.sellauth.com/guides/disputes.md), where your dispute automations apply. There's no evidence to submit, because Skinloop has already made the decision. Contact Skinloop support if you think it's wrong.

## Troubleshooting

**Saving says the redirect origin was refused.** Add `https://api.sellauth.com` under **Checkout Redirect Origins** in Skinloop, exactly as written, then save again.

**Saving says the API key was rejected.** The key was copied incompletely or has been revoked. Skinloop only shows a key once, so create a new one if needed.

**Saving says the key can't create or read checkouts.** Give the key both `checkout:create` and `checkout:read` and allow at least one game. Skinloop doesn't add access to an existing key, so create a new key and paste it in.

**Buyers can't open the Skinloop page.** Your shop gets a notification with Skinloop's reason. The usual causes are a revoked key, a removed redirect origin, or onboarding not being finished.

**Payments complete but orders stay in Confirming or Pending.** The webhook isn't reaching SellAuth. Check that the endpoint in Skinloop uses your **Webhook URL** and that the signing secret in SellAuth matches. SellAuth also checks open invoices with Skinloop every few minutes, so orders normally catch up, but reversals are only reported through the webhook, so fix it even if orders seem fine.

**A CS2 order has been in Confirming for days.** This is the Steam trade hold, and it clears on its own within 8 days.

**You get a notification that Skinloop needs review.** Skinloop couldn't determine the outcome of the trade. Contact Skinloop support and don't take another payment for that order. The invoice stays in Confirming until it's resolved.

## Next steps

> [card] [Supported payment methods](https://docs.sellauth.com/guides/payment-methods.md)
>
> Everything else you can enable.

> [card] [How checkout works](https://docs.sellauth.com/guides/checkout.md)
>
> What buyers see once Skinloop is live.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.