API

Simulation

Sandbox simulations: transfers, cards, KYC reviews, top-ups and incoming payments.

Operations

Every route this entity exposes. Each route links to its own reference on this page.

Method Route SDK operation Returns
POST /simulation/spend/profiles/{profileId}/cards/{cardToken}/transactions/authorisation create Simulated card authorisation
POST /simulation/spend/profiles/{profileId}/cards/{cardToken}/transactions/clearing create Simulated transaction clearing result
POST /simulation/spend/profiles/{profileId}/cards/{cardToken}/production create Card production state changed successfully
POST /simulation/spend/profiles/{profileId}/cards/{cardToken}/transactions/reversal create Simulated transaction reversal result
POST /simulation/profiles/{profileId}/kyc-reviews/{kycReviewId}/requirements/add create Requirement added successfully. No content returned
POST /simulation/profiles/{profileId}/kyc-reviews/{kycReviewId}/requirements/submit create Requirement submitted successfully. No content returned
POST /simulation/profiles/{profileId}/kyc-reviews/{kycReviewId}/verify create KYC review verified successfully. No content returned
POST /simulation/profiles/{profileId}/bank-transactions/import create Bank transaction imported successfully. No content returned
POST /simulation/profiles/{profileId}/swift-in create Swift payment simulated successfully
POST /simulation/profiles/{profileId}/verifications create Verification state changed successfully. No content returned
POST /simulation/transfers/{transferId}/payout-failure create Successful initiation of payout failure
POST /simulation/balance/topup create Simulated balance top-up result
POST /simulation/sanction-cases create Sanction case successfully closed
POST /simulation/settlement/funds create Funds received simulation completed successfully
POST /simulation/verify-profile create Verification state changed successfully. No content returned
GET /simulation/spend/profiles/{profileId}/cards/{cardToken}/transactions list List of simulated card transactions
GET /simulation/profiles/{profileId}/kyc-reviews/{kycReviewId}/requirements list List of KYC review requirements
GET /simulation/transfers/{transferId}/{status} load Transfer with updated status

Examples

One example per SDK, generated from the API model. The argument names are the parameters and fields of this entity, and the values are placeholders. The examples are not compiled or executed.

Golang

Construct client as shown in the Golang setup, then call the operations:

simulations, err := client.Simulation(nil).List(map[string]any{"card_token": "example", "profile_id": 1}, nil)
if err != nil {
    panic(err)
}
fmt.Println(simulations)
simulation, err := client.Simulation(nil).Load(map[string]any{"status": "example", "transfer_id": 1}, nil)
if err != nil {
    panic(err)
}
fmt.Println(simulation)
created, err := client.Simulation(nil).Create(map[string]any{"transfer_id": 1}, nil)
if err != nil {
    panic(err)
}
fmt.Println(created)

Lua

Construct client as shown in the Lua setup, then call the operations:

local simulations, err = client:Simulation():list({ card_token = "example", profile_id = 1 })
local simulation, err = client:Simulation():load({ status = "example", transfer_id = 1 })
local created, err = client:Simulation():create({ transfer_id = 1 })

PHP

Construct client as shown in the PHP setup, then call the operations:

$simulations = $client->Simulation()->list(["card_token" => "example", "profile_id" => 1]);
$simulation = $client->Simulation()->load(["status" => "example", "transfer_id" => 1]);
$created = $client->Simulation()->create(["transfer_id" => 1]);

Python

Construct client as shown in the Python setup, then call the operations:

simulations = client.Simulation().list({"card_token": "example", "profile_id": 1})
simulation = client.Simulation().load({"status": "example", "transfer_id": 1})
created = client.Simulation().create({ "transfer_id": 1 })

Ruby

Construct client as shown in the Ruby setup, then call the operations:

simulations = client.Simulation.list({ "card_token" => "example", "profile_id" => 1 })
simulation = client.Simulation.load({ "status" => "example", "transfer_id" => 1 })
created = client.Simulation.create({ "transfer_id" => 1 })

TypeScript

Construct client as shown in the TypeScript setup, then call the operations:

const simulations = await client.Simulation().list({ card_token: "example", profile_id: 1 })
const simulation = await client.Simulation().load({ status: "example", transfer_id: 1 })
const created = await client.Simulation().create({ transfer_id: 1 })

Fields

