Awesome-omni-skill wirex-baas-overview

Wirex BaaS platform overview and getting started guide — start here for integration basics. Covers what Wirex BaaS is, the 5-step integration flow, API environments (sandbox and production URLs), sandbox test credentials, required headers (Authorization, X-Chain-Id), error handling, blockchain networks (Base, Stellar), canonical token and contract registry addresses, MCP server setup, and supported countries (77) with SEPA/ACH bank availability.

install
source · Clone the upstream repo
git clone https://github.com/diegosouzapw/awesome-omni-skill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/development/wirex-baas-overview" ~/.claude/skills/diegosouzapw-awesome-omni-skill-wirex-baas-overview && rm -rf "$T"
manifest: skills/development/wirex-baas-overview/SKILL.md
source content

Wirex BaaS Platform Overview

Introduction

Wirex BaaS (Banking-as-a-Service) is a blockchain-native financial services platform that enables partners to embed comprehensive financial capabilities into their applications through REST APIs. The platform bridges traditional finance and decentralized infrastructure, providing a unified interface for:

  • Account Abstraction (AA) Wallets -- Smart contract wallets deployed on-chain with gasless transactions, social recovery, and multi-signature support. Each user gets a deterministic wallet address derived from their identity.
  • KYC Verification -- Identity verification flows supporting document checks, liveness detection, and regulatory compliance across 88+ countries. Powered by third-party providers with webhook-based status updates.
  • Visa Card Issuance -- Virtual and physical Visa card provisioning, lifecycle management, transaction controls, and Apple Pay / Google Pay tokenization. Cards are funded from user wallets.
  • Crypto Asset Management -- Multi-chain token support (USDC, USDT, EURC, WUSD, WEUR) with on-chain balances, transfers, and exchange operations across Base and Stellar networks.
  • Fiat Banking (SEPA/ACH) -- Bank account creation, inbound/outbound transfers, and currency conversion. SEPA covers 28 European countries; ACH covers 34+ countries including all US states.

All services are accessed through a consistent REST API layer with OAuth2 authentication, standardized error handling, and blockchain transaction management.


Integration Flow

Integrating with Wirex BaaS follows five sequential steps:

Step 1: Partner Setup

Wirex provisions your partner account and issues credentials:

  • client_id -- UUID identifying your application
  • client_secret -- Secret string for OAuth2 token exchange
  • partner_id -- 16-byte hex identifier used in on-chain operations (e.g.,
    0x00000000000000000000000000000007
    )

You receive access to the Sandbox environment for development and testing.

Step 2: Authentication

Establish server-to-server authentication using OAuth2 client credentials:

POST /api/v1/token
Content-Type: application/json

{
  "client_id": "<your-client-id>",
  "client_secret": "<your-client-secret>",
  "grant_type": "client_credentials"
}

The returned

access_token
is valid for 48 hours and is required as a Bearer token on all subsequent API calls.

Step 3: On-Chain Configuration

Configure your on-chain environment:

  1. Query the Contract Registry to discover deployed contract addresses (Accounts, FundsManagement, ExecutionDelayPolicy, TokensRegistry).
  2. Verify token addresses and decimals from the TokensRegistry contract.
  3. Set up webhook endpoints for asynchronous event notifications (transaction confirmations, KYC status changes, card events).

Step 4: API Registration

Register your first user through the API:

  1. Call
    POST /api/v1/user
    or
    POST /api/v2/user
    to create a user record.
  2. The platform deploys an Account Abstraction wallet on the configured chain.
  3. Obtain a user-scoped token via
    POST /api/v1/user/authorize
    for user-specific operations.

Step 5: Operations

With authentication and user registration complete, you can:

  • Initiate KYC verification flows
  • Issue virtual or physical Visa cards
  • Execute crypto transfers and exchanges
  • Create bank accounts and process fiat transfers
  • Query balances, transactions, and account status

Environments

Wirex BaaS provides separate environments for development and production use.

Core API Environments

EnvironmentBase URLPurpose
Sandbox
https://api-baas.wirexapp.tech
Development and testing with test data
Production
https://api-baas.wirexapp.com
Live operations with real funds

PCI-Compliant Card Environments

Card-related operations that handle sensitive PAN data use dedicated PCI DSS-compliant endpoints, specifically for card tokenization in push-to-card transfers:

EnvironmentBase URLPurpose
PCI Sandbox
https://wx-acquiring-card-manager-uat.wirexapp.com
Card testing
PCI Production
https://wx-acquiring-card-manager.wirexapp.com
Live card operations

Helper API

EnvironmentBase URLPurpose
Helper API
https://ramc.wirexapp.tech
Utility services and auxiliary operations

Blockchain Networks

Wirex BaaS operates on the following blockchain networks:

Production Networks:

NetworkChain IDDescription
Base
8453
Ethereum L2 (Coinbase) -- primary EVM chain
Stellar
9223372036854775806
Stellar network for cross-border payments

Sandbox Networks:

NetworkChain IDDescription
Base Sepolia
84532
Base testnet for development
Stellar Testnet
9223372036854775806
Stellar testnet (same chain ID as production)

Note: The Stellar chain ID is the same value (

9223372036854775806
) in both sandbox and production. The environment base URL determines which Stellar network is used.


Credentials

Partners receive three credentials upon onboarding:

CredentialFormatDescription
client_idUUID stringUniquely identifies your partner application. Passed in the token request body.
client_secretOpaque stringUsed alongside
client_id
to authenticate token requests. Must be stored securely and never exposed in client-side code.
partner_id16-byte hex stringOn-chain identifier for your partner account (e.g.,
0x00000000000000000000000000000007
). Used as the
parentEntity
parameter when registering user wallets in the Accounts smart contract, and in some API headers. Not secret but should be validated against expected value. Can be stored in application configuration.

