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

# Payout Capability Fields in Payout Bank Metadata

**Release type:** Enhancement (Backward-compatible)
**Applies to:** Payout Bank Metadata

The **Payout Bank Metadata** endpoint (`GET /v3/metadata/payout/bank`) now returns additional capability fields in its response. These fields help you understand the capabilities and restrictions of each payout method before initiating a payout.

## Where the new fields live

The placement of the capability fields depends on `payout_type`:

| `payout_type` | Read capability fields from                                                                                            |
| ------------- | ---------------------------------------------------------------------------------------------------------------------- |
| `local`       | **Each entry of `fund_transfer_networks`** — at the corridor top level these fields are returned empty (`null` / `[]`) |
| `swift`       | **Top level of the `payout_methods` entry** — `fund_transfer_networks` is an empty array                               |

The two levels are **mutually exclusive, not a precedence pair**: whichever level applies carries the values and the other is returned empty, so you never have to reconcile the two.

This split exists because for `local`, capabilities (operating hours, OBO support, purpose-code restrictions, etc.) are inherently network-specific (e.g. IMPS vs NEFT in India, FPS vs CHATS in Hong Kong). For `swift` there is no fund-transfer-network array, so the corridor top level is the only meaningful place.

## New Fields

The five new capability fields appear either at the top level (swift) or inside each `fund_transfer_networks` entry (local):

| Field                      | Type            | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| -------------------------- | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `delivery_time`            | string \| null  | Settlement speed label — not a duration. Known tokens: `instant`, `same_day`, `next_day`, `t_plus_2`, `t_plus_3`. A value may be a single token or a comma-separated combination, e.g. `"same_day, next_day"` or `"next_day, t_plus_2, t_plus_3"`. Treat it as an open set and match on substrings rather than hard-coding an exhaustive enum. `null` when no provider in the group publishes an estimate.                                                                                                                                                                                                          |
| `on_behalf_of_supported`   | boolean \| null | Whether the group supports On-Behalf-Of (OBO) transactions. `true` if any provider in the group supports OBO. `null` at a level that does not apply — note `null` is **not** the same as `false`.                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `supported_modes`          | string\[]       | Supported remitter-to-beneficiary party type combinations: `B2B`, `B2C`, `C2B`, `C2C`. Union of supported modes in the group.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `restricted_purpose_codes` | string\[]       | Purpose codes that are **not supported** by the group. Empty array means all purpose codes are accepted.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `cutoff_schedule`          | object \| null  | Weekly operating window. **Absent (or `null`) means available 24/7.** Keys in `days` are ISO 8601 day numbers (`"1"`=Monday … `"7"`=Sunday); a missing day entry means closed on that day. `open`/`close` times are `"HH:MM"` (24-hour), close minute inclusive, expressed in the schedule's `timezone`. A window whose `close` is earlier than its `open` (e.g. `"22:00"`–`"06:00"`) rolls over into the next day. The `timezone` field is an **IANA time-zone identifier** (e.g. `"Asia/Singapore"`, `"Asia/Kolkata"`) — resolve it with a standard tz database; an **empty `timezone` means the times are UTC**. |

"Group" = the corridor for swift; the **network within the corridor** for each `fund_transfer_networks` entry on local.

## Example Response

