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

# Routing Conditions

> A condition matches against an attribute of the incoming payment.

A condition matches against an attribute of the incoming payment.

```jsonc theme={"theme":{"light":"github-dark","dark":"github-dark-dimmed"}}
{
  "condition_type": "<ENUM>",
  "conditional":    "<OPERATOR>",
  "values":         ["..."],

  // Required only on specific condition_types — see "Special cases" below
  "key":      "<string>",   // METADATA only
  "currency": "<ISO 4217>"  // AMOUNT only
}
```

Conditions inside the same `condition_sets[].conditions[]` are combined with **logical AND**. For OR semantics, split into multiple condition sets ordered by `sort_number`.

#### `condition_type` catalog

| `condition_type`   | Matches against                  | Value shape                                                                                                | Applicable `conditional`s                                                   | Card-only? |
| ------------------ | -------------------------------- | ---------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- | ---------- |
| `COUNTRY`          | Buyer's billing country          | ISO 3166-1 alpha-2 (e.g. `"US"`, `"BR"`)                                                                   | `EQUAL`, `NOT_EQUAL`, `ONE_OF`, `NOT_ONE_OF`                                | no         |
| `ISSUER_COUNTRY`   | Card-issuing bank's country      | ISO 3166-1 alpha-2                                                                                         | `EQUAL`, `NOT_EQUAL`, `ONE_OF`, `NOT_ONE_OF`                                | yes        |
| `CURRENCY`         | Transaction currency             | ISO 4217 (e.g. `"USD"`)                                                                                    | `EQUAL`, `NOT_EQUAL`, `ONE_OF`, `NOT_ONE_OF`                                | no         |
| `AMOUNT`           | Transaction amount               | Decimal as **string** (e.g. `"100.00"`); requires sibling `currency`                                       | `EQUAL`, `NOT_EQUAL`, `GREATER_THAN`, `LESS_THAN`, `BETWEEN`, `NOT_BETWEEN` | no         |
| `CARD_TYPE`        | Card funding source              | `CREDIT`, `DEBIT`, `PREPAID`                                                                               | `EQUAL`, `NOT_EQUAL`, `ONE_OF`, `NOT_ONE_OF`                                | yes        |
| `CARD_BRAND`       | Card scheme                      | `VISA`, `MASTERCARD`, `AMEX`, `ELO`, `HIPERCARD`, `DINERS`, `DISCOVER`, `JCB`, `UNIONPAY`, `MAESTRO`, `CB` | `EQUAL`, `NOT_EQUAL`, `ONE_OF`, `NOT_ONE_OF`                                | yes        |
| `CARD_BIN`         | First 6–8 digits of the PAN      | 6–8 digit numeric string                                                                                   | `EQUAL`, `NOT_EQUAL`, `ONE_OF`, `NOT_ONE_OF`                                | yes        |
| `INSTALLMENTS`     | Number of installments requested | Integer as string                                                                                          | `EQUAL`, `NOT_EQUAL`, `GREATER_THAN`, `LESS_THAN`, `BETWEEN`, `NOT_BETWEEN` | no         |
| `TRANSACTION_TYPE` | Payment intent type              | `PURCHASE`, `AUTHORIZATION`, `RECURRING`, `MIT`, `CIT`                                                     | `EQUAL`, `NOT_EQUAL`, `ONE_OF`, `NOT_ONE_OF`                                | no         |
| `METADATA`         | `payment.metadata[<key>]`        | Any string the merchant sets; requires sibling `key`                                                       | `EQUAL`, `NOT_EQUAL`, `ONE_OF`, `NOT_ONE_OF`                                | no         |

#### `conditional` operators

| Operator       | Cardinality of `values[]` | Semantics                       |
| -------------- | ------------------------- | ------------------------------- |
| `EQUAL`        | exactly 1                 | `attribute == values[0]`        |
| `NOT_EQUAL`    | exactly 1                 | `attribute != values[0]`        |
| `ONE_OF`       | ≥ 1                       | `attribute ∈ values`            |
| `NOT_ONE_OF`   | ≥ 1                       | `attribute ∉ values`            |
| `GREATER_THAN` | exactly 1                 | numeric `attribute > values[0]` |
| `LESS_THAN`    | exactly 1                 | numeric `attribute < values[0]` |
| `BETWEEN`      | exactly 2                 | inclusive on both ends          |
| `NOT_BETWEEN`  | exactly 2                 | inverse of `BETWEEN`            |

#### Special cases

* **`AMOUNT` requires `currency`.** Comparisons are FX-naive; only payments whose currency matches the rule's `currency` are evaluated.
* **`METADATA` requires `key`.** Compares `payment.metadata[key]`. If the key is absent on the payment, the condition does **not** match — absence is not equality.
* **Card-only condition types** (`ISSUER_COUNTRY`, `CARD_TYPE`, `CARD_BRAND`, `CARD_BIN`) are only valid when `payment_method = "CARD"`.
* **Numeric values are submitted as strings** to match the `values: string[]` schema. Yuno parses them based on the `condition_type`.
