Developer Tools
Import the Postman collection, validate payloads against the JSON schema, and copy starter code for your stack.
Postman Collection v1.0
Ready-to-import requests for transaction submit, batch, status, and webhook configuration. In Postman, choose Import → Upload Files and set collection variables BASE_URL, API_KEY, and BRIDGE_TRANSACTION_ID before sending.
JSON Schema
Machine-readable Standard Sale Object schema for validation, IDE autocomplete, and CI checks.
sale-object.schema.json · Field referenceCode samples — POST /transactions
Minimal examples using environment variables for BASE_URL and API_KEY.
Node.js
const BASE_URL = process.env.BASE_URL;
const API_KEY = process.env.API_KEY;
const payload = {
transaction: {
transaction_id: "POS-10001",
transaction_datetime: "2026-06-07T14:23:55+08:00",
merchant_code: "MRC123",
branch_code: "BR001",
pos_device_id: "POS01",
invoice_type: "OR",
items: [{ sku: "SKU001", description: "Product A", qty: 1, unit_price: 100 }],
totals: { gross: 100, net: 100 },
payment: { method: "CASH", amount: 100 }
}
};
const res = await fetch(`${BASE_URL}/transactions`, {
method: "POST",
headers: {
Authorization: `Bearer ${API_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify(payload)
});
console.log(await res.json());
PHP
$baseUrl = getenv('BASE_URL');
$apiKey = getenv('API_KEY');
$payload = [
'transaction' => [
'transaction_id' => 'POS-10001',
'transaction_datetime' => '2026-06-07T14:23:55+08:00',
'merchant_code' => 'MRC123',
'branch_code' => 'BR001',
'pos_device_id' => 'POS01',
'invoice_type' => 'OR',
'items' => [[
'sku' => 'SKU001', 'description' => 'Product A',
'qty' => 1, 'unit_price' => 100
]],
'totals' => ['gross' => 100, 'net' => 100],
'payment' => ['method' => 'CASH', 'amount' => 100]
]
];
$ch = curl_init("$baseUrl/transactions");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer $apiKey",
'Content-Type: application/json'
],
CURLOPT_POSTFIELDS => json_encode($payload)
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
Java
String baseUrl = System.getenv("BASE_URL");
String apiKey = System.getenv("API_KEY");
String json = """
{"transaction":{"transaction_id":"POS-10001",
"transaction_datetime":"2026-06-07T14:23:55+08:00",
"merchant_code":"MRC123","branch_code":"BR001",
"pos_device_id":"POS01","invoice_type":"OR",
"items":[{"sku":"SKU001","description":"Product A","qty":1,"unit_price":100}],
"totals":{"gross":100,"net":100},
"payment":{"method":"CASH","amount":100}}}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(baseUrl + "/transactions"))
.header("Authorization", "Bearer " + apiKey)
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(json))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
C#
var baseUrl = Environment.GetEnvironmentVariable("BASE_URL");
var apiKey = Environment.GetEnvironmentVariable("API_KEY");
var payload = new {
transaction = new {
transaction_id = "POS-10001",
transaction_datetime = "2026-06-07T14:23:55+08:00",
merchant_code = "MRC123",
branch_code = "BR001",
pos_device_id = "POS01",
invoice_type = "OR",
items = new[] {
new { sku = "SKU001", description = "Product A", qty = 1, unit_price = 100 }
},
totals = new { gross = 100, net = 100 },
payment = new { method = "CASH", amount = 100 }
}
};
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", apiKey);
var content = new StringContent(
JsonSerializer.Serialize(payload),
Encoding.UTF8, "application/json");
var response = await client.PostAsync($"{baseUrl}/transactions", content);
Console.WriteLine(await response.Content.ReadAsStringAsync());