Refund an order
curl --request POST \
--url https://business.papp.sa/api/v1/orders/{orderUuid}/refund \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"amount": 50,
"reason": "Item returned by customer."
}
'import requests
url = "https://business.papp.sa/api/v1/orders/{orderUuid}/refund"
payload = {
"amount": 50,
"reason": "Item returned by customer."
}
headers = {
"x-api-key": "<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': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({amount: 50, reason: 'Item returned by customer.'})
};
fetch('https://business.papp.sa/api/v1/orders/{orderUuid}/refund', 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://business.papp.sa/api/v1/orders/{orderUuid}/refund",
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' => 50,
'reason' => 'Item returned by customer.'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <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://business.papp.sa/api/v1/orders/{orderUuid}/refund"
payload := strings.NewReader("{\n \"amount\": 50,\n \"reason\": \"Item returned by customer.\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-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://business.papp.sa/api/v1/orders/{orderUuid}/refund")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"amount\": 50,\n \"reason\": \"Item returned by customer.\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://business.papp.sa/api/v1/orders/{orderUuid}/refund")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"amount\": 50,\n \"reason\": \"Item returned by customer.\"\n}"
response = http.request(request)
puts response.read_body{
"status": true,
"message": "",
"appended_data": {},
"data": {
"id": 42,
"uuid": "550e8400-e29b-41d4-a716-446655440000",
"reference_number": "REF-2024-001234",
"order_status": "approved",
"status_label": "خرج للتوصيل",
"custom_status": {
"ar": "خرج للتوصيل",
"en": "Out for delivery"
},
"order_number": "ORD-2024-001234",
"type": 1,
"total_price": 150.5,
"total_points": 1505,
"metadata": {
"source": "mobile_app"
},
"date": "2024-12-23T00:00:00.000Z",
"time": "10:00:00",
"since": "2 hours ago",
"settlement_status": "settled",
"status": 1,
"created_at": "2024-12-23T10:00:00.000Z",
"updated_at": "2024-12-23T15:30:00.000Z",
"items": [
{
"product_name": "Cappuccino",
"product_price": 18.5,
"quantity": 2
}
]
}
}{
"status": false,
"message": "Invalid or inactive API key",
"appended_data": {}
}{
"status": false,
"message": "Invalid or inactive API key",
"appended_data": {}
}{
"status": false,
"message": "The given data was invalid.",
"appended_data": {},
"errors": {
"total_price": [
"The total price field is required."
],
"products.0.quantity": [
"The quantity must be at least 1."
]
}
}Orders
Refund an order
Issues a full or partial refund and returns points to the customer. When amount is omitted, the full captured amount is refunded. Rules (refund window, order state) are enforced by the backend RefundService.
POST
/
v1
/
orders
/
{orderUuid}
/
refund
Refund an order
curl --request POST \
--url https://business.papp.sa/api/v1/orders/{orderUuid}/refund \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"amount": 50,
"reason": "Item returned by customer."
}
'import requests
url = "https://business.papp.sa/api/v1/orders/{orderUuid}/refund"
payload = {
"amount": 50,
"reason": "Item returned by customer."
}
headers = {
"x-api-key": "<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': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({amount: 50, reason: 'Item returned by customer.'})
};
fetch('https://business.papp.sa/api/v1/orders/{orderUuid}/refund', 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://business.papp.sa/api/v1/orders/{orderUuid}/refund",
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' => 50,
'reason' => 'Item returned by customer.'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <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://business.papp.sa/api/v1/orders/{orderUuid}/refund"
payload := strings.NewReader("{\n \"amount\": 50,\n \"reason\": \"Item returned by customer.\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-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://business.papp.sa/api/v1/orders/{orderUuid}/refund")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"amount\": 50,\n \"reason\": \"Item returned by customer.\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://business.papp.sa/api/v1/orders/{orderUuid}/refund")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"amount\": 50,\n \"reason\": \"Item returned by customer.\"\n}"
response = http.request(request)
puts response.read_body{
"status": true,
"message": "",
"appended_data": {},
"data": {
"id": 42,
"uuid": "550e8400-e29b-41d4-a716-446655440000",
"reference_number": "REF-2024-001234",
"order_status": "approved",
"status_label": "خرج للتوصيل",
"custom_status": {
"ar": "خرج للتوصيل",
"en": "Out for delivery"
},
"order_number": "ORD-2024-001234",
"type": 1,
"total_price": 150.5,
"total_points": 1505,
"metadata": {
"source": "mobile_app"
},
"date": "2024-12-23T00:00:00.000Z",
"time": "10:00:00",
"since": "2 hours ago",
"settlement_status": "settled",
"status": 1,
"created_at": "2024-12-23T10:00:00.000Z",
"updated_at": "2024-12-23T15:30:00.000Z",
"items": [
{
"product_name": "Cappuccino",
"product_price": 18.5,
"quantity": 2
}
]
}
}{
"status": false,
"message": "Invalid or inactive API key",
"appended_data": {}
}{
"status": false,
"message": "Invalid or inactive API key",
"appended_data": {}
}{
"status": false,
"message": "The given data was invalid.",
"appended_data": {},
"errors": {
"total_price": [
"The total price field is required."
],
"products.0.quantity": [
"The quantity must be at least 1."
]
}
}Authorizations
Path Parameters
Order UUID.
Body
application/json
⌘I

