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

# Conventions

> IDs, idempotency, environments, and dates.

## IDs

* Bridge resource IDs (`customerId`, wallet `id`, `loanId`) are UUIDs or opaque strings — store them as-is.
* Some read responses include `externalData` / engine fields (integer `id`, statuses like `loanStatusType.active`). Those reflect the underlying core-banking engine; use the Bridge IDs for your calls.

## Response shapes

x-bridge returns a **clean, normalized view** — build against that. A few read endpoints also surface the raw core-banking engine data alongside it; treat that as internal.

<Warning>
  Lean on **`items`** and **avoid `fineractItems` for now** (the raw core-engine data on `GET /v1/wms/wallets/{walletId}/transactions`). Other raw engine fields (such as a customer's `externalData`) are internal too — prefer the documented clean fields.
</Warning>

## Idempotency

Money-moving calls are idempotent on a reference you supply — reuse the same reference to safely retry:

| Endpoint                                   | Idempotency key    |
| ------------------------------------------ | ------------------ |
| `POST /v1/lms/loans/{id}/repayments`       | `receiptNumber`    |
| `POST /v1/lms/loans/{id}/submit-payment`   | `gatewayReference` |
| `POST /v1/wms/wallets/{id}/submit-deposit` | `gatewayReference` |
| `POST /v1/wms/wallets/{id}/reserve`        | `reference`        |
| `POST /collection/mobile`                  | `transactionId`    |

## Environments

Your token carries `environment: "sandbox" | "production"`. Build against `sandbox`; switch by using a production key after approval. Resource IDs do not transfer between environments.

## Dates

Dates are `yyyy-MM-dd` (e.g. `2026-03-15`). Timestamps are ISO 8601.