```json theme={null}
{
  "status": "success",
  "message": "",
  "data": {
    "payout_methods": [
      {
        "beneficiary_type": ["individual", "business"],
        "country": "IN",
        "currency": "INR",
        "custom_remitter_support": true,
        "payout_type": "local",
        "delivery_time": null,
        "on_behalf_of_supported": null,
        "supported_modes": [],
        "restricted_purpose_codes": [],
        "cutoff_schedule": null,
        "fund_transfer_networks": [
          {
            "name": "imps",
            "additional_information": "IMPS is used for instant payouts eligible for real-time local clearing on a 24/7 basis.",
            "remitter_preference_support": true,
            "transfer_limit": {
              "currency": "INR",
              "minimum": 100,
              "maximum": 50000000
            },
            "delivery_time": "instant",
            "on_behalf_of_supported": true,
            "supported_modes": ["B2B", "B2C", "C2B", "C2C"],
            "restricted_purpose_codes": [],
            "cutoff_schedule": null
          },
          {
            "name": "neft",
            "additional_information": "NEFT settles in batches during banking hours.",
            "remitter_preference_support": true,
            "transfer_limit": {
              "currency": "INR",
              "minimum": 100,
              "maximum": 50000000
            },
            "delivery_time": "next_day, t_plus_2, t_plus_3",
            "on_behalf_of_supported": false,
            "supported_modes": ["B2B", "B2C"],
            "restricted_purpose_codes": ["P0102"],
            "cutoff_schedule": {
              "timezone": "Asia/Kolkata",
              "days": {
                "1": { "open": "09:00", "close": "17:00" },
                "2": { "open": "09:00", "close": "17:00" },
                "3": { "open": "09:00", "close": "17:00" },
                "4": { "open": "09:00", "close": "17:00" },
                "5": { "open": "09:00", "close": "15:00" }
              }
            }
          }
        ],
        "recommended_fields": {
          "recommended_bank_codes": [],
          "recommended_bank_fields": [],
          "recommended_beneficiary_fields": []
        },
        "required_bank_codes": ["ifsc_code"],
        "required_bank_fields": ["account_holder_name", "bank_name", "account_number"],
        "required_beneficiary_fields": [
          "address.line1",
          "address.city",
          "address.state",
          "address.postal_code"
        ],
        "supported_destinations": [],
        "transfer_limit": {
          "currency": "INR",
          "minimum": 100,
          "maximum": 50000000
        }
      },
      {
        "beneficiary_type": ["individual", "business"],
        "country": "IN",
        "currency": "OMR",
        "custom_remitter_support": true,
        "payout_type": "swift",
        "delivery_time": "next_day",
        "on_behalf_of_supported": false,
        "supported_modes": ["B2B", "B2C", "C2B", "C2C"],
        "restricted_purpose_codes": [],
        "cutoff_schedule": {
          "timezone": "Asia/Singapore",
          "days": {
            "1": { "open": "08:30", "close": "18:30" },
            "2": { "open": "08:30", "close": "18:30" },
            "3": { "open": "08:30", "close": "18:30" },
            "4": { "open": "08:30", "close": "18:30" },
            "5": { "open": "08:30", "close": "18:30" }
          }
        },
        "fund_transfer_networks": [],
        "recommended_fields": {
          "recommended_bank_codes": [],
          "recommended_bank_fields": [],
          "recommended_beneficiary_fields": []
        },
        "required_bank_codes": ["swift_code"],
        "required_bank_fields": ["account_holder_name", "bank_name", "account_number"],
        "required_beneficiary_fields": [
          "address.line1",
          "address.city",
          "address.state",
          "address.postal_code"
        ],
        "supported_destinations": [],
        "transfer_limit": {
          "currency": "OMR",
          "minimum": 500,
          "maximum": 3500000000
        }
      }
    ]
  }
}
```

In the example above:

* The first entry (`payout_type: local`, IN/INR) returns the capability fields **empty at the top level** — `null` for `delivery_time`, `on_behalf_of_supported` and `cutoff_schedule`, `[]` for the two arrays. Each `fund_transfer_networks` entry carries the real values instead, and they differ per network: IMPS is `instant` and OBO-capable, NEFT is `"next_day, t_plus_2, t_plus_3"` and restricts purpose code `P0102`.
* IMPS has `cutoff_schedule: null`, which means it is available 24/7. NEFT publishes a Mon–Fri window in `Asia/Kolkata`, closing early on Friday.
* The second entry (`payout_type: swift`, IN/OMR) carries the capability fields at the top level, because `fund_transfer_networks` is an empty array for swift.

<Info>
  **`null` is meaningful — it is not the same as `false` or `""`.** These fields are always present in the response; an unset capability comes back as `null` (`delivery_time`, `on_behalf_of_supported`, `cutoff_schedule`) or `[]` (`supported_modes`, `restricted_purpose_codes`). In particular `on_behalf_of_supported: null` means "not stated at this level", whereas `false` means "explicitly not supported", and `cutoff_schedule: null` means 24/7, not "unknown". For `local` corridors always read the per-network values so you do not miss network-specific behavior.
</Info>

## Relevant Links

* [**Payout Bank Metadata**](/api-reference/tazapay-api/payout-bank)
* [**Payout Bank Metadata Fields**](/api-reference/tazapay-api/payout-bank-fields)
* [**Using Payout Capability Fields**](/payouts/payout-network/using-payout-capability-fields)
* [**Payout Coverage**](/payouts/coverage/coverage)
