VirtualCards.us API document API Reference

This is VirtualCards.us API documentation. Here you will find what functionality is available to you to integrate your VirtualCards.us account into your current and future business processes and to automate your business transactions. There are APIs for most of what you can do via the consumer portal. Swagger API document is also available.

To help you navigate, this page is split into 3 vertical sections:

  • the navigation menu on the left,
  • the content in the middle,
  • and usage examples on the right.

To get started, contact info@terncommerce.com to get account, then login the system to get the x-api-key. Two accounts will be provided, one for sandbox and one for production environment. The sandbox environment is useful for development and allows to play with test data. Some of the data will be pre-populated so you can start quickly.

Note: all the currency amount(includes card balance, etc) is in minor unit(the exponent). See https://en.wikipedia.org/wiki/ISO_4217 . You may need to format it before displaying to end user.

Login entrance to get/change API key

API Endpoint

  • Sandbox: https://staging.virtualcards.us/api
  • Production: https://www.virtualcards.us/api

Please DO NOT use production environment until you have tested your integration sufficiently and are happy that it works as expected.

API Endpoint
https://span.hans/api
Terms of Service: https://www.virtualcards.us/sandbox-terms-of-service
Contact: info@terncommerce.com
Request Content-Types: application/x-www-form-urlencoded
Response Content-Types: application/json
Schemes: https
Version: 1.0.0

Authentication

x-api-key

name
x-api-key
in
header
description

Used to verify api invoker. Value can has prefix 'Bearer '.

x-token

name
x-token
in
header
description

User token. Get it by login API. Value can has prefix 'Bearer '.

x-timezone

name
x-timezone
in
header
description

Not security requirement. User's timezone. Optional but highly recommend to add to specify date's timezone in request parameters. Default to be current user's timezone configure or America/New_York if x-token is not provided or timezone is not configured for the user. Value should be one of the timezone names listed in http://php.net/manual/en/timezones.php or an offset value (like +0200).

x-i18n

name
x-i18n
in
header
description

Not security requirement. User's language to translate response message. Optional. Default to en. Valid values: en for English, zh for Chinese(中文(简体)), es for Spanish(Español), pt-BR for Brazilian Portuguese(Português do Brasil), ja for Japanese(にほんご), or ar for Arabic(العَرَبِيَّة).

Basic data

Card programs

GET /card-programs

Get not only available card programs, but also their cards, countries, id verification requirements, load partners/methods and reshippers

Available card programs and related data. Save it so that you can call other APIs later.

400 Bad Request

Parameter error

401 Unauthorized

Authentication Required

403 Forbidden

Failed to authenticate

Response Example (200 OK)
{
  "success": "boolean",
  "message": "string",
  "data": [
    {
      "id": "integer",
      "name": "string",
      "customize": {
        "linkColor": "string",
        "linkActiveColor": "string"
      },
      "subDomain": "string",
      "logo": "string",
      "language": "string",
      "css": "string",
      "cards": [
        {
          "id": "integer",
          "name": "string",
          "minLoadAmount": "number (float)",
          "maxLoadAmount": "number (float)",
          "maxBalance": "number (float)",
          "currencies": [
            "string"
          ],
          "artwork": "string",
          "network": "string"
        }
      ],
      "countries": [
        {
          "country": {
            "id": "integer",
            "name": "string",
            "iso": "string",
            "iso3": "string",
            "phoneCode": "string",
            "region": "string"
          },
          "idVerifications": [
            {
              "type": "string",
              "side": "string"
            }
          ],
          "loadPartners": [
            {
              "id": "integer",
              "name": "string",
              "methods": [
                {
                  "id": "integer",
                  "name": "string",
                  "icon": "string",
                  "currencies": [
                    "string"
                  ]
                }
              ]
            }
          ]
        }
      ],
      "reshippers": [
        {
          "reshipper": {
            "id": "integer",
            "name": "string",
            "address": "string",
            "dba": "string",
            "autoSignup": "boolean"
          },
          "addresses": [
            {
              "id": "integer",
              "name": "string",
              "default": "string",
              "primary": "string",
              "second": "string",
              "phone": "string",
              "country": "string",
              "state": "string",
              "city": "string",
              "zipCode": "string"
            }
          ]
        }
      ]
    }
  ]
}
Response Example (400 Bad Request)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (401 Unauthorized)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (403 Forbidden)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}

States

GET /states

Get all states in the specified country

countryId

Country ID. See Card Programs API

type
integer
in
query
400 Bad Request

Parameter error

401 Unauthorized

Authentication Required

403 Forbidden

Failed to authenticate

Response Example (200 OK)
{
  "success": "boolean",
  "message": "string",
  "data": [
    {
      "id": "integer",
      "name": "string",
      "abbr": "string"
    }
  ]
}
Response Example (400 Bad Request)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (401 Unauthorized)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (403 Forbidden)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}

Issuers

GET /load-method/issuers

Get available issuers of the load method

method

Load method ID. Only available for load method 'iDeal' now. See Card Programs API

type
integer
in
query
currency

Currency code, 3 characters, for instance, 'USD'

type
string
in
query
country

Country ISO code, 2 characters, for instance, 'US'

type
string
in
query
400 Bad Request

Parameter error

401 Unauthorized

Authentication Required

403 Forbidden

Failed to authenticate

Response Example (200 OK)
{
  "success": "boolean",
  "message": "string",
  "data": [
    {
      "id": "integer",
      "name": "string"
    }
  ]
}
Response Example (400 Bad Request)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (401 Unauthorized)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (403 Forbidden)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}

Account Sign-up Process

Step 1: Member Info

POST /register/member-info
firstName

First name

type
string
in
formData
lastName

Last name

type
string
in
formData
birthday

Date of birth. Format: YYYY-MM-DD

type
string (date)
in
formData
gender

Gender, Male or Female

type
string Male, Female
in
formData
emailAddress

Email address

type
string (email)
in
formData
password

Minimum 7 characters include uppercase, lowercase and numeric

type
string (password)
in
formData
cardId

The card which is applying. CardProgramCardType id, See Card Programs API

type
integer
in
formData
200 OK
400 Bad Request

Parameter error

401 Unauthorized

Authentication Required

403 Forbidden

Failed to authenticate

Response Example (200 OK)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (400 Bad Request)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (401 Unauthorized)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (403 Forbidden)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}

Step 2: Verify email

POST /register/verify-email

Check if user's email address is reachable

verify

Verify code sent to email address

type
string
in
formData
400 Bad Request

Parameter error

401 Unauthorized

Authentication Required

403 Forbidden

Failed to authenticate

Response Example (200 OK)
{
  "success": "boolean",
  "message": "string",
  "data": {
    "userId": "integer",
    "token": "string",
    "userCardId": "integer"
  }
}
Response Example (400 Bad Request)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (401 Unauthorized)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (403 Forbidden)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}

Step 3: Personal info

POST /register/personal-info
address

First address line

type
string
in
formData
addressline

Second address line

type
string
in
formData
country

ISO country code, 3 characters

type
string
in
formData
state

State ID

type
integer
in
formData
city

City name

type
string
in
formData
phone

Home phone

type
string
in
formData
mobilephone

Mobile phone

type
string
in
formData
workphone

Work phone

type
string
in
formData
zip

Zip/Postal code

type
string
in
formData
currency

Card currency. 3 characters. Must be available for the card type. See Card Programs API

type
string
in
formData
200 OK
400 Bad Request

Parameter error

401 Unauthorized

Authentication Required

403 Forbidden

Failed to authenticate

Response Example (200 OK)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (400 Bad Request)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (401 Unauthorized)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (403 Forbidden)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}