Field Type Required Description
business string No Business
created string No Created
creationTime number No Time when the card transaction was created.
description one,string,null No Description of the KYC review item.
details object No Details
failure_reason_code string No Failure reason code to trigger for payout failure.
hasActiveIssues boolean No Has Active Issues
id string No Id
key string No KYC review item key.
quote integer No Quote
rate number No Rate
reference string No Reference
sourceAccount string No Source Account
sourceCurrency string No Source Currency
sourceValue integer No Source Value
state string No State of the KYC review item.
status string No Status
targetAccount integer No Target Account
targetCurrency string No Target Currency
targetValue number No Target Value
transactionId integer No ID of the transaction.
transferRequest string No Transfer Request
user integer No User
wise_id integer No Wise Id

create

POST /simulation/spend/profiles/{profileId}/cards/{cardToken}/transactions/authorisation

Operation ID: simulationCardTransactionAuthorisation.

Authentication: bearer token (UserToken).

Parameters

Parameter In Type Required Description
profileId path integer (int64) Yes The profile ID.
cardToken path string (uuid) Yes The card token.
X-External-Correlation-Id header string (uuid) No Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more.

Request body

application/json

Property Type Required Description
amount object No
amount.currency string No Currency code.
amount.value number No Transaction amount.
cardNumber string No Primary Account Number of the card.
mcc integer (int32) No Merchant category code.
pos string No The point-of-sale used for the transaction. - For POS transactions: CHIP_AND_PIN - For e-commerce transactions: E_COMMERCE_NO_3DS - For ATM transactions: CHIP_AND_PIN - For refund transactions: CHIP_AND_PIN or E_COMMERCE_NO_3DS
transactionType string No The type of the transaction. - For POS and e-commerce transactions: GOODS_AND_SERVICES - For ATM transactions: CASH_WITHDRAWAL - For refund transactions: REFUND

Responses

200: Simulated card authorisation

application/json

Property Type Required Description
error string,null No An error returned by the transaction, if it exists.
reference object No The transaction reference. This can be used in a following request for reversal and clearing.

Example response:

{
  "error": null,
  "reference": {
    "authorizationIdResponse": "123646",
    "requestMti": "0200",
    "transaction": {
      "acquirer": {
        "acceptorIdCode": "CARD ACCEPTOR",
        "acceptorTerminalId": "TERMID01",
        "city": "CITY NAME",
        "country": "GB",
        "forwardingInstitutionId": "400050",
        "institutionId": "430010",
        "merchantCategoryCode": 5499,
        "name": "ACQUIRER NAME"
      },
      "card": {
        "cardStatus": "ACTIVE",
        "country": "SG",
        "currencies": [
          "SGD"
        ],
        "cvv1": "123",
        "cvv2": "789",
        "expiration": [
          2029,
          7
        ],
        "icvv": "456",
        "pan": "4242424242424242",
        "pin": "1234",
        "profileId": 2,
        "schemeName": "VISA",
        "sequenceNumber": 1,
        "token": "59123122-223d-45f9-b840-0ad4a4f80937",
        "userId": 5
      },
      "pos": {
        "acceptsOnlinePins": true,
        "hasChip": true,
        "maxPinLength": 12,
        "supports3ds": false,
        "type": "CHIP_AND_PIN"
      },
      "retrievalReferenceNum": "230805363054",
      "schemeTransactionId": "932290252416153",
      "stan": "363054",
      "transactionStartTime": 1667541087.0476434
    }
  }
}
429: Rate limit exceeded. Retry after the number of seconds specified in the Retry-After header

application/json

The response is object.

POST /simulation/spend/profiles/{profileId}/cards/{cardToken}/transactions/clearing

Operation ID: simulationCardTransactionClearing.

Authentication: bearer token (UserToken).

Parameters

Parameter In Type Required Description
profileId path integer (int64) Yes The profile ID.
cardToken path string (uuid) Yes The card token.
X-External-Correlation-Id header string (uuid) No Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more.

Request body

application/json

Property Type Required Description
amount object No
amount.currency string No Currency code.
amount.value number No Transaction amount.
ref object No The transaction reference. This can be obtained from a previous authorisation request.
transactionType string No The type of the transaction. Use the same transaction type from the previous authorisation request.

Example request body:

