Skip to content

Wise Platform API

The Wise Platform API is a REST-based interface that enables programmatic access to Wise's payment infrastructure. All endpoints return JSON-formatted responses and use standard HTTP methods and status codes.

New to wise?

We strongly recommend first reading our Getting Started Guide to help you set up credentials and make your first call.

Before you begin

To use this API reference effectively, you should have:

  • Received Valid API credentials from Wise (Client ID and Client Secret)
  • Understand OAuth 2.0 authentication
  • Be familiar with RESTful API concepts

Core API resources

ResourcePurpose
QuoteExchange rate and fee calculations
RecipientBeneficiary account management
TransferPayment creation and execution
BalanceMulti-currency account operations
ProfileAccount ownership details
RateCurrent and historical exchange rates

Not sure which workflow to build?
Start with our Integration Guides for step-by-step implementation examples.

Languages
Servers
Production Environment
https://api.wise.com/
Sandbox Environment
https://api.wise-sandbox.com/

3D Secure Authentication

To manage certain aspects of the 3D Secure (3DS) authentication, you will need to integrate with the following APIs.

Operations

Activity

Activity represents a snapshot of a performed action for a profile.

Operations

Additional Customer Verification

In certain situations, additional evidence is required to verify customers and ensure we’re compliant with the KYC regulations.

Additional Verification APIs support a list of evidences that can be found in the Supported Evidences guide.

If you use the Customer Account with Partner KYC model and your customers are primarily based in the EU, refer to this Onboarding EU customers guide for instructions on how to use these APIs.

If you use the Customer Account with Partner KYC model and you are onboarding high risk business customers based primarily based in the US, refer to this Onboarding High Risk US Businesses guide for instructions on how to use these APIs.

Operations

Address

Manage physical addresses associated with user profiles.

Address requirements vary by country — use the address requirements endpoints to dynamically discover which fields are needed before creating an address.

SchemasOperations

Balance

Create and manage balance accounts within a multi-currency account.

Each profile can hold multiple balance accounts in different currencies. A STANDARD balance is limited to one per currency, while SAVINGS balances (Jars) allow multiple in the same currency. Creating the first balance for a profile automatically creates the multi-currency account.

Balances include an investmentState field. Only balances with NOT_INVESTED can be operated on via the API. Invested balances should be shown but not actionable.

For a complete guide on multi-currency accounts, see Multi-Currency Accounts.

SchemasOperations

Balance Statement

Balance statements contain transactional activities on a Wise Multi-Currency Account, including deposits, withdrawals, conversions, card transactions, and fees.

Statements can be retrieved in multiple formats: JSON, CSV, PDF, XLSX, CAMT.053, MT940, or QIF.

Operations

Bank Account Details

Bank account details allow users to receive money into their Wise Multi-Currency Account. Each currency balance can have local bank details (for domestic payments) and international bank details (for SWIFT payments) where available.

Bank account details can be retrieved for existing balances, or new details can be ordered for currencies where they're available but not yet issued.

SchemasOperations

Batch Group

A batch group is a named collection of up to 1000 transfers that can be managed as a single unit. Batch groups are primarily used for funding multiple transfers with a single payment.

Workflow:

  1. Create a batch group with a source currency
  2. Add transfers to the group (up to 1000)
  3. Complete the batch group to close it for modifications
  4. Fund the batch group from a balance or via direct debit

Individual transfers in the group follow standard transfer lifecycle and can be tracked separately.

SchemasOperations

Bulk Settlement

Bulk settlement allows partners to settle multiple transfers in a single bank transfer at the end of a settlement period. This model splits transfer creation/funding from final settlement, allowing Wise to process transfers before receiving funds based on a partner's guarantee.

Use the settlement journal endpoint to submit a list of transfers to be settled, along with the settlement reference that matches your bank transfer payment.

Operations

Card

Manage your customers' cards programmatically. These APIs allow you to retrieve card details, control card status, manage spending permissions, and access sensitive card data securely.

Key capabilities:

  • List and retrieve card details for a profile
  • Update card status (active, frozen, blocked)
  • Control spending permissions (e-commerce, ATM, contactless, etc.)
  • Access sensitive card data (PAN, CVV, PIN) via encrypted JWE payloads

Sensitive card details: Wise is a PCI DSS compliant provider and stores all card data securely. The scope for PCI compliance depends on your use case and will impact how you integrate. For all sensitive card details endpoints, follow the detailed guide.

For ordering new cards, see the Card Order API. For transaction history, see the Card Transaction API.

SchemasOperations

Card Kiosk Collection

These APIs are designed to allow you to print and encrypt your card directly from a kiosk machine. The card information will be sent to our card manufacturer to configure and print the card on-site on a kiosk machine.

The card printing process will automatically begin once the request is received by our card manufacturer.

During the printing process, you will be notified via webhook about any card production status change.

