> ## 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.

# Understanding the Metadata API

> Discover which Collection Account capabilities are available for your account - filtered by your risk profile, industry vertical, and country

The coverage tables on the previous pages show everything Tazapay supports. What *your* account can actually provision may be a subset - availability depends on your onboarding profile, industry vertical, and merchant country.

The **Metadata API** answers this precisely. Call it before creating a Collection Account and it returns the list of **capabilities** - account type, currency, and payment method combinations - available specifically for your account. Anything restricted for your industry vertical or merchant country is already filtered out, so you can build your product against the real list instead of discovering restrictions at creation time.

| Account type       | Endpoint                                              | Reference                                                                       |
| ------------------ | ----------------------------------------------------- | ------------------------------------------------------------------------------- |
| Virtual Accounts   | `GET /v3/metadata/collection_account/virtual_account` | [Virtual Account Metadata](/api-reference/tazapay-api/virtual-account-metadata) |
| Stablecoin Wallets | `GET /v3/metadata/collection_account/wallet`          | [Wallet Metadata](/api-reference/tazapay-api/wallet-metadata)                   |

***

## Query Parameters

All parameters are optional - call with none to get every capability available to your account, or narrow the list down.

<ParamField query="country" type="string">
  Filter capabilities by the country in which the account would be domiciled (ISO 3166 alpha-2, e.g. `SG`). Applies to virtual accounts.
</ParamField>

<ParamField query="currencies" type="array of string">
  Filter capabilities to those supporting the given currencies (ISO format, e.g. `SGD`).
</ParamField>

<ParamField query="entity" type="string">
  The entity ID of a customer, to check availability for a specific onboarded entity.
</ParamField>

<ParamField query="on_behalf_of" type="boolean">
  Set to `true` to return capabilities for collecting on behalf of your customers, including any restrictions that apply (see `on_behalf_of` in the response below).
</ParamField>

***

## Response - Capabilities

The response contains a single `capabilities` array. Each entry describes one account configuration you can provision.

<Tabs>
  <Tab title="Virtual Accounts">
    <ResponseField name="payment_method_type" type="string">
      The payment method type this capability describes - e.g. `local_bank_transfer_sgd`, `wire_transfer`.
    </ResponseField>

    <ResponseField name="currencies" type="array of string">
      Currencies supported by this virtual account type.
    </ResponseField>

    <ResponseField name="transfer_limit" type="object">
      Minimum and maximum limits per transaction.

      <Expandable title="transfer_limit">
        <ResponseField name="minimum" type="object">
          The minimum amount per incoming transaction - `amount` and `ccy`.
        </ResponseField>

        <ResponseField name="maximum" type="object">
          The maximum amount per incoming transaction - `amount` and `ccy`.
        </ResponseField>

        <ResponseField name="currency" type="string">
          Currency in which the limits are specified.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="local" type="object">
      Local rail details, present for local payment method types.

      <Expandable title="local.fund_transfer_networks">
        <ResponseField name="name" type="string">
          Name of the fund transfer network - e.g. `FAST`, `SEPA`, `ACH`.
        </ResponseField>

        <ResponseField name="transfer_limit" type="object">
          Per-network transaction limits, in the same shape as the capability-level `transfer_limit`.
        </ResponseField>

        <ResponseField name="additional_information" type="string">
          Additional details about the network, such as turnaround time and availability.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="on_behalf_of" type="object">
      Whether - and under which conditions - this capability can be used to collect on behalf of your customers. This is where industry and country restrictions surface.

      <Expandable title="on_behalf_of">
        <ResponseField name="support" type="boolean">
          Whether collecting on behalf of customers is supported for this capability.
        </ResponseField>

        <ResponseField name="restricted_industry_verticals" type="array of string">
          Industry verticals for which this capability is not available.
        </ResponseField>

        <ResponseField name="additional_requirements" type="array of string">
          Conditions your customer must meet first - `entity_approval_required` or `entity_submission_required`.
        </ResponseField>

        <ResponseField name="restricted_remitter_countries" type="array of string">
          Payers in these countries cannot send funds to this account type.
        </ResponseField>

        <ResponseField name="restricted_account_holder_countries" type="array of string">
          Customers in these countries cannot hold this account type.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="setup_time" type="string">
      How long the account takes to provision - `instant`, `same_day`, `t_plus_1`, `t_plus_2`, `t_plus_3`, or `extended`.
    </ResponseField>

    <ResponseField name="account_reenablement_supported" type="boolean">
      Whether an account of this type can be re-enabled after being disabled.
    </ResponseField>
  </Tab>

  <Tab title="Stablecoin Wallets">
    <ResponseField name="payment_method_type" type="string">
      The stablecoin this capability describes - `stablecoin_usdc` or `stablecoin_usdt`.
    </ResponseField>

    <ResponseField name="type" type="array of string">
      Blockchains supported for this stablecoin - e.g. `Ethereum`, `Tron`, `Solana`, `Base`, `Polygon Pos`.
    </ResponseField>

    <ResponseField name="limit" type="object">
      Minimum and maximum limits per transaction - `minimum`, `maximum`, and `currency`, in the same shape as the virtual account `transfer_limit`.
    </ResponseField>

    <ResponseField name="on_behalf_of" type="object">
      Whether - and under which conditions - this capability can be used to collect on behalf of your customers.

      <Expandable title="on_behalf_of">
        <ResponseField name="support" type="boolean">
          Whether collecting on behalf of customers is supported for this capability.
        </ResponseField>

        <ResponseField name="restricted_industry_verticals" type="array of string">
          Industry verticals for which this capability is not available.
        </ResponseField>

        <ResponseField name="additional_requirements" type="array of string">
          Conditions your customer must meet first - `entity_approval_required` or `entity_submission_required`.
        </ResponseField>

        <ResponseField name="restricted_remitter_countries" type="array of string">
          Payers in these countries cannot send funds to this wallet type.
        </ResponseField>

        <ResponseField name="restricted_account_holder_countries" type="array of string">
          Customers in these countries cannot hold this wallet type.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="setup_time" type="string">
      How long the wallet takes to provision - `instant`, `t_plus_1`, `t_plus_2`, `t_plus_3`, or `extended`.
    </ResponseField>
  </Tab>
</Tabs>

***

## Putting It to Work

<Steps>
  <Step title="Call the Metadata API first">
    Before showing account options in your product or calling [Create Collection Account](/api-reference/tazapay-api/create-collection-account), fetch the capabilities for your account.
  </Step>

  <Step title="Build against the returned list">
    Only offer the countries, currencies, and payment method types that come back - the list already reflects your account's restrictions.
  </Step>

  <Step title="Check on_behalf_of before collecting for customers">
    If you provision accounts for your customers, check `on_behalf_of.support` and its restriction fields per capability, and handle `additional_requirements` before creating the account.
  </Step>
</Steps>

<Note>
  Capabilities can differ between sandbox and production, and between accounts - always query the environment and account you are integrating against.
</Note>
