Create Order
curl --request POST \
--url https://quickei.io/pay/sandbox/api/v1/orders \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"amount": 123,
"currency": "<string>",
"payment_method": "<string>",
"reference": "<string>",
"description": "<string>",
"terminal_id": "<string>",
"callback_url": "<string>",
"expires_in": 123,
"idempotency_key": "<string>"
}
'import requests
url = "https://quickei.io/pay/sandbox/api/v1/orders"
payload = {
"amount": 123,
"currency": "<string>",
"payment_method": "<string>",
"reference": "<string>",
"description": "<string>",
"terminal_id": "<string>",
"callback_url": "<string>",
"expires_in": 123,
"idempotency_key": "<string>"
}
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({
amount: 123,
currency: '<string>',
payment_method: '<string>',
reference: '<string>',
description: '<string>',
terminal_id: '<string>',
callback_url: '<string>',
expires_in: 123,
idempotency_key: '<string>'
})
};
fetch('https://quickei.io/pay/sandbox/api/v1/orders', 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://quickei.io/pay/sandbox/api/v1/orders",
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([
'amount' => 123,
'currency' => '<string>',
'payment_method' => '<string>',
'reference' => '<string>',
'description' => '<string>',
'terminal_id' => '<string>',
'callback_url' => '<string>',
'expires_in' => 123,
'idempotency_key' => '<string>'
]),
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://quickei.io/pay/sandbox/api/v1/orders"
payload := strings.NewReader("{\n \"amount\": 123,\n \"currency\": \"<string>\",\n \"payment_method\": \"<string>\",\n \"reference\": \"<string>\",\n \"description\": \"<string>\",\n \"terminal_id\": \"<string>\",\n \"callback_url\": \"<string>\",\n \"expires_in\": 123,\n \"idempotency_key\": \"<string>\"\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://quickei.io/pay/sandbox/api/v1/orders")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"amount\": 123,\n \"currency\": \"<string>\",\n \"payment_method\": \"<string>\",\n \"reference\": \"<string>\",\n \"description\": \"<string>\",\n \"terminal_id\": \"<string>\",\n \"callback_url\": \"<string>\",\n \"expires_in\": 123,\n \"idempotency_key\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://quickei.io/pay/sandbox/api/v1/orders")
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 \"amount\": 123,\n \"currency\": \"<string>\",\n \"payment_method\": \"<string>\",\n \"reference\": \"<string>\",\n \"description\": \"<string>\",\n \"terminal_id\": \"<string>\",\n \"callback_url\": \"<string>\",\n \"expires_in\": 123,\n \"idempotency_key\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyPOS API
Create Order
Create a new POS payment order
POST
/
orders
Create Order
curl --request POST \
--url https://quickei.io/pay/sandbox/api/v1/orders \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"amount": 123,
"currency": "<string>",
"payment_method": "<string>",
"reference": "<string>",
"description": "<string>",
"terminal_id": "<string>",
"callback_url": "<string>",
"expires_in": 123,
"idempotency_key": "<string>"
}
'import requests
url = "https://quickei.io/pay/sandbox/api/v1/orders"
payload = {
"amount": 123,
"currency": "<string>",
"payment_method": "<string>",
"reference": "<string>",
"description": "<string>",
"terminal_id": "<string>",
"callback_url": "<string>",
"expires_in": 123,
"idempotency_key": "<string>"
}
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({
amount: 123,
currency: '<string>',
payment_method: '<string>',
reference: '<string>',
description: '<string>',
terminal_id: '<string>',
callback_url: '<string>',
expires_in: 123,
idempotency_key: '<string>'
})
};
fetch('https://quickei.io/pay/sandbox/api/v1/orders', 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://quickei.io/pay/sandbox/api/v1/orders",
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([
'amount' => 123,
'currency' => '<string>',
'payment_method' => '<string>',
'reference' => '<string>',
'description' => '<string>',
'terminal_id' => '<string>',
'callback_url' => '<string>',
'expires_in' => 123,
'idempotency_key' => '<string>'
]),
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://quickei.io/pay/sandbox/api/v1/orders"
payload := strings.NewReader("{\n \"amount\": 123,\n \"currency\": \"<string>\",\n \"payment_method\": \"<string>\",\n \"reference\": \"<string>\",\n \"description\": \"<string>\",\n \"terminal_id\": \"<string>\",\n \"callback_url\": \"<string>\",\n \"expires_in\": 123,\n \"idempotency_key\": \"<string>\"\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://quickei.io/pay/sandbox/api/v1/orders")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"amount\": 123,\n \"currency\": \"<string>\",\n \"payment_method\": \"<string>\",\n \"reference\": \"<string>\",\n \"description\": \"<string>\",\n \"terminal_id\": \"<string>\",\n \"callback_url\": \"<string>\",\n \"expires_in\": 123,\n \"idempotency_key\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://quickei.io/pay/sandbox/api/v1/orders")
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 \"amount\": 123,\n \"currency\": \"<string>\",\n \"payment_method\": \"<string>\",\n \"reference\": \"<string>\",\n \"description\": \"<string>\",\n \"terminal_id\": \"<string>\",\n \"callback_url\": \"<string>\",\n \"expires_in\": 123,\n \"idempotency_key\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyCreates a new POS payment order with a dynamic QR code and/or payment page.
Success Response
Endpoint
POST https://quickei.io/pay/sandbox/api/v1/orders
Parameters
decimal
required
Amount to charge. Must be greater than 0.
string
required
ISO 4217 currency code (e.g. EUR, USD). Must match an active wallet.
string
qr_only, payment_page, or both (default: both)string
Your internal order/invoice reference (max 255 chars)
string
Order description shown on the payment page (max 500 chars)
string
POS terminal identifier (max 64 chars)
string
Webhook URL for order status updates
integer
Expiration in seconds (60–3600, default: 300)
string
Unique key to prevent duplicate orders (max 64 chars)
Example Request
POST /merchant-api/pos/v1/orders
Authorization: Basic {base64_credentials}
Content-Type: application/json
{
"amount": 25.00,
"currency": "EUR",
"payment_method": "both",
"reference": "INV-2024-001",
"description": "Table 5 - Lunch",
"terminal_id": "terminal-01",
"callback_url": "https://yoursite.com/webhook",
"expires_in": 300,
"idempotency_key": "idem_abc123"
}
Success Response 200
{
"message": {
"success": ["POS order created successfully"]
},
"data": {
"order_id": "POS-20240115-A1B2C3",
"amount": "25.00 EUR",
"raw_amount": 25.00,
"currency": "EUR",
"payment_method": "both",
"reference": "INV-2024-001",
"description": "Table 5 - Lunch",
"terminal_id": "terminal-01",
"status": "PENDING",
"qr_data": "quickei://pay?order=POS-20240115-A1B2C3&a=25.00&c=EUR",
"payment_url": "https://quickei.io/pay/pos/POS-20240115-A1B2C3",
"trx_id": null,
"paid_at": null,
"expires_at": "2024-01-15T14:05:00+00:00",
"created_at": "2024-01-15T14:00:00+00:00"
}
}