Step 4: Billing address

POST /register/billing-address
shipper

Reshipper id. Also support 0 for auto sign up type, and -2 for custom address. See Card Programs API.

type
integer
in
formData
autoSignUpShipper

Auto sign up shipper id. Required when shipper is 0

type
integer
in
formData
address_index

Address Id, See Card Programs API. Required except for auto sign up, custom, and 'Shop and Ship'

type
integer
in
formData
suite

Custom address. Required when address_index is provided.

type
string
in
formData
email

Email address. Required when shipper is 'Shop and Ship'

type
string
in
formData
password

Password. Required when shipper is 'Shop and Ship'

type
string
in
formData
defaultAddress

Required when shipper is -2

type
string
in
formData
secondAddress

Required when shipper is -2, may be empty string

type
string
in
formData
country

Country ID, See Card Programs API. Required when shipper is -2

type
integer
in
formData
state

State ID, see States API. Required when shipper is -2

type
integer
in
formData
city

City name. Required when shipper is -2

type
string
in
formData
zipCode

Zip code. Required when shipper is -2

type
string
in
formData
phone

Phone number. Required when shipper is -2

type
string
in
formData
shipitoType

'Login' or 'Register'. Only shipitoEmail and shipitoPassword are required if it's 'Login'

type
string Login, Register
in
formData
shipitoFirstName

First name. Required when shipper is 0 and autoSignUpShipper is 'Shipito'

type
string
in
formData
shipitoLastName

Last name. Required when shipper is 0 and autoSignUpShipper is 'Shipito'

type
string
in
formData
shipitoCountry

country ISO code(2 character). Required when shipper is 0 and autoSignUpShipper is 'Shipito'

type
string
in
formData
shipitoEmail

Email address. Required when shipper is 0 and autoSignUpShipper is 'Shipito'

type
string
in
formData
shipitoPassword

Password. Required when shipper is 0 and autoSignUpShipper is 'Shipito'

type
string
in
formData
200 OK
400 Bad Request

Parameter error

401 Unauthorized

Authentication Required

403 Forbidden

Failed to authenticate

Response Example (200 OK)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (400 Bad Request)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (401 Unauthorized)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (403 Forbidden)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}

Authentication

Login

POST /auth/login
username

Email or username

type
string
in
formData
password

Password

type
string
in
formData
200 OK
400 Bad Request

Parameter error

401 Unauthorized

Authentication Required

403 Forbidden

Failed to authenticate

Response Example (200 OK)
{
  "success": "boolean",
  "message": "string",
  "data": {
    "token": "string"
  }
}
Response Example (400 Bad Request)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (401 Unauthorized)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (403 Forbidden)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}

Forgot password

POST /auth/forgot-password

Request to reset password. Each account can only request to reset password once in 2 hrs.

username

Email or username

type
string
in
formData
200 OK
400 Bad Request

Parameter error

401 Unauthorized

Authentication Required

403 Forbidden

Failed to authenticate

Response Example (200 OK)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (400 Bad Request)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (401 Unauthorized)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (403 Forbidden)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}

Reset password

POST /auth/reset-password
auth_code

Should be retrieved from the email sent via forgot password API

type
string
in
formData
password

New password. Minimum 7 characters include uppercase, lowercase and numeric

type
string (password)
in
formData
200 OK
400 Bad Request

Parameter error

401 Unauthorized

Authentication Required

403 Forbidden

Failed to authenticate

Response Example (200 OK)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (400 Bad Request)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (401 Unauthorized)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (403 Forbidden)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}

Logout

POST /auth/logout

Token will be expired after logging out.

200 OK
400 Bad Request

Parameter error

401 Unauthorized

Authentication Required

403 Forbidden

Failed to authenticate

Response Example (200 OK)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (400 Bad Request)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (401 Unauthorized)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (403 Forbidden)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}

Id verification

Step 1: Upload

POST /id-verification/upload

Upload your images need to be verified. Id verification is required to issue reloadable card.

country

Country Id. See Card Programs API

type
integer
in
formData
type

Image type. Only accept the available values in the country. Valid values: 'PSP', 'ID' and 'DL', means 'Passport', 'ID Card', and 'Driver License'. See Card Programs API

type
string PSP, ID, DL
in
formData
frontImage

Front image of the document, at most 20MB. Required if the side of image type is 'BOTH' or 'FRONT'. See Card Programs API

type
file
in
formData
backImage

Back image of the document. Required if the side of image type is 'BOTH' or 'BACK'. See Card Programs API

type
file
in
formData
400 Bad Request

Parameter error

401 Unauthorized

Authentication Required

403 Forbidden

Failed to authenticate

Response Example (200 OK)
{
  "success": "boolean",
  "message": "string",
  "data": {
    "id": "integer",
    "reference": "string"
  }
}
Response Example (400 Bad Request)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (401 Unauthorized)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (403 Forbidden)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}

Step 2: Retrieve

GET /id-verification/retrieve

Retrieve id verification status and result. Run this at least 10 minutes later after uploading

id

Returned id field of upload API. See Id Verification Upload API

type
integer
in
query
reference

Returned reference field of upload API. See Id Verification Upload API

type
string
in
query
400 Bad Request

Parameter error

401 Unauthorized

Authentication Required

403 Forbidden

Failed to authenticate

Response Example (200 OK)
{
  "success": "boolean",
  "message": "string",
  "data": {
    "processed": "boolean",
    "number": "string",
    "requireIssueDate": "boolean",
    "requireExpiryDate": "boolean"
  }
}
Response Example (400 Bad Request)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (401 Unauthorized)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (403 Forbidden)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}

Step 3: Submit

POST /id-verification/finish

Submit required missing fields and finished id verification.

id

Returned id field of upload API. See Id Verification Upload API

type
integer
in
formData
issue_date

Issue date. Format: 'YYYY-MM-DD'. Required if requireIssueDate in retrieve API result is true. See Id Verification Retrieve API

type
string (date)
in
formData
expire_date

Expiry date. Format: 'YYYY-MM-DD'. Required if requireExpiryDate in retrieve API result is true. See Id Verification Retrieve API

type
string (date)
in
formData
200 OK
400 Bad Request

Parameter error

401 Unauthorized

Authentication Required

403 Forbidden

Failed to authenticate

Response Example (200 OK)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (400 Bad Request)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (401 Unauthorized)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (403 Forbidden)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}

Load card

Step 1: Query payment

POST /load/query-payment

Get available load methods, and related pay amount(with fee) and supported currencies.

userCardId

The card want to issue. It should be the value of userCardId field in result of member info API. See Card Programs API and Member Info API

type
integer
in
formData
amount

Load amount(minor unit) in card's currency. The currency is set in personal info step. Load amount should be between maximum and minimum limit of the card type. The card balance should'nt exceed the maximum balance limit of the card type. See Card Programs API and Member Info API

type
number (integer) x ≥ 1
in
formData
400 Bad Request

Parameter error

401 Unauthorized

Authentication Required

403 Forbidden

Failed to authenticate

Response Example (200 OK)
{
  "success": "boolean",
  "message": "string",
  "data": {
    "amountText": "string",
    "pendingExceed": "string",
    "methods": [
      {
        "id": "integer",
        "name": "string",
        "artwork": "string",
        "partner": {
          "id": "integer",
          "name": "string"
        },
        "loadFee": "string",
        "payAmounts": [
          {
            "amount": "integer",
            "currency": "string",
            "formatted": "string",
            "symbol": "string,"
          }
        ]
      }
    ]
  }
}
Response Example (400 Bad Request)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (401 Unauthorized)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (403 Forbidden)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}