{
  "amount": {
    "currency": "SGD",
    "value": 10
  },
  "ref": {
    "authorizationIdResponse": "123646",
    "requestMti": "0200",
    "transaction": {
      "acquirer": {
        "acceptorIdCode": "CARD ACCEPTOR",
        "acceptorTerminalId": "TERMID01",
        "city": "CITY NAME",
        "country": "GB",
        "forwardingInstitutionId": "400050",
        "institutionId": "430010",
        "merchantCategoryCode": 5499,
        "name": "ACQUIRER NAME"
      },
      "card": {
        "cardStatus": "ACTIVE",
        "country": "SG",
        "currencies": [
          "SGD"
        ],
        "cvv1": "123",
        "cvv2": "789",
        "expiration": [
          2029,
          7
        ],
        "icvv": "456",
        "pan": "4242424242424242",
        "pin": "1234",
        "profileId": 2,
        "schemeName": "VISA",
        "sequenceNumber": 1,
        "token": "59123122-223d-45f9-b840-0ad4a4f80937",
        "userId": 5
      },
      "pos": {
        "acceptsOnlinePins": true,
        "hasChip": true,
        "maxPinLength": 12,
        "supports3ds": false,
        "type": "CHIP_AND_PIN"
      },
      "retrievalReferenceNum": "230805363054",
      "schemeTransactionId": "932290252416153",
      "stan": "363054",
      "transactionStartTime": 1667541087.0476434
    }
  },
  "transactionType": "GOODS_AND_SERVICES"
}

Responses

200: Simulated transaction clearing result

application/json

Property Type Required Description
error string,null No An error returned by the transaction, if it exists.
reference object No The transaction reference.

Example response:

{
  "error": null,
  "reference": {
    "authorizationIdResponse": "123646",
    "requestMti": "0200",
    "transaction": {
      "acquirer": {
        "acceptorIdCode": "CARD ACCEPTOR",
        "acceptorTerminalId": "TERMID01",
        "city": "CITY NAME",
        "country": "GB",
        "forwardingInstitutionId": "400050",
        "institutionId": "430010",
        "merchantCategoryCode": 5499,
        "name": "ACQUIRER NAME"
      },
      "card": {
        "cardStatus": "ACTIVE",
        "country": "SG",
        "currencies": [
          "SGD"
        ],
        "cvv1": "123",
        "cvv2": "789",
        "expiration": [
          2029,
          7
        ],
        "icvv": "456",
        "pan": "4242424242424242",
        "pin": "1234",
        "profileId": 2,
        "schemeName": "VISA",
        "sequenceNumber": 1,
        "token": "59123122-223d-45f9-b840-0ad4a4f80937",
        "userId": 5
      },
      "pos": {
        "acceptsOnlinePins": true,
        "hasChip": true,
        "maxPinLength": 12,
        "supports3ds": false,
        "type": "CHIP_AND_PIN"
      },
      "retrievalReferenceNum": "230805363054",
      "schemeTransactionId": "932290252416153",
      "stan": "363054",
      "transactionStartTime": 1667541087.0476434
    }
  }
}
429: Rate limit exceeded. Retry after the number of seconds specified in the Retry-After header

application/json

The response is object.

POST /simulation/spend/profiles/{profileId}/cards/{cardToken}/production

Operation ID: simulationCardProduction.

Authentication: bearer token (UserToken).

Parameters

Parameter In Type Required Description
profileId path integer (int64) Yes The profile ID.
cardToken path string (uuid) Yes The card token.
X-External-Correlation-Id header string (uuid) No Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more.

Request body

application/json

Property Type Required Description
errorCode string No The error code to simulate. This field should be set only if the status is PRODUCTION_ERROR.
status enum: PRODUCED, PRODUCTION_ERROR No The intended production status of the card.

Example request body:

{
  "errorCode": "PRT_NOT_REACHABLE",
  "status": "PRODUCTION_ERROR"
}

Responses

200: Card production state changed successfully
429: Rate limit exceeded. Retry after the number of seconds specified in the Retry-After header

application/json

The response is object.

POST /simulation/spend/profiles/{profileId}/cards/{cardToken}/transactions/reversal

Operation ID: simulationCardTransactionReversal.

Authentication: bearer token (UserToken).

Parameters

Parameter In Type Required Description
profileId path integer (int64) Yes The profile ID.
cardToken path string (uuid) Yes The card token.
X-External-Correlation-Id header string (uuid) No Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more.

Request body

application/json

Property Type Required Description
amount object No
amount.currency string No Currency code.
amount.value number No Transaction amount. Set to 0 for full reversal, or the intended final value for partial reversal.
ref object No The transaction reference. This can be obtained from a previous authorisation request.
transactionType string No The type of the transaction. Use the same transaction type from the previous authorisation request.

