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:
| Guide | Why |
|---|---|
| Getting Started | Platform overview and setup |
| Api Basics | Required headers and request configuration |
| Corporation Profile | Capabilities 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
| Status | Meaning | What unblocks it |
|---|---|---|
Active | Usable now | — |
ActivationNotStarted | Available, but an activation call is still required | Call the activation endpoint — for bank accounts, POST /api/v1/bank/accounts |
InProgress | Activation is running | Wait. Bank account details in Pending land here |
NotFulfilled | A verification level or a prerequisite capability is missing | Pass the level, or activate the prerequisite |
NotRequired | Always available; no activation needed | — |
NotAvailable | Not offered to this corporation | Read status_reason. Country, profile status, or a per-corporation override |
status_reason carries the specific cause and is the field to log:
status_reason | Cause |
|---|---|
Country is not supported | The capability is not offered in the corporation's registration country |
Verification requirements not fulfilled | A required verification level is not Approved |
Prerequisite capability is not active yet | A prerequisite exists but is not Active |
Prerequisite capability is not available | A prerequisite is not offered at all in this country |
Corporation profile is not active | The corporation's status is not Active |
Account should be activated in order to use this capability | No bank account details of this type exist yet |
Account activation is in progress | Details exist in Pending |
This capability is no longer available for this account | Details of this type exist but none are Active or Pending |
You have reached the maximum number of virtual cards allowed | 30 virtual cards already issued |
You have reached the maximum number of plastic cards allowed | 15 plastic cards already issued |
Capability is not available for this corporation | A 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 oncorporation_registration_address; with no address there is no country, and the list
comes back empty rather than as a list ofNotAvailableentries. Every capability check then fails.
The address arrives with KYB — see Verification (KYB).
Capability Reference
Cards
| Capability | Grants | Activation rule |
|---|---|---|
VisaVirtualCard | Issue virtual cards | Profile must be Active; becomes NotAvailable at 30 virtual cards |
VisaPlasticCard | Issue plastic cards | Profile must be Active; becomes NotAvailable at 15 plastic cards |
CardTransfer | Push funds to an external card | No activation validator |
Bank Accounts
| Capability | Grants | Prerequisites |
|---|---|---|
SepaAccount | A personalised SEPA account — a dedicated IBAN carrying the corporate name | — |
SepaIn1stParty | Receive SEPA transfers from accounts the corporation owns | SepaAccount |
SepaIn3rdParty | Receive SEPA transfers from third-party accounts | SepaAccount |
SepaOut1stParty | Send SEPA transfers to accounts the corporation owns | SepaAccount |
SepaOut3rdParty | Send SEPA transfers to third-party accounts | SepaAccount |
AchAccount | A personalised ACH account — dedicated routing and account numbers | — |
AchIn1stParty | Receive ACH from own accounts | AchAccount |
AchIn3rdParty | Receive ACH from third parties | AchAccount |
AchOut1stParty | Send ACH to own accounts | AchAccount |
AchOut3rdParty | Send ACH to third parties | AchAccount |
SpeiAccount | A personalised SPEI account — a dedicated CLABE | — |
SpeiIn1stParty | Receive SPEI from own accounts | SpeiAccount |
SpeiIn3rdParty | Receive SPEI from third parties | SpeiAccount |
SpeiOut1stParty | Send SPEI to own accounts | SpeiAccount |
SpeiOut3rdParty | Send SPEI to third parties | SpeiAccount |
FasterPaymentsAccount | A personalised Faster Payments account — dedicated sort code and account number | — |
FasterPaymentsIn1stParty | Receive Faster Payments from own accounts | — |
FasterPaymentsIn3rdParty | Receive Faster Payments from third parties | — |
FasterPaymentsOut1stParty | Send Faster Payments to own accounts | — |
FasterPaymentsOut3rdParty | Send Faster Payments to third parties | FasterPaymentsAccount |
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,FasterPaymentsIn3rdPartyandFasterPaymentsOut1stPartydeclare no
prerequisite onFasterPaymentsAccount, unlike their SEPA, ACH and SPEI counterparts. They can read
Activebefore any Faster Payments account exists. CheckFasterPaymentsAccountitself before
attempting a Faster Payments flow.
Payout Corridors
Corridors route through an external provider profile, and the profile is the prerequisite.
| Capability | Corridor | Currency | Prerequisite |
|---|---|---|---|
CpnExternalProfile | — | — | — |
PixOut3rdParty | pix | BRL | CpnExternalProfile |
SpeiOut3rdParty | spei | MXN | SpeiAccount |
FedwireOut3rdParty | fedwire | USD | CpnExternalProfile |
SwiftOut3rdParty | swift | USD | CpnExternalProfile |
CipsOut3rdParty | cips | CNY | CpnExternalProfile |
ChatsOut3rdParty | chats | HKD | CpnExternalProfile |
FpsHkOut3rdParty | fps_hk | HKD | CpnExternalProfile |
TripleAExternalProfile | — | — | — |
ImpsOut3rdParty | imps | INR | TripleAExternalProfile |
InstapayOut3rdParty | instapay | PHP | TripleAExternalProfile |
BiFastOut3rdParty | bi-fast | IDR | TripleAExternalProfile |
NipOut3rdParty | nip | NGN | TripleAExternalProfile |
IppOut3rdParty | ipp | AED | TripleAExternalProfile |
PseOut3rdParty | pse | COP | TripleAExternalProfile |
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
| Capability | Grants |
|---|---|
FxTransfer | FX swaps between assets — see FX |
StableExchange | Stablecoin 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": []
}
]
}
}| Field | Description |
|---|---|
capabilities | Map 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:
Verification requirements not fulfilled→ compareverification_requirementsagainst
verification_levels. Start the missing level withPOST /api/v1/corporations/level-token.Prerequisite capability is not active yet→ find each entry ofprerequisitesin the same
response and diagnose that one first.Account should be activated...→ callPOST /api/v1/bank/accountswith the matching
account_type.Account activation is in progress→ pollGET /api/v1/bank/accountsuntil the details are
Active.Country is not supported→ the product is not offered where the corporation is registered. No API
call changes this.Corporation profile is not active→ the corporation'sstatusis notActive. Wirex advances it.You have reached the maximum number of...→ close a card before issuing another.
Updated 20 days ago