Step 2: Quote payment

POST /load/quote-payment

Get the payment details include load fee, membership fee, other possible fees, possible discounts, and the final amount user need to pay. Non-reloadable card can only be loaded once. Membership fee will be charged in first load attempt. Load fee will be charged in each load attempt.

userCardId

The card want to issue. It should be the value of userCardId field in result of member info API. See Card Programs API and Member Info API

type
integer
in
formData
amount

Load amount(minor unit) in card's currency. The currency is set in personal info step. Load amount should be between maximum and minimum limit of the card type. The card balance should'nt exceed the maximum balance limit of the card type. See Card Programs API and Member Info API

type
number (integer) x ≥ 1
in
formData
partner

Load partner Id. See Card Programs API

type
integer
in
formData
method

Load method Id. See Card Programs API

type
integer
in
formData
currency

Pay in which currency. It must be supported by the load method. See Card Programs API

type
string
in
formData
400 Bad Request

Parameter error

401 Unauthorized

Authentication Required

403 Forbidden

Failed to authenticate

Response Example (200 OK)
{
  "success": "boolean",
  "message": "string",
  "data": {
    "id": "integer",
    "partner": "string",
    "method": "string",
    "currency": "string",
    "loadAmount": {
      "amount": "integer",
      "currency": "string",
      "formatted": "string",
      "symbol": "string,"
    },
    "loadFee": {
      "amount": "integer",
      "currency": "string",
      "formatted": "string",
      "symbol": "string,"
    },
    "membershipFee": {
      "amount": "integer",
      "currency": "string",
      "formatted": "string",
      "symbol": "string,"
    },
    "replacementFee": {
      "amount": "integer",
      "currency": "string",
      "formatted": "string",
      "symbol": "string,"
    },
    "otherFees": [
      {
        "type": "string",
        "amount": "string",
        "currency": "string",
        "coin": {
          "amount": "integer",
          "currency": "string",
          "formatted": "string",
          "symbol": "string,"
        }
      }
    ],
    "totalAmount": {
      "amount": "integer",
      "currency": "string",
      "formatted": "string",
      "symbol": "string,"
    },
    "loadFeeDiscount": "string",
    "membershipFeeDiscount": "string",
    "payAmount": {
      "amount": "integer",
      "currency": "string",
      "formatted": "string",
      "symbol": "string,"
    }
  }
}
Response Example (400 Bad Request)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (401 Unauthorized)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (403 Forbidden)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}

Step 3: Create payment

POST /load/create-payment

Submit the load order. This API will actually create the payment and return the pay instruction.

loadId

The load Id in the quote payment API response

type
integer
in
formData
issuerId

Issuer (Bank) Id. Required if load method is 'iDeal'. See Load Method Issuers API

type
string
in
formData
state

State/Region (2 letter state code). Required if load method is 'BrazilPayBoleto'

type
string
in
formData
documentId

Document Id (CPF/CNPJ). Required if load method is 'BrazilPayBoleto'

type
string
in
formData
400 Bad Request

Parameter error

401 Unauthorized

Authentication Required

403 Forbidden

Failed to authenticate

Response Example (200 OK)
{
  "success": "boolean",
  "message": "string",
  "data": {
    "redirect": "string",
    "instruction": [
      {
        "key": "string",
        "value": "string"
      }
    ]
  }
}
Response Example (400 Bad Request)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (401 Unauthorized)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (403 Forbidden)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}

Step 4: Payment status

POST /load/payment-status

Get the payment detail includes status and transaction number

loadId

The load Id in the quote payment API response

type
integer
in
formData
400 Bad Request

Parameter error

401 Unauthorized

Authentication Required

403 Forbidden

Failed to authenticate

Response Example (200 OK)
{
  "success": "boolean",
  "message": "string",
  "data": {
    "status": "string",
    "transactionNo": "string"
  }
}
Response Example (400 Bad Request)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (401 Unauthorized)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (403 Forbidden)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}

Load history

GET /load/history

Load card history details.

userCardId

The card want to check load history. It should be the value of 'userCardId' field in result of member info or card list APIs

type
integer
in
query
startAt

Start date filter. Format: YYYY-MM-DD

type
string (date)
in
query
endAt

End date filter. Format: YYYY-MM-DD

type
string (date)
in
query
status

Load status filter. Default is 'loaded'

type
string , initiated, pending, received, loaded, all loaded
in
query
400 Bad Request

Parameter error

401 Unauthorized

Authentication Required

403 Forbidden

Failed to authenticate

Response Example (200 OK)
{
  "success": "boolean",
  "message": "string",
  "data": [
    {
      "id": "integer",
      "partner": "string",
      "method": "string",
      "transactionId": "string",
      "totalAmount": {
        "amount": "integer",
        "currency": "string",
        "formatted": "string",
        "symbol": "string,"
      },
      "totalCost": {
        "amount": "integer",
        "currency": "string",
        "formatted": "string",
        "symbol": "string,"
      },
      "totalReceived": {
        "amount": "integer",
        "currency": "string",
        "formatted": "string",
        "symbol": "string,"
      },
      "loadAmount": {
        "amount": "integer",
        "currency": "string",
        "formatted": "string",
        "symbol": "string,"
      },
      "loadFee": {
        "amount": "integer",
        "currency": "string",
        "formatted": "string",
        "symbol": "string,"
      },
      "membershipFee": {
        "amount": "integer",
        "currency": "string",
        "formatted": "string",
        "symbol": "string,"
      },
      "replacementFee": {
        "amount": "integer",
        "currency": "string",
        "formatted": "string",
        "symbol": "string,"
      },
      "discount": {
        "amount": "integer",
        "currency": "string",
        "formatted": "string",
        "symbol": "string,"
      },
      "createdAt": "string (date)",
      "loadAt": "string (date)",
      "order": "integer"
    }
  ]
}
Response Example (400 Bad Request)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (401 Unauthorized)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (403 Forbidden)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}

Card

Issue card

POST /card/issue

The card must be issued before loading or using.

userCardId

The card want to issue. It should be the value of userCardId field in result of member info API. See Card Programs API and Member Info API

type
integer
in
formData
200 OK
400 Bad Request

Parameter error

401 Unauthorized

Authentication Required

403 Forbidden

Failed to authenticate

Response Example (200 OK)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (400 Bad Request)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (401 Unauthorized)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (403 Forbidden)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}

Card list

GET /card/list
400 Bad Request

Parameter error

401 Unauthorized

Authentication Required

403 Forbidden

Failed to authenticate

Response Example (200 OK)
{
  "success": "boolean",
  "message": "string",
  "data": [
    {
      "id": "integer",
      "card": {
        "id": "integer",
        "name": "string",
        "minLoadAmount": "number (float)",
        "maxLoadAmount": "number (float)",
        "maxBalance": "number (float)",
        "currencies": [
          "string"
        ],
        "artwork": "string",
        "network": "string"
      },
      "hash": "string",
      "pan": "string",
      "holder": "string",
      "balance": "integer",
      "currency": "string",
      "coin": {
        "amount": "integer",
        "currency": "string",
        "formatted": "string",
        "symbol": "string,"
      },
      "status": "string",
      "issued": "boolean",
      "lastTransaction": {
        "id": "integer",
        "amount": "integer",
        "currency": "string",
        "coin": {
          "amount": "integer",
          "currency": "string",
          "formatted": "string",
          "symbol": "string,"
        },
        "balance": {
          "amount": "integer",
          "currency": "string",
          "formatted": "string",
          "symbol": "string,"
        },
        "time": "string (date)",
        "merchant": {
          "id": "integer",
          "name": "string",
          "type": "string",
          "mcc": "string",
          "list": "string"
        },
        "type": "string",
        "description": "string",
        "order": "integer"
      }
    }
  ]
}
Response Example (400 Bad Request)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (401 Unauthorized)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (403 Forbidden)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}