Example request body:

{
  "amount": {
    "currency": "SGD",
    "value": 3
  },
  "ref": {
    "authorizationIdResponse": "123646",
    "requestMti": "0200",
    "transaction": {
      "acquirer": {
        "acceptorIdCode": "CARD ACCEPTOR",
        "acceptorTerminalId": "TERMID01",
        "city": "CITY NAME",
        "country": "GB",
        "forwardingInstitutionId": "400050",
        "institutionId": "430010",
        "merchantCategoryCode": 5499,
        "name": "ACQUIRER NAME"
      },
      "card": {
        "cardStatus": "ACTIVE",
        "country": "SG",
        "currencies": [
          "SGD"
        ],
        "cvv1": "123",
        "cvv2": "789",
        "expiration": [
          2029,
          7
        ],
        "icvv": "456",
        "pan": "4242424242424242",
        "pin": "1234",
        "profileId": 2,
        "schemeName": "VISA",
        "sequenceNumber": 1,
        "token": "59123122-223d-45f9-b840-0ad4a4f80937",
        "userId": 5
      },
      "pos": {
        "acceptsOnlinePins": true,
        "hasChip": true,
        "maxPinLength": 12,
        "supports3ds": false,
        "type": "CHIP_AND_PIN"
      },
      "retrievalReferenceNum": "230805363054",
      "schemeTransactionId": "932290252416153",
      "stan": "363054",
      "transactionStartTime": 1667541087.0476434
    }
  },
  "transactionType": "GOODS_AND_SERVICES"
}

Responses

200: Simulated transaction reversal result

application/json

Property Type Required Description
error string,null No An error returned by the transaction, if it exists.
reference object No The transaction reference.

Example response:

{
  "error": null,
  "reference": {
    "authorizationIdResponse": "123646",
    "requestMti": "0200",
    "transaction": {
      "acquirer": {
        "acceptorIdCode": "CARD ACCEPTOR",
        "acceptorTerminalId": "TERMID01",
        "city": "CITY NAME",
        "country": "GB",
        "forwardingInstitutionId": "400050",
        "institutionId": "430010",
        "merchantCategoryCode": 5499,
        "name": "ACQUIRER NAME"
      },
      "card": {
        "cardStatus": "ACTIVE",
        "country": "SG",
        "currencies": [
          "SGD"
        ],
        "cvv1": "123",
        "cvv2": "789",
        "expiration": [
          2029,
          7
        ],
        "icvv": "456",
        "pan": "4242424242424242",
        "pin": "1234",
        "profileId": 2,
        "schemeName": "VISA",
        "sequenceNumber": 1,
        "token": "59123122-223d-45f9-b840-0ad4a4f80937",
        "userId": 5
      },
      "pos": {
        "acceptsOnlinePins": true,
        "hasChip": true,
        "maxPinLength": 12,
        "supports3ds": false,
        "type": "CHIP_AND_PIN"
      },
      "retrievalReferenceNum": "230805363054",
      "schemeTransactionId": "932290252416153",
      "stan": "363054",
      "transactionStartTime": 1667541087.0476434
    }
  }
}
429: Rate limit exceeded. Retry after the number of seconds specified in the Retry-After header

application/json

The response is object.

POST /simulation/profiles/{profileId}/kyc-reviews/{kycReviewId}/requirements/add

Operation ID: simulationKycReviewRequirementsAdd.

Authentication: bearer token (UserToken).

Parameters

Parameter In Type Required Description
profileId path integer (int64) Yes The profile ID requiring the new requirement to be added.
kycReviewId path string (uuid) Yes The ID of the existing KYC review.
X-External-Correlation-Id header string (uuid) No Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more.

Request body

application/json

Property Type Required Description
requestedAction enum: APPROVE, REJECT No The action to be carried out.
requirement string No Requirement to simulate hosted journey for.

Responses

202: Requirement added successfully. No content returned
400: Bad request

application/json

Example response:

{
  "category": "CLIENT",
  "code": "invalid-request",
  "description": "Profile 123L is a personal type, not permitted to simulate evidence request",
  "details": null
}
429: Rate limit exceeded. Retry after the number of seconds specified in the Retry-After header

application/json

The response is object.

POST /simulation/profiles/{profileId}/kyc-reviews/{kycReviewId}/requirements/submit

