curl --request POST \
--url https://api.services.payward.com/v1/accounts/{account_id}/conversions \
--header 'API-Key: <api-key>' \
--header 'API-Nonce: <api-key>' \
--header 'API-Sign: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "EUR autoramp to Polygon vault",
"from": {
"symbol": "EUR",
"type": "bank",
"bank_account": {
"via": "sepa"
}
},
"to": {
"symbol": "USDC",
"type": "wallet",
"wallet": {
"via": "polygon",
"address": "0x1234567890abcdef1234567890abcdef12345678"
}
}
}
'import requests
url = "https://api.services.payward.com/v1/accounts/{account_id}/conversions"
payload = {
"name": "EUR autoramp to Polygon vault",
"from": {
"symbol": "EUR",
"type": "bank",
"bank_account": { "via": "sepa" }
},
"to": {
"symbol": "USDC",
"type": "wallet",
"wallet": {
"via": "polygon",
"address": "0x1234567890abcdef1234567890abcdef12345678"
}
}
}
headers = {
"API-Key": "<api-key>",
"API-Nonce": "<api-key>",
"API-Sign": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'API-Key': '<api-key>',
'API-Nonce': '<api-key>',
'API-Sign': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'EUR autoramp to Polygon vault',
from: {symbol: 'EUR', type: 'bank', bank_account: {via: 'sepa'}},
to: {
symbol: 'USDC',
type: 'wallet',
wallet: {via: 'polygon', address: '0x1234567890abcdef1234567890abcdef12345678'}
}
})
};
fetch('https://api.services.payward.com/v1/accounts/{account_id}/conversions', 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.services.payward.com/v1/accounts/{account_id}/conversions",
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([
'name' => 'EUR autoramp to Polygon vault',
'from' => [
'symbol' => 'EUR',
'type' => 'bank',
'bank_account' => [
'via' => 'sepa'
]
],
'to' => [
'symbol' => 'USDC',
'type' => 'wallet',
'wallet' => [
'via' => 'polygon',
'address' => '0x1234567890abcdef1234567890abcdef12345678'
]
]
]),
CURLOPT_HTTPHEADER => [
"API-Key: <api-key>",
"API-Nonce: <api-key>",
"API-Sign: <api-key>",
"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.services.payward.com/v1/accounts/{account_id}/conversions"
payload := strings.NewReader("{\n \"name\": \"EUR autoramp to Polygon vault\",\n \"from\": {\n \"symbol\": \"EUR\",\n \"type\": \"bank\",\n \"bank_account\": {\n \"via\": \"sepa\"\n }\n },\n \"to\": {\n \"symbol\": \"USDC\",\n \"type\": \"wallet\",\n \"wallet\": {\n \"via\": \"polygon\",\n \"address\": \"0x1234567890abcdef1234567890abcdef12345678\"\n }\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("API-Key", "<api-key>")
req.Header.Add("API-Nonce", "<api-key>")
req.Header.Add("API-Sign", "<api-key>")
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.services.payward.com/v1/accounts/{account_id}/conversions")
.header("API-Key", "<api-key>")
.header("API-Nonce", "<api-key>")
.header("API-Sign", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"EUR autoramp to Polygon vault\",\n \"from\": {\n \"symbol\": \"EUR\",\n \"type\": \"bank\",\n \"bank_account\": {\n \"via\": \"sepa\"\n }\n },\n \"to\": {\n \"symbol\": \"USDC\",\n \"type\": \"wallet\",\n \"wallet\": {\n \"via\": \"polygon\",\n \"address\": \"0x1234567890abcdef1234567890abcdef12345678\"\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.services.payward.com/v1/accounts/{account_id}/conversions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["API-Key"] = '<api-key>'
request["API-Nonce"] = '<api-key>'
request["API-Sign"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"EUR autoramp to Polygon vault\",\n \"from\": {\n \"symbol\": \"EUR\",\n \"type\": \"bank\",\n \"bank_account\": {\n \"via\": \"sepa\"\n }\n },\n \"to\": {\n \"symbol\": \"USDC\",\n \"type\": \"wallet\",\n \"wallet\": {\n \"via\": \"polygon\",\n \"address\": \"0x1234567890abcdef1234567890abcdef12345678\"\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "EUR autoramp to Polygon vault",
"from": {
"symbol": "EUR",
"type": "bank",
"bank_account": {
"via": "sepa",
"iban": "DE89370400440532013000",
"bic": "COBADEFFXXX",
"payee_name": "Delta Commerce B.V.",
"bank_address": "Borschestraat 12, Amsterdam",
"payee_address": "71 Sir John Rogerson's Quay, Dublin, D02 R296, Ireland"
}
},
"to": {
"symbol": "USDC",
"type": "wallet",
"wallet": {
"via": "polygon",
"address": "0x1234567890abcdef1234567890abcdef12345678"
}
},
"status": "active",
"created_at": "2026-05-25T10:30:00Z",
"updated_at": "2026-05-25T10:30:00Z"
}
}{
"error": {
"type": "<string>",
"status": 400,
"instance": "<string>",
"code": "bad_request",
"doc_url": "<string>",
"causes": [
{
"field": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"type": "<string>",
"status": 401,
"instance": "<string>",
"code": "unauthenticated",
"doc_url": "<string>",
"causes": [
{}
]
}
}{
"error": {
"type": "<string>",
"status": 403,
"instance": "<string>",
"code": "forbidden",
"doc_url": "<string>",
"causes": [
{}
]
}
}{
"error": {
"type": "<string>",
"status": 404,
"instance": "<string>",
"code": "not_found",
"doc_url": "<string>",
"causes": [
{}
]
}
}{
"error": {
"type": "<string>",
"status": 409,
"instance": "<string>",
"code": "conversion_limit_reached",
"doc_url": "<string>",
"causes": [
{}
]
}
}{
"error": {
"type": "<string>",
"status": 429,
"instance": "<string>",
"code": "resource_exhausted",
"doc_url": "<string>",
"causes": [
{}
]
}
}{
"error": {
"type": "<string>",
"status": 500,
"instance": "<string>",
"code": "internal",
"doc_url": "<string>",
"causes": [
{}
]
}
}{
"error": {
"type": "<string>",
"status": 501,
"instance": "<string>",
"code": "unimplemented",
"doc_url": "<string>",
"causes": [
{}
]
}
}{
"error": {
"type": "<string>",
"status": 503,
"instance": "<string>",
"code": "unavailable",
"doc_url": "<string>",
"causes": [
{}
]
}
}{
"error": {
"type": "<string>",
"status": 504,
"instance": "<string>",
"code": "deadline_exceeded",
"doc_url": "<string>",
"causes": [
{}
]
}
}Create conversion
Creates a new conversion. Provisions the inbound deposit endpoint (IBAN for fiat-source, crypto address for crypto-source) the caller will fund. Once funded, transactions are produced against this conversion and become observable via the transactions surface.
curl --request POST \
--url https://api.services.payward.com/v1/accounts/{account_id}/conversions \
--header 'API-Key: <api-key>' \
--header 'API-Nonce: <api-key>' \
--header 'API-Sign: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "EUR autoramp to Polygon vault",
"from": {
"symbol": "EUR",
"type": "bank",
"bank_account": {
"via": "sepa"
}
},
"to": {
"symbol": "USDC",
"type": "wallet",
"wallet": {
"via": "polygon",
"address": "0x1234567890abcdef1234567890abcdef12345678"
}
}
}
'import requests
url = "https://api.services.payward.com/v1/accounts/{account_id}/conversions"
payload = {
"name": "EUR autoramp to Polygon vault",
"from": {
"symbol": "EUR",
"type": "bank",
"bank_account": { "via": "sepa" }
},
"to": {
"symbol": "USDC",
"type": "wallet",
"wallet": {
"via": "polygon",
"address": "0x1234567890abcdef1234567890abcdef12345678"
}
}
}
headers = {
"API-Key": "<api-key>",
"API-Nonce": "<api-key>",
"API-Sign": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'API-Key': '<api-key>',
'API-Nonce': '<api-key>',
'API-Sign': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'EUR autoramp to Polygon vault',
from: {symbol: 'EUR', type: 'bank', bank_account: {via: 'sepa'}},
to: {
symbol: 'USDC',
type: 'wallet',
wallet: {via: 'polygon', address: '0x1234567890abcdef1234567890abcdef12345678'}
}
})
};
fetch('https://api.services.payward.com/v1/accounts/{account_id}/conversions', 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.services.payward.com/v1/accounts/{account_id}/conversions",
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([
'name' => 'EUR autoramp to Polygon vault',
'from' => [
'symbol' => 'EUR',
'type' => 'bank',
'bank_account' => [
'via' => 'sepa'
]
],
'to' => [
'symbol' => 'USDC',
'type' => 'wallet',
'wallet' => [
'via' => 'polygon',
'address' => '0x1234567890abcdef1234567890abcdef12345678'
]
]
]),
CURLOPT_HTTPHEADER => [
"API-Key: <api-key>",
"API-Nonce: <api-key>",
"API-Sign: <api-key>",
"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.services.payward.com/v1/accounts/{account_id}/conversions"
payload := strings.NewReader("{\n \"name\": \"EUR autoramp to Polygon vault\",\n \"from\": {\n \"symbol\": \"EUR\",\n \"type\": \"bank\",\n \"bank_account\": {\n \"via\": \"sepa\"\n }\n },\n \"to\": {\n \"symbol\": \"USDC\",\n \"type\": \"wallet\",\n \"wallet\": {\n \"via\": \"polygon\",\n \"address\": \"0x1234567890abcdef1234567890abcdef12345678\"\n }\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("API-Key", "<api-key>")
req.Header.Add("API-Nonce", "<api-key>")
req.Header.Add("API-Sign", "<api-key>")
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.services.payward.com/v1/accounts/{account_id}/conversions")
.header("API-Key", "<api-key>")
.header("API-Nonce", "<api-key>")
.header("API-Sign", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"EUR autoramp to Polygon vault\",\n \"from\": {\n \"symbol\": \"EUR\",\n \"type\": \"bank\",\n \"bank_account\": {\n \"via\": \"sepa\"\n }\n },\n \"to\": {\n \"symbol\": \"USDC\",\n \"type\": \"wallet\",\n \"wallet\": {\n \"via\": \"polygon\",\n \"address\": \"0x1234567890abcdef1234567890abcdef12345678\"\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.services.payward.com/v1/accounts/{account_id}/conversions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["API-Key"] = '<api-key>'
request["API-Nonce"] = '<api-key>'
request["API-Sign"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"EUR autoramp to Polygon vault\",\n \"from\": {\n \"symbol\": \"EUR\",\n \"type\": \"bank\",\n \"bank_account\": {\n \"via\": \"sepa\"\n }\n },\n \"to\": {\n \"symbol\": \"USDC\",\n \"type\": \"wallet\",\n \"wallet\": {\n \"via\": \"polygon\",\n \"address\": \"0x1234567890abcdef1234567890abcdef12345678\"\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "EUR autoramp to Polygon vault",
"from": {
"symbol": "EUR",
"type": "bank",
"bank_account": {
"via": "sepa",
"iban": "DE89370400440532013000",
"bic": "COBADEFFXXX",
"payee_name": "Delta Commerce B.V.",
"bank_address": "Borschestraat 12, Amsterdam",
"payee_address": "71 Sir John Rogerson's Quay, Dublin, D02 R296, Ireland"
}
},
"to": {
"symbol": "USDC",
"type": "wallet",
"wallet": {
"via": "polygon",
"address": "0x1234567890abcdef1234567890abcdef12345678"
}
},
"status": "active",
"created_at": "2026-05-25T10:30:00Z",
"updated_at": "2026-05-25T10:30:00Z"
}
}{
"error": {
"type": "<string>",
"status": 400,
"instance": "<string>",
"code": "bad_request",
"doc_url": "<string>",
"causes": [
{
"field": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"type": "<string>",
"status": 401,
"instance": "<string>",
"code": "unauthenticated",
"doc_url": "<string>",
"causes": [
{}
]
}
}{
"error": {
"type": "<string>",
"status": 403,
"instance": "<string>",
"code": "forbidden",
"doc_url": "<string>",
"causes": [
{}
]
}
}{
"error": {
"type": "<string>",
"status": 404,
"instance": "<string>",
"code": "not_found",
"doc_url": "<string>",
"causes": [
{}
]
}
}{
"error": {
"type": "<string>",
"status": 409,
"instance": "<string>",
"code": "conversion_limit_reached",
"doc_url": "<string>",
"causes": [
{}
]
}
}{
"error": {
"type": "<string>",
"status": 429,
"instance": "<string>",
"code": "resource_exhausted",
"doc_url": "<string>",
"causes": [
{}
]
}
}{
"error": {
"type": "<string>",
"status": 500,
"instance": "<string>",
"code": "internal",
"doc_url": "<string>",
"causes": [
{}
]
}
}{
"error": {
"type": "<string>",
"status": 501,
"instance": "<string>",
"code": "unimplemented",
"doc_url": "<string>",
"causes": [
{}
]
}
}{
"error": {
"type": "<string>",
"status": 503,
"instance": "<string>",
"code": "unavailable",
"doc_url": "<string>",
"causes": [
{}
]
}
}{
"error": {
"type": "<string>",
"status": 504,
"instance": "<string>",
"code": "deadline_exceeded",
"doc_url": "<string>",
"causes": [
{}
]
}
}Authorizations
Your public API key. Identifies the partner making the request.
Monotonically increasing nonce included in the request signature.
HMAC signature over the request, computed with your private key.
Path Parameters
Internet International Bank Account Number identifying the PWS account the conversion belongs to.
14 - 42Body
Request to create a new conversion.
Source side. Partners only specify symbol, type, and via here
— any address/bank_account supplied is ignored (the inbound is
provisioned by autoramp).
Show child attributes
Show child attributes
Destination side. Requires address (wallet) or bank_account (bank).
Show child attributes
Show child attributes
Optional partner-facing label for the conversion.
1 - 128Response
Successful response
The newly created conversion.
Show child attributes
Show child attributes