Card detail

GET /card/detail

Check card's balance and other information.

userCardId

The card want to check balance. It should be the value of userCardId field in result of member info API. See Card Programs API and Member Info API

type
integer
in
query
refresh

Whether to get latest card balance.

type
boolean false
in
query
400 Bad Request

Parameter error

401 Unauthorized

Authentication Required

403 Forbidden

Failed to authenticate

Response Example (200 OK)
{
  "success": "boolean",
  "message": "string",
  "data": {
    "id": "integer",
    "card": {
      "id": "integer",
      "name": "string",
      "minLoadAmount": "number (float)",
      "maxLoadAmount": "number (float)",
      "maxBalance": "number (float)",
      "currencies": [
        "string"
      ],
      "artwork": "string",
      "network": "string"
    },
    "hash": "string",
    "pan": "string",
    "holder": "string",
    "balance": "integer",
    "currency": "string",
    "coin": {
      "amount": "integer",
      "currency": "string",
      "formatted": "string",
      "symbol": "string,"
    },
    "status": "string",
    "issued": "boolean",
    "lastTransaction": {
      "id": "integer",
      "amount": "integer",
      "currency": "string",
      "coin": {
        "amount": "integer",
        "currency": "string",
        "formatted": "string",
        "symbol": "string,"
      },
      "balance": {
        "amount": "integer",
        "currency": "string",
        "formatted": "string",
        "symbol": "string,"
      },
      "time": "string (date)",
      "merchant": {
        "id": "integer",
        "name": "string",
        "type": "string",
        "mcc": "string",
        "list": "string"
      },
      "type": "string",
      "description": "string",
      "order": "integer"
    }
  }
}
Response Example (400 Bad Request)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (401 Unauthorized)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (403 Forbidden)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}

Card protected data

POST /card/protected-data

Get card's protected data such as full number, expiration date and cvc.

userCardId

It should be the value of userCardId field in result of member info API. See Card Programs API and Member Info API

type
integer
in
query
user_pin

3-Digit Security PIN.

type
string
in
query
400 Bad Request

Parameter error

401 Unauthorized

Authentication Required

403 Forbidden

Failed to authenticate

Response Example (200 OK)
{
  "success": "boolean",
  "message": "string",
  "data": {
    "id": "integer",
    "number": "string",
    "expireAt": "string (date)",
    "cvc": "string"
  }
}
Response Example (400 Bad Request)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (401 Unauthorized)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (403 Forbidden)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}

Inactivate card

POST /card/inactivate

Status will be synced to FirstView. Balance will be unloaded and saved as local balance. Unload fee will be charged.

userCardId

The card want to update status. It should be the value of userCardId field in result of member info API. See Card Programs API and Member Info API

type
integer
in
formData
200 OK
400 Bad Request

Parameter error

401 Unauthorized

Authentication Required

403 Forbidden

Failed to authenticate

Response Example (200 OK)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (400 Bad Request)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (401 Unauthorized)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (403 Forbidden)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}

Activate card

POST /card/activate

Status will be synced to FirstView.

userCardId

The card want to update status. It should be the value of userCardId field in result of member info API. See Card Programs API and Member Info API

type
integer
in
formData
200 OK
400 Bad Request

Parameter error

401 Unauthorized

Authentication Required

403 Forbidden

Failed to authenticate

Response Example (200 OK)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (400 Bad Request)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (401 Unauthorized)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (403 Forbidden)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}

Reshipper

Card billing address

GET /reshipper

Get user card's billing address detail.

userCardId

The card want to get billing address.

type
integer
in
query
400 Bad Request

Parameter error

401 Unauthorized

Authentication Required

403 Forbidden

Failed to authenticate

Response Example (200 OK)
{
  "success": "boolean",
  "message": "string",
  "data": {
    "reshipper": {
      "id": "integer",
      "name": "string",
      "address": "string",
      "dba": "string",
      "autoSignup": "boolean"
    },
    "address": {
      "id": "integer",
      "name": "string",
      "default": "string",
      "primary": "string",
      "second": "string",
      "phone": "string",
      "country": "string",
      "state": "string",
      "city": "string",
      "zipCode": "string"
    },
    "custom": "string"
  }
}
Response Example (400 Bad Request)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (401 Unauthorized)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (403 Forbidden)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}

Card transaction

Statement activity

GET /transaction/statement-activity

Includes card usages, load card, and charge fee history.

userCardId

The card want to check statement activity. It should be the value of 'userCardId' field in result of member info or card list APIs

type
integer
in
query
startAt

Start date filter. Format: YYYY-MM-DD

type
string (date)
in
query
endAt

End date filter. Format: YYYY-MM-DD

type
string (date)
in
query
400 Bad Request

Parameter error

401 Unauthorized

Authentication Required

403 Forbidden

Failed to authenticate

Response Example (200 OK)
{
  "success": "boolean",
  "message": "string",
  "data": {
    "date": "string",
    "description": "string",
    "amount": "string",
    "currency": "string",
    "merchant": "string",
    "mcc": "string",
    "type": "string",
    "balance": "string"
  }
}
Response Example (400 Bad Request)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (401 Unauthorized)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (403 Forbidden)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}

Transaction history

GET /transaction/history

Card usage details.

userCardId

The card want to check transaction history. It should be the value of 'userCardId' field in result of member info or card list APIs

type
integer
in
query
startAt

Start date filter. Format: YYYY-MM-DD

type
string (date)
in
query
endAt

End date filter. Format: YYYY-MM-DD

type
string (date)
in
query
400 Bad Request

Parameter error

401 Unauthorized

Authentication Required

403 Forbidden

Failed to authenticate

Response Example (200 OK)
{
  "success": "boolean",
  "message": "string",
  "data": [
    {
      "id": "integer",
      "amount": "integer",
      "currency": "string",
      "coin": {
        "amount": "integer",
        "currency": "string",
        "formatted": "string",
        "symbol": "string,"
      },
      "balance": {
        "amount": "integer",
        "currency": "string",
        "formatted": "string",
        "symbol": "string,"
      },
      "time": "string (date)",
      "merchant": {
        "id": "integer",
        "name": "string",
        "type": "string",
        "mcc": "string",
        "list": "string"
      },
      "type": "string",
      "description": "string",
      "order": "integer"
    }
  ]
}
Response Example (400 Bad Request)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (401 Unauthorized)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (403 Forbidden)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}

User

Request PIN

POST /user/pin/request

Send the 3-Digit Security PIN to user's phone. Used to update profile or access card secure data.

phone_type

'mobile_phone', 'work_phone' or 'home_phone'

type
string mobile_phone, work_phone, home_phone
in
formData
msg_type

'SMS' or 'Voice' message

type
string SMS, Voice
in
formData
200 OK
400 Bad Request

Parameter error

401 Unauthorized

Authentication Required

403 Forbidden

Failed to authenticate

Response Example (200 OK)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (400 Bad Request)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (401 Unauthorized)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (403 Forbidden)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}

Verify PIN

POST /user/pin/verify

Verify if the 3-Digit Security PIN is correct. User will be blocked if failed 5 times.

user_pin

3-Digit Security PIN

type
string
in
formData
200 OK
400 Bad Request

Parameter error

401 Unauthorized

Authentication Required

403 Forbidden

Failed to authenticate

Response Example (200 OK)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (400 Bad Request)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (401 Unauthorized)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (403 Forbidden)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}

