# 3-Decimal Currency Support

### 1. Short Description

Agency Handy now supports full precision for **3-decimal place currencies**, ensuring accuracy in billing, payments, and currency conversions. This guide covers the system's support for currencies like **BHD, JOD, KWD, OMR, TND**, and others that require three decimal places for precise transactions.

***

### 2. Goals

#### Business Goals

* Ensure reliable support for high-precision currencies.
* Prevent rounding errors and ensure regulatory compliance.
* Expand international usability with currencies that require 3-decimal precision.

#### User Goals

* Accurately process payments and refunds in supported currencies.
* View properly formatted amounts in both the UI and exports.
* Experience smooth currency selection, conversion, and transaction tracking.

***

### 3. Pre-Conditions

* Feature available on payment processors like **Stripe** where supported.
* User must be operating with one of the supported 3-decimal currencies.
* Admin permissions required for configuring currency settings and integrations.

***

### 4. Table of Contents

1. Supported Currencies
2. Currency Display & Formatting
3. Payment Processing
4. Currency Conversion
5. Specific Currency Behavior
6. API & Database Support
7. User Interface Experience
8. Edge Cases & Validations
9. Outcome
10. Important Notes

***

### 5. Contents

#### 1. Supported Currencies

| Currency            | Code | Stripe Support  |
| ------------------- | ---- | --------------- |
| Bahraini Dinar      | BHD  | ✅ Yes           |
| Jordanian Dinar     | JOD  | ✅ Yes           |
| Kuwaiti Dinar       | KWD  | ✅ Yes           |
| Omani Rial          | OMR  | ✅ Yes           |
| Tunisian Dinar      | TND  | ✅ Yes           |
| Libyan Dinar        | LYD  | Partial/Planned |
| Iraqi Dinar         | IQD  | ❌ Not Available |
| Malagasy Ariary     | MGA  | ❌ Not Available |
| Mauritanian Ouguiya | MRU  | ❌ Not Available |

***

#### 2. Currency Display & Formatting

* All 3-decimal currencies display with **exactly three decimal places** (e.g., `BHD 123.456`)
* **Currency symbols and codes** are shown correctly (e.g., `KWD`, `OMR`)
* Negative and zero amounts are correctly formatted: `-12.345`, `0.000`
* Formatting is consistent across reports, dashboards, and exports.

***

#### 3. Payment Processing

* **Successful payments** preserve full 3-decimal precision.
* **Refunds** (full or partial) calculate with 3 decimals without rounding.
* **Payment failures**, if any, still maintain the correct decimal format in logs.
* **Stripe gateway** supports real-time payments for BHD, JOD, KWD, OMR, TND.

***

#### 4. Currency Conversion

* Accurate **exchange rate** application between 3-decimal and 2-decimal currencies.
* All conversion calculations maintain precision.
* Converted values are rounded and displayed based on the target currency’s decimal standard.

***

#### 5. Specific Currency Behavior

**Bahraini Dinar (BHD)**

* Fully supported via Stripe
* Format: `XXX.XXX`
* All transactions processed and refunded accurately

**Iraqi Dinar (IQD)**

* Listed but **not available for payments**
* User is informed accordingly during selection

**Kuwaiti Dinar (KWD), Jordanian Dinar (JOD), Omani Rial (OMR), Tunisian Dinar (TND)**

* Fully functional with Stripe
* Decimal handling and formatting verified

**Libyan Dinar (LYD), Malagasy Ariary (MGA), Mauritanian Ouguiya (MRU)**

* Display only; no active payment support
* Selection results in proper notification about unavailability

***

#### 6. API & Database Support

* API endpoints accept, process, and return **3-decimal values**
* Database fields store all values without rounding or loss of precision
* All integrations (e.g., Stripe, webhooks) retain 3-decimal accuracy
* Backup, restore, and data migration preserve precision

***

#### 7. User Interface Experience

**Input Validation**

* Allows valid input of up to **3 decimal places**
* Prevents inputs with more than 3 decimals
* Clear error messages for invalid entries
* Copy/paste from spreadsheets retains precision

**Display Consistency**

* Consistent formatting across all views: dashboard, mobile, reports, exports
* Responsive design handles 3-decimal currency formatting on all devices

**User Experience**

* Clear visual indication of 3-decimal currency use
* Help text/tooltips guide users during selection
* Easy-to-use currency selector interface

***

#### 8. Edge Cases & Validations

**Boundary Testing**

* Minimum (`0.001`) and maximum currency values are handled correctly
* Very large 3-decimal numbers are processed without overflow

**Error Handling**

* Graceful handling of payment gateway downtime
* Conversion failure fallback with user-friendly errors
* Robust error messages for failed transactions or invalid input

**Test Data Validation**

All of the following passed and display as expected:

* `0.001`, `0.999`, `1.000`, `123.456`, `999.999`, `1000.000`

***

#### 9. Outcome

You can now seamlessly process, display, convert, and refund 3-decimal currency values in Agency Handy—ensuring high accuracy and a smooth user experience across the board.

***

### 10. Important Notes

* **Not all currencies are available for payment processing.** IQD, MGA, and MRU are display-only.
* **Precision is maintained across all systems**—UI, database, and API.
* **Stripe only supports selected currencies**—always verify current availability.

***


---

# Agent Instructions: 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:

```
GET https://docs.agencyhandy.com/english/agencyhandy-user-guide-for-agency/3-decimal-currency-support.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
