Card Order
With this set of APIs, you will be able to create cards for your customers. You can also retrieve and view the status of your current card orders, as well as the list of available card programs for the user.
The Address resource
We are using 1 address field for card orders.
- For virtual cards, the Address resource is a billing address. This address will only be used for AVS checks in countries where is it required.
- For physical cards, the Address resource is a delivery address. This address will be used for AVS checks. It will also be used to deliver your card.
Check address-validation for each field format.
Fields | Type | Definition |
---|---|---|
firstLine | String | The card holder's address |
secondLine | String | The card holder's address |
thirdLine | String | The card holder's address |
postCode | String | The card holder's postal code |
city | String | The card holder's city |
state | String | The card holder's state |
country | String | The card holder's country, it follows ISO 3166-1 alpha-2 standard |
{"address": {"firstLine": "1 Paya Lebar Link","secondLine": "#13-06 PLQ 2","thirdLine": "Paya Lebar Quarter","postCode": "408533","city": "Singapore","state": null,"country": "SG",}}
{"billingAddress": {"firstLine": "1 Paya Lebar Link","secondLine": "#13-06 PLQ 2","thirdLine": "Paya Lebar Quarter","postCode": "408533","city": "Singapore","state": null,"country": "SG",}}
Brazil Address resource
For a Brazil address, the fields are detailed below. Check address-validation-brazil for each field format.
Fields | Type | Definition |
---|---|---|
addressNumber | String | The card holder's address number |
address | String | The card holder's address |
district | String | The card holder's district |
complement | String | The card holder's complement |
postCode | String | The card holder's postal code |
city | String | The card holder's city |
state | String | The card holder's state |
country | String | The card holder's country, it follows ISO 3166-1 alpha-2 standard |
{"address": {"addressNumber": "134534504","address": "Rua Moacir da Silva Mota","district": "Tancredo Neves","complement": null,"state": "RR","city": "Boa Vista","postCode": "69313488","country": "BR"}}
{"billingAddress": {"addressNumber": "134534504","address": "Rua Moacir da Silva Mota","district": "Tancredo Neves","complement": null,"state": "RR","city": "Boa Vista","postCode": "69313488","country": "BR"}}
The Card Order resource
ID of the card order
Profile ID
Client ID
Card Program of the card holder.
Address set during card order
Address set during card order
Type of the card order. E.g. PHYSICAL
or VIRTUAL_<type>
Token of the card associated with card order. Nullable.
A string for replacement card. Not supported at the moment.
Time when the card order is created
Time when the card order was last modified
Status of the card order before card is issued.
Checkout card order statuses for more information.
Name of the card holder.
Phone number associated with the card order.
Maximum amount of spending on the card once issued. Nullable.
{"id": 142,"profileId": 123456,"clientId": "{{clientId}}","cardProgram": {"name": "VISA_DEBIT_BUSINESS_UK_1_CARDS_API","scheme": "VISA","defaultCurrency": "GBP","cardType" : "VIRTUAL_NON_UPGRADEABLE"},"address": {"firstLine": "56 Shoreditch High St","secondLine": "The Tea Bldg","thirdLine": null,"city": "London","postCode": "E1 6JJ","state": null,"country": "GB"},"billingAddress": { // deprecated on the 16/10/2023"firstLine": "56 Shoreditch High St","secondLine": "The Tea Bldg","thirdLine": null,"city": "London","postCode": "E1 6JJ","state": null,"country": "GB"},"cardType": "VIRTUAL_NON_UPGRADEABLE", // deprecated - field moved to cardProgram"cardToken": "4dc0be88-903f-49e4-8237-735f1139e3dd","replacesCard": null,"creationTime": "2023-07-31T01:43:24.596321434Z","modificationTime": "2023-07-31T01:43:24.596321825Z","status": "CARD_DETAILS_CREATED","cardHolderName": "John Smith","phoneNumber": "+441234567890","lifetimeLimit": 100}
The Card Order status
The card order response will contain the status
field. The initial status is PLACED
or REQUIREMENT_FULFILLED
depending on the requirement fulfillment state.
The possible values are shown in the table below:
Status | Definition |
---|---|
PLACED | The card order is created. The card will be generated once it has fulfilled all the requirements |
REQUIREMENTS_FULFILLED | The card order has fulfilled all the requirements and the card should be generated in a short while |
CARD_DETAILS_CREATED | The card has been generated |
PRODUCED | The physical card has been produced and waiting to be picked up by delivery vendor (physical card only) |
COMPLETED | The card has been activated and is ready to use. The card order is completed |
CANCELLED | The card order has been cancelled. This can happen if you reach out to Wise Support to cancel a card order |
RETURNED | Delivery failed, the physical card has been returned and will be blocked (physical card only) |

The Card Program resource
A Card Program is what Wise refers to all the cards that you will be issuing with us, grouped by product type and by issuing country.
Fields | Type | Definition |
---|---|---|
name | String | The name of the card program |
scheme | String | The scheme associated with the card program |
defaultCurrency | String | The default currency assigned to the card program |
cardType | String | The type of the card. It can be one of VIRTUAL_NON_UPGRADEABLE or PHYSICAL |
{"cardPrograms": [{"name": "VISA_DEBIT_BUSINESS_UK_1_CARDS_API","scheme": "VISA","defaultCurrency": "GBP","cardType" : "VIRTUAL_NON_UPGRADEABLE"}]}
Retrieve available card programs for a profile
GET /v3/spend/profiles/{{profileId}}/card-orders/availability
Retrieves the list of available card programs for each profileId
.
curl -X GET https://api.sandbox.transferwise.tech/v3/spend/profiles/{{profileId}}/card-orders/availability \-H 'Authorization: Bearer <your api token>' \-H 'Content-Type: application/json'
Response
Returns a collection of CardProgram resources available to the profileId
.
{"cardPrograms": [{"name": "VISA_DEBIT_BUSINESS_UK_1_CARDS_API","scheme": "VISA","defaultCurrency": "GBP","cardType" : "VIRTUAL_NON_UPGRADEABLE"}]}
Validate an Address
POST /v3/spend/address/validate
Validates the format of an address. Field validation is performed on the following criteria:
- value is required
- value length
- valid postCode for a country
Fields | Field max length (characters) | Required |
---|---|---|
firstLine | 30 | yes |
secondLine | 30 | no |
thirdLine | 30 | no |
postCode | 10 | yes |
city | 30 | yes |
state | 30 | no |
country (ISO 3166-1 alpha-2) | 2 | yes |
curl -X GET https://api.sandbox.transferwise.tech/v3/spend/address/validate \-H 'Authorization: Bearer <your api token>' \-H 'Content-Type: application/json'-d '{"firstLine": "92 Jubilee Market Hall, Tavistock St, London WC2E 8BD, United Kingdom ","secondLine": "Covent Garden","thirdLine": "null","city": "","postCode": "wrong-postcode","state": null,"country": "GB"}'
Validate a Australia address
It follows the same rules as address validation except the state field is mandatory. The possible value are as follow:
Code | State |
---|---|
ACT | Australian Capital Territory |
NSW | New South Wales |
NT | Northern Territory |
QLD | Queensland |
SA | South Australia |
TAS | Tasmania |
VIC | Victoria |
WA | Western Australia |
Validate a Brazil address
The fields are described here. Please follow fields validation described below:
Fields | Field max length (characters) | Required |
---|---|---|
addressNumber | 6 | yes |
address | 100 | yes |
district | 80 | yes |
complement | 28 | no |
postCode | 8 | yes |
city | 30 | yes |
state | 10 | yes |
country (ISO 3166-1 alpha-2) | 2 | yes |
The possible values for state are as follow:
Code | State |
---|---|
AC | Acre |
AL | Alagoas |
AP | Amapá |
AM | Amazonas |
BA | Bahia |
CE | Ceará |
DF | Distrito Federal |
ES | Espírito Santo |
GO | Goiás |
MA | Maranhão |
MT | Mato Grosso |
MS | Mato Grosso do Sul |
MG | Minas Gerais |
PA | Pará |
PB | Paraíba |
PR | Paraná |
PE | Pernambuco |
PI | Piauí |
RJ | Rio de Janeiro |
RN | Rio Grande do Norte |
RS | Rio Grande do Sul |
RO | Rondônia |
RR | Roraima |
SC | Santa Catarina |
SP | São Paulo |
SE | Sergipe |
TO | Tocantins |
curl -X GET https://api.sandbox.transferwise.tech/v3/spend/address/validate \-H 'Authorization: Bearer <your api token>' \-H 'Content-Type: application/json'-d '{"addressNumber": "134534504","address": "Rua Moacir da Silva Mota","district": "Tancredo Neves","complement": null,"state": "RR","city": "Boa Vista","postCode": "69313488","country": "BR"}'
Response
Returns a collection of errors on fields that did not pass the format validation. A successful address validation will return an empty collection.
{"errors": [{"field": "city","message": "Required Field"},{"field": "postCode","message": "Please enter a valid postcode"},{"field": "firstLine","message": "Must be less than 30 characters"}]}
{"errors": [{"field": "addressNumber","message": "Must be less than 6 characters"}]}
Create a card order
POST /v3/spend/profiles/{{profileId}}/card-orders
Orders a new card for a given profileId
. The program
should be retrieved via the /card-orders/availability endpoint.
The cardType
determines what type of card is issued with a program
. cardType
value would be PHYSICAL
if the program
issue physical cards.
Fields | Type | Definition | Required |
---|---|---|---|
program | String | The name of the card program | Yes |
cardHolderName | String | The card holder's name | Yes |
embossedName | String | The card holder's name to print on the card (physical card only) | No |
phoneNumber | String | Must be a valid phone number prefixed with + and country code. An example of a valid phone number would be +6588888888 | Yes |
address | Address | The card holder's billing address or delivery address | Yes |
billingAddress | Address | The card holder's billing address or delivery address (deprecated) | Yes |
lifetimeLimit | Integer | Optionally sets a lifetime spending limit on the card. A lifetime limit of 0 means that a card cannot be used until the lifetime limit is updated | No |
Response
Returns a Card Order.
curl -X POST https://api.sandbox.transferwise.tech/v3/spend/profiles/{{profileId}}/card-orders \-H 'Authorization: Bearer <your api token>' \-H 'Content-Type: application/json' \-H 'X-idempotence-uuid: 054064c9-e01e-49fb-8fd9-b0990b9442f4' \-d '{"program": "VISA_DEBIT_BUSINESS_UK_1_PHYSICAL_CARDS_API","cardHolderName": "John Smith,"embossedName": "Smith John", // Physical card order"phoneNumber": "+441234567890","address": {"firstLine": "56 Shoreditch High St","secondLine": "The Tea Bldg","thirdLine": null,"city": "London","postCode": "E1 6JJ","state": null,"country": "GB"},"billingAddress": { // deprecated on the 02/10/2023"firstLine": "56 Shoreditch High St","secondLine": "The Tea Bldg","thirdLine": null,"city": "London","postCode": "E1 6JJ","state": null,"country": "GB"},"lifetimeLimit": 100,}'
Retrieve a list of card orders by profile
Returns a list of card orders created for the profileId
specified in the endpoint.
GET /v3/spend/profiles/{{profileId}}/card-orders?pageSize=10&pageNumber=1
Fields | Type | Definition | Required |
---|---|---|---|
pageSize | String | The maximum number of card orders to return per page. This number can be between 10 - 100, and will default to 10 | No |
pageNumber | String | The page number to retrieve the next set of card orders. The number has to be greater than 1, and will default to 1 | No |
curl -X GET https://api.sandbox.transferwise.tech/v3/spend/profiles/{{profileId}}/card-orders?pageSize=10&pageNumber=1 \-H 'Authorization: Bearer <your api token>'
Response
Fields | Type | Definition | Required |
---|---|---|---|
totalCount | Integer | The total number of card orders for this profileId | No |
cardOrders | List<CardOrder> | A collection of CardOrder for this profileId | No |
{"cardOrders": [{"id": 142,"profileId": 123456,"clientId": "wise_api_docs","cardProgram": {"name": "VISA_DEBIT_BUSINESS_UK_1_CARDS_API","scheme": "VISA","defaultCurrency": "GBP","cardType" : "VIRTUAL_NON_UPGRADEABLE",},"address": {"firstLine": "56 Shoreditch High St","secondLine": "The Tea Bldg","thirdLine": null,"city": "London","postCode": "E1 6JJ","state": null,"country": "GB"},"billingAddress": { // deprecated on the 02/10/2023"firstLine": "56 Shoreditch High St","secondLine": "The Tea Building","thirdLine": null,"city": "London","postCode": "E1 6JJ","state": null,"country": "GB",},"cardType" : "VIRTUAL_NON_UPGRADEABLE", // deprecated - field moved to cardProgram"cardToken": null,"replacesCard": null,"creationTime": "2022-05-31T01:43:24.596321434Z","modificationTime": "2022-05-31T01:43:24.596321825Z","status": "REQUIREMENTS_FULFILLED","cardHolderName": "John Smith","phoneNumber": "+441234567890","lifetimeLimit": 100}],"totalCount": 100}
Retrieve a card order by ID
GET /v3/spend/profiles/{{profileId}}/card-orders/{{cardOrderId}}
Retrieves a card order based on the cardOrderId
.
curl -X GET https://api.sandbox.transferwise.tech/v3/spend/profiles/{{profileId}}/card-orders/{{cardOrderId}} \-H 'Authorization: Bearer <your api token>'
Response
Returns a Card Order.