Capabilities

Every capability a corporation can hold, how its status is evaluated, and what unblocks it.

Before You Start

Read the following guides before proceeding:

GuideWhy
Getting StartedPlatform overview and setup
Api BasicsRequired headers and request configuration
Corporation ProfileCapabilities are returned on the corporation record
Verification (KYB)Verification levels gate most capabilities

Overview

A capability is a product the corporation may use — a SEPA account, virtual cards, a PIX payout
corridor. Every capability carries a status, and the status is what the API enforces: a card issuance
call with VisaVirtualCard in any status other than Active is refused with 400 and
Capability is not active.

Read capabilities from GET /api/v1/corporations. Check the capability before the call, not after the
rejection — the rejection carries no indication of which precondition failed.


Capability Status

StatusMeaningWhat unblocks it
ActiveUsable now
ActivationNotStartedAvailable, but an activation call is still requiredCall the activation endpoint — for bank accounts, POST /api/v1/bank/accounts
InProgressActivation is runningWait. Bank account details in Pending land here
NotFulfilledA verification level or a prerequisite capability is missingPass the level, or activate the prerequisite
NotRequiredAlways available; no activation needed
NotAvailableNot offered to this corporationRead status_reason. Country, profile status, or a per-corporation override

status_reason carries the specific cause and is the field to log:

status_reasonCause
Country is not supportedThe capability is not offered in the corporation's registration country
Verification requirements not fulfilledA required verification level is not Approved
Prerequisite capability is not active yetA prerequisite exists but is not Active
Prerequisite capability is not availableA prerequisite is not offered at all in this country
Corporation profile is not activeThe corporation's status is not Active
Account should be activated in order to use this capabilityNo bank account details of this type exist yet
Account activation is in progressDetails exist in Pending
This capability is no longer available for this accountDetails of this type exist but none are Active or Pending
You have reached the maximum number of virtual cards allowed30 virtual cards already issued
You have reached the maximum number of plastic cards allowed15 plastic cards already issued
Capability is not available for this corporationA per-corporation override disables it

Evaluation Order

Capabilities are evaluated on every read of GET /api/v1/corporations, in this order:

1. Country availability      →  Active, or NotAvailable ("Country is not supported")
2. Per-corporation overrides →  forced Active or NotAvailable
3. Verification levels       →  NotFulfilled if a required level is not Approved
4. Prerequisites             →  NotFulfilled / NotAvailable if a prerequisite is not Active
5. Activation validators     →  Active / ActivationNotStarted / InProgress / NotAvailable

Capabilities with no prerequisites are evaluated first, so a prerequisite's status is final before
anything depending on it is judged. Each stage stops the chain: a capability that fails verification is
never checked for activation, so status_reason names the first unmet condition, not every unmet
condition.

A corporation with no registration address gets an empty capability list. Evaluation starts from
the country on corporation_registration_address; with no address there is no country, and the list
comes back empty rather than as a list of NotAvailable entries. Every capability check then fails.
The address arrives with KYB — see Verification (KYB).


Capability Reference

Cards

CapabilityGrantsActivation rule
VisaVirtualCardIssue virtual cardsProfile must be Active; becomes NotAvailable at 30 virtual cards
VisaPlasticCardIssue plastic cardsProfile must be Active; becomes NotAvailable at 15 plastic cards
CardTransferPush funds to an external cardNo activation validator

Bank Accounts

CapabilityGrantsPrerequisites
SepaAccountA personalised SEPA account — a dedicated IBAN carrying the corporate name
SepaIn1stPartyReceive SEPA transfers from accounts the corporation ownsSepaAccount
SepaIn3rdPartyReceive SEPA transfers from third-party accountsSepaAccount
SepaOut1stPartySend SEPA transfers to accounts the corporation ownsSepaAccount
SepaOut3rdPartySend SEPA transfers to third-party accountsSepaAccount
AchAccountA personalised ACH account — dedicated routing and account numbers
AchIn1stPartyReceive ACH from own accountsAchAccount
AchIn3rdPartyReceive ACH from third partiesAchAccount
AchOut1stPartySend ACH to own accountsAchAccount
AchOut3rdPartySend ACH to third partiesAchAccount
SpeiAccountA personalised SPEI account — a dedicated CLABE
SpeiIn1stPartyReceive SPEI from own accountsSpeiAccount
SpeiIn3rdPartyReceive SPEI from third partiesSpeiAccount
SpeiOut1stPartySend SPEI to own accountsSpeiAccount
SpeiOut3rdPartySend SPEI to third partiesSpeiAccount
FasterPaymentsAccountA personalised Faster Payments account — dedicated sort code and account number
FasterPaymentsIn1stPartyReceive Faster Payments from own accounts
FasterPaymentsIn3rdPartyReceive Faster Payments from third parties
FasterPaymentsOut1stPartySend Faster Payments to own accounts
FasterPaymentsOut3rdPartySend Faster Payments to third partiesFasterPaymentsAccount

