> 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/getting-started/installation-and-requirements.md).

# Installation & Requirements

## Installation & Requirements

### Dependencies

| Dependency                                                    | Required for                                                       |
| ------------------------------------------------------------- | ------------------------------------------------------------------ |
| [oxmysql](https://github.com/overextended/oxmysql)            | All database access                                                |
| [ox\_lib](https://github.com/overextended/ox_lib)             | Callbacks, notifications, locale, context menus, batched logger    |
| [ox\_target](https://github.com/overextended/ox_target)       | ATM and bank-ped interactions                                      |
| [ox\_inventory](https://github.com/overextended/ox_inventory) | Only if `Config.cards.mode = 'item'` (physical bank cards)         |
| A framework                                                   | `qb-core`, `qbx_core`, or `es_extended` — auto-detected at startup |

Node.js 18+ is **only** needed if you intend to modify and rebuild the NUI. A pre-built UI bundle already ships in `web/public/build/`, so most installs never need Node at all.

### Steps

1. **Folder name matters.** The resource must be named exactly `Dsync-Banking` on disk. Other resources call it as `exports['Dsync-Banking']:...`, so a renamed folder breaks every integration.
2. **Place it** in your `resources` directory alongside your other resources.
3. **Database — no manual import required.** On first boot the resource reads `schema.sql` and creates every table itself. On every subsequent boot it re-runs the same file to apply any new migrations; each statement is idempotent (`CREATE TABLE IF NOT EXISTS`, `ADD COLUMN IF NOT EXISTS`, etc.) and individually guarded, so a single failed statement never blocks the rest. The MySQL user connected via oxmysql needs `CREATE` and `ALTER` privileges on the target database.
4. **Start order** in `server.cfg` — the banking resource must start *after* its dependencies and framework:

   ```cfg
   ensure oxmysql
   ensure ox_lib
   ensure ox_target
   ensure ox_inventory       # only needed for physical card mode
   ensure qb-core            # or qbx_core / es_extended
   ensure Dsync-Banking
   ```
5. **Configure** `config.lua` — at minimum, review the ATM prop list, bank ped locations, and the `cards`/`loans` sections. See the Configuration Reference page.
6. **(Optional) Rebuild the UI** if you changed anything under `web/src`:

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

   This regenerates `web/public/build/bundle.js` and `bundle.css`, which the resource serves directly — no separate deploy step.

### Verifying the install

On a successful boot you'll see in console:

```
[Dsync-Banking] Framework detected: QBX
[Dsync-Banking] v3.0 loaded successfully
```

If you instead see `Unable to load UI`, the NUI bundle is missing — see the Troubleshooting page.


---

# 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/getting-started/installation-and-requirements.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.