Security Requirements

  • Store
    client_secret
    in a secrets manager or encrypted environment variable. Never commit it to source control.
  • Rotate credentials immediately if a compromise is suspected.
  • Use separate credentials for Sandbox and Production environments.

API Basics

Protocol and Security

  • HTTPS only -- All API communication uses HTTPS with TLS 1.2 or higher. Plain HTTP requests are rejected.
  • Content-Type -- All request and response bodies use
    application/json
    .
  • Timeout -- A 30-second timeout is recommended for all API calls. Some blockchain operations may take longer; use webhooks for async confirmation.

Required Headers

Every API request must include the following headers:

HeaderRequiredDescription
Authorization
YesBearer token from
/api/v1/token
(e.g.,
Bearer eyJhbGciOi...
)
X-Chain-Id
YesBlockchain network identifier. Must match your target chain (e.g.,
84532
for Sandbox Base Sepolia,
8453
for Production Base). Required for all requests.
Content-Type
Yes (for POST/PUT)
application/json

Additional headers for user-specific operations:

HeaderWhen RequiredDescription
X-User-Address
User-specific callsUser's EOA (Externally Owned Account) address — NOT the Smart Wallet address
X-User-Email
User-specific callsEmail address of the user
X-User-Id
User-specific callsInternal user identifier

Exactly one of

X-User-Address
,
X-User-Email
, or
X-User-Id
is required for endpoints that operate on a specific user. Providing multiple user identity headers in the same request is rejected with an error. User-agnostic endpoints (token, config, user creation) do not require these headers.

User-Agnostic Endpoints

The following endpoints do not require user identity headers:

  • POST /api/v1/token
    -- Authentication
  • POST /api/v1/user
    -- User creation
  • POST /api/v2/user
    -- User creation (v2)
  • GET /api/v1/config
    -- Platform configuration
  • GET /api/v1/validation/rules
    -- Validation rules

MCP Server

Wirex BaaS provides a Model Context Protocol (MCP) server for AI-assisted development. The MCP server gives AI tools direct access to API documentation, endpoint specifications, and code generation assistance.

MCP Server URL:

https://docs.wirexapp.com/mcp

The MCP server supports:

  • API Documentation Access -- Query endpoint specifications, request/response schemas, and usage examples.
  • Documentation Search -- Search across the full Wirex BaaS documentation corpus.
  • Real-Time Data -- Access current API status, supported tokens, and configuration values.
  • Code Generation Assistance -- Generate integration code snippets for common workflows.

For detailed setup instructions across different tools (Claude Code, Cursor, Claude Desktop, Windsurf), see the MCP Setup Reference.


Supported Countries

Wirex BaaS supports operations in 77 countries across five regions:

RegionCountry CountExamples
Europe35United Kingdom, Germany, France, Spain, Italy, Netherlands, Sweden, Switzerland, Poland, Austria, and 25 more
Asia-Pacific10Singapore, Japan, Hong Kong, Australia, Indonesia, Malaysia, Taiwan, Thailand, Vietnam, and more
Latin America7Brazil, Mexico, Argentina, Chile, Colombia, Peru, Ecuador
Rest of World24UAE, South Africa, Israel, Turkey, Nigeria, Saudi Arabia, South Korea, and 17 more
United States1Full coverage across all 50 states + DC

For the complete list with ISO country codes, see the Supported Regions Reference.

Bank Account Availability

Fiat banking services are available through two networks:

  • SEPA (Single Euro Payments Area) -- 28 European countries. Supports EUR-denominated transfers with T+1 settlement.
  • ACH (Automated Clearing House) -- 34+ countries including all US states and territories. Supports USD-denominated transfers.

Availability depends on the user's country of residence and completed KYC level.


Error Handling

All API errors follow a consistent JSON format:

{
  "error_reason": "ErrorInvalidField",
  "error_description": "The provided X-Chain-Id header value is not supported.",
  "error_category": {
    "category": "CategoryValidationFailure",
    "http_status_code": 400
  },
  "error_details": [
    { "key": "field", "details": "X-Chain-Id" },
    { "key": "issue", "details": "unsupported_value" }
  ]
}

Error Fields

FieldTypeDescription
error_reason
stringPascalCase error code (e.g.,
ErrorInvalidField
,
ErrorPermissionDenied
,
ErrorNotFound
,
ErrorExpired
,
ErrorMissingField
,
ErrorAlreadyExists
,
ErrorNotSupported
,
ErrorConfigurationInvalid
)
error_description
stringHuman-readable explanation of the error
error_category
objectError classification object containing
category
(string) and
http_status_code
(integer)
error_details
arrayArray of objects, each with
key
(string) and
details
(string) providing additional context

Error Categories

CategoryHTTP StatusDescriptionRecommended Action
CategoryValidationFailure
400Invalid request parameters, missing headers, malformed dataFix the request and retry
CategoryUnauthorized
401Invalid or expired token, insufficient permissionsRe-authenticate and retry
CategoryInternalFailure
500Server-side errorRetry with exponential backoff; contact support if persistent
CategoryTransientFailure
429Rate limit exceeded or temporary service degradationRetry after the delay indicated in
Retry-After
header

Error Handling Best Practices

  1. Always check the
    error_category
    to determine retry strategy.
  2. Implement exponential backoff for
    CategoryTransientFailure
    and
    CategoryInternalFailure
    errors.
  3. Do not retry
    CategoryValidationFailure
    errors without modifying the request.
  4. Refresh tokens proactively -- cache tokens and refresh 5 minutes before expiry to avoid
    CategoryUnauthorized
    errors.
  5. Log
    error_reason
    and
    error_description
    for debugging and support escalations.

References