curl --request POST \
--url https://payments.oaknetwork.org/api/v1/payments \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"provider": "stripe",
"source": {
"amount": 5000,
"currency": "usd",
"customer": {
"id": "550e8400-e29b-41d4-a716-446655440000"
},
"payment_method": {
"type": "card",
"id": "660e8400-e29b-41d4-a716-446655440000"
},
"capture_method": "automatic"
},
"confirm": true,
"metadata": {
"order_id": "ORD-12345"
}
}
'import requests
url = "https://payments.oaknetwork.org/api/v1/payments"
payload = {
"provider": "stripe",
"source": {
"amount": 5000,
"currency": "usd",
"customer": { "id": "550e8400-e29b-41d4-a716-446655440000" },
"payment_method": {
"type": "card",
"id": "660e8400-e29b-41d4-a716-446655440000"
},
"capture_method": "automatic"
},
"confirm": True,
"metadata": { "order_id": "ORD-12345" }
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
provider: 'stripe',
source: {
amount: 5000,
currency: 'usd',
customer: {id: '550e8400-e29b-41d4-a716-446655440000'},
payment_method: {type: 'card', id: '660e8400-e29b-41d4-a716-446655440000'},
capture_method: 'automatic'
},
confirm: true,
metadata: {order_id: 'ORD-12345'}
})
};
fetch('https://payments.oaknetwork.org/api/v1/payments', 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://payments.oaknetwork.org/api/v1/payments",
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([
'provider' => 'stripe',
'source' => [
'amount' => 5000,
'currency' => 'usd',
'customer' => [
'id' => '550e8400-e29b-41d4-a716-446655440000'
],
'payment_method' => [
'type' => 'card',
'id' => '660e8400-e29b-41d4-a716-446655440000'
],
'capture_method' => 'automatic'
],
'confirm' => true,
'metadata' => [
'order_id' => 'ORD-12345'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://payments.oaknetwork.org/api/v1/payments"
payload := strings.NewReader("{\n \"provider\": \"stripe\",\n \"source\": {\n \"amount\": 5000,\n \"currency\": \"usd\",\n \"customer\": {\n \"id\": \"550e8400-e29b-41d4-a716-446655440000\"\n },\n \"payment_method\": {\n \"type\": \"card\",\n \"id\": \"660e8400-e29b-41d4-a716-446655440000\"\n },\n \"capture_method\": \"automatic\"\n },\n \"confirm\": true,\n \"metadata\": {\n \"order_id\": \"ORD-12345\"\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))
}HttpResponse<String> response = Unirest.post("https://payments.oaknetwork.org/api/v1/payments")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"provider\": \"stripe\",\n \"source\": {\n \"amount\": 5000,\n \"currency\": \"usd\",\n \"customer\": {\n \"id\": \"550e8400-e29b-41d4-a716-446655440000\"\n },\n \"payment_method\": {\n \"type\": \"card\",\n \"id\": \"660e8400-e29b-41d4-a716-446655440000\"\n },\n \"capture_method\": \"automatic\"\n },\n \"confirm\": true,\n \"metadata\": {\n \"order_id\": \"ORD-12345\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://payments.oaknetwork.org/api/v1/payments")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"provider\": \"stripe\",\n \"source\": {\n \"amount\": 5000,\n \"currency\": \"usd\",\n \"customer\": {\n \"id\": \"550e8400-e29b-41d4-a716-446655440000\"\n },\n \"payment_method\": {\n \"type\": \"card\",\n \"id\": \"660e8400-e29b-41d4-a716-446655440000\"\n },\n \"capture_method\": \"automatic\"\n },\n \"confirm\": true,\n \"metadata\": {\n \"order_id\": \"ORD-12345\"\n }\n}"
response = http.request(request)
puts response.read_body{
"msg": "Transaction was Initiated Successfully!",
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"provider": "<string>",
"source": {
"amount": 123,
"currency": "<string>",
"payment_method": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "<string>",
"chain": "<string>"
},
"customer": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
},
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"settlement_date": "2023-11-07T05:31:56Z",
"metadata": {}
}
}{
"msg": "<string>",
"data": null,
"provider_message": "<string>"
}{
"msg": "Unauthorized",
"data": null
}{
"msg": "Forbidden",
"data": null
}{
"msg": "<string>",
"data": null,
"provider_message": "<string>"
}{
"msg": "Validation error message",
"data": null
}Create a payment
Create a payment intent with the provided details. Supports multiple payment providers (Stripe) and payment methods (Card).
The request body structure varies by provider and payment method type.
Field casing note: provider, currency, payment_method.type, and capture_method
are case-insensitive on input (automatically uppercased internally).
curl --request POST \
--url https://payments.oaknetwork.org/api/v1/payments \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"provider": "stripe",
"source": {
"amount": 5000,
"currency": "usd",
"customer": {
"id": "550e8400-e29b-41d4-a716-446655440000"
},
"payment_method": {
"type": "card",
"id": "660e8400-e29b-41d4-a716-446655440000"
},
"capture_method": "automatic"
},
"confirm": true,
"metadata": {
"order_id": "ORD-12345"
}
}
'import requests
url = "https://payments.oaknetwork.org/api/v1/payments"
payload = {
"provider": "stripe",
"source": {
"amount": 5000,
"currency": "usd",
"customer": { "id": "550e8400-e29b-41d4-a716-446655440000" },
"payment_method": {
"type": "card",
"id": "660e8400-e29b-41d4-a716-446655440000"
},
"capture_method": "automatic"
},
"confirm": True,
"metadata": { "order_id": "ORD-12345" }
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
provider: 'stripe',
source: {
amount: 5000,
currency: 'usd',
customer: {id: '550e8400-e29b-41d4-a716-446655440000'},
payment_method: {type: 'card', id: '660e8400-e29b-41d4-a716-446655440000'},
capture_method: 'automatic'
},
confirm: true,
metadata: {order_id: 'ORD-12345'}
})
};
fetch('https://payments.oaknetwork.org/api/v1/payments', 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://payments.oaknetwork.org/api/v1/payments",
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([
'provider' => 'stripe',
'source' => [
'amount' => 5000,
'currency' => 'usd',
'customer' => [
'id' => '550e8400-e29b-41d4-a716-446655440000'
],
'payment_method' => [
'type' => 'card',
'id' => '660e8400-e29b-41d4-a716-446655440000'
],
'capture_method' => 'automatic'
],
'confirm' => true,
'metadata' => [
'order_id' => 'ORD-12345'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://payments.oaknetwork.org/api/v1/payments"
payload := strings.NewReader("{\n \"provider\": \"stripe\",\n \"source\": {\n \"amount\": 5000,\n \"currency\": \"usd\",\n \"customer\": {\n \"id\": \"550e8400-e29b-41d4-a716-446655440000\"\n },\n \"payment_method\": {\n \"type\": \"card\",\n \"id\": \"660e8400-e29b-41d4-a716-446655440000\"\n },\n \"capture_method\": \"automatic\"\n },\n \"confirm\": true,\n \"metadata\": {\n \"order_id\": \"ORD-12345\"\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))
}HttpResponse<String> response = Unirest.post("https://payments.oaknetwork.org/api/v1/payments")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"provider\": \"stripe\",\n \"source\": {\n \"amount\": 5000,\n \"currency\": \"usd\",\n \"customer\": {\n \"id\": \"550e8400-e29b-41d4-a716-446655440000\"\n },\n \"payment_method\": {\n \"type\": \"card\",\n \"id\": \"660e8400-e29b-41d4-a716-446655440000\"\n },\n \"capture_method\": \"automatic\"\n },\n \"confirm\": true,\n \"metadata\": {\n \"order_id\": \"ORD-12345\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://payments.oaknetwork.org/api/v1/payments")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"provider\": \"stripe\",\n \"source\": {\n \"amount\": 5000,\n \"currency\": \"usd\",\n \"customer\": {\n \"id\": \"550e8400-e29b-41d4-a716-446655440000\"\n },\n \"payment_method\": {\n \"type\": \"card\",\n \"id\": \"660e8400-e29b-41d4-a716-446655440000\"\n },\n \"capture_method\": \"automatic\"\n },\n \"confirm\": true,\n \"metadata\": {\n \"order_id\": \"ORD-12345\"\n }\n}"
response = http.request(request)
puts response.read_body{
"msg": "Transaction was Initiated Successfully!",
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"provider": "<string>",
"source": {
"amount": 123,
"currency": "<string>",
"payment_method": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "<string>",
"chain": "<string>"
},
"customer": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
},
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"settlement_date": "2023-11-07T05:31:56Z",
"metadata": {}
}
}{
"msg": "<string>",
"data": null,
"provider_message": "<string>"
}{
"msg": "Unauthorized",
"data": null
}{
"msg": "Forbidden",
"data": null
}{
"msg": "<string>",
"data": null,
"provider_message": "<string>"
}{
"msg": "Validation error message",
"data": null
}Authorizations
Merchant authentication token. Obtained via POST /api/v1/merchant/token/grant. Pass as: Authorization: Bearer
Headers
App key for subscription service authentication
Set to 'recurring_payment' for subscription payment flows
recurring_payment Body
Payment creation request. The exact schema varies by provider and payment method type. Fields like provider, currency, and type are case-insensitive (uppercased internally).
Payment provider
stripe Show child attributes
Show child attributes
Destination details for cross-currency or split payments
Show child attributes
Show child attributes
Fee configuration for destination flow
Show child attributes
Show child attributes
Payment flow type (Stripe)
platform, destination Fund allocation splits (for platform flow)
Show child attributes
Show child attributes
Total installment count
x >= 1Whether to auto-confirm the payment
Merchant-supplied arbitrary metadata, stored with the transaction and echoed back on the response and on any derived webhook deliveries. Shape is defined by the merchant.