Create a Connection
curl --request POST \
--url https://api-sandbox.y.uno/v1/connections \
--header 'Content-Type: application/json' \
--header 'PRIVATE-SECRET-KEY: <api-key>' \
--header 'PUBLIC-API-KEY: <api-key>' \
--header 'X-Idempotency-Key: <x-idempotency-key>' \
--data '
{
"merchant_connection_id": "adyen-us-prod-001",
"provider_id": "ADYEN",
"flow_type": "PAYIN",
"payment_methods": [
"CARD",
"GOOGLE_PAY"
],
"params": [
{
"param_id": "<string>",
"value": "<string>"
}
]
}
'import requests
url = "https://api-sandbox.y.uno/v1/connections"
payload = {
"merchant_connection_id": "adyen-us-prod-001",
"provider_id": "ADYEN",
"flow_type": "PAYIN",
"payment_methods": ["CARD", "GOOGLE_PAY"],
"params": [
{
"param_id": "<string>",
"value": "<string>"
}
]
}
headers = {
"X-Idempotency-Key": "<x-idempotency-key>",
"PUBLIC-API-KEY": "<api-key>",
"PRIVATE-SECRET-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-Idempotency-Key': '<x-idempotency-key>',
'PUBLIC-API-KEY': '<api-key>',
'PRIVATE-SECRET-KEY': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
merchant_connection_id: 'adyen-us-prod-001',
provider_id: 'ADYEN',
flow_type: 'PAYIN',
payment_methods: ['CARD', 'GOOGLE_PAY'],
params: [{param_id: '<string>', value: '<string>'}]
})
};
fetch('https://api-sandbox.y.uno/v1/connections', 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-sandbox.y.uno/v1/connections",
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([
'merchant_connection_id' => 'adyen-us-prod-001',
'provider_id' => 'ADYEN',
'flow_type' => 'PAYIN',
'payment_methods' => [
'CARD',
'GOOGLE_PAY'
],
'params' => [
[
'param_id' => '<string>',
'value' => '<string>'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"PRIVATE-SECRET-KEY: <api-key>",
"PUBLIC-API-KEY: <api-key>",
"X-Idempotency-Key: <x-idempotency-key>"
],
]);
$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-sandbox.y.uno/v1/connections"
payload := strings.NewReader("{\n \"merchant_connection_id\": \"adyen-us-prod-001\",\n \"provider_id\": \"ADYEN\",\n \"flow_type\": \"PAYIN\",\n \"payment_methods\": [\n \"CARD\",\n \"GOOGLE_PAY\"\n ],\n \"params\": [\n {\n \"param_id\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Idempotency-Key", "<x-idempotency-key>")
req.Header.Add("PUBLIC-API-KEY", "<api-key>")
req.Header.Add("PRIVATE-SECRET-KEY", "<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-sandbox.y.uno/v1/connections")
.header("X-Idempotency-Key", "<x-idempotency-key>")
.header("PUBLIC-API-KEY", "<api-key>")
.header("PRIVATE-SECRET-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"merchant_connection_id\": \"adyen-us-prod-001\",\n \"provider_id\": \"ADYEN\",\n \"flow_type\": \"PAYIN\",\n \"payment_methods\": [\n \"CARD\",\n \"GOOGLE_PAY\"\n ],\n \"params\": [\n {\n \"param_id\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sandbox.y.uno/v1/connections")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Idempotency-Key"] = '<x-idempotency-key>'
request["PUBLIC-API-KEY"] = '<api-key>'
request["PRIVATE-SECRET-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"merchant_connection_id\": \"adyen-us-prod-001\",\n \"provider_id\": \"ADYEN\",\n \"flow_type\": \"PAYIN\",\n \"payment_methods\": [\n \"CARD\",\n \"GOOGLE_PAY\"\n ],\n \"params\": [\n {\n \"param_id\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"connection_id": "<string>",
"status": "<string>"
}Connections
Create a Connection
Creates a connection in ACTIVE status from credentials and configuration you fill in based on the provider’s catalog.
POST
/
connections
Create a Connection
curl --request POST \
--url https://api-sandbox.y.uno/v1/connections \
--header 'Content-Type: application/json' \
--header 'PRIVATE-SECRET-KEY: <api-key>' \
--header 'PUBLIC-API-KEY: <api-key>' \
--header 'X-Idempotency-Key: <x-idempotency-key>' \
--data '
{
"merchant_connection_id": "adyen-us-prod-001",
"provider_id": "ADYEN",
"flow_type": "PAYIN",
"payment_methods": [
"CARD",
"GOOGLE_PAY"
],
"params": [
{
"param_id": "<string>",
"value": "<string>"
}
]
}
'import requests
url = "https://api-sandbox.y.uno/v1/connections"
payload = {
"merchant_connection_id": "adyen-us-prod-001",
"provider_id": "ADYEN",
"flow_type": "PAYIN",
"payment_methods": ["CARD", "GOOGLE_PAY"],
"params": [
{
"param_id": "<string>",
"value": "<string>"
}
]
}
headers = {
"X-Idempotency-Key": "<x-idempotency-key>",
"PUBLIC-API-KEY": "<api-key>",
"PRIVATE-SECRET-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-Idempotency-Key': '<x-idempotency-key>',
'PUBLIC-API-KEY': '<api-key>',
'PRIVATE-SECRET-KEY': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
merchant_connection_id: 'adyen-us-prod-001',
provider_id: 'ADYEN',
flow_type: 'PAYIN',
payment_methods: ['CARD', 'GOOGLE_PAY'],
params: [{param_id: '<string>', value: '<string>'}]
})
};
fetch('https://api-sandbox.y.uno/v1/connections', 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-sandbox.y.uno/v1/connections",
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([
'merchant_connection_id' => 'adyen-us-prod-001',
'provider_id' => 'ADYEN',
'flow_type' => 'PAYIN',
'payment_methods' => [
'CARD',
'GOOGLE_PAY'
],
'params' => [
[
'param_id' => '<string>',
'value' => '<string>'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"PRIVATE-SECRET-KEY: <api-key>",
"PUBLIC-API-KEY: <api-key>",
"X-Idempotency-Key: <x-idempotency-key>"
],
]);
$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-sandbox.y.uno/v1/connections"
payload := strings.NewReader("{\n \"merchant_connection_id\": \"adyen-us-prod-001\",\n \"provider_id\": \"ADYEN\",\n \"flow_type\": \"PAYIN\",\n \"payment_methods\": [\n \"CARD\",\n \"GOOGLE_PAY\"\n ],\n \"params\": [\n {\n \"param_id\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Idempotency-Key", "<x-idempotency-key>")
req.Header.Add("PUBLIC-API-KEY", "<api-key>")
req.Header.Add("PRIVATE-SECRET-KEY", "<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-sandbox.y.uno/v1/connections")
.header("X-Idempotency-Key", "<x-idempotency-key>")
.header("PUBLIC-API-KEY", "<api-key>")
.header("PRIVATE-SECRET-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"merchant_connection_id\": \"adyen-us-prod-001\",\n \"provider_id\": \"ADYEN\",\n \"flow_type\": \"PAYIN\",\n \"payment_methods\": [\n \"CARD\",\n \"GOOGLE_PAY\"\n ],\n \"params\": [\n {\n \"param_id\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sandbox.y.uno/v1/connections")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Idempotency-Key"] = '<x-idempotency-key>'
request["PUBLIC-API-KEY"] = '<api-key>'
request["PRIVATE-SECRET-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"merchant_connection_id\": \"adyen-us-prod-001\",\n \"provider_id\": \"ADYEN\",\n \"flow_type\": \"PAYIN\",\n \"payment_methods\": [\n \"CARD\",\n \"GOOGLE_PAY\"\n ],\n \"params\": [\n {\n \"param_id\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"connection_id": "<string>",
"status": "<string>"
}Creates a connection in
ACTIVE status from credentials and configuration you fill in based on the provider’s catalog. The response includes the connection_id you’ll use to reference this connection from routing rules.
Headers
string
required
UUID, 24-hour scope. Re-sending the same key + body returns the cached response; same key with a different body returns a
409.Body
string
required
Your label for this connection. Must be unique within the account. Free-form (e.g.,
"adyen-us-prod-001", "stripe-eu-test").string
required
Yuno provider identifier (e.g.,
"STRIPE", "ADYEN"). Must exist in the catalog.enum
required
Must be
"PAYIN".string[]
required
Subset of the provider’s
payment_method_type[] (from the catalog).object[]
required
One
{param_id, value} pair per parameter you’re supplying. Flat array — even nested catalog params are submitted at the top level; Yuno resolves the hierarchy from the catalog tree.Required params (where the catalog has optional: false) must be present and non-empty. Activating a boolean parent ("value": true) makes its optional: false children required.object[]
required
Response
string
Unique identifier for the connection. Save this value to reference it from routing rules.
string
Current status (always
ACTIVE on create).curl --request POST \
--url https://api.y.uno/v1/connections \
--header 'Content-Type: application/json' \
--header 'X-Idempotency-Key: <UUID>' \
--header 'private-secret-key: <YOUR_SECRET_KEY>' \
--header 'public-api-key: <YOUR_PUBLIC_KEY>' \
--data '
{
"merchant_connection_id": "adyen-us-prod-001",
"provider_id": "ADYEN",
"flow_type": "PAYIN",
"payment_methods": ["CARD", "GOOGLE_PAY", "IDEAL"],
"params": [
{ "param_id": "merchantAccount", "value": "ACME_LIVE" },
{ "param_id": "x-api-key", "value": "AQEx…W4w==" }
],
"costs": [
{
"sort_number": 1,
"cost_name": "Transaction Fee",
"currency": "USD",
"cost_values": {
"successful": { "fixed_fee": 0.12, "percentage": 1.2 },
"unsuccessful": { "fixed_fee": 0.0, "percentage": 0.0 }
}
}
]
}
'
{
"connection_id": "f1a3c4d5-7b8e-4a2c-9d1e-3f4a5b6c7d8e",
"merchant_connection_id": "adyen-us-prod-001",
"provider_id": "ADYEN",
"status": "ACTIVE",
"flow_type": "PAYIN",
"payment_methods": ["CARD", "GOOGLE_PAY", "IDEAL"],
"params": [
{ "param_id": "merchantAccount", "value": "ACME_LIVE" },
{ "param_id": "x-api-key", "value": "***" }
],
"created_at": "2026-05-12T10:24:00Z",
"updated_at": "2026-05-12T10:24:00Z"
}
Secret handling: any param marked
secret: true in the catalog is returned as "value": "***". Your submitted secret is stored encrypted and never echoed back.Errors
| HTTP | code | When |
|---|---|---|
400 | PROVIDER_NOT_FOUND | Unknown provider_id. |
400 | MISSING_REQUIRED_PARAM | A required param is missing. details.param_id names which one. |
400 | UNSUPPORTED_PAYMENT_METHOD | payment_methods contains a method the provider doesn’t support. |
400 | UNSUPPORTED_CURRENCY | A costs[].currency isn’t in the provider’s supported list. |
400 | INVALID_PROVIDER_CREDENTIALS | The credentials failed Yuno’s pre-flight check against the provider. details.provider_message echoes the provider’s reason. |
409 | CONNECTION_MERCHANT_ID_CONFLICT | merchant_connection_id already exists in this account. |
403 | INSUFFICIENT_SCOPE | API key missing connections:write. |
Authorizations
Headers
Body
application/json
Was this page helpful?