Card and transaction summary

GET /user/summary
400 Bad Request

Parameter error

401 Unauthorized

Authentication Required

403 Forbidden

Failed to authenticate

Response Example (200 OK)
{
  "success": "boolean",
  "message": "string",
  "data": {
    "coin": {
      "amount": "integer",
      "currency": "string",
      "formatted": "string",
      "symbol": "string,"
    },
    "balance": "integer",
    "currency": "string",
    "activeCard": "integer",
    "lastTransaction": {
      "id": "integer",
      "amount": "integer",
      "currency": "string",
      "coin": {
        "amount": "integer",
        "currency": "string",
        "formatted": "string",
        "symbol": "string,"
      },
      "balance": {
        "amount": "integer",
        "currency": "string",
        "formatted": "string",
        "symbol": "string,"
      },
      "time": "string (date)",
      "merchant": {
        "id": "integer",
        "name": "string",
        "type": "string",
        "mcc": "string",
        "list": "string"
      },
      "type": "string",
      "description": "string",
      "order": "integer"
    }
  }
}
Response Example (400 Bad Request)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (401 Unauthorized)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (403 Forbidden)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}

User profile

GET /user/profile
400 Bad Request

Parameter error

401 Unauthorized

Authentication Required

403 Forbidden

Failed to authenticate

Response Example (200 OK)
{
  "success": "boolean",
  "message": "string",
  "data": {
    "id": "integer",
    "firstName": "string",
    "lastName": "string",
    "fullName": "string",
    "username": "string",
    "email": "string",
    "gender": "string",
    "locked": "string",
    "avatar": "string",
    "birthday": "string (date)",
    "address": "string",
    "address2": "string",
    "country": {
      "id": "integer",
      "name": "string",
      "iso": "string",
      "iso3": "string",
      "phoneCode": "string",
      "region": "string"
    },
    "state": {
      "id": "integer",
      "name": "string",
      "abbr": "string"
    },
    "status": "string",
    "city": "string",
    "zip": "string",
    "homePhone": "string",
    "mobilePhone": "string",
    "workPhone": "string",
    "vip": "boolean",
    "flags": [
      "string"
    ]
  }
}
Response Example (400 Bad Request)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (401 Unauthorized)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (403 Forbidden)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}

Update profile

POST /user/profile/update

Only provide the parameters that you want to update. Some fields like firstName, lastName, birthday won't be updated if they have been provided in ID document. Request's Content-Type should be multipart/form-data if parameter picture is provided.

firstName

First name

type
string
in
formData
lastName

Last name

type
string
in
formData
emailAddress

Email address

type
string
in
formData
birthday

Day of birth. Format: YYYY-MM-DD.

type
string (date)
in
formData
address

First address line

type
string
in
formData
addressline

Second address line

type
string
in
formData
state

State ID

type
integer
in
formData
city

City name

type
string
in
formData
code

3-Digit Security Pin or last 4 digits of ID document. Required if you want to update any phone number(Any of them are provided in parameters)

type
string
in
formData
phone

Home phone

type
string
in
formData
mobilephone

Mobile phone

type
string
in
formData
workphone

Work phone

type
string
in
formData
zip

Zip/Postal code

type
string
in
formData
password

New password. Minimum 7 characters include uppercase, lowercase and numeric

type
string (password)
in
formData
picture

Profile picture. At most 20MB.

type
file
in
formData
200 OK
400 Bad Request

Parameter error

401 Unauthorized

Authentication Required

403 Forbidden

Failed to authenticate

Response Example (200 OK)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (400 Bad Request)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (401 Unauthorized)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}
Response Example (403 Forbidden)
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}

Schema Definitions

Response: object

success: boolean

Operation failed or not

message: string

Error or success message

data: object

Operation Result

Example
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}

CardProgramsResponse: object

Available card programs and related data. Save it so that you can call other APIs later.

success: boolean
message: string
data: CardProgram
Example
{
  "success": "boolean",
  "message": "string",
  "data": [
    {
      "id": "integer",
      "name": "string",
      "customize": {
        "linkColor": "string",
        "linkActiveColor": "string"
      },
      "subDomain": "string",
      "logo": "string",
      "language": "string",
      "css": "string",
      "cards": [
        {
          "id": "integer",
          "name": "string",
          "minLoadAmount": "number (float)",
          "maxLoadAmount": "number (float)",
          "maxBalance": "number (float)",
          "currencies": [
            "string"
          ],
          "artwork": "string",
          "network": "string"
        }
      ],
      "countries": [
        {
          "country": {
            "id": "integer",
            "name": "string",
            "iso": "string",
            "iso3": "string",
            "phoneCode": "string",
            "region": "string"
          },
          "idVerifications": [
            {
              "type": "string",
              "side": "string"
            }
          ],
          "loadPartners": [
            {
              "id": "integer",
              "name": "string",
              "methods": [
                {
                  "id": "integer",
                  "name": "string",
                  "icon": "string",
                  "currencies": [
                    "string"
                  ]
                }
              ]
            }
          ]
        }
      ],
      "reshippers": [
        {
          "reshipper": {
            "id": "integer",
            "name": "string",
            "address": "string",
            "dba": "string",
            "autoSignup": "boolean"
          },
          "addresses": [
            {
              "id": "integer",
              "name": "string",
              "default": "string",
              "primary": "string",
              "second": "string",
              "phone": "string",
              "country": "string",
              "state": "string",
              "city": "string",
              "zipCode": "string"
            }
          ]
        }
      ]
    }
  ]
}

StatesResponse: object

success: boolean
message: string
data: State
Example
{
  "success": "boolean",
  "message": "string",
  "data": [
    {
      "id": "integer",
      "name": "string",
      "abbr": "string"
    }
  ]
}

VerifyEmailResponse: object

success: boolean
message: string
data: object
Example
{
  "success": "boolean",
  "message": "string",
  "data": {
    "userId": "integer",
    "token": "string",
    "userCardId": "integer"
  }
}

IdVerificationUploadResponse: object

success: boolean
message: string
data: object

response detail

Example
{
  "success": "boolean",
  "message": "string",
  "data": {
    "id": "integer",
    "reference": "string"
  }
}

IdVerificationRetrieveResponse: object

success: boolean
message: string
data: object
Example
{
  "success": "boolean",
  "message": "string",
  "data": {
    "processed": "boolean",
    "number": "string",
    "requireIssueDate": "boolean",
    "requireExpiryDate": "boolean"
  }
}

LoginResponse: object

success: boolean
message: string
data: object
Example
{
  "success": "boolean",
  "message": "string",
  "data": {
    "token": "string"
  }
}

QueryPaymentResponse: object

success: boolean
message: string
data: object
Example
{
  "success": "boolean",
  "message": "string",
  "data": {
    "amountText": "string",
    "pendingExceed": "string",
    "methods": [
      {
        "id": "integer",
        "name": "string",
        "artwork": "string",
        "partner": {
          "id": "integer",
          "name": "string"
        },
        "loadFee": "string",
        "payAmounts": [
          {
            "amount": "integer",
            "currency": "string",
            "formatted": "string",
            "symbol": "string,"
          }
        ]
      }
    ]
  }
}

QueryPaymentMethod: object

Load method, partner, and pay amount details

id: integer

Load method id

name: string

Load method name

artwork: string

Load method image URL

partner: object
loadFee: string

Formatted load fee detail

payAmounts: Coin
Example
{
  "id": "integer",
  "name": "string",
  "artwork": "string",
  "partner": {
    "id": "integer",
    "name": "string"
  },
  "loadFee": "string",
  "payAmounts": [
    {
      "amount": "integer",
      "currency": "string",
      "formatted": "string",
      "symbol": "string,"
    }
  ]
}

