User Information

Retrieve user profile, verification status, and capabilities.

Before You Start

Read the following guides before proceeding:

GuideWhy
Getting StartedPlatform overview and setup
Api BasicsRequired headers and request configuration
AuthenticationHow to obtain access tokens
OnboardingUser and wallet registration

Overview

The user endpoint returns complete account information including profile data, verification status, residence address, and capabilities. Use this endpoint to populate user dashboards and determine feature availability.

Deprecated: GET /api/v1/user/sharing-token and POST /api/v1/user/sharing-token are deprecated.


Get User

Retrieve the authenticated user's account information.

Endpoint

GET /api/v2/user

Response

{
  "id": "00000000-0000-0000-0000-000000000001",
  "user_id": "00000000-0000-0000-0000-000000000001",
  "owner": "0xA7E41d5680dE394EaA2ed417169DFf56840Fb3EE",
  "user_address": "0xA7E41d5680dE394EaA2ed417169DFf56840Fb3EE",
  "chain_id": 8453,
  "profile": {
    "first_name": "Alex",
    "last_name": "Grey",
    "date_of_birth": "1990-01-15",
    "nationality": "GB",
    "email": "[email protected]",
    "phone_number": "+447700900123",
    "status": "Active"
  },
  "residence_address": {
    "line1": "123 High Street",
    "line2": "Flat 4B",
    "city": "London",
    "state": null,
    "post_code": "SW1A 1AA",
    "country": "GB"
  },
  "verification": {
    "status": "Approved",
    "levels": [
      {
        "status": "Approved",
        "type": "BDD",
        "name": "Basic Identity"
      },
      {
        "status": "Approved",
        "type": "SDD",
        "name": "Standard Due Diligence"
      }
    ],
    "documents": [
      {
        "type": "passport",
        "id": "doc_123",
        "file_type": "pdf",
        "added_date": "2024-01-15T10:30:00Z"
      }
    ]
  },
  "external_providers": [
    {
      "type": "cpn"
    }
  ],
  "capabilities": [
    {
      "type": "SepaAccount",
      "status": "Active",
      "verification_requirements": [
        { "type": "SDD", "order": 1 }
      ],
      "prerequisites": []
    },
    {
      "type": "SepaOut1stParty",
      "status": "Active",
      "verification_requirements": [
        { "type": "SDD", "order": 1 }
      ],
      "prerequisites": ["SepaAccount"]
    }
  ]
}

Response Fields

Root Object

FieldTypeDescription
user_idstring (UUID)User account identifier
user_addressstringEOA address that owns this account
idstring (UUID)Deprecated. Mirrors user_id
ownerstringDeprecated. Mirrors user_address
chain_idintegerChain where the account was registered (8453 for Base)
profileobjectUser's personal information
residence_addressobjectUser's residence address
verificationobjectVerification status and documents
external_providersarrayLinked external service providers
capabilitiesarrayAvailable capabilities and their statuses

Profile Object

FieldTypeDescription
first_namestringFirst name from KYC
last_namestringLast name from KYC
date_of_birthstringDate of birth (YYYY-MM-DD)
nationalitystringNationality (ISO 3166-1 alpha-2)
emailstringEmail address
phone_numberstringPhone number with country code
statusstringProfile status: Active, Pending, Blocked, Deleted

Residence Address Object

FieldTypeDescription
line1stringPrimary address line
line2stringSecondary address line (optional)
citystringCity name
statestringState or province (optional)
post_codestringPostal code
countrystringCountry (ISO 3166-1 alpha-2)

Verification Object

FieldTypeDescription
statusstringOverall verification status
levelsarrayIndividual verification levels completed
documentsarraySubmitted verification documents

Verification Statuses

StatusDescription
NoneNo verification submitted
PendingAwaiting user action
AppliedVerification data submitted
InReviewUnder review by compliance
ApprovedVerification approved
RejectedVerification rejected
CancelledVerification cancelled

Verification Levels

LevelDescription
BDDBasic Due Diligence — identity information and documents
SDDStandard Due Diligence — includes address verification
EDDEnhanced Due Diligence — additional compliance checks

Code Examples

const response = await fetch('https://api-baas.wirexapp.com/api/v2/user', {
  method: 'GET',
  headers: {
    'Authorization': `Bearer ${accessToken}`,
    'X-User-Wallet': userEoaAddress,
    'X-Chain-Id': '8453'
  }
});

const user = await response.json();

// Check verification status
if (user.verification?.status === 'Approved') {
  console.log('User is verified');
}

// Check capability availability
const sepaCapability = user.capabilities?.find(c => c.type === 'SepaOut1stParty');
if (sepaCapability?.status === 'Active') {
  console.log('User can send SEPA transfers');
}
import requests

response = requests.get(
    'https://api-baas.wirexapp.com/api/v2/user',
    headers={
        'Authorization': f'Bearer {access_token}',
        'X-User-Wallet': user_eoa_address,
        'X-Chain-Id': '8453'
    }
)

user = response.json()

# Check verification status
if user.get('verification', {}).get('status') == 'Approved':
    print('User is verified')

# Check capability availability
capabilities = user.get('capabilities', [])
sepa_capability = next(
    (c for c in capabilities if c['type'] == 'SepaOut1stParty'),
    None
)
if sepa_capability and sepa_capability['status'] == 'Active':
    print('User can send SEPA transfers')
package main

import (
    "encoding/json"
    "fmt"
    "net/http"
)

type UserResponse struct {
    UserID       string        `json:"user_id"`
    UserAddress  string        `json:"user_address"`
    Verification *Verification `json:"verification"`
    Capabilities []Capability  `json:"capabilities"`
}

type Verification struct {
    Status string `json:"status"`
}

type Capability struct {
    Type   string `json:"type"`
    Status string `json:"status"`
}

func getUser(accessToken, userAddress string) (*UserResponse, error) {
    req, _ := http.NewRequest("GET", "https://api-baas.wirexapp.com/api/v2/user", nil)
    req.Header.Set("Authorization", "Bearer "+accessToken)
    req.Header.Set("X-User-Wallet", userAddress)
    req.Header.Set("X-Chain-Id", "8453")

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        return nil, err
    }
    defer resp.Body.Close()

    var user UserResponse
    if err := json.NewDecoder(resp.Body).Decode(&user); err != nil {
        return nil, err
    }

    return &user, nil
}

func main() {
    user, _ := getUser(accessToken, userAddress)

    // Check verification status
    if user.Verification != nil && user.Verification.Status == "Approved" {
        fmt.Println("User is verified")
    }

    // Check capability availability
    for _, cap := range user.Capabilities {
        if cap.Type == "SepaOut1stParty" && cap.Status == "Active" {
            fmt.Println("User can send SEPA transfers")
        }
    }
}

Error Handling

User Not Found (400)

Returned when no account exists for the caller identified by X-User-Wallet. There is no 404 — a missing
user is reported as a validation failure.

{
  "error_reason": "ErrorNotFound",
  "error_description": "User account not found",
  "error_category": {
    "category": "CategoryValidationFailure",
    "http_status_code": 400
  },
  "error_details": []
}

Server Errors (500)

Error DescriptionCause
Failed to query account infoAccount service unavailable
Failed to read user cardsCard service unavailable
Failed to get bank accountsBanking service unavailable
Failed to build capability contextCapability evaluation could not be prepared
Failed to evaluate user capabilitiesCapability evaluation failed

The capabilities block is assembled from the user's cards and bank accounts, so a card or banking outage
fails the whole call rather than returning a partial profile.


Did this page help you?