Operation ID: simulationKycReviewRequirementsSubmit.

Authentication: bearer token (UserToken).

Parameters

Parameter In Type Required Description
profileId path integer (int64) Yes The profile ID.
kycReviewId path string (uuid) Yes The ID of the existing KYC review.
X-External-Correlation-Id header string (uuid) No Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more.

Request body

application/json

Property Type Required Description
requirement string No Requirement to simulate hosted journey for.

Example request body:

{
  "requirement": "ACCOUNT_PURPOSE"
}

Responses

202: Requirement submitted successfully. No content returned
400: Bad request

application/json

Example response:

{
  "category": "CLIENT",
  "code": "invalid-request",
  "description": "Invalid request. KycRequirement {ACCOUNT_PURPOSE} was not found for KycReview",
  "details": null
}
429: Rate limit exceeded. Retry after the number of seconds specified in the Retry-After header

application/json

The response is object.

POST /simulation/profiles/{profileId}/kyc-reviews/{kycReviewId}/verify

Operation ID: simulationKycReviewVerify.

Authentication: bearer token (UserToken).

Parameters

Parameter In Type Required Description
profileId path integer (int64) Yes The profile ID.
kycReviewId path string (uuid) Yes The ID of the existing KYC review.
X-External-Correlation-Id header string (uuid) No Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more.

Request body

application/json

Property Type Required Description
requestedAction enum: APPROVE, REJECT No The action to be carried out.
requirements array of string No Zero or more requirements to be verified. If not provided, all blocking requirements are verified.

Example request body:

{
  "requestedAction": "APPROVE",
  "requirements": [
    "ACCOUNT_PURPOSE_V2"
  ]
}

Responses

202: KYC review verified successfully. No content returned
400: Bad request

application/json

Example response:

{
  "category": "CLIENT",
  "code": "kyc_review.state_update_not_allowed",
  "description": "Invalid action passed in request, action: APPROVED",
  "details": null
}
429: Rate limit exceeded. Retry after the number of seconds specified in the Retry-After header

application/json

The response is object.

POST /simulation/profiles/{profileId}/bank-transactions/import

Operation ID: simulationBankTransactionImport.

Authentication: bearer token (UserToken).

Parameters

Parameter In Type Required Description
profileId path integer (int64) Yes The profile ID.
X-External-Correlation-Id header string (uuid) No Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more.

Request body

application/json

Property Type Required Description
amount number Yes The payment amount.
beneficiaryAddress object No Beneficiary address.
beneficiaryAddress.addressFirstLine string No Address line: street, house, apartment.
beneficiaryAddress.city string No City name.
beneficiaryAddress.country string No Country code (ISO 3166-1 alpha-2).
beneficiaryAddress.postalCode string No Postal code.
beneficiaryAddress.stateCode string No State code.
beneficiaryName string No Beneficiary name - defaults to account holder name.
currency string Yes The currency of the bank account details that you want to make payment to.
reference string No Custom payment reference to identify the payment.
senderAccountNumber string No Sender's bank account number.
senderAddress object No Sender address.
senderAddress.addressFirstLine string No Address line: street, house, apartment.
senderAddress.city string No City name.
senderAddress.country string No Country code (ISO 3166-1 alpha-2).
senderAddress.postalCode string No Postal code.
senderAddress.stateCode string No State code.
senderBankCode string No Sender bank code.
senderName string No Sender full name.

Responses

201: Bank transaction imported successfully. No content returned
400: Bad request

application/json

Example response:

{
  "code": "not.valid",
  "message": "No account details found for profile currency pair"
}
429: Rate limit exceeded. Retry after the number of seconds specified in the Retry-After header

application/json

The response is object.

POST /simulation/profiles/{profileId}/swift-in

Operation ID: simulationSwiftIn.

Authentication: bearer token (UserToken).

Parameters

Parameter In Type Required Description
profileId path integer (int64) Yes The profile ID.
X-External-Correlation-Id header string (uuid) No Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more.

Request body

application/json

