agentsclimarketplace

Wirex baas onboarding

Skill wirexapp/wirex-baas-agent-skills/skills/wirex-baas-onboarding

Wirex BaaS user onboarding — create users, deploy wallets, verify identity. Covers user registration (POST /api/v2/user), smart wallet deployment (ERC-4337 Account Abstraction), three KYC verification flows (Wirex Hosted, SumSub Shared, API Reliance), user profile and capabilities (GET /api/v2/user), phone confirmation, and document upload.From its SKILL.md

Install
npx -y skills add wirexapp/wirex-baas-agent-skills --skill wirex-baas-onboarding

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its file declares

Copied from the file, not written here

The file declares its own license as Apache-2.0. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

7.8 KB, as published. Nobody here has run it

Wirex BaaS Onboarding Skill

Overview

Wirex BaaS onboarding is a three-step process that takes a user from zero state to a fully verified participant with access to crypto, card, and banking services.

StepActionOutcome
1Wallet DeploymentSmart wallet created on-chain with Kernel v3.1, executor, and policy modules
2User RegistrationUser record created in Wirex backend via POST /api/v2/user
3KYC VerificationIdentity verified through one of three flows; unlocks card and banking capabilities

Step 1: Smart Wallet Deployment

The wallet is an ERC-4337 Account Abstraction smart wallet built on Kernel v3.1. Deployment installs two modules:

  • FundsManagement Executor -- manages on-chain fund operations for card debits, transfers, and banking flows.
  • ExecutionDelayPolicy -- enforces a configurable time delay on sensitive operations.

Three SDK options are available:

SDKChain SupportUse Case
Wirex SDK (@wirexapp/wirexpay-sdk)EVM chainsPrimary integration path
ZeroDev SDKEVM chainsAlternative for existing ZeroDev users
Crossmint SDKStellarStellar-based deployments

After deployment, a webhook fires to POST /v2/webhooks/wallets confirming the wallet status.

See WALLET-DEPLOYMENT.md for the full deployment guide.


Step 2: User Registration

WARNING: wallet_address must be the user's EOA address (signer), NOT the Smart Wallet address.

Standard Registration (S2S)

POST /api/v2/user

Required headers: Authorization: Bearer {s2s_token}, Content-Type: application/json, X-Chain-Id: {chainId}

IMPORTANT: sharing_data and initial_data are mutually exclusive — do not provide both in the same request.

Hosted KYC Request

{
  "wallet_address": "0xAbC123...EOA",
  "initial_data": {
    "profile": {
      "email": "[email protected]"
    },
    "residence_address": {
      "country": "GB"
    }
  }
}

SumSub Shared KYC Request

Requires prior approval from Wirex (3-sided data sharing agreement with SumSub).

{
  "wallet_address": "0xAbC123...EOA",
  "sharing_data": {
    "sharing_token": "eyJhbGciOi...",
    "email": "[email protected]"
  }
}

Phone number from SumSub verification is automatically confirmed (no manual phone confirmation needed).

Reliance KYC Request

Requires prior Wirex approval after detailed audit.

{
  "wallet_address": "0xAbC123...EOA",
  "initial_data": {
    "profile": {
      "first_name": "Jane",
      "last_name": "Doe",
      "date_of_birth": "1990-01-15",
      "nationality": "GB",
      "email": "[email protected]",
      "phone_number": "+447700900123"
    },
    "residence_address": {
      "line1": "10 Downing Street",
      "line2": "",
      "city": "London",
      "state": "England",
      "post_code": "SW1A 2AA",
      "country": "GB"
    }
  }
}

Phone number (E.164 with + prefix) provided during reliance onboarding is automatically confirmed.

Response

{
  "id": "user-uuid"
}

Privy Registration

For partners using Privy authentication (headers carry Privy tokens):

POST /api/v1/user/retail
{
  "country": "GB"
}

Step 3: KYC Verification

Three KYC flows are available, each suited to different integration depths.

KYC Flow Comparison

AspectHostedSumSub SharedReliance
ComplexityLowMediumHigh
UI OwnershipWirex-hosted web pageSumSub SDK in partner appFully partner-owned
Data CollectionWirex collects all dataSumSub collects, shares tokenPartner collects and submits
Registration Fieldsinitial_data.profile.email + initial_data.residence_address.countrysharing_data.sharing_token + sharing_data.emailFull initial_data (profile + residence_address) + documents
Partner EffortRedirect user to URLIntegrate SumSub SDKBuild full KYC UI, upload docs
Best ForQuick MVP / low volumePartners already using SumSubFull white-label experience

Verification Statuses

StatusMeaningNext Action
NoneKYC not startedBegin KYC flow
AppliedUser submitted applicationWait for review
PendingAdditional info requestedProvide requested documents
InReviewUnder manual reviewWait
ApprovedKYC passedFull access granted
CanceledApplication canceledRe-apply
RejectedKYC failedContact support or re-apply

KYC Completion Endpoints

After registration, direct the user to complete KYC:

EndpointReturnsUse Case
GET /api/v1/user/verification-linkURL stringRedirect user in browser
GET /api/v1/user/verification-tokenToken stringEmbed SumSub SDK in-app

See KYC-FLOWS.md for detailed flow walkthroughs with code examples.


Post-Onboarding Access

FeatureAvailable After
Crypto withdrawalsWallet deployment (immediate)
Crypto depositsWallet deployment (immediate)
Virtual card issuanceKYC Approved
Physical card issuanceKYC Approved
SEPA bankingKYC Approved + capability active
ACH bankingKYC Approved + capability active
Faster PaymentsKYC Approved + capability active

User Profile

After registration, retrieve the full user profile:

GET /api/v2/user

The response includes profile status, verification level, residence address, external provider info, and a capabilities array that governs which features the user can access.

See USER-PROFILE.md for the complete profile schema and capabilities system.


Webhooks

Wallet Webhook

POST /v2/webhooks/wallets

Fires when a wallet is deployed or its status changes. Expects 2xx within 10 seconds. Failed deliveries are NOT retried.

{
  "wallet_address": "0xA7E41d5680dE394EaA2ed417169DFf56840Fb3EE",
  "wallet_name": "Main Wallet",
  "wallet_status": "Confirmed",
  "wallet_type": "Primary",
  "balances": []
}

Wallet status values: Confirmed (properly configured), Rejected (invalid configuration), Unknown (indeterminate). Wallet type values: Primary, Secondary, Global, Card.

User Webhook (Legacy)

Note: This is a legacy webhook format that will be replaced with a v2 model in a future release.

POST /webhook/users

Fires when a user profile or verification status changes.


---

## Quick Start Checklist

1. Deploy smart wallet using one of three SDKs (see [WALLET-DEPLOYMENT.md](references/WALLET-DEPLOYMENT.md)).
2. Register user via `POST /api/v2/user` with the **EOA address** (not the smart wallet address).
3. Choose a KYC flow and complete verification (see [KYC-FLOWS.md](references/KYC-FLOWS.md)).
4. Poll `GET /api/v2/user` or listen for the user webhook to confirm `verification.status == "Approved"`.
5. Check capabilities to gate feature access (see [USER-PROFILE.md](references/USER-PROFILE.md)).
6. User is fully onboarded -- proceed to cards, transfers, or crypto operations.

Keep looking

Skills are one crate of 628,971. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.