Before using these APIs, make sure to read the guide on kiosk collection.

Please reach out to your Implementation Manager for more information on these APIs.

Testing: In the sandbox environment, use the card production simulation API to test your integration with various production statuses and error scenarios.

Production status flow

These statuses represent the lifecycle of a card production:

  • READY - Card is ready for production. The produce card endpoint can be called.
  • IN_PROGRESS - Card is being produced at the kiosk machine (chip encryption and printing in progress).
  • PRODUCED - Card has been successfully produced and collected from the kiosk. This is a final state.
  • PRODUCTION_ERROR - Card production failed. Check the errorCode to identify the issue, resolve it, then retry using the produce card endpoint.

A card with production status PRODUCED will trigger an asynchronous call to update the associated card order to PRODUCED status.

Card production status flow

Operations

Produce a card

Request

Sends the card production request to a kiosk machine. To confirm that card information has been successfully created, listen to the card-production-status-change webhook with status READY.

Cards that were created over 60 days ago will result in a 422 error code and cannot be retried. This is due to the data being obfuscated on our side. In this case, a new card order has to be created.

Security
UserToken
Path
profileIdinteger(int64)required

The profile ID (personal or business) that owns the card.

Example: 123456
cardTokenstringrequired

The unique token identifying the card.

Example: ca0c8154-1e14-4464-a1ce-dcea7dc3de52
Bodyapplication/jsonrequired
kioskIdstringrequired

Identifier that specifies on which kiosk the card should be produced.

Example: "WIS00001"
curl -i -X PUT \
  https://api.wise.com/v3/spend/profiles/123456/cards/ca0c8154-1e14-4464-a1ce-dcea7dc3de52/production \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'Content-Type: application/json' \
  -d '{
    "kioskId": "WIS00001"
  }'

Responses

OK - The card information has been successfully sent to the kiosk machine.

Bodyapplication/json
statusstring

Current production status:

  • READY - Card is ready for production
  • IN_PROGRESS - Card is in production at the kiosk machine
  • PRODUCED - Card is produced and collected. This is a final state
  • PRODUCTION_ERROR - Card production failed
  • REQUEST_ERROR - Card production request failed
Enum"READY""IN_PROGRESS""PRODUCED""PRODUCTION_ERROR""REQUEST_ERROR"
Example: "IN_PROGRESS"
kioskIdstring or null

Identifier that specifies which kiosk machine is producing the card. When the status is READY, this value is null.

Example: "WIS00001"
occurredAtstring(date-time)

Time when the card production request has been sent to the kiosk machine (ISO 8601 format).

Example: "2024-01-01T12:24:56.121Z"
errorCodestring or null

Code returned when card production is not successful. Nullable.

Request errors - Returned when status is REQUEST_ERROR:

  • UNKNOWN_ERROR - An error occurred on the server
  • REQUEST_ALREADY_EXISTS - The request has already been submitted
  • KIOSK_ID_NOT_FOUND - The kiosk ID does not exist
  • CARD_TYPE_NOT_FOUND - The card type does not exist
  • INVALID_FIELD_VALUE - Some field values are unexpected
  • INVALID_PIN_FORMAT - The PIN does not follow ISO0 or ISO2 standard
  • EMPTY_OR_NULL_FIELD_VALUE - Some required fields are empty or null
  • EMPTY_OR_NULL_OR_WRONG_SIZE_FIELD_VALUE - Some required fields are empty, null, or have incorrect lengths
  • CHARSET_NOT_SUPPORTED - The character set for some fields is not supported
  • INVALID_FIELD_FORMAT - Some field formats are invalid
  • INVALID_FIELD_ENCODING - The encoding for some fields is not expected
  • CDATA_ENCODING_OR_FORMATING_ERROR - The encoding or formatting for XML text field values is incorrect
  • PIN_LENGTH_ERROR - The PIN length is incorrect
  • PIN_VERIFICATION_FAILED - The PIN cannot be verified because the server is unreachable
  • DATA_PREPARATION_FAILED - The server failed to parse the request
  • PARTIAL_DATA_RECEIVED - Only part of the expected data has been received
  • NO_BRANCH_LINKED_TO_KIOSK - The kiosk has not been linked to any branch
  • IMAGE_SERVER_ERROR - The image server is unreachable or failed to process the data
  • PAN_ALREADY_EXISTS - The PAN already exists
  • PRINTER_OR_SATELLITE_NOT_READY - The printer or satellite is not ready to start the production
  • REQUEST_CREATED_BUT_NOT_STARTED - The request has been created, but production is pending until the printer or satellite is ready
  • UNABLE_TO_ACCEPT_REQUEST - The system is currently busy and cannot accept new requests at this time