Property Type Required Description
amount number Yes Amount received by Wise.
beneficiaryAccount string No Account number of the ultimate beneficiary. It can be either a local account number or an IBAN. If the provided IBAN resolves to a BIC that does not match any connected test BICs, simulation is not allowed and an error is returned.
beneficiaryAddress object and object No Address of the ultimate beneficiary.
beneficiaryName string No Name of the ultimate beneficiary.
charges array of object No List of fees declared by correspondents (for example, handling fee).
charges[].agent string Yes BIC of the agent incurring the fee.
charges[].amount number Yes Fee amount.
charges[].currency string Yes Fee currency. 3-letter ISO currency code.
currencyCode string Yes Currency received by Wise. 3-letter ISO currency code.
instructedAmount number No Amount sent by the sender. If not provided, it is assumed to be the same as amount plus same currency fees. Any outstanding fees in other currencies are ignored. Required if instructedCurrencyCode is provided.
instructedCurrencyCode string No Currency sent by the sender. 3-letter ISO currency code. If not provided, it is assumed to be the same as currencyCode.
paymentReference string No Custom payment reference.
previousInstructingAgents array of string No List of previous instructing agents. Maximum 3 items.
senderAccount string No Account number of the sender. It can be either an IBAN or local account number.
senderAddress object and object No Address of the sender.
senderBank any or any or any or any No Details of the sender's bank. Cannot be provided together with senderBic.
senderBank.address object and object No Address of the sender's bank.
senderBank.bic string No BIC of the sender's bank.
senderBank.clearingSystemCode string No Code identifying the clearing system in which the sender bank is registered.
senderBank.clearingSystemMemberId string No Identifier of the sender bank within the clearing system specified by clearingSystemCode.
senderBank.lei string No Legal Entity Identifier (LEI) of the sender bank.
senderBank.name string No Name of the sender's bank.
senderBic string No BIC of the sender's bank. Cannot be provided together with senderBank.
senderName string No Name of the sender.

Responses

200: Swift payment simulated successfully

application/json

Example response:

{
  "ackMessage": false,
  "actor": "SYSTEM",
  "actorId": null,
  "actorOktaId": null,
  "amount": 100,
  "attributes": null,
  "currency": "EUR",
  "direction": "INCOMING",
  "finMessage": null,
  "id": 123,
  "jsonMessage": null,
  "messageReference": null,
  "messageType": "pacs.008.001.08",
  "mur": null,
  "payoutInstructionId": null,
  "processTime": "2026-02-27T09:24:38.484276Z",
  "receiver": null,
  "sender": null,
  "source": "SWIFT_CLOUD",
  "state": "RECEIVED",
  "transferId": null,
  "uetr": "f87c3c37-d97b-4da6-a788-94004414e648",
  "valueDate": null
}
400: Bad request

application/json

Example response:

{
  "errors": [
    {
      "arguments": [],
      "code": "not.valid",
      "message": "must be greater than 0",
      "path": "amount"
    }
  ]
}
422: Unprocessable Entity

application/json

Example response:

{
  "arguments": [],
  "code": "not.valid",
  "message": "None of connected BICs match beneficiary account DE00000000000000000000 (TESTDE00)"
}
429: Rate limit exceeded. Retry after the number of seconds specified in the Retry-After header

application/json

The response is object.

POST /simulation/profiles/{profileId}/verifications

Operation ID: simulationVerification.

Authentication: bearer token (UserToken).

Parameters

Parameter In Type Required Description
profileId path integer (int64) Yes The ID of the profile to verify.
X-External-Correlation-Id header string (uuid) No Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more.

Responses

200: Verification state changed successfully. No content returned
429: Rate limit exceeded. Retry after the number of seconds specified in the Retry-After header

application/json

The response is object.

POST /simulation/transfers/{transferId}/payout-failure

Operation ID: simulationTransferPayoutFailure.

Authentication: bearer token (UserToken).

Parameters

Parameter In Type Required Description
transferId path integer (int64) Yes The ID of the transfer to simulate.
X-External-Correlation-Id header string (uuid) No Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more.

Request body

application/json

Property Type Required Description
failure_reason_code string No Failure reason code to trigger for payout failure. When not provided, a failure code is selected at random and returned.

Responses

200: Successful initiation of payout failure

application/json

Example response:

{
  "failure_description": "Invalid recipient's ID document number",
  "failure_reason_code": "WRONG_ID_NUMBER",
  "occurred_at": "2023-08-10T10:17:23.123Z"
}
400: Bad request - invalid input or transfer state

application/json

The response is object.

429: Rate limit exceeded. Retry after the number of seconds specified in the Retry-After header

application/json

The response is object.

500: Internal server error

application/json

The response is object.

Example response:

{
  "errors": [
    {
      "code": "system_error",
      "message": "Something went wrong in our side. Please try again in 5 minutes. If this does not help, please let us know api@wise.com"
    }
  ]
}

