> For the complete documentation index, see [llms.txt](https://docs.fast.poker/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.fast.poker/for-operators-dealer-service/credit-to-routing.md).

# Reward routing (credit\_to)

Point all dealer reward weight at a separate wallet while a hot, license-less payer signs and pays gas. The payer does everything on the earner's behalf (signs, pays gas, triggers claims), but the **earner** receives.

## The three wallet roles

| Role                    | Set where               | Holds license? | Loaded on server?  | Receives rewards? |
| ----------------------- | ----------------------- | -------------- | ------------------ | ----------------- |
| Operator / payer        | Dashboard Wallet page   | No (optional)  | Yes, pays gas      | No                |
| L1 fee payer (optional) | `l1_payer_keypair_path` | No             | Yes                | No                |
| Credited earner         | `credit_to`             | **Yes**        | **No, stays cold** | **Yes**           |

## Why use it

Keep the earning (licensed) wallet **cold and off the server**. Run a hot, throwaway, license-less payer that only holds gas.

The on-chain claim pays the license-constrained operator wallet and is permissionless in the caller, so the cold earner never has to sign. If the hot payer is compromised, the attacker gets gas money, not your dealer revenue or your license.

## Setup

1. Hold an active dealer license on a **cold wallet**. New issuance is closed; a wrapped license must be unwrapped before it qualifies for rewards.
2. On the dashboard **License** page, paste that wallet into **Credit rewards to (license wallet)**. This saves `config.credit_to`, live-validates that the wallet holds a license, and shows a verdict confirming it is licensed and eligible to earn.
3. Fund the **payer** wallet with SOL for gas. It earns nothing.
4. Done. The earner stays cold; the payer runs the crank.

If the field shows `⚠ No dealer license found`, the credited weight accrues but pays nothing at settle. Fix the wallet before relying on it.

## Same-wallet mode

Leave `credit_to` **empty** and the paying wallet itself must hold the license. This is the simple default: earner == payer, one wallet does everything. The dashboard shows `Empty → rewards credit to the paying wallet itself`.

## What routes where

| Flow                                                                                                      | Routes to              | Status    |
| --------------------------------------------------------------------------------------------------------- | ---------------------- | --------- |
| Deal-loop `CrankAction` weight                                                                            | `credit_to`            | Live      |
| SNG setup / reuse credit (`finalize_sng_match`, `reset_sng_table`, `prepare_sng_match`, `seat_from_pool`) | `credit_to`            | Live      |
| Creator carry                                                                                             | stored `table.creator` | See below |
| SOL tips                                                                                                  | the signer             | Live      |

**Creator carry follows the stored `table.creator`.** Tables created *before* you set `credit_to` keep their original creator. Tables created *with* `credit_to` carry to `credit_to`.

## Caveats

* **Auto-forward only runs when the payer is also the earner.** It forwards the paying wallet's own surplus, so it stays inactive while `credit_to` points at a separate wallet.
* **The earnings view and the Claim button operate on the earner.** The payer signs, pays gas, and triggers the claim; the earner receives.
* **The claim settles SOL rewards.**

See [Operator weight and creator carry](/for-operators-dealer-service/operator-weight-and-carry.md) and the config reference at [config.md#credit\_to](/for-operators-dealer-service/config.md#credit_to).
