> For the complete documentation index, see [llms.txt](https://doc.var-fivem.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://doc.var-fivem.com/coins-shop/configuration/export.md).

# Export

## Public exports

All exports are server-side and live in `server/exports.lua`. They can be called from any other resource on your server.

### AddCoins

Add coins to a player's account.

```lua
exports['Var-Coins-Shop']:AddCoins(identifier, 500, {
  actor = "admin",
  reason = "event_reward"
})
```

| Argument     | Type   | Description                                          |
| ------------ | ------ | ---------------------------------------------------- |
| `identifier` | string | Any accepted identifier (see below)                  |
| `amount`     | number | Amount of coins to add                               |
| `context`    | table? | Optional metadata logged in `coins_shop_balance_log` |

**Returns:** new balance (number).

### RemoveCoins

```lua
exports['Var-Coins-Shop']:RemoveCoins(identifier, 100, { reason = "penalty" })
```

Same signature as `AddCoins`. Returns the new balance.

### GetCoins

```lua
local coins = exports['Var-Coins-Shop']:GetCoins(identifier)
```

**Returns:** current balance (number).

### GetAccount

Returns the full account row: balance, locale, total spent, loyalty tier, etc.

```lua
local account = exports['Var-Coins-Shop']:GetAccount(identifier)
-- { coins, locale, total_spent, tier, created_at, ... }
```

### RefreshPlayer

Force the UI of a connected player to resync. Useful after an external `AddCoins` call when you want the in-game shop to update immediately.

```lua
exports['Var-Coins-Shop']:RefreshPlayer(playerSourceId)
```

| Argument         | Type   | Description                           |
| ---------------- | ------ | ------------------------------------- |
| `playerSourceId` | number | The server ID of the connected player |

### RegisterSubscriptionPlans

Register subscription plans dynamically (useful if you generate them from another data source).

```lua
exports['Var-Coins-Shop']:RegisterSubscriptionPlans({
  {
    id = "sub_vip",
    name = "VIP",
    price = 1000,
    billing = "monthly",
    durationDays = 30,
    perks = { "Priority queue", "5% discount" }
  }
})
```

### GetSubscriptionState

Read a player's current subscription state.

```lua
local state = exports['Var-Coins-Shop']:GetSubscriptionState(identifier)
-- { active = true, planId = "sub_vip", expiresAt = ..., ... }
```

### Accepted identifier formats

`identifier` arguments accept any of the following formats. They are normalized internally by `Accounts.resolveIdentifierInput`:

* Online server ID: `42`
* Cfx.re identifiers: `steam:110000xxxx`, `license:xxx`, `license2:xxx`, `fivem:xxx`, `discord:xxx`
* Any registered alias for an offline player
* Raw string fallback (treated as the canonical identifier)

The default lookup priority is configurable in `shared/config.lua`:

```lua
Framework = {
  IdentifierPriority = { "license2", "license", "fivem", "discord", "steam" }
}
```
