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 '
{
"account_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"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 = {
"account_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"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({
account_id: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890',
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([
'account_id' => 'a1b2c3d4-e5f6-7890-abcd-ef1234567890',
'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 \"account_id\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\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 \"account_id\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\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 \"account_id\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\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": "f1a3c4d5-7b8e-4a2c-9d1e-3f4a5b6c7d8e",
"merchant_connection_id": "stripe-us-prod-001",
"provider_id": "STRIPE",
"status": "ACTIVE",
"flow_type": "PAYIN",
"payment_methods": [
"CARD",
"GOOGLE_PAY",
"APPLE_PAY"
],
"params": [
{}
],
"costs": [
{}
],
"created_at": "2026-05-12T10:24:00Z",
"updated_at": "2026-05-12T10:24:00Z"
}{
"type": "validation_error",
"code": "MISSING_REQUIRED_PARAM",
"message": "Required param 'API_KEY' is missing",
"details": {}
}{
"type": "conflict",
"code": "CONNECTION_MERCHANT_ID_CONFLICT",
"message": "A connection with this merchant_connection_id already exists"
}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 '
{
"account_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"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 = {
"account_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"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({
account_id: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890',
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([
'account_id' => 'a1b2c3d4-e5f6-7890-abcd-ef1234567890',
'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 \"account_id\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\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 \"account_id\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\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 \"account_id\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\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": "f1a3c4d5-7b8e-4a2c-9d1e-3f4a5b6c7d8e",
"merchant_connection_id": "stripe-us-prod-001",
"provider_id": "STRIPE",
"status": "ACTIVE",
"flow_type": "PAYIN",
"payment_methods": [
"CARD",
"GOOGLE_PAY",
"APPLE_PAY"
],
"params": [
{}
],
"costs": [
{}
],
"created_at": "2026-05-12T10:24:00Z",
"updated_at": "2026-05-12T10:24:00Z"
}{
"type": "validation_error",
"code": "MISSING_REQUIRED_PARAM",
"message": "Required param 'API_KEY' is missing",
"details": {}
}{
"type": "conflict",
"code": "CONNECTION_MERCHANT_ID_CONFLICT",
"message": "A connection with this merchant_connection_id already exists"
}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
UUID of the account under which this connection will be created.
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
Your internal label for this connection.
string
The provider this connection belongs to (e.g.,
ADYEN).string
Current status (always
ACTIVE on create).string
Always
PAYIN.string[]
List of supported payment methods.
object[]
Echoed parameters. Sensitive values are masked as
***.object[]
Cost configuration for the connection.
string
ISO 8601 timestamp.
string
ISO 8601 timestamp.
curl -X POST 'https://api.y.uno/v1/connections' \
-H 'public-api-key: <YOUR_PUBLIC_KEY>' \
-H 'private-secret-key: <YOUR_SECRET_KEY>' \
-H 'Content-Type: application/json' \
-H 'X-Idempotency-Key: <UUID>' \
-d '{
"account_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"merchant_connection_id": "stripe-us-prod-001",
"provider_id": "STRIPE",
"flow_type": "PAYIN",
"payment_methods": ["CARD", "GOOGLE_PAY", "APPLE_PAY"],
"params": [
{ "param_id": "API_KEY", "value": "sk_live_..." },
{ "param_id": "PUBLISHABLE_KEY", "value": "pk_live_..." },
{ "param_id": "INTEGRATION_TYPE", "value": "PAYMENT_INTENTS" },
{ "param_id": "3DS_ENABLED", "value": true },
{ "param_id": "ORIGIN_URL", "value": "https://checkout.acme.com" }
],
"costs": [
{
"sort_number": 1,
"cost_name": "Transaction Fee",
"currency": "USD",
"cost_values": {
"successful": { "fixed_fee": 0.30, "percentage": 2.9 },
"unsuccessful": { "fixed_fee": 0.0, "percentage": 0.0 }
}
}
]
}'
{
"connection_id": "f1a3c4d5-7b8e-4a2c-9d1e-3f4a5b6c7d8e",
"merchant_connection_id": "stripe-us-prod-001",
"provider_id": "STRIPE",
"status": "ACTIVE",
"flow_type": "PAYIN",
"payment_methods": ["CARD", "GOOGLE_PAY", "APPLE_PAY"],
"params": [
{ "param_id": "API_KEY", "value": "***" },
{ "param_id": "PUBLISHABLE_KEY", "value": "pk_live_..." },
{ "param_id": "INTEGRATION_TYPE", "value": "PAYMENT_INTENTS" },
{ "param_id": "3DS_ENABLED", "value": true },
{ "param_id": "ORIGIN_URL", "value": "https://checkout.acme.com" }
],
"costs": [
{
"sort_number": 1,
"cost_name": "Transaction Fee",
"currency": "USD",
"cost_values": {
"successful": { "fixed_fee": 0.30, "percentage": 2.9 },
"unsuccessful": { "fixed_fee": 0.0, "percentage": 0.0 }
}
}
],
"created_at": "2026-05-12T10:24:00Z",
"updated_at": "2026-05-12T10:24:00Z"
}
{
"connection_id": "b2c4d5e6-1a2b-3c4d-5e6f-7a8b9c0d1e2f",
"merchant_connection_id": "adyen-eu-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": "***" },
{ "param_id": "HMAC_KEY", "value": "***" },
{ "param_id": "url-prefix", "value": "acme-live" },
{ "param_id": "transaction-identifier", "value": "MERCHANT_REFERENCE" },
{ "param_id": "MERCHANT_NAME", "value": "ACME Inc." },
{ "param_id": "CAPTURE_DELAY_HOURS", "value": "24" },
{ "param_id": "recurring-model", "value": "CardOnFile" },
{ "param_id": "3DS_ENABLED", "value": true },
{ "param_id": "ORIGIN_URL", "value": "https://checkout.acme.com" }
],
"costs": [
{
"sort_number": 1,
"cost_name": "Transaction Fee",
"currency": "EUR",
"cost_values": {
"successful": { "fixed_fee": 0.12, "percentage": 1.2 },
"unsuccessful": { "fixed_fee": 0.0, "percentage": 0.0 }
}
}
],
"created_at": "2026-05-12T10:31:42Z",
"updated_at": "2026-05-12T10:31:42Z"
}
{
"type": "validation_error",
"code": "MISSING_REQUIRED_PARAM",
"message": "Required param 'API_KEY' is missing for provider 'STRIPE'",
"details": { "provider_id": "STRIPE", "param_id": "API_KEY" }
}
{
"type": "conflict",
"code": "CONNECTION_MERCHANT_ID_CONFLICT",
"message": "A connection with merchant_connection_id 'stripe-us-prod-001' already exists in this account",
"details": { "merchant_connection_id": "stripe-us-prod-001" }
}
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
Example:
"a1b2c3d4-e5f6-7890-abcd-ef1234567890"
Example:
"adyen-us-prod-001"
Example:
"ADYEN"
Example:
"PAYIN"
Example:
["CARD", "GOOGLE_PAY"]
Show child attributes
Show child attributes
Response
Created
Example:
"f1a3c4d5-7b8e-4a2c-9d1e-3f4a5b6c7d8e"
Example:
"stripe-us-prod-001"
Example:
"STRIPE"
Example:
"ACTIVE"
Example:
"PAYIN"
Example:
["CARD", "GOOGLE_PAY", "APPLE_PAY"]
Example:
"2026-05-12T10:24:00Z"
Example:
"2026-05-12T10:24:00Z"
Was this page helpful?