> For the complete documentation index, see [llms.txt](https://docs.dsyncstudios.store/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.dsyncstudios.store/products/dsync-banking/reference/troubleshooting.md).

# Troubleshooting

## Troubleshooting

#### "Unable to load UI"

The NUI bundle isn't built. Either restore `web/public/build/` from a fresh download of the resource, or rebuild it yourself:

```bash
cd web
npm install
npm run build
```

#### Exports return `nil` / "no such export"

The resource folder must be named exactly `Dsync-Banking`. Exports are looked up by resource name (`exports['Dsync-Banking']:...`), so a renamed folder silently breaks every integration.

#### `Schema statement failed` in console on boot

The MySQL user oxmysql connects with lacks `ALTER` (or, rarely, `CREATE`) privileges. Grant the privilege, or run the specific `ALTER TABLE` / `CREATE TABLE` line printed in the error manually, once, via your DB client.

#### Loan or scheduled-transfer queries firing every few seconds

This is expected behavior from the auto-deduction / scheduled-transfer background workers scanning for due items — **not a bug.** Two config flags control the cadence:

* `Config.loans.deductionCheckInterval` (default 300s) and `Config.scheduledTransfers.checkInterval` (default 60s) set the normal polling interval.
* If either **`debugMode`** (loans) or **`testMode`** (scheduled transfers) is left `true`, the interval is forced down to a handful of seconds for testing purposes. Set both to `false` before going live.

Separately, if you see *every single query* logged to console (not just these two), that's oxmysql's own query-debug logging, unrelated to this resource:

```cfg
set mysql_debug false
```

#### A card's daily spending limit doesn't seem to apply

The limit is enforced only on **ATM withdrawals**, tied to the specific card used to authenticate that ATM session (or the player's own primary card in virtual mode). It does not apply to bank-teller withdrawals, which have no card session at all.

#### Freeze/unfreeze appears to "revert" after reopening the UI

If you're on an older build, this was a real bug caused by MySQL returning `TINYINT(1)` flags as Lua booleans in some driver versions, which broke a naive `flag == 1` comparison. It's fixed as of this version — every flag comparison goes through a boolean-safe helper. If you still see it, make sure you're running the latest `server/*.lua` files and have fully restarted the resource (not just switched configs).

#### A shared account's members can't deposit/withdraw despite having permission

Confirm `Config.shared.enabled` is `true`, and that the member's `can_deposit`/`can_withdraw` flags were actually granted by the account owner in the Members panel — new members inherit `Config.shared.defaultMemberPermissions`, which defaults to deposit-only, no withdraw.

#### A society account I expect to exist isn't showing up

Check `Config.society.jobs` / `.gangs`. If **either list is non-empty**, only the jobs/gangs explicitly listed get a society account — every other job/gang gets none. Leave both empty to restore the default (every job/gang gets a treasury).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.dsyncstudios.store/products/dsync-banking/reference/troubleshooting.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