QuotePaymentResponse: object

success: boolean
message: string
data: object
Example
{
  "success": "boolean",
  "message": "string",
  "data": {
    "id": "integer",
    "partner": "string",
    "method": "string",
    "currency": "string",
    "loadAmount": {
      "amount": "integer",
      "currency": "string",
      "formatted": "string",
      "symbol": "string,"
    },
    "loadFee": {
      "amount": "integer",
      "currency": "string",
      "formatted": "string",
      "symbol": "string,"
    },
    "membershipFee": {
      "amount": "integer",
      "currency": "string",
      "formatted": "string",
      "symbol": "string,"
    },
    "replacementFee": {
      "amount": "integer",
      "currency": "string",
      "formatted": "string",
      "symbol": "string,"
    },
    "otherFees": [
      {
        "type": "string",
        "amount": "string",
        "currency": "string",
        "coin": {
          "amount": "integer",
          "currency": "string",
          "formatted": "string",
          "symbol": "string,"
        }
      }
    ],
    "totalAmount": {
      "amount": "integer",
      "currency": "string",
      "formatted": "string",
      "symbol": "string,"
    },
    "loadFeeDiscount": "string",
    "membershipFeeDiscount": "string",
    "payAmount": {
      "amount": "integer",
      "currency": "string",
      "formatted": "string",
      "symbol": "string,"
    }
  }
}

QuotePaymentOtherFee: object

Other fees that charged directly in payAmount

type: string

Other fee type

amount: string

Other fee amount

currency: string

ISO currency code

coin: Coin
Example
{
  "type": "string",
  "amount": "string",
  "currency": "string",
  "coin": {
    "amount": "integer",
    "currency": "string",
    "formatted": "string",
    "symbol": "string,"
  }
}

CreatePaymentResponse: object

success: boolean
message: string
data: object
Example
{
  "success": "boolean",
  "message": "string",
  "data": {
    "redirect": "string",
    "instruction": [
      {
        "key": "string",
        "value": "string"
      }
    ]
  }
}

CreatePaymentInstruction: object

Instruction of payment details for some load methods that user need to perform the payment

key: string
value: string
Example
{
  "key": "string",
  "value": "string"
}

PaymentStatusResponse: object

success: boolean
message: string
data: object
Example
{
  "success": "boolean",
  "message": "string",
  "data": {
    "status": "string",
    "transactionNo": "string"
  }
}

CardDetailResponse: object

success: boolean
message: string
data: UserCard
Example
{
  "success": "boolean",
  "message": "string",
  "data": {
    "id": "integer",
    "card": {
      "id": "integer",
      "name": "string",
      "minLoadAmount": "number (float)",
      "maxLoadAmount": "number (float)",
      "maxBalance": "number (float)",
      "currencies": [
        "string"
      ],
      "artwork": "string",
      "network": "string"
    },
    "hash": "string",
    "pan": "string",
    "holder": "string",
    "balance": "integer",
    "currency": "string",
    "coin": {
      "amount": "integer",
      "currency": "string",
      "formatted": "string",
      "symbol": "string,"
    },
    "status": "string",
    "issued": "boolean",
    "lastTransaction": {
      "id": "integer",
      "amount": "integer",
      "currency": "string",
      "coin": {
        "amount": "integer",
        "currency": "string",
        "formatted": "string",
        "symbol": "string,"
      },
      "balance": {
        "amount": "integer",
        "currency": "string",
        "formatted": "string",
        "symbol": "string,"
      },
      "time": "string (date)",
      "merchant": {
        "id": "integer",
        "name": "string",
        "type": "string",
        "mcc": "string",
        "list": "string"
      },
      "type": "string",
      "description": "string",
      "order": "integer"
    }
  }
}

CardProtectedDataResponse: object

success: boolean
message: string
data: UserCardProtectedData
Example
{
  "success": "boolean",
  "message": "string",
  "data": {
    "id": "integer",
    "number": "string",
    "expireAt": "string (date)",
    "cvc": "string"
  }
}

UserSummaryResponse: object

success: boolean
message: string
data: object
Example
{
  "success": "boolean",
  "message": "string",
  "data": {
    "coin": {
      "amount": "integer",
      "currency": "string",
      "formatted": "string",
      "symbol": "string,"
    },
    "balance": "integer",
    "currency": "string",
    "activeCard": "integer",
    "lastTransaction": {
      "id": "integer",
      "amount": "integer",
      "currency": "string",
      "coin": {
        "amount": "integer",
        "currency": "string",
        "formatted": "string",
        "symbol": "string,"
      },
      "balance": {
        "amount": "integer",
        "currency": "string",
        "formatted": "string",
        "symbol": "string,"
      },
      "time": "string (date)",
      "merchant": {
        "id": "integer",
        "name": "string",
        "type": "string",
        "mcc": "string",
        "list": "string"
      },
      "type": "string",
      "description": "string",
      "order": "integer"
    }
  }
}

CardListResponse: object

success: boolean
message: string
data: UserCard
Example
{
  "success": "boolean",
  "message": "string",
  "data": [
    {
      "id": "integer",
      "card": {
        "id": "integer",
        "name": "string",
        "minLoadAmount": "number (float)",
        "maxLoadAmount": "number (float)",
        "maxBalance": "number (float)",
        "currencies": [
          "string"
        ],
        "artwork": "string",
        "network": "string"
      },
      "hash": "string",
      "pan": "string",
      "holder": "string",
      "balance": "integer",
      "currency": "string",
      "coin": {
        "amount": "integer",
        "currency": "string",
        "formatted": "string",
        "symbol": "string,"
      },
      "status": "string",
      "issued": "boolean",
      "lastTransaction": {
        "id": "integer",
        "amount": "integer",
        "currency": "string",
        "coin": {
          "amount": "integer",
          "currency": "string",
          "formatted": "string",
          "symbol": "string,"
        },
        "balance": {
          "amount": "integer",
          "currency": "string",
          "formatted": "string",
          "symbol": "string,"
        },
        "time": "string (date)",
        "merchant": {
          "id": "integer",
          "name": "string",
          "type": "string",
          "mcc": "string",
          "list": "string"
        },
        "type": "string",
        "description": "string",
        "order": "integer"
      }
    }
  ]
}

UserCard: object

id: integer
card: CardProgramCardType
hash: string
pan: string

May be null

holder: string

May be null

balance: integer

May be null

currency: string
coin: Coin
status: string active, inactive

inactive status also means closed

issued: boolean
lastTransaction: UserCardTransaction

May be null

Example
{
  "id": "integer",
  "card": {
    "id": "integer",
    "name": "string",
    "minLoadAmount": "number (float)",
    "maxLoadAmount": "number (float)",
    "maxBalance": "number (float)",
    "currencies": [
      "string"
    ],
    "artwork": "string",
    "network": "string"
  },
  "hash": "string",
  "pan": "string",
  "holder": "string",
  "balance": "integer",
  "currency": "string",
  "coin": {
    "amount": "integer",
    "currency": "string",
    "formatted": "string",
    "symbol": "string,"
  },
  "status": "string",
  "issued": "boolean",
  "lastTransaction": {
    "id": "integer",
    "amount": "integer",
    "currency": "string",
    "coin": {
      "amount": "integer",
      "currency": "string",
      "formatted": "string",
      "symbol": "string,"
    },
    "balance": {
      "amount": "integer",
      "currency": "string",
      "formatted": "string",
      "symbol": "string,"
    },
    "time": "string (date)",
    "merchant": {
      "id": "integer",
      "name": "string",
      "type": "string",
      "mcc": "string",
      "list": "string"
    },
    "type": "string",
    "description": "string",
    "order": "integer"
  }
}