POST /simulation/balance/topup

Operation ID: simulationBalanceTopup.

Authentication: bearer token (UserToken).

Parameters

Parameter In Type Required Description
X-External-Correlation-Id header string (uuid) No Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more.

Request body

application/json

Property Type Required Description
amount number Yes The amount to top up the balance account with.
balanceId integer (int64) Yes The ID of the balance account that is going to receive the funds.
channel enum: TRANSFER, CARD No Type of top-up. Not providing a channel will default to CARD.
currency string Yes The currency to top up the balance account in. Must be the same currency as the balance account.
profileId integer (int64) Yes The profile ID linked to the balance account.

Example request body:

{
  "amount": 100,
  "balanceId": 5,
  "channel": "TRANSFER",
  "currency": "EUR",
  "profileId": 2
}

Responses

200: Simulated balance top-up result

application/json

Property Type Required Description
balancesAfter array of object No
balancesAfter[].currency string No The currency of the balance account.
balancesAfter[].id integer (int64) No The ID of the balance account.
balancesAfter[].value number No The new amount available in the balance account.
state string No The state of the transaction. COMPLETED is always returned when using this endpoint.
transactionId integer (int64) No The ID of the top-up transaction.

Example response:

{
  "balancesAfter": [
    {
      "currency": "EUR",
      "id": 5,
      "value": 100
    }
  ],
  "state": "COMPLETED",
  "transactionId": 5
}
429: Rate limit exceeded. Retry after the number of seconds specified in the Retry-After header

application/json

The response is object.

POST /simulation/sanction-cases

Operation ID: simulateSanctionCase.

Authentication: bearer token (UserToken).

Parameters

Parameter In Type Required Description
X-External-Correlation-Id header string (uuid) No Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more.

Request body

application/json

Property Type Required Description
caseId integer (int64) No The self-service case ID to close. Required when status is CLOSE. When status is OPEN, this can optionally be provided to specify the case ID; otherwise, one will be auto-generated.
closingReason enum: EXPIRED, INVALIDATED, ABORTED, COMPLETED No The reason for closing the case. Required when status is CLOSE. - EXPIRED: The case expired without resolution - INVALIDATED: The case was determined to be invalid - ABORTED: The case was aborted/cancelled - COMPLETED: The case was successfully resolved
profileId integer (int64) Yes The profile ID linked to the transfer.
sanctionType enum: SANCTION Yes The type of sanction. Currently only SANCTION is supported.
simulationSanctionSubType enum: REFERENCE_SANCTION_HIT, RECIPIENT_SANCTION_HIT, REFERENCE_LOCATION_HIT, RECIPIENT_LOCATION_HIT, DEPOSIT_SANCTION_HIT No The specific subtype of sanction case to simulate. Required when sanctionType is SANCTION. - REFERENCE_SANCTION_HIT: Sanction hit on the transfer reference/sender - RECIPIENT_SANCTION_HIT: Sanction hit on the recipient - REFERENCE_LOCATION_HIT: Location-based hit on the reference/sender - RECIPIENT_LOCATION_HIT: Location-based hit on the recipient - DEPOSIT_SANCTION_HIT: Sanction hit on an incoming deposit
status enum: OPEN, CLOSE Yes The action to perform. - OPEN: Create a new sanction case - CLOSE: Close an existing sanction case
transferId integer (int64) Yes The ID of the transfer associated with the sanction case.

Responses

200: Sanction case successfully closed

application/json

Property Type Required Description
caseId integer (int64) No The ID of the case in the partner support system. May be null if the case hasn't been fully processed yet.
eventId string (uuid) No The unique identifier for this simulation event.

Example response:

{
  "caseId": 42,
  "eventId": "550e8400-e29b-41d4-a716-446655440001"
}
201: Sanction case successfully created

application/json

Property Type Required Description
caseId integer (int64) No The ID of the case in the partner support system. May be null if the case hasn't been fully processed yet.
eventId string (uuid) No The unique identifier for this simulation event.
400: Bad request - validation error

application/json

429: Rate limit exceeded. Retry after the number of seconds specified in the Retry-After header

application/json

The response is object.

POST /simulation/settlement/funds

Operation ID: SimulateSettlementAllocationsFunds.

Authentication: bearer token (ClientCredentialsToken).

Parameters

Parameter In Type Required Description
X-External-Correlation-Id header string (uuid) No Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more.

Request body

application/json

