Create Virtual Account V2
curl --request POST \
--url https://sandbox.api.fin.com/v2/customers/{customer_id}/virtual-accounts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"destination": {
"wallet": "0x6e41e83d406185b358bd72111ab1206cb82eb67f",
"currency": "USDC",
"rail": "POLYGON"
},
"source": {
"currency": "USD",
"rail": "FEDWIRE"
},
"developer_fee": {
"percentage": 0.1,
"fixed": 0.1
}
}
'const url = 'https://sandbox.api.fin.com/v2/customers/{customer_id}/virtual-accounts';
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
destination: {
wallet: '0x6e41e83d406185b358bd72111ab1206cb82eb67f',
currency: 'USDC',
rail: 'POLYGON'
},
source: {currency: 'USD', rail: 'FEDWIRE'},
developer_fee: {percentage: 0.1, fixed: 0.1}
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));HttpResponse<String> response = Unirest.post("https://sandbox.api.fin.com/v2/customers/{customer_id}/virtual-accounts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"destination\": {\n \"wallet\": \"0x6e41e83d406185b358bd72111ab1206cb82eb67f\",\n \"currency\": \"USDC\",\n \"rail\": \"POLYGON\"\n },\n \"source\": {\n \"currency\": \"USD\",\n \"rail\": \"FEDWIRE\"\n },\n \"developer_fee\": {\n \"percentage\": 0.1,\n \"fixed\": 0.1\n }\n}")
.asString();import requests
url = "https://sandbox.api.fin.com/v2/customers/{customer_id}/virtual-accounts"
payload = {
"destination": {
"wallet": "0x6e41e83d406185b358bd72111ab1206cb82eb67f",
"currency": "USDC",
"rail": "POLYGON"
},
"source": {
"currency": "USD",
"rail": "FEDWIRE"
},
"developer_fee": {
"percentage": 0.1,
"fixed": 0.1
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://sandbox.api.fin.com/v2/customers/{customer_id}/virtual-accounts"
payload := strings.NewReader("{\n \"destination\": {\n \"wallet\": \"0x6e41e83d406185b358bd72111ab1206cb82eb67f\",\n \"currency\": \"USDC\",\n \"rail\": \"POLYGON\"\n },\n \"source\": {\n \"currency\": \"USD\",\n \"rail\": \"FEDWIRE\"\n },\n \"developer_fee\": {\n \"percentage\": 0.1,\n \"fixed\": 0.1\n }\n}")
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))
}{
"data": {
"id": "024e784b-bc27-4a4c-82ee-80000fbf53c5",
"status": "PROCESSING",
"customer_id": "0fb72092-22a8-4df8-a6d9-1a28f86b7d44",
"created_at": "2026-04-04T11:05:20.963676Z",
"rfi": null
}
}{
"message": "Authentication failed"
}{
"message": "<string>",
"errors": [
{}
]
}Create Virtual Account
Create Virtual Account V2
Create a virtual bank account for a specific customer to convert fiat deposits to crypto. The customer_id path parameter identifies the customer for whom the virtual account is being created.
POST
/
v2
/
customers
/
{customer_id}
/
virtual-accounts
Create Virtual Account V2
curl --request POST \
--url https://sandbox.api.fin.com/v2/customers/{customer_id}/virtual-accounts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"destination": {
"wallet": "0x6e41e83d406185b358bd72111ab1206cb82eb67f",
"currency": "USDC",
"rail": "POLYGON"
},
"source": {
"currency": "USD",
"rail": "FEDWIRE"
},
"developer_fee": {
"percentage": 0.1,
"fixed": 0.1
}
}
'const url = 'https://sandbox.api.fin.com/v2/customers/{customer_id}/virtual-accounts';
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
destination: {
wallet: '0x6e41e83d406185b358bd72111ab1206cb82eb67f',
currency: 'USDC',
rail: 'POLYGON'
},
source: {currency: 'USD', rail: 'FEDWIRE'},
developer_fee: {percentage: 0.1, fixed: 0.1}
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));HttpResponse<String> response = Unirest.post("https://sandbox.api.fin.com/v2/customers/{customer_id}/virtual-accounts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"destination\": {\n \"wallet\": \"0x6e41e83d406185b358bd72111ab1206cb82eb67f\",\n \"currency\": \"USDC\",\n \"rail\": \"POLYGON\"\n },\n \"source\": {\n \"currency\": \"USD\",\n \"rail\": \"FEDWIRE\"\n },\n \"developer_fee\": {\n \"percentage\": 0.1,\n \"fixed\": 0.1\n }\n}")
.asString();import requests
url = "https://sandbox.api.fin.com/v2/customers/{customer_id}/virtual-accounts"
payload = {
"destination": {
"wallet": "0x6e41e83d406185b358bd72111ab1206cb82eb67f",
"currency": "USDC",
"rail": "POLYGON"
},
"source": {
"currency": "USD",
"rail": "FEDWIRE"
},
"developer_fee": {
"percentage": 0.1,
"fixed": 0.1
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://sandbox.api.fin.com/v2/customers/{customer_id}/virtual-accounts"
payload := strings.NewReader("{\n \"destination\": {\n \"wallet\": \"0x6e41e83d406185b358bd72111ab1206cb82eb67f\",\n \"currency\": \"USDC\",\n \"rail\": \"POLYGON\"\n },\n \"source\": {\n \"currency\": \"USD\",\n \"rail\": \"FEDWIRE\"\n },\n \"developer_fee\": {\n \"percentage\": 0.1,\n \"fixed\": 0.1\n }\n}")
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))
}{
"data": {
"id": "024e784b-bc27-4a4c-82ee-80000fbf53c5",
"status": "PROCESSING",
"customer_id": "0fb72092-22a8-4df8-a6d9-1a28f86b7d44",
"created_at": "2026-04-04T11:05:20.963676Z",
"rfi": null
}
}{
"message": "Authentication failed"
}{
"message": "<string>",
"errors": [
{}
]
}Authorizations
Bearer token authentication. Obtain token from Issue a Token endpoint
Path Parameters
Unique identifier of the customer to create the virtual account for.
Body
application/json
Response
Virtual account created successfully
Show child attributes
Show child attributes
⌘I
