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.


Get User

Retrieve the authenticated user's account information.

Endpoint

GET /api/v2/user

Response

{
  "id": "00000000-0000-0000-0000-000000000001",
  "owner": "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
idstring (UUID)User account identifier
ownerstringEOA wallet address that owns this account
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-Address': 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-Address': 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 {
    ID           string        `json:"id"`
    Owner        string        `json:"owner"`
    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-Address", 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

Error ReasonDescription
ErrorNotFoundUser account not found

Error Response Format

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