Create Merchant
curl --request POST \
--url https://api.example.com/api/v1/management/merchants/create \
--header 'Content-Type: application/json' \
--header 'x-api-key: <x-api-key>' \
--data '
{
"name": "<string>",
"email": "<string>"
}
'import requests
url = "https://api.example.com/api/v1/management/merchants/create"
payload = {
"name": "<string>",
"email": "<string>"
}
headers = {
"x-api-key": "<x-api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<x-api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({name: '<string>', email: '<string>'})
};
fetch('https://api.example.com/api/v1/management/merchants/create', 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.example.com/api/v1/management/merchants/create",
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' => '<string>',
'email' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <x-api-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.example.com/api/v1/management/merchants/create"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"email\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<x-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.example.com/api/v1/management/merchants/create")
.header("x-api-key", "<x-api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"email\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/management/merchants/create")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<x-api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"email\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"merchant": {
"id": "<string>",
"name": "<string>",
"email": "<string>",
"wallet_address": "<string>",
"privy_user_id": "<string>",
"balance": "<string>",
"environment": "<string>",
"created_at": "<string>"
}
}Merchants
Create Merchant
Creates a new merchant under your company and provisions a dedicated Privy embedded wallet for their funds.
POST
/
api
/
v1
/
management
/
merchants
/
create
Create Merchant
curl --request POST \
--url https://api.example.com/api/v1/management/merchants/create \
--header 'Content-Type: application/json' \
--header 'x-api-key: <x-api-key>' \
--data '
{
"name": "<string>",
"email": "<string>"
}
'import requests
url = "https://api.example.com/api/v1/management/merchants/create"
payload = {
"name": "<string>",
"email": "<string>"
}
headers = {
"x-api-key": "<x-api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<x-api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({name: '<string>', email: '<string>'})
};
fetch('https://api.example.com/api/v1/management/merchants/create', 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.example.com/api/v1/management/merchants/create",
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' => '<string>',
'email' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <x-api-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.example.com/api/v1/management/merchants/create"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"email\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<x-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.example.com/api/v1/management/merchants/create")
.header("x-api-key", "<x-api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"email\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/management/merchants/create")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<x-api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"email\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"merchant": {
"id": "<string>",
"name": "<string>",
"email": "<string>",
"wallet_address": "<string>",
"privy_user_id": "<string>",
"balance": "<string>",
"environment": "<string>",
"created_at": "<string>"
}
}Headers
string
required
Your test or live SDK Secret Key (
sk_test_... or sk_live_...).Request Body
string
required
The merchant’s legal or trade name (minimum 2 characters).
string
required
Unique contact email address for the merchant.
Response Fields
object
Show Merchant Object
Show Merchant Object
string
Unique identifier for the created merchant (e.g.,
mch_xyz789).string
The merchant’s name.
string
The merchant’s email.
string
The provisioned USDC wallet address on Base.
string
The underlying Privy user ID for the merchant’s wallet.
string
Initial USDC wallet balance (typically
0.00).string
The deployment environment (
test or live).string
ISO 8601 timestamp of creation.
Response Example
{
"merchant": {
"id": "mch_xyz789",
"name": "Urban Eats",
"email": "ops@urbaneats.com",
"wallet_address": "0xabcdef1234567890abcdef1234567890abcdef",
"privy_user_id": "did:privy:ckxyz789...",
"balance": "0.00",
"environment": "live",
"created_at": "2026-03-31T01:15:00Z"
}
}
⌘I