UserCardProtectedData: object

id: integer
number: string

Full card number

expireAt: string (date)
cvc: string
Example
{
  "id": "integer",
  "number": "string",
  "expireAt": "string (date)",
  "cvc": "string"
}

StatementActivityResponse: object

success: boolean
message: string
data: object
Example
{
  "success": "boolean",
  "message": "string",
  "data": {
    "date": "string",
    "description": "string",
    "amount": "string",
    "currency": "string",
    "merchant": "string",
    "mcc": "string",
    "type": "string",
    "balance": "string"
  }
}

CardTransactionHistoryResponse: object

success: boolean
message: string
data: UserCardTransaction
Example
{
  "success": "boolean",
  "message": "string",
  "data": [
    {
      "id": "integer",
      "amount": "integer",
      "currency": "string",
      "coin": {
        "amount": "integer",
        "currency": "string",
        "formatted": "string",
        "symbol": "string,"
      },
      "balance": {
        "amount": "integer",
        "currency": "string",
        "formatted": "string",
        "symbol": "string,"
      },
      "time": "string (date)",
      "merchant": {
        "id": "integer",
        "name": "string",
        "type": "string",
        "mcc": "string",
        "list": "string"
      },
      "type": "string",
      "description": "string",
      "order": "integer"
    }
  ]
}

LoadMethodIssuersResponse: object

success: boolean
message: string
data: LoadMethodIssuer
Example
{
  "success": "boolean",
  "message": "string",
  "data": [
    {
      "id": "integer",
      "name": "string"
    }
  ]
}

CardProgram: object

id: integer
name: string
customize: object

Maybe have more properties then listed

subDomain: string

sub-domain name, for instance, 'usunlocked' in 'usunlocked.virtualcards.us'

logo: string

URL of logo

language: string en, zh, es, pt-BR, ja, ar

language key, en = English, zh = 中文(简体), es = Español, pt-BR = Português do Brasil, ja = にほんご, ar = العَرَبِيَّة

css: string

body of Cascading Style Sheets

cards: CardProgramCardType
countries: CardProgramCountry
reshippers: CardProgramReshipper
Example
{
  "id": "integer",
  "name": "string",
  "customize": {
    "linkColor": "string",
    "linkActiveColor": "string"
  },
  "subDomain": "string",
  "logo": "string",
  "language": "string",
  "css": "string",
  "cards": [
    {
      "id": "integer",
      "name": "string",
      "minLoadAmount": "number (float)",
      "maxLoadAmount": "number (float)",
      "maxBalance": "number (float)",
      "currencies": [
        "string"
      ],
      "artwork": "string",
      "network": "string"
    }
  ],
  "countries": [
    {
      "country": {
        "id": "integer",
        "name": "string",
        "iso": "string",
        "iso3": "string",
        "phoneCode": "string",
        "region": "string"
      },
      "idVerifications": [
        {
          "type": "string",
          "side": "string"
        }
      ],
      "loadPartners": [
        {
          "id": "integer",
          "name": "string",
          "methods": [
            {
              "id": "integer",
              "name": "string",
              "icon": "string",
              "currencies": [
                "string"
              ]
            }
          ]
        }
      ]
    }
  ],
  "reshippers": [
    {
      "reshipper": {
        "id": "integer",
        "name": "string",
        "address": "string",
        "dba": "string",
        "autoSignup": "boolean"
      },
      "addresses": [
        {
          "id": "integer",
          "name": "string",
          "default": "string",
          "primary": "string",
          "second": "string",
          "phone": "string",
          "country": "string",
          "state": "string",
          "city": "string",
          "zipCode": "string"
        }
      ]
    }
  ]
}

CardProgramCardType: object

id: integer
name: string
minLoadAmount: number (float)

Minimum load amount in USD cents

maxLoadAmount: number (float)

Maximum load amount in USD cents

maxBalance: number (float)

Minimum card balance in USD cents

currencies: string[]
artwork: string

Card's image url

network: string visa, master

Visa(deprecated) or MasterCard

Example
{
  "id": "integer",
  "name": "string",
  "minLoadAmount": "number (float)",
  "maxLoadAmount": "number (float)",
  "maxBalance": "number (float)",
  "currencies": [
    "string"
  ],
  "artwork": "string",
  "network": "string"
}

CardProgramCountry: object

country: Country
idVerifications: IdVerificationRequirement

Id verification requirements

loadPartners: LoadPartner

Available load partners in this card program

Example
{
  "country": {
    "id": "integer",
    "name": "string",
    "iso": "string",
    "iso3": "string",
    "phoneCode": "string",
    "region": "string"
  },
  "idVerifications": [
    {
      "type": "string",
      "side": "string"
    }
  ],
  "loadPartners": [
    {
      "id": "integer",
      "name": "string",
      "methods": [
        {
          "id": "integer",
          "name": "string",
          "icon": "string",
          "currencies": [
            "string"
          ]
        }
      ]
    }
  ]
}

CardProgramReshipper: object

reshipper: Reshipper
addresses: Address
Example
{
  "reshipper": {
    "id": "integer",
    "name": "string",
    "address": "string",
    "dba": "string",
    "autoSignup": "boolean"
  },
  "addresses": [
    {
      "id": "integer",
      "name": "string",
      "default": "string",
      "primary": "string",
      "second": "string",
      "phone": "string",
      "country": "string",
      "state": "string",
      "city": "string",
      "zipCode": "string"
    }
  ]
}

Country: object

id: integer
name: string
iso: string

ISO code (2 characters), for instance, US

iso3: string

ISO code (3 characters), for instance, USA

phoneCode: string
region: string EMEA, AMERICAS, APAC,
Example
{
  "id": "integer",
  "name": "string",
  "iso": "string",
  "iso3": "string",
  "phoneCode": "string",
  "region": "string"
}

Reshipper: object

id: integer
name: string

Custom means this card program support custom address

address: string
dba: string
autoSignup: boolean

true means this reshipper also support auto sign up

Example
{
  "id": "integer",
  "name": "string",
  "address": "string",
  "dba": "string",
  "autoSignup": "boolean"
}

IdVerificationRequirement: object

type: string PSP, ID, DL
side: string BOTH, FRONT, BACK
Example
{
  "type": "string",
  "side": "string"
}

LoadPartner: object

id: integer
name: string
methods: LoadMethod
Example
{
  "id": "integer",
  "name": "string",
  "methods": [
    {
      "id": "integer",
      "name": "string",
      "icon": "string",
      "currencies": [
        "string"
      ]
    }
  ]
}

LoadMethod: object

id: integer
name: string
icon: string

Load method's logo image

currencies: string[]

The currency list this load method support. ISO currency code.

Example
{
  "id": "integer",
  "name": "string",
  "icon": "string",
  "currencies": [
    "string"
  ]
}

Address: object

id: integer
name: string
default: string
primary: string

Same as default

second: string

May be null

phone: string
country: string
state: string
city: string
zipCode: string
Example
{
  "id": "integer",
  "name": "string",
  "default": "string",
  "primary": "string",
  "second": "string",
  "phone": "string",
  "country": "string",
  "state": "string",
  "city": "string",
  "zipCode": "string"
}

State: object

id: integer
name: string
abbr: string
Example
{
  "id": "integer",
  "name": "string",
  "abbr": "string"
}

UserCardTransaction: object