The four *Account capabilities run the account activation validator: ActivationNotStarted when no
details of that type exist, InProgress while details are Pending, Active once any are Active,
and NotAvailable when details exist but none is Active or Pending. All four also require the
corporation profile to be Active.

FasterPaymentsIn1stParty, FasterPaymentsIn3rdParty and FasterPaymentsOut1stParty declare no
prerequisite on FasterPaymentsAccount, unlike their SEPA, ACH and SPEI counterparts. They can read
Active before any Faster Payments account exists. Check FasterPaymentsAccount itself before
attempting a Faster Payments flow.

Payout Corridors

Corridors route through an external provider profile, and the profile is the prerequisite.

CapabilityCorridorCurrencyPrerequisite
CpnExternalProfile
PixOut3rdPartypixBRLCpnExternalProfile
SpeiOut3rdPartyspeiMXNSpeiAccount
FedwireOut3rdPartyfedwireUSDCpnExternalProfile
SwiftOut3rdPartyswiftUSDCpnExternalProfile
CipsOut3rdPartycipsCNYCpnExternalProfile
ChatsOut3rdPartychatsHKDCpnExternalProfile
FpsHkOut3rdPartyfps_hkHKDCpnExternalProfile
TripleAExternalProfile
ImpsOut3rdPartyimpsINRTripleAExternalProfile
InstapayOut3rdPartyinstapayPHPTripleAExternalProfile
BiFastOut3rdPartybi-fastIDRTripleAExternalProfile
NipOut3rdPartynipNGNTripleAExternalProfile
IppOut3rdPartyippAEDTripleAExternalProfile
PseOut3rdPartypseCOPTripleAExternalProfile

CpnExternalProfile and TripleAExternalProfile are provisioned by Wirex. There is no partner-callable
activation for either — a corridor stuck on NotFulfilled with
Prerequisite capability is not active yet needs the provider profile, which is an onboarding
conversation, not an API call.

See Corridor Transfers for the transfer flow.

Exchange

CapabilityGrants
FxTransferFX swaps between assets — see FX
StableExchangeStablecoin exchange

Country Matrix

GET /api/v1/global/capabilities

Anonymous — no Authorization header. Returns the capability dictionary for every supported country,
before any corporation-specific evaluation.

Response:

{
  "capabilities": {
    "GB": [
      {
        "type": "VisaVirtualCard",
        "status": "Active",
        "status_reason": "",
        "prerequisites": [],
        "verification_requirements": [{ "type": "SDD", "order": 1 }]
      }
    ],
    "US": [
      {
        "type": "SepaAccount",
        "status": "NotAvailable",
        "status_reason": "Country is not supported",
        "prerequisites": [],
        "verification_requirements": []
      }
    ]
  }
}
FieldDescription
capabilitiesMap of ISO 3166-1 alpha-2 country code to the capability list for that country

Every entry reads Active unless the capability is unavailable in that country. This endpoint answers
"is this product offered where the corporation is registered" — it never reflects a corporation's own
verification, activation or card counts. Use it during pre-sales and country selection; use
GET /api/v1/corporations for anything operational.

A country absent from the map returns an empty list rather than an error.


Diagnosing a Blocked Capability

{
  "type": "SepaOut3rdParty",
  "status": "NotFulfilled",
  "status_reason": "Prerequisite capability is not active yet",
  "prerequisites": ["SepaAccount"],
  "verification_requirements": [{ "type": "SDD", "order": 1 }]
}

Work outward from status_reason:

  1. Verification requirements not fulfilled → compare verification_requirements against
    verification_levels. Start the missing level with POST /api/v1/corporations/level-token.
  2. Prerequisite capability is not active yet → find each entry of prerequisites in the same
    response and diagnose that one first.
  3. Account should be activated... → call POST /api/v1/bank/accounts with the matching
    account_type.
  4. Account activation is in progress → poll GET /api/v1/bank/accounts until the details are
    Active.
  5. Country is not supported → the product is not offered where the corporation is registered. No API
    call changes this.
  6. Corporation profile is not active → the corporation's status is not Active. Wirex advances it.
  7. You have reached the maximum number of... → close a card before issuing another.

Did this page help you?