Property Type Required Description
amount number (decimal) Yes The amount to be simulated as received.
currency string Yes Currency code (ISO 4217).
paymentReference string Yes Payment reference for the settlement allocation. Must start with 'BYOPSP_'.

Responses

204: Funds received simulation completed successfully
429: Rate limit exceeded. Retry after the number of seconds specified in the Retry-After header

application/json

The response is object.

POST /simulation/verify-profile

Operation ID: simulationVerifyProfile.

Authentication: bearer token (UserToken).

Parameters

Parameter In Type Required Description
X-External-Correlation-Id header string (uuid) No Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more.

Responses

200: Verification state changed successfully. No content returned
429: Rate limit exceeded. Retry after the number of seconds specified in the Retry-After header

application/json

The response is object.

list

GET /simulation/spend/profiles/{profileId}/cards/{cardToken}/transactions

Operation ID: simulationCardTransactions.

Authentication: bearer token (UserToken).

Parameters

Parameter In Type Required Description
profileId path integer (int64) Yes The profile ID.
cardToken path string (uuid) Yes The card token.
limit query integer (int32) No The maximum number of transactions to return. The default value is 10.
X-External-Correlation-Id header string (uuid) No Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more.

Responses

200: List of simulated card transactions

application/json

Property Type Required Description
[].creationTime number No Time when the card transaction was created.
[].transactionId integer (int64) No ID of the transaction.

Example response:

[
  {
    "creationTime": 1723600773.748887,
    "transactionId": 5028
  },
  {
    "creationTime": 1723600659.095692,
    "transactionId": 5027
  },
  {
    "creationTime": 1723600648.133955,
    "transactionId": 5026
  },
  {
    "creationTime": 1723545470.449374,
    "transactionId": 5025
  },
  {
    "creationTime": 1723545430.790566,
    "transactionId": 5024
  }
]
429: Rate limit exceeded. Retry after the number of seconds specified in the Retry-After header

application/json

The response is object.

GET /simulation/profiles/{profileId}/kyc-reviews/{kycReviewId}/requirements

Operation ID: simulationKycReviewRequirementsList.

Authentication: bearer token (UserToken).

Parameters

Parameter In Type Required Description
profileId path integer (int64) Yes The profile ID.
kycReviewId path string (uuid) Yes The ID of the existing KYC review.
X-External-Correlation-Id header string (uuid) No Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more.

Responses

200: List of KYC review requirements

application/json

Property Type Required Description
requirements array of object No
requirements[].description string,null No Description of the KYC review item.
requirements[].key string No KYC review item key.
requirements[].state enum: NOT_PROVIDED, IN_REVIEW, VERIFIED, REJECTED No State of the KYC review item.

Example response:

{
  "requirements": [
    {
      "description": null,
      "key": "ID_DOCUMENT_WITH_LIVENESS",
      "state": "IN_REVIEW"
    }
  ]
}
404: KYC review not found

application/json

Example response:

{
  "category": "CLIENT",
  "code": "kyc_review.not_found",
  "description": "KycReview not found",
  "details": null
}
429: Rate limit exceeded. Retry after the number of seconds specified in the Retry-After header

application/json

The response is object.

load

GET /simulation/transfers/{transferId}/{status}

Operation ID: simulationTransferStateChange.

Authentication: bearer token (UserToken).

Parameters

Parameter In Type Required Description
transferId path integer (int64) Yes The ID of the transfer to simulate.
status path enum: processing, funds_converted, outgoing_payment_sent, bounced_back, funds_refunded Yes The target transfer status.
X-External-Correlation-Id header string (uuid) No Optional UUID for correlating requests across systems. If provided, Wise echoes it back in the response. Maximum 36 characters. Learn more.

Responses

200: Transfer with updated status

application/json

Example response:

{
  "business": null,
  "created": "2017-03-14 15:25:51",
  "details": {
    "reference": "good times"
  },
  "hasActiveIssues": false,
  "id": 15574445,
  "quote": 113379,
  "rate": 1.2151,
  "reference": "good times",
  "sourceAccount": null,
  "sourceCurrency": "EUR",
  "sourceValue": 1000,
  "status": "processing",
  "targetAccount": 7993919,
  "targetCurrency": "GBP",
  "targetValue": 895.32,
  "transferRequest": null,
  "user": 294205
}
429: Rate limit exceeded. Retry after the number of seconds specified in the Retry-After header

application/json

The response is object.