id: integer
amount: integer
currency: string
coin: Coin
balance: Coin
time: string (date)
merchant: Merchant
type: string Credet, Debit
description: string
order: integer

Transaction order of the user card. Start from 1. Only count for POS purchase(00040) May be null

Example
{
  "id": "integer",
  "amount": "integer",
  "currency": "string",
  "coin": {
    "amount": "integer",
    "currency": "string",
    "formatted": "string",
    "symbol": "string,"
  },
  "balance": {
    "amount": "integer",
    "currency": "string",
    "formatted": "string",
    "symbol": "string,"
  },
  "time": "string (date)",
  "merchant": {
    "id": "integer",
    "name": "string",
    "type": "string",
    "mcc": "string",
    "list": "string"
  },
  "type": "string",
  "description": "string",
  "order": "integer"
}

Merchant: object

id: integer
name: string
type: string
mcc: string
list: string White, Grey, Restricted

May be null

Example
{
  "id": "integer",
  "name": "string",
  "type": "string",
  "mcc": "string",
  "list": "string"
}

LoadMethodIssuer: object

id: integer
name: string
Example
{
  "id": "integer",
  "name": "string"
}

User: object

id: integer
firstName: string
lastName: string
fullName: string
username: string
email: string
gender: string Male, Female, null
locked: string Unlock, Lock
avatar: string

May be null

birthday: string (date)
address: string
address2: string

May be null

country: Country

May be null

state: State

May be null

status: string active, inactive, closed, banned, under_review
city: string

May be null

zip: string

May be null

homePhone: string

May be null

mobilePhone: string

May be null

workPhone: string

May be null

vip: boolean
flags: string[]
Example
{
  "id": "integer",
  "firstName": "string",
  "lastName": "string",
  "fullName": "string",
  "username": "string",
  "email": "string",
  "gender": "string",
  "locked": "string",
  "avatar": "string",
  "birthday": "string (date)",
  "address": "string",
  "address2": "string",
  "country": {
    "id": "integer",
    "name": "string",
    "iso": "string",
    "iso3": "string",
    "phoneCode": "string",
    "region": "string"
  },
  "state": {
    "id": "integer",
    "name": "string",
    "abbr": "string"
  },
  "status": "string",
  "city": "string",
  "zip": "string",
  "homePhone": "string",
  "mobilePhone": "string",
  "workPhone": "string",
  "vip": "boolean",
  "flags": [
    "string"
  ]
}

UserProfileResponse: object

success: boolean
message: string
data: User
Example
{
  "success": "boolean",
  "message": "string",
  "data": {
    "id": "integer",
    "firstName": "string",
    "lastName": "string",
    "fullName": "string",
    "username": "string",
    "email": "string",
    "gender": "string",
    "locked": "string",
    "avatar": "string",
    "birthday": "string (date)",
    "address": "string",
    "address2": "string",
    "country": {
      "id": "integer",
      "name": "string",
      "iso": "string",
      "iso3": "string",
      "phoneCode": "string",
      "region": "string"
    },
    "state": {
      "id": "integer",
      "name": "string",
      "abbr": "string"
    },
    "status": "string",
    "city": "string",
    "zip": "string",
    "homePhone": "string",
    "mobilePhone": "string",
    "workPhone": "string",
    "vip": "boolean",
    "flags": [
      "string"
    ]
  }
}

Coin: object

amount: integer

Minor unit of the currency

currency: string

ISO currency code

formatted: string

Formatted amount text in primary unit

symbol: string,

Currency symbol

Example
{
  "amount": "integer",
  "currency": "string",
  "formatted": "string",
  "symbol": "string,"
}

UserReshipperResponse: object

success: boolean
message: string
data: object
Example
{
  "success": "boolean",
  "message": "string",
  "data": {
    "reshipper": {
      "id": "integer",
      "name": "string",
      "address": "string",
      "dba": "string",
      "autoSignup": "boolean"
    },
    "address": {
      "id": "integer",
      "name": "string",
      "default": "string",
      "primary": "string",
      "second": "string",
      "phone": "string",
      "country": "string",
      "state": "string",
      "city": "string",
      "zipCode": "string"
    },
    "custom": "string"
  }
}

LoadHistoryResponse: object

success: boolean
message: string
data: UserCardLoad
Example
{
  "success": "boolean",
  "message": "string",
  "data": [
    {
      "id": "integer",
      "partner": "string",
      "method": "string",
      "transactionId": "string",
      "totalAmount": {
        "amount": "integer",
        "currency": "string",
        "formatted": "string",
        "symbol": "string,"
      },
      "totalCost": {
        "amount": "integer",
        "currency": "string",
        "formatted": "string",
        "symbol": "string,"
      },
      "totalReceived": {
        "amount": "integer",
        "currency": "string",
        "formatted": "string",
        "symbol": "string,"
      },
      "loadAmount": {
        "amount": "integer",
        "currency": "string",
        "formatted": "string",
        "symbol": "string,"
      },
      "loadFee": {
        "amount": "integer",
        "currency": "string",
        "formatted": "string",
        "symbol": "string,"
      },
      "membershipFee": {
        "amount": "integer",
        "currency": "string",
        "formatted": "string",
        "symbol": "string,"
      },
      "replacementFee": {
        "amount": "integer",
        "currency": "string",
        "formatted": "string",
        "symbol": "string,"
      },
      "discount": {
        "amount": "integer",
        "currency": "string",
        "formatted": "string",
        "symbol": "string,"
      },
      "createdAt": "string (date)",
      "loadAt": "string (date)",
      "order": "integer"
    }
  ]
}

UserCardLoad: object

id: integer
partner: string

Load partner name

method: string

Load method name

transactionId: string

Transaction ID

totalAmount: Coin
totalCost: Coin
totalReceived: Coin
loadAmount: Coin
loadFee: Coin
membershipFee: Coin
replacementFee: Coin
discount: Coin
createdAt: string (date)
loadAt: string (date)
order: integer

Load order

Example
{
  "id": "integer",
  "partner": "string",
  "method": "string",
  "transactionId": "string",
  "totalAmount": {
    "amount": "integer",
    "currency": "string",
    "formatted": "string",
    "symbol": "string,"
  },
  "totalCost": {
    "amount": "integer",
    "currency": "string",
    "formatted": "string",
    "symbol": "string,"
  },
  "totalReceived": {
    "amount": "integer",
    "currency": "string",
    "formatted": "string",
    "symbol": "string,"
  },
  "loadAmount": {
    "amount": "integer",
    "currency": "string",
    "formatted": "string",
    "symbol": "string,"
  },
  "loadFee": {
    "amount": "integer",
    "currency": "string",
    "formatted": "string",
    "symbol": "string,"
  },
  "membershipFee": {
    "amount": "integer",
    "currency": "string",
    "formatted": "string",
    "symbol": "string,"
  },
  "replacementFee": {
    "amount": "integer",
    "currency": "string",
    "formatted": "string",
    "symbol": "string,"
  },
  "discount": {
    "amount": "integer",
    "currency": "string",
    "formatted": "string",
    "symbol": "string,"
  },
  "createdAt": "string (date)",
  "loadAt": "string (date)",
  "order": "integer"
}

ErrorParamResponse: object

Parameter error

success: boolean

Operation failed or not

message: string

Error or success message

data: object

Operation Result

Example
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}

RequireAuthResponse: object

Authentication Required

success: boolean

Operation failed or not

message: string

Error or success message

data: object

Operation Result

Example
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}

AuthFailedResponse: object

Failed to authenticate

success: boolean

Operation failed or not

message: string

Error or success message

data: object

Operation Result

Example
{
  "success": "boolean",
  "message": "string",
  "data": "object"
}