Simulate bank-transfer settlement (sandbox only)
curl --request POST \
--url https://api.moonpay.com/platform/v1/transactions/{id}/simulate-bank-transfer \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{}'import requests
url = "https://api.moonpay.com/platform/v1/transactions/{id}/simulate-bank-transfer"
payload = {}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://api.moonpay.com/platform/v1/transactions/{id}/simulate-bank-transfer', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.moonpay.com/platform/v1/transactions/{id}/simulate-bank-transfer",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.moonpay.com/platform/v1/transactions/{id}/simulate-bank-transfer"
payload := strings.NewReader("{}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.moonpay.com/platform/v1/transactions/{id}/simulate-bank-transfer")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.moonpay.com/platform/v1/transactions/{id}/simulate-bank-transfer")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "fd43b900-593b-4125-9616-7d721ecbe875",
"createdAt": "2026-01-29T14:30:50.000Z",
"updatedAt": "2026-01-29T15:30:50.000Z",
"status": "completed",
"source": {
"amount": "100.02",
"asset": {
"code": "USD"
}
},
"destination": {
"amount": "100.02",
"asset": {
"code": "USDC"
}
},
"fees": {
"network": {
"amount": "2.39",
"asset": {
"code": "USD"
}
},
"moonpay": {
"amount": "4.99",
"asset": {
"code": "USD"
}
},
"ecosystem": {
"amount": "1.00",
"asset": {
"code": "USD"
}
}
},
"wallet": {
"address": "0x1234567890123456789012345678901234567890"
},
"customer": {
"id": "e0dee0ac-4e62-4866-b044-f66c0e4046e9"
},
"paymentMethod": {
"type": "apple_pay"
},
"bankTransferDepositInfo": {
"reference": "MP-8F3K2A",
"recipientName": "MoonPay Ltd",
"recipientAddress": "1 Market Street, London, EC1A 1AA, United Kingdom",
"iban": "GB29NWBK60161331926819",
"bic": "NWBKGB2L",
"bankName": "MoonPay Bank",
"bankAddress": "1 Market Street, London, EC1A 1AA, United Kingdom"
},
"stages": [
{
"kind": "delivery",
"status": "success"
}
]
}
}{
"code": "forbidden",
"message": "Forbidden",
"errors": [
{
"field": "source.amount",
"message": "Source amount must be a numeric string. Example \"100\" or \"10.25\"."
}
]
}{
"code": "unauthorized",
"message": "Not authorized"
}{
"code": "forbidden",
"message": "Forbidden"
}{
"code": "forbidden",
"message": "Forbidden",
"errors": [
{
"field": "source.amount",
"message": "Source amount must be a numeric string. Example \"100\" or \"10.25\"."
}
]
}{
"code": "conflict",
"message": "Conflict"
}Transactions
Simulate bank-transfer settlement
Sandbox only. Drive a waiting-payment bank-transfer transaction to a terminal outcome without real funds.
POST
/
platform
/
v1
/
transactions
/
{id}
/
simulate-bank-transfer
Simulate bank-transfer settlement (sandbox only)
curl --request POST \
--url https://api.moonpay.com/platform/v1/transactions/{id}/simulate-bank-transfer \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{}'import requests
url = "https://api.moonpay.com/platform/v1/transactions/{id}/simulate-bank-transfer"
payload = {}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://api.moonpay.com/platform/v1/transactions/{id}/simulate-bank-transfer', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.moonpay.com/platform/v1/transactions/{id}/simulate-bank-transfer",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.moonpay.com/platform/v1/transactions/{id}/simulate-bank-transfer"
payload := strings.NewReader("{}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.moonpay.com/platform/v1/transactions/{id}/simulate-bank-transfer")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.moonpay.com/platform/v1/transactions/{id}/simulate-bank-transfer")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "fd43b900-593b-4125-9616-7d721ecbe875",
"createdAt": "2026-01-29T14:30:50.000Z",
"updatedAt": "2026-01-29T15:30:50.000Z",
"status": "completed",
"source": {
"amount": "100.02",
"asset": {
"code": "USD"
}
},
"destination": {
"amount": "100.02",
"asset": {
"code": "USDC"
}
},
"fees": {
"network": {
"amount": "2.39",
"asset": {
"code": "USD"
}
},
"moonpay": {
"amount": "4.99",
"asset": {
"code": "USD"
}
},
"ecosystem": {
"amount": "1.00",
"asset": {
"code": "USD"
}
}
},
"wallet": {
"address": "0x1234567890123456789012345678901234567890"
},
"customer": {
"id": "e0dee0ac-4e62-4866-b044-f66c0e4046e9"
},
"paymentMethod": {
"type": "apple_pay"
},
"bankTransferDepositInfo": {
"reference": "MP-8F3K2A",
"recipientName": "MoonPay Ltd",
"recipientAddress": "1 Market Street, London, EC1A 1AA, United Kingdom",
"iban": "GB29NWBK60161331926819",
"bic": "NWBKGB2L",
"bankName": "MoonPay Bank",
"bankAddress": "1 Market Street, London, EC1A 1AA, United Kingdom"
},
"stages": [
{
"kind": "delivery",
"status": "success"
}
]
}
}{
"code": "forbidden",
"message": "Forbidden",
"errors": [
{
"field": "source.amount",
"message": "Source amount must be a numeric string. Example \"100\" or \"10.25\"."
}
]
}{
"code": "unauthorized",
"message": "Not authorized"
}{
"code": "forbidden",
"message": "Forbidden"
}{
"code": "forbidden",
"message": "Forbidden",
"errors": [
{
"field": "source.amount",
"message": "Source amount must be a numeric string. Example \"100\" or \"10.25\"."
}
]
}{
"code": "conflict",
"message": "Conflict"
}Some Platform API capabilities must be enabled on your account by MoonPay
before you can call them. If this endpoint returns an unexpected
404, see
Capability
enablement.This endpoint works only in test
mode. Live-mode transactions
return
403. In production, bank transfers settle when the customer’s deposit
arrives.Authorizations
Bearer authentication header using an access token.
Example: Authorization: Bearer <accessToken>
Path Parameters
The MoonPay ID of the transaction.
Body
application/json
Request body for simulating bank-transfer settlement.
Response
The request has succeeded.
Transaction with lifecycle stages showing step-by-step progress.
Show child attributes
Show child attributes