Simulate bank collections
Learn how to test your end-to-end collections flow in our staging environment without moving real money. Use this guide to understand how to validate your integration by simulating various collection scenarios.
Note: The set of endpoints below are only available and enabled in the staging environment. These endpoints will allow you to simulate incoming bank collections before the live environment.
Payload Definition
The parameters below apply to specific corridors listed in the remarks.
amount | Amount in program currency to be transferred | Amount to be transferred |
client_ref_id | Reference ID from the origin | For programs configured with SGD as the base currency, the value needs to be prefixed with |
currency | Program currency | Program currency |
purpose_of_transfer | Standard purpose of transfer | For programs configured with SGD as the base currency, the values should come from the Transfer Purpose Enumeration ( |
source_account | Origination account details | Originating account details |
beneficiary_account | Destination account details | MatchMove Issued virtual account details |
simulate_cancellation | Optional flag | Only applicable for programs configured with SGD as the base currency |
transaction_type | Additional info about transaction type | Allowed values are:
Only applicable for programs configured with USD as the base currency |
additional_info | Additional info about the transaction | Only applicable for programs configured with USD as the base currency |
payment_details | Additional payment details for the transaction | Only applicable for programs configured with USD as the base currency |
Bank Collection simulation endpoints
Depending on the base currency configured in the program, the payload parameters will differ as stated in the Payload Definition.
These simulation API will perform all the associated processes listed below:
- Pre-fund balance movement
- Account holder balance movement
- Webhooks per API consumers' active subscriptions
- User status check
- Risk evaluation status check
- Account KYC/KYB limit checks
- Beneficiary name check
- Reporting data update
Prerequisites
- The user profile risk assessment status must not be
risk_flagged. - The user profile must be in an
activestatus. - The user must have an
approvedKYC or KYB status - The user account or wallet must be in an
activestatus. - The user's virtual account must be in an
activestatus. - The user account's current
topup_limitsandtransfer_in_limitsmust have enough buffer to accommodate the incoming credit amount.
Simulate a bank collection on a virtual account
Simulate Bank Collection - SGD
Simulate Bank Collection - SGD
Simulate Bank Top-up request (success)
curl --location --request POST 'https://{{va_simulation_base_url}}/{{program_code}}/v1/simulate/transfer_in' \
--header 'Authorization: ••••••' \
--header 'Content-Type: application/json' \
--data-raw '{
"amount": "1.00",
"client_ref_id": "MOCK-123456",
"currency": "SGD",
"purpose_of_transfer": "INV",
"source_account": {
"number": "000000",
"name": "External Bank User",
"bank_code": "BKCHSGS0XXX"
},
"beneficiary_account": {
"number": "6377021219064027",
"name": "Matchmove Wallet User",
"bank_code": "MAYPSGS0XXX"
},
"simulate_cancellation": false
}'Simulate Bank Top-up response (success)
{
"success": true
}Simulate Bank Top-up request (failed)
curl --location --request POST 'https://{{va_simulation_base_url}}/{{program_code}}/v1/simulate/transfer_in' \
--header 'Authorization: ••••••' \
--header 'Content-Type: application/json' \
--data-raw '{
"amount": "1.00",
"client_ref_id": "MOCK-123456",
"currency": "SGD",
"purpose_of_transfer": "INV",
"source_account": {
"number": "000000",
"name": "External Bank User",
"bank_code": "BKCHSGS0XXX"
},
"beneficiary_account": {
"number": "6377021219064027",
"name": "Matchmove Wallet User",
"bank_code": "MAYPSGS0XXX"
},
"simulate_cancellation": false
}'Simulate Bank Top-up response (failed)
{
"success": false,
"description": "Error message description here"
}Simulate Bank Top-up Reversal request
curl --location --request POST 'https://{{va_simulation_base_url}}/{{program_code}}/v1/simulate/transfer_in' \
--header 'Authorization: ••••••' \
--header 'Content-Type: application/json' \
--data-raw '{
"amount": "1.00",
"client_ref_id": "MOCK-123456",
"currency": "SGD",
"purpose_of_transfer": "INV",
"source_account": {
"number": "000000",
"name": "External Bank User",
"bank_code": "BKCHSGS0XXX"
},
"beneficiary_account": {
"number": "6377021219064027",
"name": "Matchmove Wallet User",
"bank_code": "MAYPSGS0XXX"
},
"simulate_cancellation": true
}'Simulate Bank Top-up Reversal response (success)
{
"success": true,
"cancellation": {
"success": true
}
}Simulate Bank Top-up Reversal response (failed)
{
"success": true,
"cancellation": {
"success": false,
"description": "Error message description here"
}
}Simulate Bank Collection - USD
Simulate Bank Collection - USD
Simulate Bank Top-up response (success)
curl --location --request POST 'https://{{va_simulation_base_url}}/{{program_code}}/v1/simulate/collections/transfer_in' \
--header 'Authorization: ••••••' \
--header 'Content-Type: application/json' \
--data-raw '{
"amount": "1.00",
"client_ref_id": "MOCK-123456",
"currency": "USD",
"purpose_of_transfer": "INV",
"additional_info":"",
"payment_details":"",
"source_account": {
"number": "000000",
"name": "External Bank User",
"bank_code": "BKCHSGS0XXX"
},
"beneficiary_account": {
"number": "8553956377021219064027",
"name": "Matchmove Wallet User",
"bank_code": "MAYPSGS0XXX"
},
"transaction_type": "INCOMING ACT"
}'Simulate Bank Top-up response (success)
{
"response": "transfer in simulate request submitted for processing successfully"
}Simulate Bank Top-up response (failed)
curl --location --request POST 'https://{{va_simulation_base_url}}/{{program_code}}/v1/simulate/collections/transfer_in' \
--header 'Authorization: Basic NTc1OWQxYjA3NWU3MTUzNDk2ZmU1MzU0OTY5Mjc4M2I6NjA2OGU0YjE2MDNmNjVlZDU4Y2VmZjk2NmU5NzVjNGNmMDk4OWU0Mw==' \
--header 'Content-Type: application/json' \
--data-raw '{
"amount": "1.00",
"client_ref_id": "MOCK-123456",
"currency": "USD",
"purpose_of_transfer": "INV",
"additional_info":"",
"payment_details":"",
"source_account": {
"number": "000000",
"name": "External Bank User",
"bank_code": "BKCHSGS0XXX"
},
"beneficiary_account": {
"number": "8553956377021219064027",
"name": "Matchmove Wallet User",
"bank_code": "MAYPSGS0XXX"
},
"transaction_type": "INCOMING ACT"
}'Simulate Bank Top-up response (failed)
{
"code": "EUP0400101",
"description": "Parameter amount is a required field",
"links": [
{
"rel": "error EUP0400101",
"href": "https://sg-prefund.uat.matchmove-beta.com/error/EUP0400101"
}
]
}Related Links
On this page
- Simulate bank collections