Production errors - Returned when status is PRODUCTION_ERROR:

  • CB_NOT_AVAILABLE - Main server error: central base not available
  • CB_DB_NOT_AVAILABLE - Main server error: database not available
  • CB_NETWORK_NOT_AVAILABLE - Main server error: network not available
  • CB_AUTHENTICATION_FAILED - Main server error: user authentication verification failed
  • CB_SERVICE_NOT_ALLOWED - Main server error: the accessed service requires a higher security level
  • CB_TIME - Main server error: timeout occurred on the Central Base side
  • DP_NOT_AVAILABLE - Data processing error: the Data preparation module is not available
  • DP_IO_ERROR - Data processing error: Input/Output error when communicating with the DP
  • DP_TIMEOUT - Data processing error: timeout error
  • SAT_SERVER_NOT_REACHABLE - Satellite agent error: the server is not reachable
  • SAT_AUTHENTICATION_FAILED - Satellite agent error: user authentication failed on satellite
  • SAT_NETWORK_NOT_AVAILABLE - Satellite agent error: the network is not available
  • PRT_NOT_REACHABLE - Printer error: printer is not reachable
  • PRT_SETUP_ERROR - Printer error: printer setup is incorrect
  • PRT_TIMEOUT - Printer error: printer timeout
  • PRT_RIBBON - Printer error: ribbon error
  • PRT_LOCK_ERROR - Printer error: printer physically unlocked
  • PRT_RIBBON_MISSING - Printer error: ribbon is missing
  • PRT_RIBBON_ENDED - Printer error: ribbon has ended
  • PRT_COVER_OPEN - Printer error: printer cover is open
  • PRT_PAUSED - Printer error: printer paused
  • PRD_UNEXPECTED_DATA - Production error: production data is incorrect
  • PRD_FEEDER_EMPTY - Production error: feeder is empty
  • PRD_FEEDER_JAM - Production error: feeder card jam
  • PRD_HOPPER_FULL - Production error: hopper is full
  • PRD_HOPPER_DOOR - Production error: hopper door is open
  • PRD_HOPPER_JAM - Production error: hopper card jam
  • PRD_MAGSTRIPE - Production error: error occurred during magstripe encoding
  • PRD_SMARTCARD - Production error: error occurred during chip personalization
  • PRD_EMBOSSER - Production error: error occurred during embossing
  • PRD_TIMEOUT - Production error: production timeout has been reached
  • PRD_REJECT_FULL - Production error: reject box is full
  • PRD_SMARTCARD_CARD_NOT_IN_READER - Production error: card is not in reader
  • PRD_FINAL_VALIDATION_NOK - Production error: user has rejected card production
  • INV_NOT_INITIALIZED - Production error: inventory not initialized
  • UNKNOWN_ERROR - Unknown error
Example: "PIN_VERIFICATION_FAILED"
descriptionstring or null

Detailed description of the error code.

Example: "The PIN cannot be verified because the server is unreachable"
Response
application/json
{ "status": "IN_PROGRESS", "kioskId": "WIS00001", "occurredAt": "2024-01-01T12:24:56.121Z" }

Retrieve card production status

Request

Retrieves the current production status of a card at a kiosk machine.

Best practice: Subscribe to the card production status change webhook for real-time notifications. Use this endpoint only when you need to synchronously check the status.

Security
UserToken
Path
profileIdinteger(int64)required

The profile ID (personal or business) that owns the card.

Example: 123456
cardTokenstringrequired

The unique token identifying the card.

Example: ca0c8154-1e14-4464-a1ce-dcea7dc3de52
curl -i -X GET \
  https://api.wise.com/v3/spend/profiles/123456/cards/ca0c8154-1e14-4464-a1ce-dcea7dc3de52/production \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Responses

OK - Successfully retrieved card production status.

Bodyapplication/json
statusstring

Current production status:

  • READY - Card is ready for production
  • IN_PROGRESS - Card is in production at the kiosk machine
  • PRODUCED - Card is produced and collected. This is a final state
  • PRODUCTION_ERROR - Card production failed
  • REQUEST_ERROR - Card production request failed
Enum"READY""IN_PROGRESS""PRODUCED""PRODUCTION_ERROR""REQUEST_ERROR"
Example: "IN_PROGRESS"
kioskIdstring or null

Identifier that specifies which kiosk machine is producing the card. When the status is READY, this value is null.

Example: "WIS00001"
occurredAtstring(date-time)

Time when the card production request has been sent to the kiosk machine (ISO 8601 format).

Example: "2024-01-01T12:24:56.121Z"
errorCodestring or null

Code returned when card production is not successful. Nullable.

Request errors - Returned when status is REQUEST_ERROR:

  • UNKNOWN_ERROR - An error occurred on the server
  • REQUEST_ALREADY_EXISTS - The request has already been submitted
  • KIOSK_ID_NOT_FOUND - The kiosk ID does not exist
  • CARD_TYPE_NOT_FOUND - The card type does not exist
  • INVALID_FIELD_VALUE - Some field values are unexpected
  • INVALID_PIN_FORMAT - The PIN does not follow ISO0 or ISO2 standard
  • EMPTY_OR_NULL_FIELD_VALUE - Some required fields are empty or null
  • EMPTY_OR_NULL_OR_WRONG_SIZE_FIELD_VALUE - Some required fields are empty, null, or have incorrect lengths
  • CHARSET_NOT_SUPPORTED - The character set for some fields is not supported
  • INVALID_FIELD_FORMAT - Some field formats are invalid
  • INVALID_FIELD_ENCODING - The encoding for some fields is not expected
  • CDATA_ENCODING_OR_FORMATING_ERROR - The encoding or formatting for XML text field values is incorrect
  • PIN_LENGTH_ERROR - The PIN length is incorrect
  • PIN_VERIFICATION_FAILED - The PIN cannot be verified because the server is unreachable
  • DATA_PREPARATION_FAILED - The server failed to parse the request
  • PARTIAL_DATA_RECEIVED - Only part of the expected data has been received
  • NO_BRANCH_LINKED_TO_KIOSK - The kiosk has not been linked to any branch
  • IMAGE_SERVER_ERROR - The image server is unreachable or failed to process the data
  • PAN_ALREADY_EXISTS - The PAN already exists
  • PRINTER_OR_SATELLITE_NOT_READY - The printer or satellite is not ready to start the production
  • REQUEST_CREATED_BUT_NOT_STARTED - The request has been created, but production is pending until the printer or satellite is ready
  • UNABLE_TO_ACCEPT_REQUEST - The system is currently busy and cannot accept new requests at this time

Production errors - Returned when status is PRODUCTION_ERROR:

  • CB_NOT_AVAILABLE - Main server error: central base not available
  • CB_DB_NOT_AVAILABLE - Main server error: database not available
  • CB_NETWORK_NOT_AVAILABLE - Main server error: network not available
  • CB_AUTHENTICATION_FAILED - Main server error: user authentication verification failed
  • CB_SERVICE_NOT_ALLOWED - Main server error: the accessed service requires a higher security level
  • CB_TIME - Main server error: timeout occurred on the Central Base side
  • DP_NOT_AVAILABLE - Data processing error: the Data preparation module is not available
  • DP_IO_ERROR - Data processing error: Input/Output error when communicating with the DP
  • DP_TIMEOUT - Data processing error: timeout error
  • SAT_SERVER_NOT_REACHABLE - Satellite agent error: the server is not reachable
  • SAT_AUTHENTICATION_FAILED - Satellite agent error: user authentication failed on satellite
  • SAT_NETWORK_NOT_AVAILABLE - Satellite agent error: the network is not available
  • PRT_NOT_REACHABLE - Printer error: printer is not reachable
  • PRT_SETUP_ERROR - Printer error: printer setup is incorrect
  • PRT_TIMEOUT - Printer error: printer timeout
  • PRT_RIBBON - Printer error: ribbon error
  • PRT_LOCK_ERROR - Printer error: printer physically unlocked
  • PRT_RIBBON_MISSING - Printer error: ribbon is missing
  • PRT_RIBBON_ENDED - Printer error: ribbon has ended
  • PRT_COVER_OPEN - Printer error: printer cover is open
  • PRT_PAUSED - Printer error: printer paused
  • PRD_UNEXPECTED_DATA - Production error: production data is incorrect
  • PRD_FEEDER_EMPTY - Production error: feeder is empty
  • PRD_FEEDER_JAM - Production error: feeder card jam
  • PRD_HOPPER_FULL - Production error: hopper is full
  • PRD_HOPPER_DOOR - Production error: hopper door is open
  • PRD_HOPPER_JAM - Production error: hopper card jam
  • PRD_MAGSTRIPE - Production error: error occurred during magstripe encoding
  • PRD_SMARTCARD - Production error: error occurred during chip personalization
  • PRD_EMBOSSER - Production error: error occurred during embossing
  • PRD_TIMEOUT - Production error: production timeout has been reached
  • PRD_REJECT_FULL - Production error: reject box is full
  • PRD_SMARTCARD_CARD_NOT_IN_READER - Production error: card is not in reader
  • PRD_FINAL_VALIDATION_NOK - Production error: user has rejected card production
  • INV_NOT_INITIALIZED - Production error: inventory not initialized
  • UNKNOWN_ERROR - Unknown error
Example: "PIN_VERIFICATION_FAILED"
descriptionstring or null

Detailed description of the error code.

Example: "The PIN cannot be verified because the server is unreachable"
Response
application/json
{ "status": "READY", "kioskId": null, "occurredAt": "2024-01-01T12:24:56.124Z", "errorCode": null, "description": "Card ready for production" }