{
    "info": {
        "name": "AppturePay API - Integration Collection",
        "description": "Generated from OPTIONS metadata and docs/api/examples. Set base_url to your supplied API URL and fill the credential/resource variables before sending requests. Read each request prerequisite: sandbox behavior depends on the client and endpoint, and bank payout/verification handlers perform live operations. Server authorization still applies. Saved examples are synthetic documentation, not an ordered integration test sequence.",
        "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
    },
    "item": [
        {
            "name": "Auth",
            "item": [
                {
                    "name": "Access Token",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/x-www-form-urlencoded"
                            }
                        ],
                        "auth": {
                            "type": "basic",
                            "basic": [
                                {
                                    "key": "username",
                                    "value": "{{client_id}}",
                                    "type": "string"
                                },
                                {
                                    "key": "password",
                                    "value": "{{client_secret}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "url": {
                            "raw": "{{base_url}}/auth/access_token",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "auth",
                                "access_token"
                            ],
                            "query": []
                        },
                        "description": "Request an OAuth2 access token (Client or Password Grants).Note: the Authorization header, containing the Client credentials, is required for both Grants. The client_secret may be left blank for non-confidential clients.\n\n### PHP (cURL)\n```php\n// Replace the {{...}} placeholders with your integration settings.\n$request = curl_init('{{base_url}}/auth/access_token');\ncurl_setopt_array($request, [\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_HTTPHEADER => array (\n  0 => 'Content-Type: application/x-www-form-urlencoded',\n),\n    CURLOPT_USERPWD => '{{client_id}}:{{client_secret}}',\n    CURLOPT_POSTFIELDS => http_build_query(array (\n  'grant_type' => 'client_credentials',\n)),\n]);\n$raw = curl_exec($request);\nif ($raw === false) { throw new RuntimeException(curl_error($request)); }\n$status = curl_getinfo($request, CURLINFO_HTTP_CODE);\n$contentType = curl_getinfo($request, CURLINFO_CONTENT_TYPE) ?: \"\";\ncurl_close($request);\n$result = str_contains($contentType, \"application/json\") ? json_decode($raw, true, 512, JSON_THROW_ON_ERROR) : $raw;\nvar_dump($status, $result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```\n\n### JavaScript (Node.js)\n```javascript\n// Node.js backend example. Replace the {{...}} placeholders.\nconst headers = {\n    \"Content-Type\": \"application/x-www-form-urlencoded\"\n};\nheaders.Authorization = \"Basic \" + Buffer.from(\"{{client_id}}:{{client_secret}}\", \"utf8\").toString(\"base64\");\nconst body = new URLSearchParams({\n    \"grant_type\": \"client_credentials\"\n});\nconst response = await fetch(\"{{base_url}}/auth/access_token\", {\n  method: \"POST\", headers, body });\nconst contentType = response.headers.get(\"content-type\") || \"\";\nconst result = contentType.includes(\"application/json\") ? await response.json() : await response.text();\nconsole.log(response.status, result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```",
                        "body": {
                            "mode": "urlencoded",
                            "urlencoded": [
                                {
                                    "key": "grant_type",
                                    "value": "client_credentials",
                                    "type": "text"
                                }
                            ]
                        }
                    },
                    "response": [
                        {
                            "name": "Client credentials",
                            "originalRequest": {
                                "method": "POST",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/x-www-form-urlencoded"
                                    }
                                ],
                                "auth": {
                                    "type": "basic",
                                    "basic": [
                                        {
                                            "key": "username",
                                            "value": "{{client_id}}",
                                            "type": "string"
                                        },
                                        {
                                            "key": "password",
                                            "value": "{{client_secret}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/auth/access_token",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "auth",
                                        "access_token"
                                    ],
                                    "query": []
                                },
                                "description": "Request an OAuth2 access token (Client or Password Grants).Note: the Authorization header, containing the Client credentials, is required for both Grants. The client_secret may be left blank for non-confidential clients.",
                                "body": {
                                    "mode": "urlencoded",
                                    "urlencoded": [
                                        {
                                            "key": "grant_type",
                                            "value": "client_credentials",
                                            "type": "text"
                                        }
                                    ]
                                }
                            },
                            "status": "OK",
                            "code": 200,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"token_type\": \"Bearer\",\n    \"expires_in\": 3600,\n    \"access_token\": \"EXAMPLE_ACCESS_TOKEN\",\n    \"user_id\": null,\n    \"user\": \"Anonymous\",\n    \"scope\": [\n        \"anonymous\"\n    ],\n    \"mode\": \"normal\",\n    \"pos_session_id\": null,\n    \"profile_user_id\": null,\n    \"fees\": [],\n    \"notifications_token\": false\n}"
                        },
                        {
                            "name": "Account password login",
                            "originalRequest": {
                                "method": "POST",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/x-www-form-urlencoded"
                                    }
                                ],
                                "auth": {
                                    "type": "basic",
                                    "basic": [
                                        {
                                            "key": "username",
                                            "value": "{{client_id}}",
                                            "type": "string"
                                        },
                                        {
                                            "key": "password",
                                            "value": "{{client_secret}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/auth/access_token",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "auth",
                                        "access_token"
                                    ],
                                    "query": []
                                },
                                "description": "Request an OAuth2 access token (Client or Password Grants).Note: the Authorization header, containing the Client credentials, is required for both Grants. The client_secret may be left blank for non-confidential clients.",
                                "body": {
                                    "mode": "urlencoded",
                                    "urlencoded": [
                                        {
                                            "key": "grant_type",
                                            "value": "password",
                                            "type": "text"
                                        },
                                        {
                                            "key": "username",
                                            "value": "{{username}}",
                                            "type": "text"
                                        },
                                        {
                                            "key": "password",
                                            "value": "{{password}}",
                                            "type": "text"
                                        }
                                    ]
                                }
                            },
                            "status": "OK",
                            "code": 200,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"token_type\": \"Bearer\",\n    \"expires_in\": 3600,\n    \"access_token\": \"EXAMPLE_ACCESS_TOKEN\",\n    \"user_id\": 456,\n    \"user\": \"example@example.com\",\n    \"scope\": [\n        \"authenticated\",\n        \"owner\"\n    ],\n    \"mode\": \"normal\",\n    \"pos_session_id\": null,\n    \"profile_user_id\": null,\n    \"fees\": [],\n    \"notifications_token\": false,\n    \"refresh_token\": \"EXAMPLE_REFRESH_TOKEN\"\n}"
                        },
                        {
                            "name": "Refresh a normal session",
                            "originalRequest": {
                                "method": "POST",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/x-www-form-urlencoded"
                                    }
                                ],
                                "auth": {
                                    "type": "basic",
                                    "basic": [
                                        {
                                            "key": "username",
                                            "value": "{{client_id}}",
                                            "type": "string"
                                        },
                                        {
                                            "key": "password",
                                            "value": "{{client_secret}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/auth/access_token",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "auth",
                                        "access_token"
                                    ],
                                    "query": []
                                },
                                "description": "Request an OAuth2 access token (Client or Password Grants).Note: the Authorization header, containing the Client credentials, is required for both Grants. The client_secret may be left blank for non-confidential clients.",
                                "body": {
                                    "mode": "urlencoded",
                                    "urlencoded": [
                                        {
                                            "key": "grant_type",
                                            "value": "refresh_token",
                                            "type": "text"
                                        },
                                        {
                                            "key": "refresh_token",
                                            "value": "{{refresh_token}}",
                                            "type": "text"
                                        }
                                    ]
                                }
                            },
                            "status": "OK",
                            "code": 200,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"token_type\": \"Bearer\",\n    \"expires_in\": 3600,\n    \"access_token\": \"EXAMPLE_ACCESS_TOKEN\",\n    \"user_id\": 456,\n    \"user\": \"example@example.com\",\n    \"scope\": [\n        \"authenticated\",\n        \"owner\"\n    ],\n    \"mode\": \"normal\",\n    \"pos_session_id\": null,\n    \"profile_user_id\": null,\n    \"fees\": [],\n    \"notifications_token\": false,\n    \"refresh_token\": \"EXAMPLE_ROTATED_REFRESH_TOKEN\"\n}"
                        },
                        {
                            "name": "Invalid client credentials",
                            "originalRequest": {
                                "method": "POST",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/x-www-form-urlencoded"
                                    }
                                ],
                                "auth": {
                                    "type": "basic",
                                    "basic": [
                                        {
                                            "key": "username",
                                            "value": "{{client_id}}",
                                            "type": "string"
                                        },
                                        {
                                            "key": "password",
                                            "value": "{{client_secret}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/auth/access_token",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "auth",
                                        "access_token"
                                    ],
                                    "query": []
                                },
                                "description": "Request an OAuth2 access token (Client or Password Grants).Note: the Authorization header, containing the Client credentials, is required for both Grants. The client_secret may be left blank for non-confidential clients.Use incorrect Basic client credentials to demonstrate this response.",
                                "body": {
                                    "mode": "urlencoded",
                                    "urlencoded": [
                                        {
                                            "key": "grant_type",
                                            "value": "client_credentials",
                                            "type": "text"
                                        }
                                    ]
                                }
                            },
                            "status": "Unauthorized",
                            "code": 401,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"error\": \"invalid_client\",\n    \"error_description\": \"Client authentication failed\",\n    \"message\": \"Client authentication failed\"\n}"
                        },
                        {
                            "name": "Incorrect account password",
                            "originalRequest": {
                                "method": "POST",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/x-www-form-urlencoded"
                                    }
                                ],
                                "auth": {
                                    "type": "basic",
                                    "basic": [
                                        {
                                            "key": "username",
                                            "value": "{{client_id}}",
                                            "type": "string"
                                        },
                                        {
                                            "key": "password",
                                            "value": "{{client_secret}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/auth/access_token",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "auth",
                                        "access_token"
                                    ],
                                    "query": []
                                },
                                "description": "Request an OAuth2 access token (Client or Password Grants).Note: the Authorization header, containing the Client credentials, is required for both Grants. The client_secret may be left blank for non-confidential clients.Use valid Basic client credentials with incorrect user credentials. OAuth invalid_grant uses HTTP 400.",
                                "body": {
                                    "mode": "urlencoded",
                                    "urlencoded": [
                                        {
                                            "key": "grant_type",
                                            "value": "password",
                                            "type": "text"
                                        },
                                        {
                                            "key": "username",
                                            "value": "{{username}}",
                                            "type": "text"
                                        },
                                        {
                                            "key": "password",
                                            "value": "{{invalid_password}}",
                                            "type": "text"
                                        }
                                    ]
                                }
                            },
                            "status": "Bad Request",
                            "code": 400,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"error\": \"invalid_grant\",\n    \"error_description\": \"The user credentials were incorrect.\",\n    \"message\": \"The user credentials were incorrect.\"\n}"
                        }
                    ]
                },
                {
                    "name": "Revoke Token",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "url": {
                            "raw": "{{base_url}}/auth/revoke_token",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "auth",
                                "revoke_token"
                            ],
                            "query": []
                        },
                        "description": "Revoke a previously granted OAuth2 access token.The bearer access token identifies the session to revoke. Its access and associated refresh token records are removed; a request-body token field is not used.\n\n### PHP (cURL)\n```php\n// Replace the {{...}} placeholders with your integration settings.\n// The bearer access token identifies the session to revoke. Its access and associated refresh token records are removed; a request-body token field is not used.\n$request = curl_init('{{base_url}}/auth/revoke_token');\ncurl_setopt_array($request, [\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_HTTPHEADER => array (\n  0 => 'Authorization: Bearer {{access_token}}',\n),\n]);\n$raw = curl_exec($request);\nif ($raw === false) { throw new RuntimeException(curl_error($request)); }\n$status = curl_getinfo($request, CURLINFO_HTTP_CODE);\n$contentType = curl_getinfo($request, CURLINFO_CONTENT_TYPE) ?: \"\";\ncurl_close($request);\n$result = str_contains($contentType, \"application/json\") ? json_decode($raw, true, 512, JSON_THROW_ON_ERROR) : $raw;\nvar_dump($status, $result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```\n\n### JavaScript (Node.js)\n```javascript\n// Node.js backend example. Replace the {{...}} placeholders.\n// The bearer access token identifies the session to revoke. Its access and associated refresh token records are removed; a request-body token field is not used.\nconst headers = {\n    \"Authorization\": \"Bearer {{access_token}}\"\n};\nconst response = await fetch(\"{{base_url}}/auth/revoke_token\", {\n  method: \"POST\", headers });\nconst contentType = response.headers.get(\"content-type\") || \"\";\nconst result = contentType.includes(\"application/json\") ? await response.json() : await response.text();\nconsole.log(response.status, result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```"
                    },
                    "response": [
                        {
                            "name": "Revoke the current authenticated session",
                            "originalRequest": {
                                "method": "POST",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/auth/revoke_token",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "auth",
                                        "revoke_token"
                                    ],
                                    "query": []
                                },
                                "description": "Revoke a previously granted OAuth2 access token.The bearer access token identifies the session to revoke. Its access and associated refresh token records are removed; a request-body token field is not used."
                            },
                            "status": "OK",
                            "code": 200,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Access and refresh tokens revoked\",\n    \"success\": true,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    }\n}"
                        },
                        {
                            "name": "Revoked or invalid bearer token",
                            "originalRequest": {
                                "method": "POST",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/auth/revoke_token",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "auth",
                                        "revoke_token"
                                    ],
                                    "query": []
                                },
                                "description": "Revoke a previously granted OAuth2 access token.Send an invalid or already revoked bearer token."
                            },
                            "status": "Unauthorized",
                            "code": 401,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"error\": \"access_denied\",\n    \"error_description\": \"The resource owner or authorization server denied the request.\",\n    \"hint\": \"Access token could not be verified\",\n    \"message\": \"The resource owner or authorization server denied the request.\"\n}"
                        }
                    ]
                }
            ]
        },
        {
            "name": "Delivery",
            "item": [
                {
                    "name": "List Deliveries",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "url": {
                            "raw": "{{base_url}}/delivery?limit=25&page=0",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "delivery"
                            ],
                            "query": [
                                {
                                    "key": "limit",
                                    "value": "25"
                                },
                                {
                                    "key": "page",
                                    "value": "0"
                                }
                            ]
                        },
                        "description": "List resources.Requires an owner token.\n\n### PHP (cURL)\n```php\n// Replace the {{...}} placeholders with your integration settings.\n// Requires an owner token.\n$request = curl_init('{{base_url}}/delivery?limit=25&page=0');\ncurl_setopt_array($request, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_HTTPHEADER => array (\n  0 => 'Authorization: Bearer {{access_token}}',\n),\n]);\n$raw = curl_exec($request);\nif ($raw === false) { throw new RuntimeException(curl_error($request)); }\n$status = curl_getinfo($request, CURLINFO_HTTP_CODE);\n$contentType = curl_getinfo($request, CURLINFO_CONTENT_TYPE) ?: \"\";\ncurl_close($request);\n$result = str_contains($contentType, \"application/json\") ? json_decode($raw, true, 512, JSON_THROW_ON_ERROR) : $raw;\nvar_dump($status, $result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```\n\n### JavaScript (Node.js)\n```javascript\n// Node.js backend example. Replace the {{...}} placeholders.\n// Requires an owner token.\nconst headers = {\n    \"Authorization\": \"Bearer {{access_token}}\"\n};\nconst response = await fetch(\"{{base_url}}/delivery?limit=25&page=0\", {\n  method: \"GET\", headers });\nconst contentType = response.headers.get(\"content-type\") || \"\";\nconst result = contentType.includes(\"application/json\") ? await response.json() : await response.text();\nconsole.log(response.status, result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```"
                    },
                    "response": [
                        {
                            "name": "List owned deliveries",
                            "originalRequest": {
                                "method": "GET",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/delivery?limit=25&page=0",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "delivery"
                                    ],
                                    "query": [
                                        {
                                            "key": "limit",
                                            "value": "25"
                                        },
                                        {
                                            "key": "page",
                                            "value": "0"
                                        }
                                    ]
                                },
                                "description": "List resources.Requires an owner token."
                            },
                            "status": "OK",
                            "code": 200,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Delivery list\",\n    \"success\": true,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"data\": {\n        \"list\": [\n            {\n                \"id\": 501,\n                \"quote_reference\": null,\n                \"service\": null,\n                \"waybill_number\": null,\n                \"tracking_number\": null,\n                \"courier\": \"DSV_COURIER\",\n                \"status\": \"CREATED\",\n                \"is_sandbox\": 1,\n                \"update_date\": \"2026-10-27 10:00:00\",\n                \"create_date\": \"2026-10-27 10:00:00\",\n                \"pickup_address\": \"1 Example Road, Sandton, Johannesburg, 2196\",\n                \"delivery_address\": \"2 Example Road, Sandton, Johannesburg, 2196\"\n            }\n        ],\n        \"limit\": 25,\n        \"page\": 0,\n        \"count\": 1,\n        \"total_filtered\": 1,\n        \"total\": 1\n    }\n}"
                        },
                        {
                            "name": "No deliveries match",
                            "originalRequest": {
                                "method": "GET",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/delivery?limit=25&page=0",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "delivery"
                                    ],
                                    "query": [
                                        {
                                            "key": "limit",
                                            "value": "25"
                                        },
                                        {
                                            "key": "page",
                                            "value": "0"
                                        }
                                    ]
                                },
                                "description": "List resources.An empty result remains a successful list response."
                            },
                            "status": "OK",
                            "code": 200,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Delivery list\",\n    \"success\": true,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"data\": {\n        \"list\": [],\n        \"limit\": 25,\n        \"page\": 0,\n        \"count\": 0,\n        \"total_filtered\": 0,\n        \"total\": 0\n    }\n}"
                        },
                        {
                            "name": "Invalid bearer access token",
                            "originalRequest": {
                                "method": "GET",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/delivery?limit=25&page=0",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "delivery"
                                    ],
                                    "query": [
                                        {
                                            "key": "limit",
                                            "value": "25"
                                        },
                                        {
                                            "key": "page",
                                            "value": "0"
                                        }
                                    ]
                                },
                                "description": "List resources.Use an invalid or revoked bearer access token. Authentication fails before this operation is performed."
                            },
                            "status": "Unauthorized",
                            "code": 401,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"error\": \"access_denied\",\n    \"error_description\": \"The resource owner or authorization server denied the request.\",\n    \"hint\": \"Access token could not be verified\",\n    \"message\": \"The resource owner or authorization server denied the request.\"\n}"
                        }
                    ]
                },
                {
                    "name": "Create Delivery",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "url": {
                            "raw": "{{base_url}}/delivery",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "delivery"
                            ],
                            "query": []
                        },
                        "description": "Create a delivery.For both the pickup or delivery address you can pass an existing address id, if the address exists on your account, or each of the address fields.If no pickup address is passed, the newest address for your account will be used.Postal code checks will be done if courier checked fields are empty or false.Use an owner or confidential client token. The server validates pickup and destination with the courier; only quote after both addresses pass validation. Courier, generated IDs and sandbox mode are server-managed.\n\n### PHP (cURL)\n```php\n// Replace the {{...}} placeholders with your integration settings.\n// Use an owner or confidential client token. The server validates pickup and destination with the courier; only quote after both addresses pass validation. Courier, generated IDs and sandbox mode are server-managed.\n$request = curl_init('{{base_url}}/delivery');\ncurl_setopt_array($request, [\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_HTTPHEADER => array (\n  0 => 'Authorization: Bearer {{access_token}}',\n  1 => 'Content-Type: application/json',\n),\n    CURLOPT_POSTFIELDS => json_encode(array (\n  'pickup_contact_name' => 'Example Contact',\n  'pickup_contact_number_1' => '0100000000',\n  'pickup_contact_number_2' => '',\n  'pickup_street' => '1 Example Road',\n  'pickup_suburb' => 'Sandton',\n  'pickup_city' => 'Johannesburg',\n  'pickup_province' => 'Gauteng',\n  'pickup_country' => 'South Africa',\n  'pickup_postal_code' => '2196',\n  'pickup_comments' => 'Example reception',\n  'delivery_contact_name' => 'Example Contact',\n  'delivery_contact_number_1' => '0100000000',\n  'delivery_contact_number_2' => '',\n  'delivery_street' => '2 Example Road',\n  'delivery_suburb' => 'Sandton',\n  'delivery_city' => 'Johannesburg',\n  'delivery_province' => 'Gauteng',\n  'delivery_country' => 'South Africa',\n  'delivery_postal_code' => '2196',\n  'delivery_comments' => 'Example reception',\n), JSON_THROW_ON_ERROR),\n]);\n$raw = curl_exec($request);\nif ($raw === false) { throw new RuntimeException(curl_error($request)); }\n$status = curl_getinfo($request, CURLINFO_HTTP_CODE);\n$contentType = curl_getinfo($request, CURLINFO_CONTENT_TYPE) ?: \"\";\ncurl_close($request);\n$result = str_contains($contentType, \"application/json\") ? json_decode($raw, true, 512, JSON_THROW_ON_ERROR) : $raw;\nvar_dump($status, $result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```\n\n### JavaScript (Node.js)\n```javascript\n// Node.js backend example. Replace the {{...}} placeholders.\n// Use an owner or confidential client token. The server validates pickup and destination with the courier; only quote after both addresses pass validation. Courier, generated IDs and sandbox mode are server-managed.\nconst headers = {\n    \"Content-Type\": \"application/json\",\n    \"Authorization\": \"Bearer {{access_token}}\"\n};\nconst body = JSON.stringify({\n    \"pickup_contact_name\": \"Example Contact\",\n    \"pickup_contact_number_1\": \"0100000000\",\n    \"pickup_contact_number_2\": \"\",\n    \"pickup_street\": \"1 Example Road\",\n    \"pickup_suburb\": \"Sandton\",\n    \"pickup_city\": \"Johannesburg\",\n    \"pickup_province\": \"Gauteng\",\n    \"pickup_country\": \"South Africa\",\n    \"pickup_postal_code\": \"2196\",\n    \"pickup_comments\": \"Example reception\",\n    \"delivery_contact_name\": \"Example Contact\",\n    \"delivery_contact_number_1\": \"0100000000\",\n    \"delivery_contact_number_2\": \"\",\n    \"delivery_street\": \"2 Example Road\",\n    \"delivery_suburb\": \"Sandton\",\n    \"delivery_city\": \"Johannesburg\",\n    \"delivery_province\": \"Gauteng\",\n    \"delivery_country\": \"South Africa\",\n    \"delivery_postal_code\": \"2196\",\n    \"delivery_comments\": \"Example reception\"\n});\nconst response = await fetch(\"{{base_url}}/delivery\", {\n  method: \"POST\", headers, body });\nconst contentType = response.headers.get(\"content-type\") || \"\";\nconst result = contentType.includes(\"application/json\") ? await response.json() : await response.text();\nconsole.log(response.status, result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"pickup_contact_name\": \"Example Contact\",\n    \"pickup_contact_number_1\": \"0100000000\",\n    \"pickup_contact_number_2\": \"\",\n    \"pickup_street\": \"1 Example Road\",\n    \"pickup_suburb\": \"Sandton\",\n    \"pickup_city\": \"Johannesburg\",\n    \"pickup_province\": \"Gauteng\",\n    \"pickup_country\": \"South Africa\",\n    \"pickup_postal_code\": \"2196\",\n    \"pickup_comments\": \"Example reception\",\n    \"delivery_contact_name\": \"Example Contact\",\n    \"delivery_contact_number_1\": \"0100000000\",\n    \"delivery_contact_number_2\": \"\",\n    \"delivery_street\": \"2 Example Road\",\n    \"delivery_suburb\": \"Sandton\",\n    \"delivery_city\": \"Johannesburg\",\n    \"delivery_province\": \"Gauteng\",\n    \"delivery_country\": \"South Africa\",\n    \"delivery_postal_code\": \"2196\",\n    \"delivery_comments\": \"Example reception\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": [
                        {
                            "name": "Create a delivery with explicit addresses",
                            "originalRequest": {
                                "method": "POST",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/delivery",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "delivery"
                                    ],
                                    "query": []
                                },
                                "description": "Create a delivery.For both the pickup or delivery address you can pass an existing address id, if the address exists on your account, or each of the address fields.If no pickup address is passed, the newest address for your account will be used.Postal code checks will be done if courier checked fields are empty or false.Use an owner or confidential client token. The server validates pickup and destination with the courier; only quote after both addresses pass validation. Courier, generated IDs and sandbox mode are server-managed.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n    \"pickup_contact_name\": \"Example Contact\",\n    \"pickup_contact_number_1\": \"0100000000\",\n    \"pickup_contact_number_2\": \"\",\n    \"pickup_street\": \"1 Example Road\",\n    \"pickup_suburb\": \"Sandton\",\n    \"pickup_city\": \"Johannesburg\",\n    \"pickup_province\": \"Gauteng\",\n    \"pickup_country\": \"South Africa\",\n    \"pickup_postal_code\": \"2196\",\n    \"pickup_comments\": \"Example reception\",\n    \"delivery_contact_name\": \"Example Contact\",\n    \"delivery_contact_number_1\": \"0100000000\",\n    \"delivery_contact_number_2\": \"\",\n    \"delivery_street\": \"2 Example Road\",\n    \"delivery_suburb\": \"Sandton\",\n    \"delivery_city\": \"Johannesburg\",\n    \"delivery_province\": \"Gauteng\",\n    \"delivery_country\": \"South Africa\",\n    \"delivery_postal_code\": \"2196\",\n    \"delivery_comments\": \"Example reception\"\n}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "OK",
                            "code": 200,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Delivery added\",\n    \"success\": true,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"data\": {\n        \"id\": 501,\n        \"owner_id\": 456,\n        \"client_id\": 13,\n        \"pickup_address_id\": null,\n        \"pickup_courier_checked\": 1,\n        \"pickup_contact_name\": \"Example Contact\",\n        \"pickup_contact_number_1\": \"0100000000\",\n        \"pickup_contact_number_2\": \"\",\n        \"pickup_street\": \"1 Example Road\",\n        \"pickup_suburb\": \"Sandton\",\n        \"pickup_city\": \"Johannesburg\",\n        \"pickup_province\": \"Gauteng\",\n        \"pickup_country\": \"South Africa\",\n        \"pickup_postal_code\": \"2196\",\n        \"pickup_comments\": \"Example reception\",\n        \"delivery_address_id\": null,\n        \"delivery_courier_checked\": 1,\n        \"delivery_contact_name\": \"Example Contact\",\n        \"delivery_contact_number_1\": \"0100000000\",\n        \"delivery_contact_number_2\": \"\",\n        \"delivery_street\": \"2 Example Road\",\n        \"delivery_suburb\": \"Sandton\",\n        \"delivery_city\": \"Johannesburg\",\n        \"delivery_province\": \"Gauteng\",\n        \"delivery_country\": \"South Africa\",\n        \"delivery_postal_code\": \"2196\",\n        \"delivery_comments\": \"Example reception\",\n        \"quote_reference\": null,\n        \"service\": null,\n        \"subtotal\": null,\n        \"vat\": null,\n        \"total\": null,\n        \"waybill_number\": null,\n        \"tracking_number\": null,\n        \"quote_items\": null,\n        \"quote_value\": null,\n        \"quote_insurance\": null,\n        \"quote_dump\": null,\n        \"courier\": \"DSV_COURIER\",\n        \"status\": \"CREATED\",\n        \"is_sandbox\": 1,\n        \"update_date\": \"2026-10-27 10:00:00\",\n        \"create_date\": \"2026-10-27 10:00:00\"\n    }\n}"
                        },
                        {
                            "name": "Invalid bearer access token",
                            "originalRequest": {
                                "method": "POST",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/delivery",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "delivery"
                                    ],
                                    "query": []
                                },
                                "description": "Create a delivery.For both the pickup or delivery address you can pass an existing address id, if the address exists on your account, or each of the address fields.If no pickup address is passed, the newest address for your account will be used.Postal code checks will be done if courier checked fields are empty or false.Use an invalid or revoked bearer access token. Authentication fails before this operation is performed.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n    \"pickup_contact_name\": \"Example Contact\",\n    \"pickup_contact_number_1\": \"0100000000\",\n    \"pickup_contact_number_2\": \"\",\n    \"pickup_street\": \"1 Example Road\",\n    \"pickup_suburb\": \"Sandton\",\n    \"pickup_city\": \"Johannesburg\",\n    \"pickup_province\": \"Gauteng\",\n    \"pickup_country\": \"South Africa\",\n    \"pickup_postal_code\": \"2196\",\n    \"pickup_comments\": \"Example reception\",\n    \"delivery_contact_name\": \"Example Contact\",\n    \"delivery_contact_number_1\": \"0100000000\",\n    \"delivery_contact_number_2\": \"\",\n    \"delivery_street\": \"2 Example Road\",\n    \"delivery_suburb\": \"Sandton\",\n    \"delivery_city\": \"Johannesburg\",\n    \"delivery_province\": \"Gauteng\",\n    \"delivery_country\": \"South Africa\",\n    \"delivery_postal_code\": \"2196\",\n    \"delivery_comments\": \"Example reception\",\n    \"client_id\": \"{{client_id}}\"\n}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "Unauthorized",
                            "code": 401,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"error\": \"access_denied\",\n    \"error_description\": \"The resource owner or authorization server denied the request.\",\n    \"hint\": \"Access token could not be verified\",\n    \"message\": \"The resource owner or authorization server denied the request.\"\n}"
                        },
                        {
                            "name": "API client was not found",
                            "originalRequest": {
                                "method": "POST",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/delivery",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "delivery"
                                    ],
                                    "query": []
                                },
                                "description": "Create a delivery.For both the pickup or delivery address you can pass an existing address id, if the address exists on your account, or each of the address fields.If no pickup address is passed, the newest address for your account will be used.Postal code checks will be done if courier checked fields are empty or false.This response occurs if the authenticated token refers to an API client record that no longer exists.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n    \"pickup_contact_name\": \"Example Contact\",\n    \"pickup_contact_number_1\": \"0100000000\",\n    \"pickup_contact_number_2\": \"\",\n    \"pickup_street\": \"1 Example Road\",\n    \"pickup_suburb\": \"Sandton\",\n    \"pickup_city\": \"Johannesburg\",\n    \"pickup_province\": \"Gauteng\",\n    \"pickup_country\": \"South Africa\",\n    \"pickup_postal_code\": \"2196\",\n    \"pickup_comments\": \"Example reception\",\n    \"delivery_contact_name\": \"Example Contact\",\n    \"delivery_contact_number_1\": \"0100000000\",\n    \"delivery_contact_number_2\": \"\",\n    \"delivery_street\": \"2 Example Road\",\n    \"delivery_suburb\": \"Sandton\",\n    \"delivery_city\": \"Johannesburg\",\n    \"delivery_province\": \"Gauteng\",\n    \"delivery_country\": \"South Africa\",\n    \"delivery_postal_code\": \"2196\",\n    \"delivery_comments\": \"Example reception\"\n}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "Not Found",
                            "code": 404,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"API Client not found\",\n    \"success\": false,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"error\": \"not_found\"\n}"
                        }
                    ]
                },
                {
                    "name": "Get Delivery",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "url": {
                            "raw": "{{base_url}}/delivery/{{delivery_id}}",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "delivery",
                                "{{delivery_id}}"
                            ],
                            "query": []
                        },
                        "description": "Get a resource.Use delivery_id containing the numeric delivery ID.\n\n### PHP (cURL)\n```php\n// Replace the {{...}} placeholders with your integration settings.\n// Use delivery_id containing the numeric delivery ID.\n$request = curl_init('{{base_url}}/delivery/{{delivery_id}}');\ncurl_setopt_array($request, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_HTTPHEADER => array (\n  0 => 'Authorization: Bearer {{access_token}}',\n),\n]);\n$raw = curl_exec($request);\nif ($raw === false) { throw new RuntimeException(curl_error($request)); }\n$status = curl_getinfo($request, CURLINFO_HTTP_CODE);\n$contentType = curl_getinfo($request, CURLINFO_CONTENT_TYPE) ?: \"\";\ncurl_close($request);\n$result = str_contains($contentType, \"application/json\") ? json_decode($raw, true, 512, JSON_THROW_ON_ERROR) : $raw;\nvar_dump($status, $result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```\n\n### JavaScript (Node.js)\n```javascript\n// Node.js backend example. Replace the {{...}} placeholders.\n// Use delivery_id containing the numeric delivery ID.\nconst headers = {\n    \"Authorization\": \"Bearer {{access_token}}\"\n};\nconst response = await fetch(\"{{base_url}}/delivery/{{delivery_id}}\", {\n  method: \"GET\", headers });\nconst contentType = response.headers.get(\"content-type\") || \"\";\nconst result = contentType.includes(\"application/json\") ? await response.json() : await response.text();\nconsole.log(response.status, result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```"
                    },
                    "response": [
                        {
                            "name": "Read an owned delivery",
                            "originalRequest": {
                                "method": "GET",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/delivery/{{delivery_id}}",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "delivery",
                                        "{{delivery_id}}"
                                    ],
                                    "query": []
                                },
                                "description": "Get a resource.Use delivery_id containing the numeric delivery ID."
                            },
                            "status": "OK",
                            "code": 200,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Delivery loaded\",\n    \"success\": true,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"data\": {\n        \"id\": 501,\n        \"owner_id\": 456,\n        \"client_id\": 13,\n        \"pickup_address_id\": null,\n        \"pickup_courier_checked\": 1,\n        \"pickup_contact_name\": \"Example Contact\",\n        \"pickup_contact_number_1\": \"0100000000\",\n        \"pickup_contact_number_2\": \"\",\n        \"pickup_street\": \"1 Example Road\",\n        \"pickup_suburb\": \"Sandton\",\n        \"pickup_city\": \"Johannesburg\",\n        \"pickup_province\": \"Gauteng\",\n        \"pickup_country\": \"South Africa\",\n        \"pickup_postal_code\": \"2196\",\n        \"pickup_comments\": \"Example reception\",\n        \"delivery_address_id\": null,\n        \"delivery_courier_checked\": 1,\n        \"delivery_contact_name\": \"Example Contact\",\n        \"delivery_contact_number_1\": \"0100000000\",\n        \"delivery_contact_number_2\": \"\",\n        \"delivery_street\": \"2 Example Road\",\n        \"delivery_suburb\": \"Sandton\",\n        \"delivery_city\": \"Johannesburg\",\n        \"delivery_province\": \"Gauteng\",\n        \"delivery_country\": \"South Africa\",\n        \"delivery_postal_code\": \"2196\",\n        \"delivery_comments\": \"Example reception\",\n        \"quote_reference\": null,\n        \"service\": null,\n        \"subtotal\": null,\n        \"vat\": null,\n        \"total\": null,\n        \"waybill_number\": null,\n        \"tracking_number\": null,\n        \"quote_items\": null,\n        \"quote_value\": null,\n        \"quote_insurance\": null,\n        \"quote_dump\": null,\n        \"courier\": \"DSV_COURIER\",\n        \"status\": \"CREATED\",\n        \"is_sandbox\": 1,\n        \"update_date\": \"2026-10-27 10:00:00\",\n        \"create_date\": \"2026-10-27 10:00:00\"\n    }\n}"
                        },
                        {
                            "name": "Invalid bearer access token",
                            "originalRequest": {
                                "method": "GET",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/delivery/{{delivery_id}}",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "delivery",
                                        "{{delivery_id}}"
                                    ],
                                    "query": []
                                },
                                "description": "Get a resource.Use an invalid or revoked bearer access token. Authentication fails before this operation is performed."
                            },
                            "status": "Unauthorized",
                            "code": 401,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"error\": \"access_denied\",\n    \"error_description\": \"The resource owner or authorization server denied the request.\",\n    \"hint\": \"Access token could not be verified\",\n    \"message\": \"The resource owner or authorization server denied the request.\"\n}"
                        },
                        {
                            "name": "Delivery not found",
                            "originalRequest": {
                                "method": "GET",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/delivery/{{delivery_id}}",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "delivery",
                                        "{{delivery_id}}"
                                    ],
                                    "query": []
                                },
                                "description": "Get a resource.Use a nonexistent numeric delivery_id."
                            },
                            "status": "Not Found",
                            "code": 404,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Delivery not found\",\n    \"success\": false,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"error\": \"not_found\"\n}"
                        }
                    ]
                },
                {
                    "name": "Update Delivery",
                    "request": {
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "url": {
                            "raw": "{{base_url}}/delivery/{{delivery_id}}",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "delivery",
                                "{{delivery_id}}"
                            ],
                            "query": []
                        },
                        "description": "Update a delivery. Allows sparse payloads. For both the pickup or delivery address you can pass either an existing address id or each of the address fields if the address does not exist.Use a CREATED delivery with explicit addresses. When updating an address or its contact fields, provide the complete address for courier validation.\n\n### PHP (cURL)\n```php\n// Replace the {{...}} placeholders with your integration settings.\n// Use a CREATED delivery with explicit addresses. When updating an address or its contact fields, provide the complete address for courier validation.\n$request = curl_init('{{base_url}}/delivery/{{delivery_id}}');\ncurl_setopt_array($request, [\n    CURLOPT_CUSTOMREQUEST => 'PUT',\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_HTTPHEADER => array (\n  0 => 'Authorization: Bearer {{access_token}}',\n  1 => 'Content-Type: application/json',\n),\n    CURLOPT_POSTFIELDS => json_encode(array (\n  'pickup_contact_name' => 'Example Contact',\n  'pickup_contact_number_1' => '0100000000',\n  'pickup_contact_number_2' => '',\n  'pickup_street' => '1 Example Road',\n  'pickup_suburb' => 'Sandton',\n  'pickup_city' => 'Johannesburg',\n  'pickup_province' => 'Gauteng',\n  'pickup_country' => 'South Africa',\n  'pickup_postal_code' => '2196',\n  'pickup_comments' => 'Example reception',\n  'delivery_contact_name' => 'Example Contact',\n  'delivery_contact_number_1' => '0100000000',\n  'delivery_contact_number_2' => '',\n  'delivery_street' => '2 Example Road',\n  'delivery_suburb' => 'Sandton',\n  'delivery_city' => 'Johannesburg',\n  'delivery_province' => 'Gauteng',\n  'delivery_country' => 'South Africa',\n  'delivery_postal_code' => '2196',\n  'delivery_comments' => 'Ask for Example Contact at reception',\n), JSON_THROW_ON_ERROR),\n]);\n$raw = curl_exec($request);\nif ($raw === false) { throw new RuntimeException(curl_error($request)); }\n$status = curl_getinfo($request, CURLINFO_HTTP_CODE);\n$contentType = curl_getinfo($request, CURLINFO_CONTENT_TYPE) ?: \"\";\ncurl_close($request);\n$result = str_contains($contentType, \"application/json\") ? json_decode($raw, true, 512, JSON_THROW_ON_ERROR) : $raw;\nvar_dump($status, $result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```\n\n### JavaScript (Node.js)\n```javascript\n// Node.js backend example. Replace the {{...}} placeholders.\n// Use a CREATED delivery with explicit addresses. When updating an address or its contact fields, provide the complete address for courier validation.\nconst headers = {\n    \"Content-Type\": \"application/json\",\n    \"Authorization\": \"Bearer {{access_token}}\"\n};\nconst body = JSON.stringify({\n    \"pickup_contact_name\": \"Example Contact\",\n    \"pickup_contact_number_1\": \"0100000000\",\n    \"pickup_contact_number_2\": \"\",\n    \"pickup_street\": \"1 Example Road\",\n    \"pickup_suburb\": \"Sandton\",\n    \"pickup_city\": \"Johannesburg\",\n    \"pickup_province\": \"Gauteng\",\n    \"pickup_country\": \"South Africa\",\n    \"pickup_postal_code\": \"2196\",\n    \"pickup_comments\": \"Example reception\",\n    \"delivery_contact_name\": \"Example Contact\",\n    \"delivery_contact_number_1\": \"0100000000\",\n    \"delivery_contact_number_2\": \"\",\n    \"delivery_street\": \"2 Example Road\",\n    \"delivery_suburb\": \"Sandton\",\n    \"delivery_city\": \"Johannesburg\",\n    \"delivery_province\": \"Gauteng\",\n    \"delivery_country\": \"South Africa\",\n    \"delivery_postal_code\": \"2196\",\n    \"delivery_comments\": \"Ask for Example Contact at reception\"\n});\nconst response = await fetch(\"{{base_url}}/delivery/{{delivery_id}}\", {\n  method: \"PUT\", headers, body });\nconst contentType = response.headers.get(\"content-type\") || \"\";\nconst result = contentType.includes(\"application/json\") ? await response.json() : await response.text();\nconsole.log(response.status, result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"pickup_contact_name\": \"Example Contact\",\n    \"pickup_contact_number_1\": \"0100000000\",\n    \"pickup_contact_number_2\": \"\",\n    \"pickup_street\": \"1 Example Road\",\n    \"pickup_suburb\": \"Sandton\",\n    \"pickup_city\": \"Johannesburg\",\n    \"pickup_province\": \"Gauteng\",\n    \"pickup_country\": \"South Africa\",\n    \"pickup_postal_code\": \"2196\",\n    \"pickup_comments\": \"Example reception\",\n    \"delivery_contact_name\": \"Example Contact\",\n    \"delivery_contact_number_1\": \"0100000000\",\n    \"delivery_contact_number_2\": \"\",\n    \"delivery_street\": \"2 Example Road\",\n    \"delivery_suburb\": \"Sandton\",\n    \"delivery_city\": \"Johannesburg\",\n    \"delivery_province\": \"Gauteng\",\n    \"delivery_country\": \"South Africa\",\n    \"delivery_postal_code\": \"2196\",\n    \"delivery_comments\": \"Ask for Example Contact at reception\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": [
                        {
                            "name": "Update delivery contact instructions",
                            "originalRequest": {
                                "method": "PUT",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/delivery/{{delivery_id}}",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "delivery",
                                        "{{delivery_id}}"
                                    ],
                                    "query": []
                                },
                                "description": "Update a delivery. Allows sparse payloads. For both the pickup or delivery address you can pass either an existing address id or each of the address fields if the address does not exist.Use a CREATED delivery with explicit addresses. When updating an address or its contact fields, provide the complete address for courier validation.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n    \"pickup_contact_name\": \"Example Contact\",\n    \"pickup_contact_number_1\": \"0100000000\",\n    \"pickup_contact_number_2\": \"\",\n    \"pickup_street\": \"1 Example Road\",\n    \"pickup_suburb\": \"Sandton\",\n    \"pickup_city\": \"Johannesburg\",\n    \"pickup_province\": \"Gauteng\",\n    \"pickup_country\": \"South Africa\",\n    \"pickup_postal_code\": \"2196\",\n    \"pickup_comments\": \"Example reception\",\n    \"delivery_contact_name\": \"Example Contact\",\n    \"delivery_contact_number_1\": \"0100000000\",\n    \"delivery_contact_number_2\": \"\",\n    \"delivery_street\": \"2 Example Road\",\n    \"delivery_suburb\": \"Sandton\",\n    \"delivery_city\": \"Johannesburg\",\n    \"delivery_province\": \"Gauteng\",\n    \"delivery_country\": \"South Africa\",\n    \"delivery_postal_code\": \"2196\",\n    \"delivery_comments\": \"Ask for Example Contact at reception\"\n}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "OK",
                            "code": 200,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Delivery updated\",\n    \"success\": true,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"data\": {\n        \"pickup_contact_name\": \"Example Contact\",\n        \"pickup_contact_number_1\": \"0100000000\",\n        \"pickup_contact_number_2\": \"\",\n        \"pickup_street\": \"1 Example Road\",\n        \"pickup_suburb\": \"Sandton\",\n        \"pickup_city\": \"Johannesburg\",\n        \"pickup_province\": \"Gauteng\",\n        \"pickup_country\": \"South Africa\",\n        \"pickup_postal_code\": \"2196\",\n        \"pickup_comments\": \"Example reception\",\n        \"delivery_contact_name\": \"Example Contact\",\n        \"delivery_contact_number_1\": \"0100000000\",\n        \"delivery_contact_number_2\": \"\",\n        \"delivery_street\": \"2 Example Road\",\n        \"delivery_suburb\": \"Sandton\",\n        \"delivery_city\": \"Johannesburg\",\n        \"delivery_province\": \"Gauteng\",\n        \"delivery_country\": \"South Africa\",\n        \"delivery_postal_code\": \"2196\",\n        \"delivery_comments\": \"Ask for Example Contact at reception\",\n        \"pickup_courier_checked\": 1,\n        \"delivery_courier_checked\": 1\n    }\n}"
                        },
                        {
                            "name": "Invalid bearer access token",
                            "originalRequest": {
                                "method": "PUT",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/delivery/{{delivery_id}}",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "delivery",
                                        "{{delivery_id}}"
                                    ],
                                    "query": []
                                },
                                "description": "Update a delivery. Allows sparse payloads. For both the pickup or delivery address you can pass either an existing address id or each of the address fields if the address does not exist.Use an invalid or revoked bearer access token. Authentication fails before this operation is performed.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n    \"pickup_contact_name\": \"Example Contact\",\n    \"pickup_contact_number_1\": \"0100000000\",\n    \"pickup_contact_number_2\": \"\",\n    \"pickup_street\": \"1 Example Road\",\n    \"pickup_suburb\": \"Sandton\",\n    \"pickup_city\": \"Johannesburg\",\n    \"pickup_province\": \"Gauteng\",\n    \"pickup_country\": \"South Africa\",\n    \"pickup_postal_code\": \"2196\",\n    \"pickup_comments\": \"Example reception\",\n    \"delivery_contact_name\": \"Example Contact\",\n    \"delivery_contact_number_1\": \"0100000000\",\n    \"delivery_contact_number_2\": \"\",\n    \"delivery_street\": \"2 Example Road\",\n    \"delivery_suburb\": \"Sandton\",\n    \"delivery_city\": \"Johannesburg\",\n    \"delivery_province\": \"Gauteng\",\n    \"delivery_country\": \"South Africa\",\n    \"delivery_postal_code\": \"2196\",\n    \"delivery_comments\": \"Ask for Example Contact at reception\"\n}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "Unauthorized",
                            "code": 401,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"error\": \"access_denied\",\n    \"error_description\": \"The resource owner or authorization server denied the request.\",\n    \"hint\": \"Access token could not be verified\",\n    \"message\": \"The resource owner or authorization server denied the request.\"\n}"
                        },
                        {
                            "name": "Empty delivery update",
                            "originalRequest": {
                                "method": "PUT",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/delivery/{{delivery_id}}",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "delivery",
                                        "{{delivery_id}}"
                                    ],
                                    "query": []
                                },
                                "description": "Update a delivery. Allows sparse payloads. For both the pickup or delivery address you can pass either an existing address id or each of the address fields if the address does not exist.Send an empty JSON object to an existing delivery.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "Bad Request",
                            "code": 400,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"No data provided\",\n    \"success\": false,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"error\": \"invalid_request\"\n}"
                        }
                    ]
                },
                {
                    "name": "Delete Delivery",
                    "request": {
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "url": {
                            "raw": "{{base_url}}/delivery/{{delivery_id}}",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "delivery",
                                "{{delivery_id}}"
                            ],
                            "query": []
                        },
                        "description": "Permanently delete a delivery. Only allowed while it's status is CREATED, QUOTED or SERVICE_SELECTED.Requires ownership or the owning API client. CREATED, QUOTED and SERVICE_SELECTED deliveries may be deleted.\n\n### PHP (cURL)\n```php\n// Replace the {{...}} placeholders with your integration settings.\n// Requires ownership or the owning API client. CREATED, QUOTED and SERVICE_SELECTED deliveries may be deleted.\n$request = curl_init('{{base_url}}/delivery/{{delivery_id}}');\ncurl_setopt_array($request, [\n    CURLOPT_CUSTOMREQUEST => 'DELETE',\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_HTTPHEADER => array (\n  0 => 'Authorization: Bearer {{access_token}}',\n),\n]);\n$raw = curl_exec($request);\nif ($raw === false) { throw new RuntimeException(curl_error($request)); }\n$status = curl_getinfo($request, CURLINFO_HTTP_CODE);\n$contentType = curl_getinfo($request, CURLINFO_CONTENT_TYPE) ?: \"\";\ncurl_close($request);\n$result = str_contains($contentType, \"application/json\") ? json_decode($raw, true, 512, JSON_THROW_ON_ERROR) : $raw;\nvar_dump($status, $result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```\n\n### JavaScript (Node.js)\n```javascript\n// Node.js backend example. Replace the {{...}} placeholders.\n// Requires ownership or the owning API client. CREATED, QUOTED and SERVICE_SELECTED deliveries may be deleted.\nconst headers = {\n    \"Authorization\": \"Bearer {{access_token}}\"\n};\nconst response = await fetch(\"{{base_url}}/delivery/{{delivery_id}}\", {\n  method: \"DELETE\", headers });\nconst contentType = response.headers.get(\"content-type\") || \"\";\nconst result = contentType.includes(\"application/json\") ? await response.json() : await response.text();\nconsole.log(response.status, result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```"
                    },
                    "response": [
                        {
                            "name": "Delete an undispatched delivery",
                            "originalRequest": {
                                "method": "DELETE",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/delivery/{{delivery_id}}",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "delivery",
                                        "{{delivery_id}}"
                                    ],
                                    "query": []
                                },
                                "description": "Permanently delete a delivery. Only allowed while it's status is CREATED, QUOTED or SERVICE_SELECTED.Requires ownership or the owning API client. CREATED, QUOTED and SERVICE_SELECTED deliveries may be deleted."
                            },
                            "status": "OK",
                            "code": 200,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Delivery deleted\",\n    \"success\": true,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    }\n}"
                        },
                        {
                            "name": "Invalid bearer access token",
                            "originalRequest": {
                                "method": "DELETE",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/delivery/{{delivery_id}}",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "delivery",
                                        "{{delivery_id}}"
                                    ],
                                    "query": []
                                },
                                "description": "Permanently delete a delivery. Only allowed while it's status is CREATED, QUOTED or SERVICE_SELECTED.Use an invalid or revoked bearer access token. Authentication fails before this operation is performed."
                            },
                            "status": "Unauthorized",
                            "code": 401,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"error\": \"access_denied\",\n    \"error_description\": \"The resource owner or authorization server denied the request.\",\n    \"hint\": \"Access token could not be verified\",\n    \"message\": \"The resource owner or authorization server denied the request.\"\n}"
                        },
                        {
                            "name": "Dispatched delivery cannot be deleted",
                            "originalRequest": {
                                "method": "DELETE",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/delivery/{{delivery_id}}",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "delivery",
                                        "{{delivery_id}}"
                                    ],
                                    "query": []
                                },
                                "description": "Permanently delete a delivery. Only allowed while it's status is CREATED, QUOTED or SERVICE_SELECTED.Use a DISPATCHED delivery."
                            },
                            "status": "Conflict",
                            "code": 409,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Delivery (DISPATCHED) cannot be deleted at this stage\",\n    \"success\": false,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"error\": \"conflict\"\n}"
                        }
                    ]
                },
                {
                    "name": "Check Postal Code",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "url": {
                            "raw": "{{base_url}}/delivery/check_postal_code/{{postal_code}}?city=Johannesburg&suburb=Sandton",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "delivery",
                                "check_postal_code",
                                "{{postal_code}}"
                            ],
                            "query": [
                                {
                                    "key": "city",
                                    "value": "Johannesburg"
                                },
                                {
                                    "key": "suburb",
                                    "value": "Sandton"
                                }
                            ]
                        },
                        "description": "Check the validity of a postal codeSupply both city and suburb for courier address validation. postal_code is a path variable.\n\n### PHP (cURL)\n```php\n// Replace the {{...}} placeholders with your integration settings.\n// Supply both city and suburb for courier address validation. postal_code is a path variable.\n$request = curl_init('{{base_url}}/delivery/check_postal_code/{{postal_code}}?city=Johannesburg&suburb=Sandton');\ncurl_setopt_array($request, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_HTTPHEADER => array (\n  0 => 'Authorization: Bearer {{access_token}}',\n),\n]);\n$raw = curl_exec($request);\nif ($raw === false) { throw new RuntimeException(curl_error($request)); }\n$status = curl_getinfo($request, CURLINFO_HTTP_CODE);\n$contentType = curl_getinfo($request, CURLINFO_CONTENT_TYPE) ?: \"\";\ncurl_close($request);\n$result = str_contains($contentType, \"application/json\") ? json_decode($raw, true, 512, JSON_THROW_ON_ERROR) : $raw;\nvar_dump($status, $result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```\n\n### JavaScript (Node.js)\n```javascript\n// Node.js backend example. Replace the {{...}} placeholders.\n// Supply both city and suburb for courier address validation. postal_code is a path variable.\nconst headers = {\n    \"Authorization\": \"Bearer {{access_token}}\"\n};\nconst response = await fetch(\"{{base_url}}/delivery/check_postal_code/{{postal_code}}?city=Johannesburg&suburb=Sandton\", {\n  method: \"GET\", headers });\nconst contentType = response.headers.get(\"content-type\") || \"\";\nconst result = contentType.includes(\"application/json\") ? await response.json() : await response.text();\nconsole.log(response.status, result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```"
                    },
                    "response": [
                        {
                            "name": "Courier validates an address",
                            "originalRequest": {
                                "method": "GET",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/delivery/check_postal_code/{{postal_code}}?city=Johannesburg&suburb=Sandton",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "delivery",
                                        "check_postal_code",
                                        "{{postal_code}}"
                                    ],
                                    "query": [
                                        {
                                            "key": "city",
                                            "value": "Johannesburg"
                                        },
                                        {
                                            "key": "suburb",
                                            "value": "Sandton"
                                        }
                                    ]
                                },
                                "description": "Check the validity of a postal codeSupply both city and suburb for courier address validation. postal_code is a path variable."
                            },
                            "status": "OK",
                            "code": 200,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Address validated by courier\",\n    \"success\": true,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    }\n}"
                        },
                        {
                            "name": "Missing city for postal code validation",
                            "originalRequest": {
                                "method": "GET",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/delivery/check_postal_code/{{postal_code}}",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "delivery",
                                        "check_postal_code",
                                        "{{postal_code}}"
                                    ],
                                    "query": []
                                },
                                "description": "Check the validity of a postal code"
                            },
                            "status": "Bad Request",
                            "code": 400,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"success\": false,\n    \"access\": true,\n    \"message\": \"Suburb, Postal code or city not passed.\",\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"error\": \"invalid_request\"\n}"
                        },
                        {
                            "name": "Invalid bearer access token",
                            "originalRequest": {
                                "method": "GET",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/delivery/check_postal_code/{{postal_code}}?city=Johannesburg&suburb=Sandton",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "delivery",
                                        "check_postal_code",
                                        "{{postal_code}}"
                                    ],
                                    "query": [
                                        {
                                            "key": "city",
                                            "value": "Johannesburg"
                                        },
                                        {
                                            "key": "suburb",
                                            "value": "Sandton"
                                        }
                                    ]
                                },
                                "description": "Check the validity of a postal codeUse an invalid or revoked bearer access token. Authentication fails before this operation is performed."
                            },
                            "status": "Unauthorized",
                            "code": 401,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"error\": \"access_denied\",\n    \"error_description\": \"The resource owner or authorization server denied the request.\",\n    \"hint\": \"Access token could not be verified\",\n    \"message\": \"The resource owner or authorization server denied the request.\"\n}"
                        },
                        {
                            "name": "Courier cannot validate the address",
                            "originalRequest": {
                                "method": "GET",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/delivery/check_postal_code/{{postal_code}}?city=Johannesburg&suburb=Sandton",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "delivery",
                                        "check_postal_code",
                                        "{{postal_code}}"
                                    ],
                                    "query": [
                                        {
                                            "key": "city",
                                            "value": "Johannesburg"
                                        },
                                        {
                                            "key": "suburb",
                                            "value": "Sandton"
                                        }
                                    ]
                                },
                                "description": "Check the validity of a postal codeSupply both city and suburb for courier address validation. postal_code is a path variable."
                            },
                            "status": "Unprocessable Entity",
                            "code": 422,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Address not valid for courier\",\n    \"success\": false,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"error\": \"validation_failed\"\n}"
                        }
                    ]
                },
                {
                    "name": "Estimate Delivery Quote",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "url": {
                            "raw": "{{base_url}}/delivery/estimated_quote",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "delivery",
                                "estimated_quote"
                            ],
                            "query": []
                        },
                        "description": "Get an estimated quotaion for the passed in items and pickup and delivery addresses.The server validates the supplied addresses and returns courier-specific rates. No persistent delivery is created. Dimensions are millimetres; weight is kilograms.\n\n### PHP (cURL)\n```php\n// Replace the {{...}} placeholders with your integration settings.\n// The server validates the supplied addresses and returns courier-specific rates. No persistent delivery is created. Dimensions are millimetres; weight is kilograms.\n$request = curl_init('{{base_url}}/delivery/estimated_quote');\ncurl_setopt_array($request, [\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_HTTPHEADER => array (\n  0 => 'Authorization: Bearer {{access_token}}',\n  1 => 'Content-Type: application/json',\n),\n    CURLOPT_POSTFIELDS => json_encode(array (\n  'value' => 500,\n  'insurance' => 0,\n  'products' => \n  array (\n    0 => \n    array (\n      'quantity' => 1,\n      'description' => 'Example parcel',\n      'weight' => 1.5,\n      'length' => 300,\n      'width' => 200,\n      'height' => 100,\n    ),\n  ),\n  'pickup_contact_name' => 'Example Contact',\n  'pickup_contact_number_1' => '0100000000',\n  'pickup_contact_number_2' => '',\n  'pickup_street' => '1 Example Road',\n  'pickup_suburb' => 'Sandton',\n  'pickup_city' => 'Johannesburg',\n  'pickup_province' => 'Gauteng',\n  'pickup_country' => 'South Africa',\n  'pickup_postal_code' => '2196',\n  'pickup_comments' => 'Example reception',\n  'delivery_contact_name' => 'Example Contact',\n  'delivery_contact_number_1' => '0100000000',\n  'delivery_contact_number_2' => '',\n  'delivery_street' => '2 Example Road',\n  'delivery_suburb' => 'Sandton',\n  'delivery_city' => 'Johannesburg',\n  'delivery_province' => 'Gauteng',\n  'delivery_country' => 'South Africa',\n  'delivery_postal_code' => '2196',\n  'delivery_comments' => 'Example reception',\n), JSON_THROW_ON_ERROR),\n]);\n$raw = curl_exec($request);\nif ($raw === false) { throw new RuntimeException(curl_error($request)); }\n$status = curl_getinfo($request, CURLINFO_HTTP_CODE);\n$contentType = curl_getinfo($request, CURLINFO_CONTENT_TYPE) ?: \"\";\ncurl_close($request);\n$result = str_contains($contentType, \"application/json\") ? json_decode($raw, true, 512, JSON_THROW_ON_ERROR) : $raw;\nvar_dump($status, $result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```\n\n### JavaScript (Node.js)\n```javascript\n// Node.js backend example. Replace the {{...}} placeholders.\n// The server validates the supplied addresses and returns courier-specific rates. No persistent delivery is created. Dimensions are millimetres; weight is kilograms.\nconst headers = {\n    \"Content-Type\": \"application/json\",\n    \"Authorization\": \"Bearer {{access_token}}\"\n};\nconst body = JSON.stringify({\n    \"value\": 500,\n    \"insurance\": 0,\n    \"products\": [\n        {\n            \"quantity\": 1,\n            \"description\": \"Example parcel\",\n            \"weight\": 1.5,\n            \"length\": 300,\n            \"width\": 200,\n            \"height\": 100\n        }\n    ],\n    \"pickup_contact_name\": \"Example Contact\",\n    \"pickup_contact_number_1\": \"0100000000\",\n    \"pickup_contact_number_2\": \"\",\n    \"pickup_street\": \"1 Example Road\",\n    \"pickup_suburb\": \"Sandton\",\n    \"pickup_city\": \"Johannesburg\",\n    \"pickup_province\": \"Gauteng\",\n    \"pickup_country\": \"South Africa\",\n    \"pickup_postal_code\": \"2196\",\n    \"pickup_comments\": \"Example reception\",\n    \"delivery_contact_name\": \"Example Contact\",\n    \"delivery_contact_number_1\": \"0100000000\",\n    \"delivery_contact_number_2\": \"\",\n    \"delivery_street\": \"2 Example Road\",\n    \"delivery_suburb\": \"Sandton\",\n    \"delivery_city\": \"Johannesburg\",\n    \"delivery_province\": \"Gauteng\",\n    \"delivery_country\": \"South Africa\",\n    \"delivery_postal_code\": \"2196\",\n    \"delivery_comments\": \"Example reception\"\n});\nconst response = await fetch(\"{{base_url}}/delivery/estimated_quote\", {\n  method: \"POST\", headers, body });\nconst contentType = response.headers.get(\"content-type\") || \"\";\nconst result = contentType.includes(\"application/json\") ? await response.json() : await response.text();\nconsole.log(response.status, result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"value\": 500,\n    \"insurance\": 0,\n    \"products\": [\n        {\n            \"quantity\": 1,\n            \"description\": \"Example parcel\",\n            \"weight\": 1.5,\n            \"length\": 300,\n            \"width\": 200,\n            \"height\": 100\n        }\n    ],\n    \"pickup_contact_name\": \"Example Contact\",\n    \"pickup_contact_number_1\": \"0100000000\",\n    \"pickup_contact_number_2\": \"\",\n    \"pickup_street\": \"1 Example Road\",\n    \"pickup_suburb\": \"Sandton\",\n    \"pickup_city\": \"Johannesburg\",\n    \"pickup_province\": \"Gauteng\",\n    \"pickup_country\": \"South Africa\",\n    \"pickup_postal_code\": \"2196\",\n    \"pickup_comments\": \"Example reception\",\n    \"delivery_contact_name\": \"Example Contact\",\n    \"delivery_contact_number_1\": \"0100000000\",\n    \"delivery_contact_number_2\": \"\",\n    \"delivery_street\": \"2 Example Road\",\n    \"delivery_suburb\": \"Sandton\",\n    \"delivery_city\": \"Johannesburg\",\n    \"delivery_province\": \"Gauteng\",\n    \"delivery_country\": \"South Africa\",\n    \"delivery_postal_code\": \"2196\",\n    \"delivery_comments\": \"Example reception\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": [
                        {
                            "name": "Estimate a courier quote before creating a delivery",
                            "originalRequest": {
                                "method": "POST",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/delivery/estimated_quote",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "delivery",
                                        "estimated_quote"
                                    ],
                                    "query": []
                                },
                                "description": "Get an estimated quotaion for the passed in items and pickup and delivery addresses.The server validates the supplied addresses and returns courier-specific rates. No persistent delivery is created. Dimensions are millimetres; weight is kilograms.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n    \"value\": 500,\n    \"insurance\": 0,\n    \"products\": [\n        {\n            \"quantity\": 1,\n            \"description\": \"Example parcel\",\n            \"weight\": 1.5,\n            \"length\": 300,\n            \"width\": 200,\n            \"height\": 100\n        }\n    ],\n    \"pickup_contact_name\": \"Example Contact\",\n    \"pickup_contact_number_1\": \"0100000000\",\n    \"pickup_contact_number_2\": \"\",\n    \"pickup_street\": \"1 Example Road\",\n    \"pickup_suburb\": \"Sandton\",\n    \"pickup_city\": \"Johannesburg\",\n    \"pickup_province\": \"Gauteng\",\n    \"pickup_country\": \"South Africa\",\n    \"pickup_postal_code\": \"2196\",\n    \"pickup_comments\": \"Example reception\",\n    \"delivery_contact_name\": \"Example Contact\",\n    \"delivery_contact_number_1\": \"0100000000\",\n    \"delivery_contact_number_2\": \"\",\n    \"delivery_street\": \"2 Example Road\",\n    \"delivery_suburb\": \"Sandton\",\n    \"delivery_city\": \"Johannesburg\",\n    \"delivery_province\": \"Gauteng\",\n    \"delivery_country\": \"South Africa\",\n    \"delivery_postal_code\": \"2196\",\n    \"delivery_comments\": \"Example reception\"\n}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "OK",
                            "code": 200,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Delivery quote estimated\",\n    \"success\": true,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"data\": {\n        \"quoteno\": \"EXAMPLE-QUOTE-501\",\n        \"rates\": [\n            {\n                \"service\": \"ECO\",\n                \"name\": \"DSV Economy\",\n                \"duedate\": \"2026-10-29\",\n                \"subtotal\": 100,\n                \"total\": 115,\n                \"insurance\": \"0.00\"\n            }\n        ]\n    }\n}"
                        },
                        {
                            "name": "Invalid bearer access token",
                            "originalRequest": {
                                "method": "POST",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/delivery/estimated_quote",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "delivery",
                                        "estimated_quote"
                                    ],
                                    "query": []
                                },
                                "description": "Get an estimated quotaion for the passed in items and pickup and delivery addresses.Use an invalid or revoked bearer access token. Authentication fails before this operation is performed.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n    \"value\": 500,\n    \"insurance\": 0,\n    \"products\": [\n        {\n            \"quantity\": 1,\n            \"description\": \"Example parcel\",\n            \"weight\": 1.5,\n            \"length\": 300,\n            \"width\": 200,\n            \"height\": 100\n        }\n    ],\n    \"pickup_contact_name\": \"Example Contact\",\n    \"pickup_contact_number_1\": \"0100000000\",\n    \"pickup_contact_number_2\": \"\",\n    \"pickup_street\": \"1 Example Road\",\n    \"pickup_suburb\": \"Sandton\",\n    \"pickup_city\": \"Johannesburg\",\n    \"pickup_province\": \"Gauteng\",\n    \"pickup_country\": \"South Africa\",\n    \"pickup_postal_code\": \"2196\",\n    \"pickup_comments\": \"Example reception\",\n    \"delivery_contact_name\": \"Example Contact\",\n    \"delivery_contact_number_1\": \"0100000000\",\n    \"delivery_contact_number_2\": \"\",\n    \"delivery_street\": \"2 Example Road\",\n    \"delivery_suburb\": \"Sandton\",\n    \"delivery_city\": \"Johannesburg\",\n    \"delivery_province\": \"Gauteng\",\n    \"delivery_country\": \"South Africa\",\n    \"delivery_postal_code\": \"2196\",\n    \"delivery_comments\": \"Example reception\"\n}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "Unauthorized",
                            "code": 401,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"error\": \"access_denied\",\n    \"error_description\": \"The resource owner or authorization server denied the request.\",\n    \"hint\": \"Access token could not be verified\",\n    \"message\": \"The resource owner or authorization server denied the request.\"\n}"
                        },
                        {
                            "name": "Estimated quote has no products",
                            "originalRequest": {
                                "method": "POST",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/delivery/estimated_quote",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "delivery",
                                        "estimated_quote"
                                    ],
                                    "query": []
                                },
                                "description": "Get an estimated quotaion for the passed in items and pickup and delivery addresses.Use courier-valid addresses and an empty products list.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n    \"value\": 500,\n    \"insurance\": 0,\n    \"products\": [],\n    \"pickup_contact_name\": \"Example Contact\",\n    \"pickup_contact_number_1\": \"0100000000\",\n    \"pickup_contact_number_2\": \"\",\n    \"pickup_street\": \"1 Example Road\",\n    \"pickup_suburb\": \"Sandton\",\n    \"pickup_city\": \"Johannesburg\",\n    \"pickup_province\": \"Gauteng\",\n    \"pickup_country\": \"South Africa\",\n    \"pickup_postal_code\": \"2196\",\n    \"pickup_comments\": \"Example reception\",\n    \"delivery_contact_name\": \"Example Contact\",\n    \"delivery_contact_number_1\": \"0100000000\",\n    \"delivery_contact_number_2\": \"\",\n    \"delivery_street\": \"2 Example Road\",\n    \"delivery_suburb\": \"Sandton\",\n    \"delivery_city\": \"Johannesburg\",\n    \"delivery_province\": \"Gauteng\",\n    \"delivery_country\": \"South Africa\",\n    \"delivery_postal_code\": \"2196\",\n    \"delivery_comments\": \"Example reception\"\n}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "Bad Request",
                            "code": 400,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"No products provided\",\n    \"success\": false,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"error\": \"invalid_request\"\n}"
                        }
                    ]
                },
                {
                    "name": "Create Delivery Quote",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "url": {
                            "raw": "{{base_url}}/delivery/{{delivery_id}}/quote",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "delivery",
                                "{{delivery_id}}",
                                "quote"
                            ],
                            "query": []
                        },
                        "description": "Create a quotaion for an existing delivery.Both addresses must have passed courier validation. Parcel dimensions are millimetres and weight is kilograms. Returned rates and pricing vary by courier.\n\n### PHP (cURL)\n```php\n// Replace the {{...}} placeholders with your integration settings.\n// Both addresses must have passed courier validation. Parcel dimensions are millimetres and weight is kilograms. Returned rates and pricing vary by courier.\n$request = curl_init('{{base_url}}/delivery/{{delivery_id}}/quote');\ncurl_setopt_array($request, [\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_HTTPHEADER => array (\n  0 => 'Authorization: Bearer {{access_token}}',\n  1 => 'Content-Type: application/json',\n),\n    CURLOPT_POSTFIELDS => json_encode(array (\n  'value' => 500,\n  'insurance' => 0,\n  'products' => \n  array (\n    0 => \n    array (\n      'quantity' => 1,\n      'description' => 'Example parcel',\n      'weight' => 1.5,\n      'length' => 300,\n      'width' => 200,\n      'height' => 100,\n    ),\n  ),\n), JSON_THROW_ON_ERROR),\n]);\n$raw = curl_exec($request);\nif ($raw === false) { throw new RuntimeException(curl_error($request)); }\n$status = curl_getinfo($request, CURLINFO_HTTP_CODE);\n$contentType = curl_getinfo($request, CURLINFO_CONTENT_TYPE) ?: \"\";\ncurl_close($request);\n$result = str_contains($contentType, \"application/json\") ? json_decode($raw, true, 512, JSON_THROW_ON_ERROR) : $raw;\nvar_dump($status, $result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```\n\n### JavaScript (Node.js)\n```javascript\n// Node.js backend example. Replace the {{...}} placeholders.\n// Both addresses must have passed courier validation. Parcel dimensions are millimetres and weight is kilograms. Returned rates and pricing vary by courier.\nconst headers = {\n    \"Content-Type\": \"application/json\",\n    \"Authorization\": \"Bearer {{access_token}}\"\n};\nconst body = JSON.stringify({\n    \"value\": 500,\n    \"insurance\": 0,\n    \"products\": [\n        {\n            \"quantity\": 1,\n            \"description\": \"Example parcel\",\n            \"weight\": 1.5,\n            \"length\": 300,\n            \"width\": 200,\n            \"height\": 100\n        }\n    ]\n});\nconst response = await fetch(\"{{base_url}}/delivery/{{delivery_id}}/quote\", {\n  method: \"POST\", headers, body });\nconst contentType = response.headers.get(\"content-type\") || \"\";\nconst result = contentType.includes(\"application/json\") ? await response.json() : await response.text();\nconsole.log(response.status, result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"value\": 500,\n    \"insurance\": 0,\n    \"products\": [\n        {\n            \"quantity\": 1,\n            \"description\": \"Example parcel\",\n            \"weight\": 1.5,\n            \"length\": 300,\n            \"width\": 200,\n            \"height\": 100\n        }\n    ]\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": [
                        {
                            "name": "Quote parcels for a validated delivery",
                            "originalRequest": {
                                "method": "POST",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/delivery/{{delivery_id}}/quote",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "delivery",
                                        "{{delivery_id}}",
                                        "quote"
                                    ],
                                    "query": []
                                },
                                "description": "Create a quotaion for an existing delivery.Both addresses must have passed courier validation. Parcel dimensions are millimetres and weight is kilograms. Returned rates and pricing vary by courier.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n    \"value\": 500,\n    \"insurance\": 0,\n    \"products\": [\n        {\n            \"quantity\": 1,\n            \"description\": \"Example parcel\",\n            \"weight\": 1.5,\n            \"length\": 300,\n            \"width\": 200,\n            \"height\": 100\n        }\n    ]\n}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "OK",
                            "code": 200,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Delivery quote created\",\n    \"success\": true,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"data\": {\n        \"quoteno\": \"EXAMPLE-QUOTE-501\",\n        \"rates\": [\n            {\n                \"service\": \"ECO\",\n                \"name\": \"DSV Economy\",\n                \"duedate\": \"2026-10-29\",\n                \"subtotal\": 100,\n                \"total\": 115,\n                \"insurance\": \"0.00\"\n            }\n        ]\n    }\n}"
                        },
                        {
                            "name": "Invalid bearer access token",
                            "originalRequest": {
                                "method": "POST",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/delivery/{{delivery_id}}/quote",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "delivery",
                                        "{{delivery_id}}",
                                        "quote"
                                    ],
                                    "query": []
                                },
                                "description": "Create a quotaion for an existing delivery.Use an invalid or revoked bearer access token. Authentication fails before this operation is performed.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n    \"value\": 500,\n    \"insurance\": 0,\n    \"products\": [\n        {\n            \"quantity\": 1,\n            \"description\": \"Example parcel\",\n            \"weight\": 1.5,\n            \"length\": 300,\n            \"width\": 200,\n            \"height\": 100\n        }\n    ]\n}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "Unauthorized",
                            "code": 401,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"error\": \"access_denied\",\n    \"error_description\": \"The resource owner or authorization server denied the request.\",\n    \"hint\": \"Access token could not be verified\",\n    \"message\": \"The resource owner or authorization server denied the request.\"\n}"
                        },
                        {
                            "name": "Quote request has no products",
                            "originalRequest": {
                                "method": "POST",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/delivery/{{delivery_id}}/quote",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "delivery",
                                        "{{delivery_id}}",
                                        "quote"
                                    ],
                                    "query": []
                                },
                                "description": "Create a quotaion for an existing delivery.Use a delivery with courier-validated addresses.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n    \"value\": 500,\n    \"insurance\": 0,\n    \"products\": []\n}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "Bad Request",
                            "code": 400,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"No products provided\",\n    \"success\": false,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"error\": \"invalid_request\"\n}"
                        }
                    ]
                },
                {
                    "name": "Update Delivery Quote service",
                    "request": {
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "url": {
                            "raw": "{{base_url}}/delivery/{{delivery_id}}/quote",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "delivery",
                                "{{delivery_id}}",
                                "quote"
                            ],
                            "query": []
                        },
                        "description": "Update the service option of an existing delivery.Use a QUOTED delivery and a service code returned by its quote. This legacy service-selection handler uses the GlobeFlight quote update API; use a compatible courier quote.\n\n### PHP (cURL)\n```php\n// Replace the {{...}} placeholders with your integration settings.\n// Use a QUOTED delivery and a service code returned by its quote. This legacy service-selection handler uses the GlobeFlight quote update API; use a compatible courier quote.\n$request = curl_init('{{base_url}}/delivery/{{delivery_id}}/quote');\ncurl_setopt_array($request, [\n    CURLOPT_CUSTOMREQUEST => 'PUT',\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_HTTPHEADER => array (\n  0 => 'Authorization: Bearer {{access_token}}',\n  1 => 'Content-Type: application/json',\n),\n    CURLOPT_POSTFIELDS => json_encode(array (\n  'service' => '{{courier_service}}',\n), JSON_THROW_ON_ERROR),\n]);\n$raw = curl_exec($request);\nif ($raw === false) { throw new RuntimeException(curl_error($request)); }\n$status = curl_getinfo($request, CURLINFO_HTTP_CODE);\n$contentType = curl_getinfo($request, CURLINFO_CONTENT_TYPE) ?: \"\";\ncurl_close($request);\n$result = str_contains($contentType, \"application/json\") ? json_decode($raw, true, 512, JSON_THROW_ON_ERROR) : $raw;\nvar_dump($status, $result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```\n\n### JavaScript (Node.js)\n```javascript\n// Node.js backend example. Replace the {{...}} placeholders.\n// Use a QUOTED delivery and a service code returned by its quote. This legacy service-selection handler uses the GlobeFlight quote update API; use a compatible courier quote.\nconst headers = {\n    \"Content-Type\": \"application/json\",\n    \"Authorization\": \"Bearer {{access_token}}\"\n};\nconst body = JSON.stringify({\n    \"service\": \"{{courier_service}}\"\n});\nconst response = await fetch(\"{{base_url}}/delivery/{{delivery_id}}/quote\", {\n  method: \"PUT\", headers, body });\nconst contentType = response.headers.get(\"content-type\") || \"\";\nconst result = contentType.includes(\"application/json\") ? await response.json() : await response.text();\nconsole.log(response.status, result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"service\": \"{{courier_service}}\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": [
                        {
                            "name": "Select an available quoted service",
                            "originalRequest": {
                                "method": "PUT",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/delivery/{{delivery_id}}/quote",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "delivery",
                                        "{{delivery_id}}",
                                        "quote"
                                    ],
                                    "query": []
                                },
                                "description": "Update the service option of an existing delivery.Use a QUOTED delivery and a service code returned by its quote. This legacy service-selection handler uses the GlobeFlight quote update API; use a compatible courier quote.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n    \"service\": \"{{courier_service}}\"\n}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "OK",
                            "code": 200,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Delivery quote updated\",\n    \"success\": true,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"data\": {\n        \"quoteno\": \"EXAMPLE-QUOTE-501\",\n        \"service\": \"ECO\",\n        \"subtotal\": 100,\n        \"vat\": 15,\n        \"total\": 115\n    }\n}"
                        },
                        {
                            "name": "Invalid bearer access token",
                            "originalRequest": {
                                "method": "PUT",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/delivery/{{delivery_id}}/quote",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "delivery",
                                        "{{delivery_id}}",
                                        "quote"
                                    ],
                                    "query": []
                                },
                                "description": "Update the service option of an existing delivery.Use an invalid or revoked bearer access token. Authentication fails before this operation is performed.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n    \"service\": \"{{courier_service}}\"\n}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "Unauthorized",
                            "code": 401,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"error\": \"access_denied\",\n    \"error_description\": \"The resource owner or authorization server denied the request.\",\n    \"hint\": \"Access token could not be verified\",\n    \"message\": \"The resource owner or authorization server denied the request.\"\n}"
                        },
                        {
                            "name": "Service selection requires a quote",
                            "originalRequest": {
                                "method": "PUT",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/delivery/{{delivery_id}}/quote",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "delivery",
                                        "{{delivery_id}}",
                                        "quote"
                                    ],
                                    "query": []
                                },
                                "description": "Update the service option of an existing delivery.Use an existing CREATED delivery.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n    \"service\": \"{{courier_service}}\"\n}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "Conflict",
                            "code": 409,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"The delivery has not been quoted yet\",\n    \"success\": false,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"error\": \"conflict\"\n}"
                        }
                    ]
                },
                {
                    "name": "Dispatch Delivery",
                    "request": {
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "url": {
                            "raw": "{{base_url}}/delivery/{{delivery_id}}/dispatch",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "delivery",
                                "{{delivery_id}}",
                                "dispatch"
                            ],
                            "query": []
                        },
                        "description": "Dispatch an existing delivery which has already been quoted and a service selected.Use a compatible selected service and sufficient wallet funds. The current DSV dispatch handler reports this warning after courier acceptance; check tracking and retrieve documents separately. The returned data is the pre-dispatch delivery snapshot.\n\n### PHP (cURL)\n```php\n// Replace the {{...}} placeholders with your integration settings.\n// Use a compatible selected service and sufficient wallet funds. The current DSV dispatch handler reports this warning after courier acceptance; check tracking and retrieve documents separately. The returned data is the pre-dispatch delivery snapshot.\n$request = curl_init('{{base_url}}/delivery/{{delivery_id}}/dispatch');\ncurl_setopt_array($request, [\n    CURLOPT_CUSTOMREQUEST => 'PUT',\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_HTTPHEADER => array (\n  0 => 'Authorization: Bearer {{access_token}}',\n),\n]);\n$raw = curl_exec($request);\nif ($raw === false) { throw new RuntimeException(curl_error($request)); }\n$status = curl_getinfo($request, CURLINFO_HTTP_CODE);\n$contentType = curl_getinfo($request, CURLINFO_CONTENT_TYPE) ?: \"\";\ncurl_close($request);\n$result = str_contains($contentType, \"application/json\") ? json_decode($raw, true, 512, JSON_THROW_ON_ERROR) : $raw;\nvar_dump($status, $result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```\n\n### JavaScript (Node.js)\n```javascript\n// Node.js backend example. Replace the {{...}} placeholders.\n// Use a compatible selected service and sufficient wallet funds. The current DSV dispatch handler reports this warning after courier acceptance; check tracking and retrieve documents separately. The returned data is the pre-dispatch delivery snapshot.\nconst headers = {\n    \"Authorization\": \"Bearer {{access_token}}\"\n};\nconst response = await fetch(\"{{base_url}}/delivery/{{delivery_id}}/dispatch\", {\n  method: \"PUT\", headers });\nconst contentType = response.headers.get(\"content-type\") || \"\";\nconst result = contentType.includes(\"application/json\") ? await response.json() : await response.text();\nconsole.log(response.status, result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```"
                    },
                    "response": [
                        {
                            "name": "Courier accepted; document retrieval warning",
                            "originalRequest": {
                                "method": "PUT",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/delivery/{{delivery_id}}/dispatch",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "delivery",
                                        "{{delivery_id}}",
                                        "dispatch"
                                    ],
                                    "query": []
                                },
                                "description": "Dispatch an existing delivery which has already been quoted and a service selected.Use a compatible selected service and sufficient wallet funds. The current DSV dispatch handler reports this warning after courier acceptance; check tracking and retrieve documents separately. The returned data is the pre-dispatch delivery snapshot."
                            },
                            "status": "OK",
                            "code": 200,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"The courier has been dispatched. Error saving Waybill and Label files. Please contact Appture Pay support.\",\n    \"success\": true,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"data\": {\n        \"id\": 501,\n        \"owner_id\": 456,\n        \"client_id\": 13,\n        \"pickup_address_id\": null,\n        \"pickup_courier_checked\": 1,\n        \"pickup_contact_name\": \"Example Contact\",\n        \"pickup_contact_number_1\": \"0100000000\",\n        \"pickup_contact_number_2\": \"\",\n        \"pickup_street\": \"1 Example Road\",\n        \"pickup_suburb\": \"Sandton\",\n        \"pickup_city\": \"Johannesburg\",\n        \"pickup_province\": \"Gauteng\",\n        \"pickup_country\": \"South Africa\",\n        \"pickup_postal_code\": \"2196\",\n        \"pickup_comments\": \"Example reception\",\n        \"delivery_address_id\": null,\n        \"delivery_courier_checked\": 1,\n        \"delivery_contact_name\": \"Example Contact\",\n        \"delivery_contact_number_1\": \"0100000000\",\n        \"delivery_contact_number_2\": \"\",\n        \"delivery_street\": \"2 Example Road\",\n        \"delivery_suburb\": \"Sandton\",\n        \"delivery_city\": \"Johannesburg\",\n        \"delivery_province\": \"Gauteng\",\n        \"delivery_country\": \"South Africa\",\n        \"delivery_postal_code\": \"2196\",\n        \"delivery_comments\": \"Example reception\",\n        \"quote_reference\": \"EXAMPLE-QUOTE-501\",\n        \"service\": \"ECO\",\n        \"subtotal\": null,\n        \"vat\": null,\n        \"total\": 115,\n        \"waybill_number\": null,\n        \"tracking_number\": null,\n        \"quote_items\": null,\n        \"quote_value\": null,\n        \"quote_insurance\": null,\n        \"quote_dump\": null,\n        \"courier\": \"DSV_COURIER\",\n        \"status\": \"SERVICE_SELECTED\",\n        \"is_sandbox\": 1,\n        \"update_date\": \"2026-10-27 10:00:00\",\n        \"create_date\": \"2026-10-27 10:00:00\"\n    }\n}"
                        },
                        {
                            "name": "Invalid bearer access token",
                            "originalRequest": {
                                "method": "PUT",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/delivery/{{delivery_id}}/dispatch",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "delivery",
                                        "{{delivery_id}}",
                                        "dispatch"
                                    ],
                                    "query": []
                                },
                                "description": "Dispatch an existing delivery which has already been quoted and a service selected.Use an invalid or revoked bearer access token. Authentication fails before this operation is performed."
                            },
                            "status": "Unauthorized",
                            "code": 401,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"error\": \"access_denied\",\n    \"error_description\": \"The resource owner or authorization server denied the request.\",\n    \"hint\": \"Access token could not be verified\",\n    \"message\": \"The resource owner or authorization server denied the request.\"\n}"
                        },
                        {
                            "name": "A new delivery has no selected service",
                            "originalRequest": {
                                "method": "PUT",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/delivery/{{delivery_id}}/dispatch",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "delivery",
                                        "{{delivery_id}}",
                                        "dispatch"
                                    ],
                                    "query": []
                                },
                                "description": "Dispatch an existing delivery which has already been quoted and a service selected.Use a CREATED delivery that has not been quoted and selected."
                            },
                            "status": "Conflict",
                            "code": 409,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Delivery (CREATED) cannot be dispatched\",\n    \"success\": false,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"data\": {\n        \"id\": 501,\n        \"owner_id\": 456,\n        \"client_id\": 13,\n        \"pickup_address_id\": null,\n        \"pickup_courier_checked\": 1,\n        \"pickup_contact_name\": \"Example Contact\",\n        \"pickup_contact_number_1\": \"0100000000\",\n        \"pickup_contact_number_2\": \"\",\n        \"pickup_street\": \"1 Example Road\",\n        \"pickup_suburb\": \"Sandton\",\n        \"pickup_city\": \"Johannesburg\",\n        \"pickup_province\": \"Gauteng\",\n        \"pickup_country\": \"South Africa\",\n        \"pickup_postal_code\": \"2196\",\n        \"pickup_comments\": \"Example reception\",\n        \"delivery_address_id\": null,\n        \"delivery_courier_checked\": 1,\n        \"delivery_contact_name\": \"Example Contact\",\n        \"delivery_contact_number_1\": \"0100000000\",\n        \"delivery_contact_number_2\": \"\",\n        \"delivery_street\": \"2 Example Road\",\n        \"delivery_suburb\": \"Sandton\",\n        \"delivery_city\": \"Johannesburg\",\n        \"delivery_province\": \"Gauteng\",\n        \"delivery_country\": \"South Africa\",\n        \"delivery_postal_code\": \"2196\",\n        \"delivery_comments\": \"Example reception\",\n        \"quote_reference\": null,\n        \"service\": null,\n        \"subtotal\": null,\n        \"vat\": null,\n        \"total\": null,\n        \"waybill_number\": null,\n        \"tracking_number\": null,\n        \"quote_items\": null,\n        \"quote_value\": null,\n        \"quote_insurance\": null,\n        \"quote_dump\": null,\n        \"courier\": \"DSV_COURIER\",\n        \"status\": \"CREATED\",\n        \"is_sandbox\": 1,\n        \"update_date\": \"2026-10-27 10:00:00\",\n        \"create_date\": \"2026-10-27 10:00:00\"\n    },\n    \"error\": \"conflict\"\n}"
                        }
                    ]
                },
                {
                    "name": "Get Delivery Waybill",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application/pdf"
                            }
                        ],
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "url": {
                            "raw": "{{base_url}}/delivery/{{delivery_id}}/waybill",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "delivery",
                                "{{delivery_id}}",
                                "waybill"
                            ],
                            "query": []
                        },
                        "description": "Download the delivery's waybill as a PDF.Use a DISPATCHED delivery with an existing Waybill file. Save the successful binary response to disk; JSON errors use the normal envelope. The saved example intentionally omits the PDF bytes.\n\n### PHP (cURL)\n```php\n// Replace the {{...}} placeholders with your integration settings.\n// Use a DISPATCHED delivery with an existing Waybill file. Save the successful binary response to disk; JSON errors use the normal envelope. The saved example intentionally omits the PDF bytes.\n$request = curl_init('{{base_url}}/delivery/{{delivery_id}}/waybill');\ncurl_setopt_array($request, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_HTTPHEADER => array (\n  0 => 'Authorization: Bearer {{access_token}}',\n  1 => 'Accept: application/pdf',\n),\n]);\n$raw = curl_exec($request);\nif ($raw === false) { throw new RuntimeException(curl_error($request)); }\n$status = curl_getinfo($request, CURLINFO_HTTP_CODE);\n$contentType = curl_getinfo($request, CURLINFO_CONTENT_TYPE) ?: \"\";\ncurl_close($request);\nif (str_contains($contentType, \"application/pdf\")) {\n    file_put_contents('waybill.pdf', $raw);\n} else {\n    var_dump($status, json_decode($raw, true, 512, JSON_THROW_ON_ERROR));\n}\n```\n\n### JavaScript (Node.js)\n```javascript\n// Node.js backend example. Replace the {{...}} placeholders.\n// Use a DISPATCHED delivery with an existing Waybill file. Save the successful binary response to disk; JSON errors use the normal envelope. The saved example intentionally omits the PDF bytes.\nconst headers = {\n    \"Accept\": \"application/pdf\",\n    \"Authorization\": \"Bearer {{access_token}}\"\n};\nconst response = await fetch(\"{{base_url}}/delivery/{{delivery_id}}/waybill\", {\n  method: \"GET\", headers });\nconst contentType = response.headers.get(\"content-type\") || \"\";\nif (contentType.includes(\"application/pdf\")) {\n  await (await import(\"node:fs/promises\")).writeFile(\"waybill.pdf\", Buffer.from(await response.arrayBuffer()));\n} else { console.log(response.status, await response.json()); }\n```"
                    },
                    "response": [
                        {
                            "name": "Download the delivery waybill PDF",
                            "originalRequest": {
                                "method": "GET",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    },
                                    {
                                        "key": "Accept",
                                        "value": "application/pdf"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/delivery/{{delivery_id}}/waybill",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "delivery",
                                        "{{delivery_id}}",
                                        "waybill"
                                    ],
                                    "query": []
                                },
                                "description": "Download the delivery's waybill as a PDF.Use a DISPATCHED delivery with an existing Waybill file. Save the successful binary response to disk; JSON errors use the normal envelope. The saved example intentionally omits the PDF bytes."
                            },
                            "status": "OK",
                            "code": 200,
                            "_postman_previewlanguage": "text",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/pdf"
                                },
                                {
                                    "key": "Content-Disposition",
                                    "value": "attachment; filename='EXAMPLE_WAYBILL_Waybill.pdf'"
                                }
                            ],
                            "body": "[Binary PDF document; bytes omitted from this documentation example]"
                        },
                        {
                            "name": "Invalid bearer access token",
                            "originalRequest": {
                                "method": "GET",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    },
                                    {
                                        "key": "Accept",
                                        "value": "application/pdf"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/delivery/{{delivery_id}}/waybill",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "delivery",
                                        "{{delivery_id}}",
                                        "waybill"
                                    ],
                                    "query": []
                                },
                                "description": "Download the delivery's waybill as a PDF.Use an invalid or revoked bearer access token. Authentication fails before this operation is performed."
                            },
                            "status": "Unauthorized",
                            "code": 401,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"error\": \"access_denied\",\n    \"error_description\": \"The resource owner or authorization server denied the request.\",\n    \"hint\": \"Access token could not be verified\",\n    \"message\": \"The resource owner or authorization server denied the request.\"\n}"
                        },
                        {
                            "name": "Delivery is not dispatched yet",
                            "originalRequest": {
                                "method": "GET",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/delivery/{{delivery_id}}/waybill",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "delivery",
                                        "{{delivery_id}}",
                                        "waybill"
                                    ],
                                    "query": []
                                },
                                "description": "Download the delivery's waybill as a PDF.Use an existing CREATED or QUOTED delivery."
                            },
                            "status": "Conflict",
                            "code": 409,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Delivery has not been dispatched\",\n    \"success\": false,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"error\": \"conflict\"\n}"
                        },
                        {
                            "name": "Waybill file is unavailable",
                            "originalRequest": {
                                "method": "GET",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/delivery/{{delivery_id}}/waybill",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "delivery",
                                        "{{delivery_id}}",
                                        "waybill"
                                    ],
                                    "query": []
                                },
                                "description": "Download the delivery's waybill as a PDF.Use a DISPATCHED delivery whose document has not been saved."
                            },
                            "status": "Not Found",
                            "code": 404,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Waybill file does not exist\",\n    \"success\": false,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"error\": \"not_found\"\n}"
                        }
                    ]
                },
                {
                    "name": "Get Delivery Label",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application/pdf"
                            }
                        ],
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "url": {
                            "raw": "{{base_url}}/delivery/{{delivery_id}}/label",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "delivery",
                                "{{delivery_id}}",
                                "label"
                            ],
                            "query": []
                        },
                        "description": "Download the delivery's label(s) as a PDF.Use a DISPATCHED delivery with an existing Label file. Save the successful binary response to disk; JSON errors use the normal envelope. The saved example intentionally omits the PDF bytes.\n\n### PHP (cURL)\n```php\n// Replace the {{...}} placeholders with your integration settings.\n// Use a DISPATCHED delivery with an existing Label file. Save the successful binary response to disk; JSON errors use the normal envelope. The saved example intentionally omits the PDF bytes.\n$request = curl_init('{{base_url}}/delivery/{{delivery_id}}/label');\ncurl_setopt_array($request, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_HTTPHEADER => array (\n  0 => 'Authorization: Bearer {{access_token}}',\n  1 => 'Accept: application/pdf',\n),\n]);\n$raw = curl_exec($request);\nif ($raw === false) { throw new RuntimeException(curl_error($request)); }\n$status = curl_getinfo($request, CURLINFO_HTTP_CODE);\n$contentType = curl_getinfo($request, CURLINFO_CONTENT_TYPE) ?: \"\";\ncurl_close($request);\nif (str_contains($contentType, \"application/pdf\")) {\n    file_put_contents('label.pdf', $raw);\n} else {\n    var_dump($status, json_decode($raw, true, 512, JSON_THROW_ON_ERROR));\n}\n```\n\n### JavaScript (Node.js)\n```javascript\n// Node.js backend example. Replace the {{...}} placeholders.\n// Use a DISPATCHED delivery with an existing Label file. Save the successful binary response to disk; JSON errors use the normal envelope. The saved example intentionally omits the PDF bytes.\nconst headers = {\n    \"Accept\": \"application/pdf\",\n    \"Authorization\": \"Bearer {{access_token}}\"\n};\nconst response = await fetch(\"{{base_url}}/delivery/{{delivery_id}}/label\", {\n  method: \"GET\", headers });\nconst contentType = response.headers.get(\"content-type\") || \"\";\nif (contentType.includes(\"application/pdf\")) {\n  await (await import(\"node:fs/promises\")).writeFile(\"label.pdf\", Buffer.from(await response.arrayBuffer()));\n} else { console.log(response.status, await response.json()); }\n```"
                    },
                    "response": [
                        {
                            "name": "Download the delivery label PDF",
                            "originalRequest": {
                                "method": "GET",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    },
                                    {
                                        "key": "Accept",
                                        "value": "application/pdf"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/delivery/{{delivery_id}}/label",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "delivery",
                                        "{{delivery_id}}",
                                        "label"
                                    ],
                                    "query": []
                                },
                                "description": "Download the delivery's label(s) as a PDF.Use a DISPATCHED delivery with an existing Label file. Save the successful binary response to disk; JSON errors use the normal envelope. The saved example intentionally omits the PDF bytes."
                            },
                            "status": "OK",
                            "code": 200,
                            "_postman_previewlanguage": "text",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/pdf"
                                },
                                {
                                    "key": "Content-Disposition",
                                    "value": "attachment; filename='EXAMPLE_WAYBILL_Label.pdf'"
                                }
                            ],
                            "body": "[Binary PDF document; bytes omitted from this documentation example]"
                        },
                        {
                            "name": "Invalid bearer access token",
                            "originalRequest": {
                                "method": "GET",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    },
                                    {
                                        "key": "Accept",
                                        "value": "application/pdf"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/delivery/{{delivery_id}}/label",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "delivery",
                                        "{{delivery_id}}",
                                        "label"
                                    ],
                                    "query": []
                                },
                                "description": "Download the delivery's label(s) as a PDF.Use an invalid or revoked bearer access token. Authentication fails before this operation is performed."
                            },
                            "status": "Unauthorized",
                            "code": 401,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"error\": \"access_denied\",\n    \"error_description\": \"The resource owner or authorization server denied the request.\",\n    \"hint\": \"Access token could not be verified\",\n    \"message\": \"The resource owner or authorization server denied the request.\"\n}"
                        },
                        {
                            "name": "Delivery is not dispatched yet",
                            "originalRequest": {
                                "method": "GET",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/delivery/{{delivery_id}}/label",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "delivery",
                                        "{{delivery_id}}",
                                        "label"
                                    ],
                                    "query": []
                                },
                                "description": "Download the delivery's label(s) as a PDF.Use an existing CREATED or QUOTED delivery."
                            },
                            "status": "Conflict",
                            "code": 409,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Delivery has not been dispatched\",\n    \"success\": false,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"error\": \"conflict\"\n}"
                        },
                        {
                            "name": "Label file is unavailable",
                            "originalRequest": {
                                "method": "GET",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/delivery/{{delivery_id}}/label",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "delivery",
                                        "{{delivery_id}}",
                                        "label"
                                    ],
                                    "query": []
                                },
                                "description": "Download the delivery's label(s) as a PDF.Use a DISPATCHED delivery whose document has not been saved."
                            },
                            "status": "Not Found",
                            "code": 404,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Label file does not exist\",\n    \"success\": false,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"error\": \"not_found\"\n}"
                        }
                    ]
                },
                {
                    "name": "Get Delivery Tracking",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "url": {
                            "raw": "{{base_url}}/delivery/{{delivery_id}}/track",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "delivery",
                                "{{delivery_id}}",
                                "track"
                            ],
                            "query": []
                        },
                        "description": "Get tracking details for the delivery.Use a dispatched delivery with a courier tracking number. Event descriptions and dates are courier-provided.\n\n### PHP (cURL)\n```php\n// Replace the {{...}} placeholders with your integration settings.\n// Use a dispatched delivery with a courier tracking number. Event descriptions and dates are courier-provided.\n$request = curl_init('{{base_url}}/delivery/{{delivery_id}}/track');\ncurl_setopt_array($request, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_HTTPHEADER => array (\n  0 => 'Authorization: Bearer {{access_token}}',\n),\n]);\n$raw = curl_exec($request);\nif ($raw === false) { throw new RuntimeException(curl_error($request)); }\n$status = curl_getinfo($request, CURLINFO_HTTP_CODE);\n$contentType = curl_getinfo($request, CURLINFO_CONTENT_TYPE) ?: \"\";\ncurl_close($request);\n$result = str_contains($contentType, \"application/json\") ? json_decode($raw, true, 512, JSON_THROW_ON_ERROR) : $raw;\nvar_dump($status, $result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```\n\n### JavaScript (Node.js)\n```javascript\n// Node.js backend example. Replace the {{...}} placeholders.\n// Use a dispatched delivery with a courier tracking number. Event descriptions and dates are courier-provided.\nconst headers = {\n    \"Authorization\": \"Bearer {{access_token}}\"\n};\nconst response = await fetch(\"{{base_url}}/delivery/{{delivery_id}}/track\", {\n  method: \"GET\", headers });\nconst contentType = response.headers.get(\"content-type\") || \"\";\nconst result = contentType.includes(\"application/json\") ? await response.json() : await response.text();\nconsole.log(response.status, result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```"
                    },
                    "response": [
                        {
                            "name": "Load delivery tracking events",
                            "originalRequest": {
                                "method": "GET",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/delivery/{{delivery_id}}/track",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "delivery",
                                        "{{delivery_id}}",
                                        "track"
                                    ],
                                    "query": []
                                },
                                "description": "Get tracking details for the delivery.Use a dispatched delivery with a courier tracking number. Event descriptions and dates are courier-provided."
                            },
                            "status": "OK",
                            "code": 200,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Delivery and tracking loaded\",\n    \"success\": true,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"data\": {\n        \"id\": 501,\n        \"owner_id\": 456,\n        \"client_id\": 13,\n        \"pickup_address_id\": null,\n        \"pickup_courier_checked\": 1,\n        \"pickup_contact_name\": \"Example Contact\",\n        \"pickup_contact_number_1\": \"0100000000\",\n        \"pickup_contact_number_2\": \"\",\n        \"pickup_street\": \"1 Example Road\",\n        \"pickup_suburb\": \"Sandton\",\n        \"pickup_city\": \"Johannesburg\",\n        \"pickup_province\": \"Gauteng\",\n        \"pickup_country\": \"South Africa\",\n        \"pickup_postal_code\": \"2196\",\n        \"pickup_comments\": \"Example reception\",\n        \"delivery_address_id\": null,\n        \"delivery_courier_checked\": 1,\n        \"delivery_contact_name\": \"Example Contact\",\n        \"delivery_contact_number_1\": \"0100000000\",\n        \"delivery_contact_number_2\": \"\",\n        \"delivery_street\": \"2 Example Road\",\n        \"delivery_suburb\": \"Sandton\",\n        \"delivery_city\": \"Johannesburg\",\n        \"delivery_province\": \"Gauteng\",\n        \"delivery_country\": \"South Africa\",\n        \"delivery_postal_code\": \"2196\",\n        \"delivery_comments\": \"Example reception\",\n        \"quote_reference\": null,\n        \"service\": null,\n        \"subtotal\": null,\n        \"vat\": null,\n        \"total\": null,\n        \"waybill_number\": \"EXAMPLE_WAYBILL\",\n        \"tracking_number\": \"EXAMPLE_TRACKING\",\n        \"quote_items\": null,\n        \"quote_value\": null,\n        \"quote_insurance\": null,\n        \"quote_dump\": null,\n        \"courier\": \"DSV_COURIER\",\n        \"status\": \"DISPATCHED\",\n        \"is_sandbox\": 1,\n        \"update_date\": \"2026-10-27 10:00:00\",\n        \"create_date\": \"2026-10-27 10:00:00\",\n        \"tracking\": [\n            {\n                \"status\": \"COLLECTED\",\n                \"status_slug\": \"collected\",\n                \"status_sentence_case\": \"Collected\",\n                \"status_description\": \"Collected<br><b>2026-10-27 12:00:00</b>\",\n                \"status_group\": \"SUCCESS\",\n                \"create_date\": \"2026-10-27T12:00:00+02:00\"\n            }\n        ]\n    }\n}"
                        },
                        {
                            "name": "Invalid bearer access token",
                            "originalRequest": {
                                "method": "GET",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/delivery/{{delivery_id}}/track",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "delivery",
                                        "{{delivery_id}}",
                                        "track"
                                    ],
                                    "query": []
                                },
                                "description": "Get tracking details for the delivery.Use an invalid or revoked bearer access token. Authentication fails before this operation is performed."
                            },
                            "status": "Unauthorized",
                            "code": 401,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"error\": \"access_denied\",\n    \"error_description\": \"The resource owner or authorization server denied the request.\",\n    \"hint\": \"Access token could not be verified\",\n    \"message\": \"The resource owner or authorization server denied the request.\"\n}"
                        },
                        {
                            "name": "Created delivery has no tracking yet",
                            "originalRequest": {
                                "method": "GET",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/delivery/{{delivery_id}}/track",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "delivery",
                                        "{{delivery_id}}",
                                        "track"
                                    ],
                                    "query": []
                                },
                                "description": "Get tracking details for the delivery.Use a CREATED delivery."
                            },
                            "status": "Conflict",
                            "code": 409,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Delivery (CREATED) is not being tracked yet\",\n    \"success\": false,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"error\": \"conflict\"\n}"
                        }
                    ]
                }
            ]
        },
        {
            "name": "Pay Out",
            "item": [
                {
                    "name": "Create Pay Out",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "url": {
                            "raw": "{{base_url}}/pay_out",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "pay_out"
                            ],
                            "query": []
                        },
                        "description": "Create a resource.Requires a recently authenticated owner or confidential token (created within the last minute), a verified owned bank account and sufficient wallet balance. Bank withdrawals are live operations in this handler; a sandbox client does not make them simulated. Fees shown are illustrative.\n\n### PHP (cURL)\n```php\n// Replace the {{...}} placeholders with your integration settings.\n// Requires a recently authenticated owner or confidential token (created within the last minute), a verified owned bank account and sufficient wallet balance. Bank withdrawals are live operations in this handler; a sandbox client does not make them simulated. Fees shown are illustrative.\n$request = curl_init('{{base_url}}/pay_out');\ncurl_setopt_array($request, [\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_HTTPHEADER => array (\n  0 => 'Authorization: Bearer {{access_token}}',\n  1 => 'Content-Type: application/json',\n),\n    CURLOPT_POSTFIELDS => json_encode(array (\n  'reference' => 'EXAMPLE-WITHDRAWAL-701',\n  'description' => 'Example withdrawal',\n  'amount' => 100,\n  'bank_account_id' => '{{bank_account_id}}',\n), JSON_THROW_ON_ERROR),\n]);\n$raw = curl_exec($request);\nif ($raw === false) { throw new RuntimeException(curl_error($request)); }\n$status = curl_getinfo($request, CURLINFO_HTTP_CODE);\n$contentType = curl_getinfo($request, CURLINFO_CONTENT_TYPE) ?: \"\";\ncurl_close($request);\n$result = str_contains($contentType, \"application/json\") ? json_decode($raw, true, 512, JSON_THROW_ON_ERROR) : $raw;\nvar_dump($status, $result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```\n\n### JavaScript (Node.js)\n```javascript\n// Node.js backend example. Replace the {{...}} placeholders.\n// Requires a recently authenticated owner or confidential token (created within the last minute), a verified owned bank account and sufficient wallet balance. Bank withdrawals are live operations in this handler; a sandbox client does not make them simulated. Fees shown are illustrative.\nconst headers = {\n    \"Content-Type\": \"application/json\",\n    \"Authorization\": \"Bearer {{access_token}}\"\n};\nconst body = JSON.stringify({\n    \"reference\": \"EXAMPLE-WITHDRAWAL-701\",\n    \"description\": \"Example withdrawal\",\n    \"amount\": 100,\n    \"bank_account_id\": \"{{bank_account_id}}\"\n});\nconst response = await fetch(\"{{base_url}}/pay_out\", {\n  method: \"POST\", headers, body });\nconst contentType = response.headers.get(\"content-type\") || \"\";\nconst result = contentType.includes(\"application/json\") ? await response.json() : await response.text();\nconsole.log(response.status, result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"reference\": \"EXAMPLE-WITHDRAWAL-701\",\n    \"description\": \"Example withdrawal\",\n    \"amount\": 100,\n    \"bank_account_id\": \"{{bank_account_id}}\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": [
                        {
                            "name": "Request withdrawal to an owned bank account",
                            "originalRequest": {
                                "method": "POST",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/pay_out",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "pay_out"
                                    ],
                                    "query": []
                                },
                                "description": "Create a resource.Requires a recently authenticated owner or confidential token (created within the last minute), a verified owned bank account and sufficient wallet balance. Bank withdrawals are live operations in this handler; a sandbox client does not make them simulated. Fees shown are illustrative.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n    \"reference\": \"EXAMPLE-WITHDRAWAL-701\",\n    \"description\": \"Example withdrawal\",\n    \"amount\": 100,\n    \"bank_account_id\": \"{{bank_account_id}}\"\n}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "OK",
                            "code": 200,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Pay Out added\",\n    \"success\": true,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"data\": {\n        \"id\": 701,\n        \"owner_id\": 456,\n        \"receiver_name\": \"Example Account Holder\",\n        \"transaction_id\": null,\n        \"reference\": \"EXAMPLE-WITHDRAWAL-701\",\n        \"description\": \"Example withdrawal\",\n        \"amount\": 100,\n        \"cost\": 5.75,\n        \"bank_account_id\": 801,\n        \"bank_account_json\": null,\n        \"wallet_account_id\": null,\n        \"batch_reference\": null,\n        \"batch_code\": null,\n        \"status\": \"OPEN\",\n        \"status_message\": \"\",\n        \"retry_after\": null,\n        \"is_sandbox\": 0,\n        \"update_date\": \"2026-10-27 10:00:00\",\n        \"create_date\": \"2026-10-27 10:00:00\",\n        \"bank_account_number\": \"00000000000\"\n    }\n}"
                        },
                        {
                            "name": "Invalid bearer access token",
                            "originalRequest": {
                                "method": "POST",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/pay_out",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "pay_out"
                                    ],
                                    "query": []
                                },
                                "description": "Create a resource.Use an invalid or revoked bearer access token. Authentication fails before this operation is performed.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n    \"reference\": \"EXAMPLE-WITHDRAWAL-701\",\n    \"description\": \"Example withdrawal\",\n    \"amount\": 100,\n    \"bank_account_id\": \"{{bank_account_id}}\"\n}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "Unauthorized",
                            "code": 401,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"error\": \"access_denied\",\n    \"error_description\": \"The resource owner or authorization server denied the request.\",\n    \"hint\": \"Access token could not be verified\",\n    \"message\": \"The resource owner or authorization server denied the request.\"\n}"
                        },
                        {
                            "name": "Authentication session is too old for payout",
                            "originalRequest": {
                                "method": "POST",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/pay_out",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "pay_out"
                                    ],
                                    "query": []
                                },
                                "description": "Create a resource.Requires a recently authenticated owner or confidential token (created within the last minute), a verified owned bank account and sufficient wallet balance. Bank withdrawals are live operations in this handler; a sandbox client does not make them simulated. Fees shown are illustrative.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n    \"reference\": \"EXAMPLE-WITHDRAWAL-701\",\n    \"description\": \"Example withdrawal\",\n    \"amount\": 100,\n    \"bank_account_id\": \"{{bank_account_id}}\"\n}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "Forbidden",
                            "code": 403,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Session too old.\",\n    \"success\": false,\n    \"access\": false,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"error\": \"access_denied\"\n}"
                        },
                        {
                            "name": "Payout destination is missing",
                            "originalRequest": {
                                "method": "POST",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/pay_out",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "pay_out"
                                    ],
                                    "query": []
                                },
                                "description": "Create a resource.Use a fresh authorised session and sufficient wallet funds, but omit bank_account_id, bank_account_json and wallet_account_id.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n    \"reference\": \"EXAMPLE-WITHDRAWAL-701\",\n    \"description\": \"Example withdrawal\",\n    \"amount\": 100\n}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "Unprocessable Entity",
                            "code": 422,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Some fields are invalid\",\n    \"success\": false,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"data\": {\n        \"values\": {\n            \"reference\": \"EXAMPLE-WITHDRAWAL-701\",\n            \"description\": \"Example withdrawal\",\n            \"amount\": 100\n        },\n        \"invalid\": {\n            \"bank_account_id\": {\n                \"status\": \"danger\",\n                \"message\": \"Bank Account or Wallet Account ID is required.\"\n            },\n            \"wallet_account_id\": {\n                \"status\": \"danger\",\n                \"message\": \"Bank Account or Wallet Account ID is required.\"\n            }\n        }\n    },\n    \"error\": \"validation_failed\"\n}"
                        }
                    ]
                },
                {
                    "name": "Get Pay Out",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "url": {
                            "raw": "{{base_url}}/pay_out/{{pay_out_id}}",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "pay_out",
                                "{{pay_out_id}}"
                            ],
                            "query": []
                        },
                        "description": "Get a resource.Requires a confidential client token and a numeric pay_out_id owned by that authenticated user.\n\n### PHP (cURL)\n```php\n// Replace the {{...}} placeholders with your integration settings.\n// Requires a confidential client token and a numeric pay_out_id owned by that authenticated user.\n$request = curl_init('{{base_url}}/pay_out/{{pay_out_id}}');\ncurl_setopt_array($request, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_HTTPHEADER => array (\n  0 => 'Authorization: Bearer {{access_token}}',\n),\n]);\n$raw = curl_exec($request);\nif ($raw === false) { throw new RuntimeException(curl_error($request)); }\n$status = curl_getinfo($request, CURLINFO_HTTP_CODE);\n$contentType = curl_getinfo($request, CURLINFO_CONTENT_TYPE) ?: \"\";\ncurl_close($request);\n$result = str_contains($contentType, \"application/json\") ? json_decode($raw, true, 512, JSON_THROW_ON_ERROR) : $raw;\nvar_dump($status, $result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```\n\n### JavaScript (Node.js)\n```javascript\n// Node.js backend example. Replace the {{...}} placeholders.\n// Requires a confidential client token and a numeric pay_out_id owned by that authenticated user.\nconst headers = {\n    \"Authorization\": \"Bearer {{access_token}}\"\n};\nconst response = await fetch(\"{{base_url}}/pay_out/{{pay_out_id}}\", {\n  method: \"GET\", headers });\nconst contentType = response.headers.get(\"content-type\") || \"\";\nconst result = contentType.includes(\"application/json\") ? await response.json() : await response.text();\nconsole.log(response.status, result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```"
                    },
                    "response": [
                        {
                            "name": "Read an owned payout",
                            "originalRequest": {
                                "method": "GET",
                                "header": [],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/pay_out/{{pay_out_id}}",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "pay_out",
                                        "{{pay_out_id}}"
                                    ],
                                    "query": []
                                },
                                "description": "Get a resource.Requires a confidential client token and a numeric pay_out_id owned by that authenticated user."
                            },
                            "status": "OK",
                            "code": 200,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Pay Out loaded\",\n    \"success\": true,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"data\": {\n        \"id\": 701,\n        \"owner_id\": 456,\n        \"receiver_name\": \"Example Account Holder\",\n        \"transaction_id\": null,\n        \"reference\": \"EXAMPLE-WITHDRAWAL-701\",\n        \"description\": \"Example withdrawal\",\n        \"amount\": 100,\n        \"cost\": 5.75,\n        \"bank_account_id\": 801,\n        \"bank_account_json\": null,\n        \"wallet_account_id\": null,\n        \"batch_reference\": null,\n        \"batch_code\": null,\n        \"status\": \"OPEN\",\n        \"status_message\": \"\",\n        \"retry_after\": null,\n        \"is_sandbox\": 0,\n        \"update_date\": \"2026-10-27 10:00:00\",\n        \"create_date\": \"2026-10-27 10:00:00\"\n    }\n}"
                        },
                        {
                            "name": "Invalid bearer access token",
                            "originalRequest": {
                                "method": "GET",
                                "header": [],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/pay_out/{{pay_out_id}}",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "pay_out",
                                        "{{pay_out_id}}"
                                    ],
                                    "query": []
                                },
                                "description": "Get a resource.Use an invalid or revoked bearer access token. Authentication fails before this operation is performed."
                            },
                            "status": "Unauthorized",
                            "code": 401,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"error\": \"access_denied\",\n    \"error_description\": \"The resource owner or authorization server denied the request.\",\n    \"hint\": \"Access token could not be verified\",\n    \"message\": \"The resource owner or authorization server denied the request.\"\n}"
                        },
                        {
                            "name": "Payout was not found for this owner",
                            "originalRequest": {
                                "method": "GET",
                                "header": [],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/pay_out/{{pay_out_id}}",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "pay_out",
                                        "{{pay_out_id}}"
                                    ],
                                    "query": []
                                },
                                "description": "Get a resource.Use a confidential client token and a nonexistent or unowned pay_out_id."
                            },
                            "status": "Not Found",
                            "code": 404,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Pay Out not found\",\n    \"success\": false,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"error\": \"not_found\"\n}"
                        }
                    ]
                },
                {
                    "name": "Verify a bank account",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "url": {
                            "raw": "{{base_url}}/pay_out/verifyBankAccount",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "pay_out",
                                "verifyBankAccount"
                            ],
                            "query": []
                        },
                        "description": "Verify an account in realtime or not.This handler performs live, chargeable bank verification with sufficient wallet funds. Supply authorised account-holder data. Acceptance means PENDING, not verified; the callback supplies the eventual result. realtime is retained for compatibility and does not make the new API synchronous.\n\n### PHP (cURL)\n```php\n// Replace the {{...}} placeholders with your integration settings.\n// This handler performs live, chargeable bank verification with sufficient wallet funds. Supply authorised account-holder data. Acceptance means PENDING, not verified; the callback supplies the eventual result. realtime is retained for compatibility and does not make the new API synchronous.\n$request = curl_init('{{base_url}}/pay_out/verifyBankAccount');\ncurl_setopt_array($request, [\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_HTTPHEADER => array (\n  0 => 'Authorization: Bearer {{access_token}}',\n  1 => 'Content-Type: application/json',\n),\n    CURLOPT_POSTFIELDS => json_encode(array (\n  'reference' => 'EXAMPLE-BANV-701',\n  'initials' => 'E',\n  'name' => 'Example Account Holder',\n  'id_number' => '{{account_holder_id}}',\n  'account_number' => '{{bank_account_number}}',\n  'branch_code' => '{{bank_branch_code}}',\n  'realtime' => 0,\n), JSON_THROW_ON_ERROR),\n]);\n$raw = curl_exec($request);\nif ($raw === false) { throw new RuntimeException(curl_error($request)); }\n$status = curl_getinfo($request, CURLINFO_HTTP_CODE);\n$contentType = curl_getinfo($request, CURLINFO_CONTENT_TYPE) ?: \"\";\ncurl_close($request);\n$result = str_contains($contentType, \"application/json\") ? json_decode($raw, true, 512, JSON_THROW_ON_ERROR) : $raw;\nvar_dump($status, $result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```\n\n### JavaScript (Node.js)\n```javascript\n// Node.js backend example. Replace the {{...}} placeholders.\n// This handler performs live, chargeable bank verification with sufficient wallet funds. Supply authorised account-holder data. Acceptance means PENDING, not verified; the callback supplies the eventual result. realtime is retained for compatibility and does not make the new API synchronous.\nconst headers = {\n    \"Content-Type\": \"application/json\",\n    \"Authorization\": \"Bearer {{access_token}}\"\n};\nconst body = JSON.stringify({\n    \"reference\": \"EXAMPLE-BANV-701\",\n    \"initials\": \"E\",\n    \"name\": \"Example Account Holder\",\n    \"id_number\": \"{{account_holder_id}}\",\n    \"account_number\": \"{{bank_account_number}}\",\n    \"branch_code\": \"{{bank_branch_code}}\",\n    \"realtime\": 0\n});\nconst response = await fetch(\"{{base_url}}/pay_out/verifyBankAccount\", {\n  method: \"POST\", headers, body });\nconst contentType = response.headers.get(\"content-type\") || \"\";\nconst result = contentType.includes(\"application/json\") ? await response.json() : await response.text();\nconsole.log(response.status, result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"reference\": \"EXAMPLE-BANV-701\",\n    \"initials\": \"E\",\n    \"name\": \"Example Account Holder\",\n    \"id_number\": \"{{account_holder_id}}\",\n    \"account_number\": \"{{bank_account_number}}\",\n    \"branch_code\": \"{{bank_branch_code}}\",\n    \"realtime\": 0\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": [
                        {
                            "name": "Bank verification accepted asynchronously",
                            "originalRequest": {
                                "method": "POST",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/pay_out/verifyBankAccount",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "pay_out",
                                        "verifyBankAccount"
                                    ],
                                    "query": []
                                },
                                "description": "Verify an account in realtime or not.This handler performs live, chargeable bank verification with sufficient wallet funds. Supply authorised account-holder data. Acceptance means PENDING, not verified; the callback supplies the eventual result. realtime is retained for compatibility and does not make the new API synchronous.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n    \"reference\": \"EXAMPLE-BANV-701\",\n    \"initials\": \"E\",\n    \"name\": \"Example Account Holder\",\n    \"id_number\": \"{{account_holder_id}}\",\n    \"account_number\": \"{{bank_account_number}}\",\n    \"branch_code\": \"{{bank_branch_code}}\",\n    \"realtime\": 0\n}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "OK",
                            "code": 200,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Validation is being processed\",\n    \"success\": true,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"data\": {\n        \"result\": \"PENDING\",\n        \"bank_verification_id\": \"00000000-0000-4000-8000-000000000701\",\n        \"result_code\": null,\n        \"realtime\": false\n    }\n}"
                        },
                        {
                            "name": "Invalid bearer access token",
                            "originalRequest": {
                                "method": "POST",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/pay_out/verifyBankAccount",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "pay_out",
                                        "verifyBankAccount"
                                    ],
                                    "query": []
                                },
                                "description": "Verify an account in realtime or not.Use an invalid or revoked bearer access token. Authentication fails before this operation is performed.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n    \"reference\": \"EXAMPLE-BANV-701\",\n    \"initials\": \"E\",\n    \"name\": \"Example Account Holder\",\n    \"id_number\": \"{{account_holder_id}}\",\n    \"account_number\": \"{{bank_account_number}}\",\n    \"branch_code\": \"{{bank_branch_code}}\",\n    \"realtime\": 0\n}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "Unauthorized",
                            "code": 401,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"error\": \"access_denied\",\n    \"error_description\": \"The resource owner or authorization server denied the request.\",\n    \"hint\": \"Access token could not be verified\",\n    \"message\": \"The resource owner or authorization server denied the request.\"\n}"
                        },
                        {
                            "name": "Insufficient funds for bank verification",
                            "originalRequest": {
                                "method": "POST",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/pay_out/verifyBankAccount",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "pay_out",
                                        "verifyBankAccount"
                                    ],
                                    "query": []
                                },
                                "description": "Verify an account in realtime or not.This handler performs live, chargeable bank verification with sufficient wallet funds. Supply authorised account-holder data. Acceptance means PENDING, not verified; the callback supplies the eventual result. realtime is retained for compatibility and does not make the new API synchronous.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n    \"reference\": \"EXAMPLE-BANV-701\",\n    \"initials\": \"E\",\n    \"name\": \"Example Account Holder\",\n    \"id_number\": \"{{account_holder_id}}\",\n    \"account_number\": \"{{bank_account_number}}\",\n    \"branch_code\": \"{{bank_branch_code}}\",\n    \"realtime\": 0\n}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "Unprocessable Entity",
                            "code": 422,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"You do not have enough funds to verify an account (Balance: R0.00, Cost: R10.29).\",\n    \"success\": false,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"error\": \"validation_failed\"\n}"
                        }
                    ]
                }
            ]
        },
        {
            "name": "Recurring Transaction",
            "item": [
                {
                    "name": "List Recurring Transactions",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "url": {
                            "raw": "{{base_url}}/recurring_transaction?limit=25&page=0",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "recurring_transaction"
                            ],
                            "query": [
                                {
                                    "key": "limit",
                                    "value": "25"
                                },
                                {
                                    "key": "page",
                                    "value": "0"
                                }
                            ]
                        },
                        "description": "List subscriptions paid by the authenticated user. Requires an owner token. Use recurring_transaction/merchant for subscriptions received by the merchant.Requires an owner token. Recurring plans are created by completing an initial RECURRING_DB transaction, not by POSTing to recurring_transaction.\n\n### PHP (cURL)\n```php\n// Replace the {{...}} placeholders with your integration settings.\n// Requires an owner token. Recurring plans are created by completing an initial RECURRING_DB transaction, not by POSTing to recurring_transaction.\n$request = curl_init('{{base_url}}/recurring_transaction?limit=25&page=0');\ncurl_setopt_array($request, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_HTTPHEADER => array (\n  0 => 'Authorization: Bearer {{access_token}}',\n),\n]);\n$raw = curl_exec($request);\nif ($raw === false) { throw new RuntimeException(curl_error($request)); }\n$status = curl_getinfo($request, CURLINFO_HTTP_CODE);\n$contentType = curl_getinfo($request, CURLINFO_CONTENT_TYPE) ?: \"\";\ncurl_close($request);\n$result = str_contains($contentType, \"application/json\") ? json_decode($raw, true, 512, JSON_THROW_ON_ERROR) : $raw;\nvar_dump($status, $result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```\n\n### JavaScript (Node.js)\n```javascript\n// Node.js backend example. Replace the {{...}} placeholders.\n// Requires an owner token. Recurring plans are created by completing an initial RECURRING_DB transaction, not by POSTing to recurring_transaction.\nconst headers = {\n    \"Authorization\": \"Bearer {{access_token}}\"\n};\nconst response = await fetch(\"{{base_url}}/recurring_transaction?limit=25&page=0\", {\n  method: \"GET\", headers });\nconst contentType = response.headers.get(\"content-type\") || \"\";\nconst result = contentType.includes(\"application/json\") ? await response.json() : await response.text();\nconsole.log(response.status, result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```"
                    },
                    "response": [
                        {
                            "name": "List subscriptions paid by the current user",
                            "originalRequest": {
                                "method": "GET",
                                "header": [],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/recurring_transaction?limit=25&page=0",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "recurring_transaction"
                                    ],
                                    "query": [
                                        {
                                            "key": "limit",
                                            "value": "25"
                                        },
                                        {
                                            "key": "page",
                                            "value": "0"
                                        }
                                    ]
                                },
                                "description": "List subscriptions paid by the authenticated user. Requires an owner token. Use recurring_transaction/merchant for subscriptions received by the merchant.Requires an owner token. Recurring plans are created by completing an initial RECURRING_DB transaction, not by POSTing to recurring_transaction."
                            },
                            "status": "OK",
                            "code": 200,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Recurring Transaction list\",\n    \"success\": true,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"data\": {\n        \"list\": [\n            {\n                \"id\": 301,\n                \"owner_id\": 456,\n                \"client_id\": \"EXAMPLE_CLIENT_ID\",\n                \"payer_id\": 789,\n                \"initial_transaction_id\": 112,\n                \"reference\": \"EXAMPLE-SUBSCRIPTION-301\",\n                \"description\": \"Monthly example subscription\",\n                \"transaction_type\": \"RECURRING_DB\",\n                \"recurring_term\": 1,\n                \"day_of_debit\": 15,\n                \"recur_count\": 2,\n                \"max_recur\": 12,\n                \"billing_street\": null,\n                \"billing_suburb\": null,\n                \"billing_city\": null,\n                \"billing_province\": null,\n                \"billing_country\": \"South Africa\",\n                \"billing_postal_code\": null,\n                \"gateway\": \"DEFAULT\",\n                \"gateway_registration_id\": null,\n                \"total\": 123.45,\n                \"status\": \"SUCCESS\",\n                \"status_message\": \"Request successfully processed\",\n                \"active\": 1,\n                \"is_sandbox\": 1,\n                \"deactivation_date\": null,\n                \"activation_date\": \"2026-08-15 10:00:00\",\n                \"cancellation_date\": null,\n                \"update_date\": \"2026-10-15 10:00:00\",\n                \"create_date\": \"2026-08-15 10:00:00\",\n                \"billing_country_code\": \"ZA\",\n                \"cycle\": \"Monthly\",\n                \"progress\": \"2/12\",\n                \"merchant\": \"Example Merchant\",\n                \"payer\": \"payer@example.com\"\n            }\n        ],\n        \"limit\": 25,\n        \"page\": 0,\n        \"count\": 1,\n        \"total_filtered\": 1,\n        \"total\": 1\n    }\n}"
                        },
                        {
                            "name": "Empty recurring transaction list",
                            "originalRequest": {
                                "method": "GET",
                                "header": [],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/recurring_transaction?limit=25&page=0",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "recurring_transaction"
                                    ],
                                    "query": [
                                        {
                                            "key": "limit",
                                            "value": "25"
                                        },
                                        {
                                            "key": "page",
                                            "value": "0"
                                        }
                                    ]
                                },
                                "description": "List subscriptions paid by the authenticated user. Requires an owner token. Use recurring_transaction/merchant for subscriptions received by the merchant.No subscriptions match this user or merchant."
                            },
                            "status": "OK",
                            "code": 200,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Recurring Transaction list\",\n    \"success\": true,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"data\": {\n        \"list\": [],\n        \"limit\": 25,\n        \"page\": 0,\n        \"count\": 0,\n        \"total_filtered\": 0,\n        \"total\": 0\n    }\n}"
                        },
                        {
                            "name": "Invalid bearer access token",
                            "originalRequest": {
                                "method": "GET",
                                "header": [],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/recurring_transaction?limit=25&page=0",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "recurring_transaction"
                                    ],
                                    "query": [
                                        {
                                            "key": "limit",
                                            "value": "25"
                                        },
                                        {
                                            "key": "page",
                                            "value": "0"
                                        }
                                    ]
                                },
                                "description": "List subscriptions paid by the authenticated user. Requires an owner token. Use recurring_transaction/merchant for subscriptions received by the merchant.Use an invalid or revoked bearer access token. Authentication fails before this operation is performed."
                            },
                            "status": "Unauthorized",
                            "code": 401,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"error\": \"access_denied\",\n    \"error_description\": \"The resource owner or authorization server denied the request.\",\n    \"hint\": \"Access token could not be verified\",\n    \"message\": \"The resource owner or authorization server denied the request.\"\n}"
                        }
                    ]
                },
                {
                    "name": "Get Recurring Transaction",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "url": {
                            "raw": "{{base_url}}/recurring_transaction/{{recurring_transaction_id}}",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "recurring_transaction",
                                "{{recurring_transaction_id}}"
                            ],
                            "query": []
                        },
                        "description": "Get a resource.Use the numeric recurring_transaction_id from your recurring payment callback or list response.\n\n### PHP (cURL)\n```php\n// Replace the {{...}} placeholders with your integration settings.\n// Use the numeric recurring_transaction_id from your recurring payment callback or list response.\n$request = curl_init('{{base_url}}/recurring_transaction/{{recurring_transaction_id}}');\ncurl_setopt_array($request, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_HTTPHEADER => array (\n  0 => 'Authorization: Bearer {{access_token}}',\n),\n]);\n$raw = curl_exec($request);\nif ($raw === false) { throw new RuntimeException(curl_error($request)); }\n$status = curl_getinfo($request, CURLINFO_HTTP_CODE);\n$contentType = curl_getinfo($request, CURLINFO_CONTENT_TYPE) ?: \"\";\ncurl_close($request);\n$result = str_contains($contentType, \"application/json\") ? json_decode($raw, true, 512, JSON_THROW_ON_ERROR) : $raw;\nvar_dump($status, $result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```\n\n### JavaScript (Node.js)\n```javascript\n// Node.js backend example. Replace the {{...}} placeholders.\n// Use the numeric recurring_transaction_id from your recurring payment callback or list response.\nconst headers = {\n    \"Authorization\": \"Bearer {{access_token}}\"\n};\nconst response = await fetch(\"{{base_url}}/recurring_transaction/{{recurring_transaction_id}}\", {\n  method: \"GET\", headers });\nconst contentType = response.headers.get(\"content-type\") || \"\";\nconst result = contentType.includes(\"application/json\") ? await response.json() : await response.text();\nconsole.log(response.status, result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```"
                    },
                    "response": [
                        {
                            "name": "Read a recurring plan",
                            "originalRequest": {
                                "method": "GET",
                                "header": [],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/recurring_transaction/{{recurring_transaction_id}}",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "recurring_transaction",
                                        "{{recurring_transaction_id}}"
                                    ],
                                    "query": []
                                },
                                "description": "Get a resource.Use the numeric recurring_transaction_id from your recurring payment callback or list response."
                            },
                            "status": "OK",
                            "code": 200,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Recurring Transaction loaded\",\n    \"success\": true,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"data\": {\n        \"id\": 301,\n        \"owner_id\": 456,\n        \"client_id\": \"EXAMPLE_CLIENT_ID\",\n        \"payer_id\": 789,\n        \"initial_transaction_id\": 112,\n        \"reference\": \"EXAMPLE-SUBSCRIPTION-301\",\n        \"description\": \"Monthly example subscription\",\n        \"transaction_type\": \"RECURRING_DB\",\n        \"recurring_term\": 1,\n        \"day_of_debit\": 15,\n        \"recur_count\": 2,\n        \"max_recur\": 12,\n        \"billing_street\": null,\n        \"billing_suburb\": null,\n        \"billing_city\": null,\n        \"billing_province\": null,\n        \"billing_country\": \"South Africa\",\n        \"billing_postal_code\": null,\n        \"gateway\": \"DEFAULT\",\n        \"gateway_registration_id\": null,\n        \"total\": 123.45,\n        \"status\": \"SUCCESS\",\n        \"status_message\": \"Request successfully processed\",\n        \"active\": 1,\n        \"is_sandbox\": 1,\n        \"deactivation_date\": null,\n        \"activation_date\": \"2026-08-15 10:00:00\",\n        \"cancellation_date\": null,\n        \"update_date\": \"2026-10-15 10:00:00\",\n        \"create_date\": \"2026-08-15 10:00:00\",\n        \"billing_country_code\": \"ZA\"\n    }\n}"
                        },
                        {
                            "name": "Invalid bearer access token",
                            "originalRequest": {
                                "method": "GET",
                                "header": [],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/recurring_transaction/{{recurring_transaction_id}}",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "recurring_transaction",
                                        "{{recurring_transaction_id}}"
                                    ],
                                    "query": []
                                },
                                "description": "Get a resource.Use an invalid or revoked bearer access token. Authentication fails before this operation is performed."
                            },
                            "status": "Unauthorized",
                            "code": 401,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"error\": \"access_denied\",\n    \"error_description\": \"The resource owner or authorization server denied the request.\",\n    \"hint\": \"Access token could not be verified\",\n    \"message\": \"The resource owner or authorization server denied the request.\"\n}"
                        },
                        {
                            "name": "Recurring plan not found",
                            "originalRequest": {
                                "method": "GET",
                                "header": [],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/recurring_transaction/{{recurring_transaction_id}}",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "recurring_transaction",
                                        "{{recurring_transaction_id}}"
                                    ],
                                    "query": []
                                },
                                "description": "Get a resource.Use a nonexistent numeric recurring_transaction_id."
                            },
                            "status": "Not Found",
                            "code": 404,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Recurring Transaction not found\",\n    \"success\": false,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"error\": \"not_found\"\n}"
                        }
                    ]
                },
                {
                    "name": "Update Recurring Transaction",
                    "request": {
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "url": {
                            "raw": "{{base_url}}/recurring_transaction/{{recurring_transaction_id}}",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "recurring_transaction",
                                "{{recurring_transaction_id}}"
                            ],
                            "query": []
                        },
                        "description": "Update a resource. Allows sparse payloads.The merchant or payer may change active. Other plan fields can be edited only by the merchant. Deactivation prevents future charges.\n\n### PHP (cURL)\n```php\n// Replace the {{...}} placeholders with your integration settings.\n// The merchant or payer may change active. Other plan fields can be edited only by the merchant. Deactivation prevents future charges.\n$request = curl_init('{{base_url}}/recurring_transaction/{{recurring_transaction_id}}');\ncurl_setopt_array($request, [\n    CURLOPT_CUSTOMREQUEST => 'PUT',\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_HTTPHEADER => array (\n  0 => 'Authorization: Bearer {{access_token}}',\n  1 => 'Content-Type: application/json',\n),\n    CURLOPT_POSTFIELDS => json_encode(array (\n  'active' => 0,\n), JSON_THROW_ON_ERROR),\n]);\n$raw = curl_exec($request);\nif ($raw === false) { throw new RuntimeException(curl_error($request)); }\n$status = curl_getinfo($request, CURLINFO_HTTP_CODE);\n$contentType = curl_getinfo($request, CURLINFO_CONTENT_TYPE) ?: \"\";\ncurl_close($request);\n$result = str_contains($contentType, \"application/json\") ? json_decode($raw, true, 512, JSON_THROW_ON_ERROR) : $raw;\nvar_dump($status, $result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```\n\n### JavaScript (Node.js)\n```javascript\n// Node.js backend example. Replace the {{...}} placeholders.\n// The merchant or payer may change active. Other plan fields can be edited only by the merchant. Deactivation prevents future charges.\nconst headers = {\n    \"Content-Type\": \"application/json\",\n    \"Authorization\": \"Bearer {{access_token}}\"\n};\nconst body = JSON.stringify({\n    \"active\": 0\n});\nconst response = await fetch(\"{{base_url}}/recurring_transaction/{{recurring_transaction_id}}\", {\n  method: \"PUT\", headers, body });\nconst contentType = response.headers.get(\"content-type\") || \"\";\nconst result = contentType.includes(\"application/json\") ? await response.json() : await response.text();\nconsole.log(response.status, result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"active\": 0\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": [
                        {
                            "name": "Pause a recurring plan",
                            "originalRequest": {
                                "method": "PUT",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/recurring_transaction/{{recurring_transaction_id}}",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "recurring_transaction",
                                        "{{recurring_transaction_id}}"
                                    ],
                                    "query": []
                                },
                                "description": "Update a resource. Allows sparse payloads.The merchant or payer may change active. Other plan fields can be edited only by the merchant. Deactivation prevents future charges.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n    \"active\": 0\n}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "OK",
                            "code": 200,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Recurring Transaction updated\",\n    \"success\": true,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"data\": {\n        \"active\": 0,\n        \"deactivation_date\": \"2026-10-27 10:00:00\"\n    }\n}"
                        },
                        {
                            "name": "Update a merchant plan amount",
                            "originalRequest": {
                                "method": "PUT",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/recurring_transaction/{{recurring_transaction_id}}",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "recurring_transaction",
                                        "{{recurring_transaction_id}}"
                                    ],
                                    "query": []
                                },
                                "description": "Update a resource. Allows sparse payloads.Requires the plan merchant. Only supplied fields are updated.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n    \"total\": 150\n}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "OK",
                            "code": 200,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Recurring Transaction updated\",\n    \"success\": true,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"data\": {\n        \"total\": 150\n    }\n}"
                        },
                        {
                            "name": "Invalid bearer access token",
                            "originalRequest": {
                                "method": "PUT",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/recurring_transaction/{{recurring_transaction_id}}",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "recurring_transaction",
                                        "{{recurring_transaction_id}}"
                                    ],
                                    "query": []
                                },
                                "description": "Update a resource. Allows sparse payloads.Use an invalid or revoked bearer access token. Authentication fails before this operation is performed.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n    \"total\": 150\n}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "Unauthorized",
                            "code": 401,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"error\": \"access_denied\",\n    \"error_description\": \"The resource owner or authorization server denied the request.\",\n    \"hint\": \"Access token could not be verified\",\n    \"message\": \"The resource owner or authorization server denied the request.\"\n}"
                        }
                    ]
                },
                {
                    "name": "Delete Recurring Transaction",
                    "request": {
                        "method": "DELETE",
                        "header": [],
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "url": {
                            "raw": "{{base_url}}/recurring_transaction/{{recurring_transaction_id}}",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "recurring_transaction",
                                "{{recurring_transaction_id}}"
                            ],
                            "query": []
                        },
                        "description": "Permanently remove a resource from the database.Requires ownership of this recurring plan. Pause with active=0 when you need to retain the record.\n\n### PHP (cURL)\n```php\n// Replace the {{...}} placeholders with your integration settings.\n// Requires ownership of this recurring plan. Pause with active=0 when you need to retain the record.\n$request = curl_init('{{base_url}}/recurring_transaction/{{recurring_transaction_id}}');\ncurl_setopt_array($request, [\n    CURLOPT_CUSTOMREQUEST => 'DELETE',\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_HTTPHEADER => array (\n  0 => 'Authorization: Bearer {{access_token}}',\n),\n]);\n$raw = curl_exec($request);\nif ($raw === false) { throw new RuntimeException(curl_error($request)); }\n$status = curl_getinfo($request, CURLINFO_HTTP_CODE);\n$contentType = curl_getinfo($request, CURLINFO_CONTENT_TYPE) ?: \"\";\ncurl_close($request);\n$result = str_contains($contentType, \"application/json\") ? json_decode($raw, true, 512, JSON_THROW_ON_ERROR) : $raw;\nvar_dump($status, $result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```\n\n### JavaScript (Node.js)\n```javascript\n// Node.js backend example. Replace the {{...}} placeholders.\n// Requires ownership of this recurring plan. Pause with active=0 when you need to retain the record.\nconst headers = {\n    \"Authorization\": \"Bearer {{access_token}}\"\n};\nconst response = await fetch(\"{{base_url}}/recurring_transaction/{{recurring_transaction_id}}\", {\n  method: \"DELETE\", headers });\nconst contentType = response.headers.get(\"content-type\") || \"\";\nconst result = contentType.includes(\"application/json\") ? await response.json() : await response.text();\nconsole.log(response.status, result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```"
                    },
                    "response": [
                        {
                            "name": "Delete an owned recurring plan",
                            "originalRequest": {
                                "method": "DELETE",
                                "header": [],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/recurring_transaction/{{recurring_transaction_id}}",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "recurring_transaction",
                                        "{{recurring_transaction_id}}"
                                    ],
                                    "query": []
                                },
                                "description": "Permanently remove a resource from the database.Requires ownership of this recurring plan. Pause with active=0 when you need to retain the record."
                            },
                            "status": "OK",
                            "code": 200,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Recurring Transaction deleted\",\n    \"success\": true,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    }\n}"
                        },
                        {
                            "name": "Invalid bearer access token",
                            "originalRequest": {
                                "method": "DELETE",
                                "header": [],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/recurring_transaction/{{recurring_transaction_id}}",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "recurring_transaction",
                                        "{{recurring_transaction_id}}"
                                    ],
                                    "query": []
                                },
                                "description": "Permanently remove a resource from the database.Use an invalid or revoked bearer access token. Authentication fails before this operation is performed."
                            },
                            "status": "Unauthorized",
                            "code": 401,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"error\": \"access_denied\",\n    \"error_description\": \"The resource owner or authorization server denied the request.\",\n    \"hint\": \"Access token could not be verified\",\n    \"message\": \"The resource owner or authorization server denied the request.\"\n}"
                        }
                    ]
                },
                {
                    "name": "Manually Charge Transaction",
                    "request": {
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "url": {
                            "raw": "{{base_url}}/recurring_transaction/{{recurring_transaction_id}}/charge",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "recurring_transaction",
                                "{{recurring_transaction_id}}",
                                "charge"
                            ],
                            "query": []
                        },
                        "description": "Attempt a manual charge of an owned, active on-demand recurring plan (recurring_term=0). The total must be at least R10 and max_recur must not have been reached.Use an invalid or revoked bearer access token. Authentication fails before this operation is performed.\n\n### PHP (cURL)\n```php\n// Replace the {{...}} placeholders with your integration settings.\n// Use an invalid or revoked bearer access token. Authentication fails before this operation is performed.\n$request = curl_init('{{base_url}}/recurring_transaction/{{recurring_transaction_id}}/charge');\ncurl_setopt_array($request, [\n    CURLOPT_CUSTOMREQUEST => 'PUT',\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_HTTPHEADER => array (\n  0 => 'Authorization: Bearer {{access_token}}',\n),\n]);\n$raw = curl_exec($request);\nif ($raw === false) { throw new RuntimeException(curl_error($request)); }\n$status = curl_getinfo($request, CURLINFO_HTTP_CODE);\n$contentType = curl_getinfo($request, CURLINFO_CONTENT_TYPE) ?: \"\";\ncurl_close($request);\n$result = str_contains($contentType, \"application/json\") ? json_decode($raw, true, 512, JSON_THROW_ON_ERROR) : $raw;\nvar_dump($status, $result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```\n\n### JavaScript (Node.js)\n```javascript\n// Node.js backend example. Replace the {{...}} placeholders.\n// Use an invalid or revoked bearer access token. Authentication fails before this operation is performed.\nconst headers = {\n    \"Authorization\": \"Bearer {{access_token}}\"\n};\nconst response = await fetch(\"{{base_url}}/recurring_transaction/{{recurring_transaction_id}}/charge\", {\n  method: \"PUT\", headers });\nconst contentType = response.headers.get(\"content-type\") || \"\";\nconst result = contentType.includes(\"application/json\") ? await response.json() : await response.text();\nconsole.log(response.status, result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```"
                    },
                    "response": [
                        {
                            "name": "Invalid bearer access token",
                            "originalRequest": {
                                "method": "PUT",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/recurring_transaction/{{recurring_transaction_id}}/charge",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "recurring_transaction",
                                        "{{recurring_transaction_id}}",
                                        "charge"
                                    ],
                                    "query": []
                                },
                                "description": "Attempt a manual charge of an owned, active on-demand recurring plan (recurring_term=0). The total must be at least R10 and max_recur must not have been reached.Use an invalid or revoked bearer access token. Authentication fails before this operation is performed."
                            },
                            "status": "Unauthorized",
                            "code": 401,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"error\": \"access_denied\",\n    \"error_description\": \"The resource owner or authorization server denied the request.\",\n    \"hint\": \"Access token could not be verified\",\n    \"message\": \"The resource owner or authorization server denied the request.\"\n}"
                        },
                        {
                            "name": "Inactive recurring plan is not charged",
                            "originalRequest": {
                                "method": "PUT",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/recurring_transaction/{{recurring_transaction_id}}/charge",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "recurring_transaction",
                                        "{{recurring_transaction_id}}",
                                        "charge"
                                    ],
                                    "query": []
                                },
                                "description": "Attempt a manual charge of an owned, active on-demand recurring plan (recurring_term=0). The total must be at least R10 and max_recur must not have been reached.Use a deactivated recurring plan. The routed endpoint is recurring_transaction/{id}/charge, not transaction/{id}/charge."
                            },
                            "status": "Conflict",
                            "code": 409,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"This Transaction has been deactivated.\",\n    \"success\": false,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"error\": \"conflict\"\n}"
                        },
                        {
                            "name": "Scheduled plan cannot be manually charged",
                            "originalRequest": {
                                "method": "PUT",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/recurring_transaction/{{recurring_transaction_id}}/charge",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "recurring_transaction",
                                        "{{recurring_transaction_id}}",
                                        "charge"
                                    ],
                                    "query": []
                                },
                                "description": "Attempt a manual charge of an owned, active on-demand recurring plan (recurring_term=0). The total must be at least R10 and max_recur must not have been reached.Use an active scheduled plan with recurring_term=1. Manual charging is limited to active on-demand plans with recurring_term=0, sufficient total and remaining recur count."
                            },
                            "status": "Conflict",
                            "code": 409,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"This Transaction cannot be charged manually.\",\n    \"success\": false,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"error\": \"conflict\"\n}"
                        }
                    ]
                },
                {
                    "name": "List Merchant Recurring Transactions",
                    "request": {
                        "method": "GET",
                        "header": [],
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "url": {
                            "raw": "{{base_url}}/recurring_transaction/merchant?limit=25&page=0",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "recurring_transaction",
                                "merchant"
                            ],
                            "query": [
                                {
                                    "key": "limit",
                                    "value": "25"
                                },
                                {
                                    "key": "page",
                                    "value": "0"
                                }
                            ]
                        },
                        "description": "List recurring transactions received by the authenticated merchant. The base recurring_transaction list contains subscriptions paid by the authenticated user.Requires an owner token. Recurring plans are created by completing an initial RECURRING_DB transaction, not by POSTing to recurring_transaction.\n\n### PHP (cURL)\n```php\n// Replace the {{...}} placeholders with your integration settings.\n// Requires an owner token. Recurring plans are created by completing an initial RECURRING_DB transaction, not by POSTing to recurring_transaction.\n$request = curl_init('{{base_url}}/recurring_transaction/merchant?limit=25&page=0');\ncurl_setopt_array($request, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_HTTPHEADER => array (\n  0 => 'Authorization: Bearer {{access_token}}',\n),\n]);\n$raw = curl_exec($request);\nif ($raw === false) { throw new RuntimeException(curl_error($request)); }\n$status = curl_getinfo($request, CURLINFO_HTTP_CODE);\n$contentType = curl_getinfo($request, CURLINFO_CONTENT_TYPE) ?: \"\";\ncurl_close($request);\n$result = str_contains($contentType, \"application/json\") ? json_decode($raw, true, 512, JSON_THROW_ON_ERROR) : $raw;\nvar_dump($status, $result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```\n\n### JavaScript (Node.js)\n```javascript\n// Node.js backend example. Replace the {{...}} placeholders.\n// Requires an owner token. Recurring plans are created by completing an initial RECURRING_DB transaction, not by POSTing to recurring_transaction.\nconst headers = {\n    \"Authorization\": \"Bearer {{access_token}}\"\n};\nconst response = await fetch(\"{{base_url}}/recurring_transaction/merchant?limit=25&page=0\", {\n  method: \"GET\", headers });\nconst contentType = response.headers.get(\"content-type\") || \"\";\nconst result = contentType.includes(\"application/json\") ? await response.json() : await response.text();\nconsole.log(response.status, result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```"
                    },
                    "response": [
                        {
                            "name": "List subscriptions received by the merchant",
                            "originalRequest": {
                                "method": "GET",
                                "header": [],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/recurring_transaction/merchant?limit=25&page=0",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "recurring_transaction",
                                        "merchant"
                                    ],
                                    "query": [
                                        {
                                            "key": "limit",
                                            "value": "25"
                                        },
                                        {
                                            "key": "page",
                                            "value": "0"
                                        }
                                    ]
                                },
                                "description": "List recurring transactions received by the authenticated merchant. The base recurring_transaction list contains subscriptions paid by the authenticated user.Requires an owner token. Recurring plans are created by completing an initial RECURRING_DB transaction, not by POSTing to recurring_transaction."
                            },
                            "status": "OK",
                            "code": 200,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Recurring Transaction list\",\n    \"success\": true,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"data\": {\n        \"list\": [\n            {\n                \"id\": 301,\n                \"owner_id\": 456,\n                \"client_id\": \"EXAMPLE_CLIENT_ID\",\n                \"payer_id\": 789,\n                \"initial_transaction_id\": 112,\n                \"reference\": \"EXAMPLE-SUBSCRIPTION-301\",\n                \"description\": \"Monthly example subscription\",\n                \"transaction_type\": \"RECURRING_DB\",\n                \"recurring_term\": 1,\n                \"day_of_debit\": 15,\n                \"recur_count\": 2,\n                \"max_recur\": 12,\n                \"billing_street\": null,\n                \"billing_suburb\": null,\n                \"billing_city\": null,\n                \"billing_province\": null,\n                \"billing_country\": \"South Africa\",\n                \"billing_postal_code\": null,\n                \"gateway\": \"DEFAULT\",\n                \"gateway_registration_id\": null,\n                \"total\": 123.45,\n                \"status\": \"SUCCESS\",\n                \"status_message\": \"Request successfully processed\",\n                \"active\": 1,\n                \"is_sandbox\": 1,\n                \"deactivation_date\": null,\n                \"activation_date\": \"2026-08-15 10:00:00\",\n                \"cancellation_date\": null,\n                \"update_date\": \"2026-10-15 10:00:00\",\n                \"create_date\": \"2026-08-15 10:00:00\",\n                \"billing_country_code\": \"ZA\",\n                \"cycle\": \"Monthly\",\n                \"progress\": \"2/12\",\n                \"merchant\": \"Example Merchant\",\n                \"payer\": \"payer@example.com\"\n            }\n        ],\n        \"limit\": 25,\n        \"page\": 0,\n        \"count\": 1,\n        \"total_filtered\": 1,\n        \"total\": 1\n    }\n}"
                        },
                        {
                            "name": "Empty recurring transaction list",
                            "originalRequest": {
                                "method": "GET",
                                "header": [],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/recurring_transaction/merchant?limit=25&page=0",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "recurring_transaction",
                                        "merchant"
                                    ],
                                    "query": [
                                        {
                                            "key": "limit",
                                            "value": "25"
                                        },
                                        {
                                            "key": "page",
                                            "value": "0"
                                        }
                                    ]
                                },
                                "description": "List recurring transactions received by the authenticated merchant. The base recurring_transaction list contains subscriptions paid by the authenticated user.No subscriptions match this user or merchant."
                            },
                            "status": "OK",
                            "code": 200,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Recurring Transaction list\",\n    \"success\": true,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"data\": {\n        \"list\": [],\n        \"limit\": 25,\n        \"page\": 0,\n        \"count\": 0,\n        \"total_filtered\": 0,\n        \"total\": 0\n    }\n}"
                        },
                        {
                            "name": "Invalid bearer access token",
                            "originalRequest": {
                                "method": "GET",
                                "header": [],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/recurring_transaction/merchant?limit=25&page=0",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "recurring_transaction",
                                        "merchant"
                                    ],
                                    "query": [
                                        {
                                            "key": "limit",
                                            "value": "25"
                                        },
                                        {
                                            "key": "page",
                                            "value": "0"
                                        }
                                    ]
                                },
                                "description": "List recurring transactions received by the authenticated merchant. The base recurring_transaction list contains subscriptions paid by the authenticated user.Use an invalid or revoked bearer access token. Authentication fails before this operation is performed."
                            },
                            "status": "Unauthorized",
                            "code": 401,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"error\": \"access_denied\",\n    \"error_description\": \"The resource owner or authorization server denied the request.\",\n    \"hint\": \"Access token could not be verified\",\n    \"message\": \"The resource owner or authorization server denied the request.\"\n}"
                        }
                    ]
                }
            ]
        },
        {
            "name": "Transaction",
            "item": [
                {
                    "name": "List Transactions",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "url": {
                            "raw": "{{base_url}}/transaction?limit=25&page=0",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "transaction"
                            ],
                            "query": [
                                {
                                    "key": "limit",
                                    "value": "25"
                                },
                                {
                                    "key": "page",
                                    "value": "0"
                                }
                            ]
                        },
                        "description": "List the authenticated user's Transactions. You need to be authenticated as a user with the password grant.Requires an owner token. Pagination is zero-based.\n\n### PHP (cURL)\n```php\n// Replace the {{...}} placeholders with your integration settings.\n// Requires an owner token. Pagination is zero-based.\n$request = curl_init('{{base_url}}/transaction?limit=25&page=0');\ncurl_setopt_array($request, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_HTTPHEADER => array (\n  0 => 'Authorization: Bearer {{access_token}}',\n),\n]);\n$raw = curl_exec($request);\nif ($raw === false) { throw new RuntimeException(curl_error($request)); }\n$status = curl_getinfo($request, CURLINFO_HTTP_CODE);\n$contentType = curl_getinfo($request, CURLINFO_CONTENT_TYPE) ?: \"\";\ncurl_close($request);\n$result = str_contains($contentType, \"application/json\") ? json_decode($raw, true, 512, JSON_THROW_ON_ERROR) : $raw;\nvar_dump($status, $result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```\n\n### JavaScript (Node.js)\n```javascript\n// Node.js backend example. Replace the {{...}} placeholders.\n// Requires an owner token. Pagination is zero-based.\nconst headers = {\n    \"Authorization\": \"Bearer {{access_token}}\"\n};\nconst response = await fetch(\"{{base_url}}/transaction?limit=25&page=0\", {\n  method: \"GET\", headers });\nconst contentType = response.headers.get(\"content-type\") || \"\";\nconst result = contentType.includes(\"application/json\") ? await response.json() : await response.text();\nconsole.log(response.status, result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```"
                    },
                    "response": [
                        {
                            "name": "List owned transactions",
                            "originalRequest": {
                                "method": "GET",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/transaction?limit=25&page=0",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "transaction"
                                    ],
                                    "query": [
                                        {
                                            "key": "limit",
                                            "value": "25"
                                        },
                                        {
                                            "key": "page",
                                            "value": "0"
                                        }
                                    ]
                                },
                                "description": "List the authenticated user's Transactions. You need to be authenticated as a user with the password grant.Requires an owner token. Pagination is zero-based."
                            },
                            "status": "OK",
                            "code": 200,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Transaction list\",\n    \"success\": true,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"data\": {\n        \"list\": [\n            {\n                \"id\": 112,\n                \"identifier\": \"0123456789abcdef0123456789abcdef\",\n                \"owner_id\": 456,\n                \"receiver_name\": \"Example Merchant\",\n                \"pos_session_id\": null,\n                \"collection_state\": null,\n                \"collection_method\": null,\n                \"client_id\": \"EXAMPLE_CLIENT_ID\",\n                \"payer_id\": null,\n                \"reference\": \"EXAMPLE-ORDER-112\",\n                \"description\": \"Example order 112\",\n                \"transaction_type\": \"DB\",\n                \"recurring_term\": null,\n                \"day_of_debit\": 1,\n                \"recur_count\": 1,\n                \"max_recur\": 0,\n                \"recurring_transaction_id\": null,\n                \"billing_street\": null,\n                \"billing_suburb\": null,\n                \"billing_city\": null,\n                \"billing_province\": null,\n                \"billing_country\": \"South Africa\",\n                \"billing_postal_code\": null,\n                \"billing_phone\": null,\n                \"billing_email\": null,\n                \"billing_first_name\": null,\n                \"billing_last_name\": null,\n                \"billing_company\": null,\n                \"gateway\": \"DEFAULT\",\n                \"gateway_checkout_id\": null,\n                \"gateway_transaction_id\": null,\n                \"total\": 123.45,\n                \"consumed\": \"N/A\",\n                \"status\": \"OPEN\",\n                \"status_message\": \"\",\n                \"is_sandbox\": 1,\n                \"update_date\": \"2026-10-27 10:00:00\",\n                \"create_date\": \"2026-10-27 10:00:00\",\n                \"cost\": 0,\n                \"billing_country_code\": \"ZA\",\n                \"client\": \"Example API Client\"\n            }\n        ],\n        \"limit\": 25,\n        \"page\": 0,\n        \"count\": 1,\n        \"total_filtered\": 1,\n        \"total\": 1,\n        \"filter\": [],\n        \"filterAnd\": [],\n        \"order\": \"create_date:DESC\"\n    }\n}"
                        },
                        {
                            "name": "No transactions match",
                            "originalRequest": {
                                "method": "GET",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/transaction?limit=25&page=0",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "transaction"
                                    ],
                                    "query": [
                                        {
                                            "key": "limit",
                                            "value": "25"
                                        },
                                        {
                                            "key": "page",
                                            "value": "0"
                                        }
                                    ]
                                },
                                "description": "List the authenticated user's Transactions. You need to be authenticated as a user with the password grant.An empty result is successful and contains an empty list."
                            },
                            "status": "OK",
                            "code": 200,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Transaction list\",\n    \"success\": true,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"data\": {\n        \"list\": [],\n        \"limit\": 25,\n        \"page\": 0,\n        \"count\": 0,\n        \"total_filtered\": 0,\n        \"total\": 0,\n        \"filter\": [],\n        \"filterAnd\": [],\n        \"order\": \"create_date:DESC\"\n    }\n}"
                        },
                        {
                            "name": "Invalid bearer access token",
                            "originalRequest": {
                                "method": "GET",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/transaction?limit=25&page=0",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "transaction"
                                    ],
                                    "query": [
                                        {
                                            "key": "limit",
                                            "value": "25"
                                        },
                                        {
                                            "key": "page",
                                            "value": "0"
                                        }
                                    ]
                                },
                                "description": "List the authenticated user's Transactions. You need to be authenticated as a user with the password grant.Use an invalid or revoked bearer access token. Authentication fails before this operation is performed."
                            },
                            "status": "Unauthorized",
                            "code": 401,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"error\": \"access_denied\",\n    \"error_description\": \"The resource owner or authorization server denied the request.\",\n    \"hint\": \"Access token could not be verified\",\n    \"message\": \"The resource owner or authorization server denied the request.\"\n}"
                        }
                    ]
                },
                {
                    "name": "Create Transaction",
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "url": {
                            "raw": "{{base_url}}/transaction",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "transaction"
                            ],
                            "query": []
                        },
                        "description": "Create a transaction. Idempotency-Key is optional: matching retries return the original successful creation response; different details with the same key return HTTP 409. Requests without the header retain the existing behavior.Authenticate with an authorised client. Sandbox mode comes from the API client configuration; do not send is_sandbox to select it. Amounts are in rand; the minimum transaction amount is R10.\n\n### PHP (cURL)\n```php\n// Replace the {{...}} placeholders with your integration settings.\n// Authenticate with an authorised client. Sandbox mode comes from the API client configuration; do not send is_sandbox to select it. Amounts are in rand; the minimum transaction amount is R10.\n$request = curl_init('{{base_url}}/transaction');\ncurl_setopt_array($request, [\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_HTTPHEADER => array (\n  0 => 'Authorization: Bearer {{access_token}}',\n  1 => 'Content-Type: application/json',\n),\n    CURLOPT_POSTFIELDS => json_encode(array (\n  'client_id' => '{{client_id}}',\n  'reference' => 'EXAMPLE-ORDER-112',\n  'description' => 'Example order 112',\n  'transaction_type' => 'DB',\n  'day_of_debit' => 1,\n  'total' => 123.45,\n  'gateway' => 'DEFAULT',\n), JSON_THROW_ON_ERROR),\n]);\n$raw = curl_exec($request);\nif ($raw === false) { throw new RuntimeException(curl_error($request)); }\n$status = curl_getinfo($request, CURLINFO_HTTP_CODE);\n$contentType = curl_getinfo($request, CURLINFO_CONTENT_TYPE) ?: \"\";\ncurl_close($request);\n$result = str_contains($contentType, \"application/json\") ? json_decode($raw, true, 512, JSON_THROW_ON_ERROR) : $raw;\nvar_dump($status, $result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```\n\n### JavaScript (Node.js)\n```javascript\n// Node.js backend example. Replace the {{...}} placeholders.\n// Authenticate with an authorised client. Sandbox mode comes from the API client configuration; do not send is_sandbox to select it. Amounts are in rand; the minimum transaction amount is R10.\nconst headers = {\n    \"Content-Type\": \"application/json\",\n    \"Authorization\": \"Bearer {{access_token}}\"\n};\nconst body = JSON.stringify({\n    \"client_id\": \"{{client_id}}\",\n    \"reference\": \"EXAMPLE-ORDER-112\",\n    \"description\": \"Example order 112\",\n    \"transaction_type\": \"DB\",\n    \"day_of_debit\": 1,\n    \"total\": 123.45,\n    \"gateway\": \"DEFAULT\"\n});\nconst response = await fetch(\"{{base_url}}/transaction\", {\n  method: \"POST\", headers, body });\nconst contentType = response.headers.get(\"content-type\") || \"\";\nconst result = contentType.includes(\"application/json\") ? await response.json() : await response.text();\nconsole.log(response.status, result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"client_id\": \"{{client_id}}\",\n    \"reference\": \"EXAMPLE-ORDER-112\",\n    \"description\": \"Example order 112\",\n    \"transaction_type\": \"DB\",\n    \"day_of_debit\": 1,\n    \"total\": 123.45,\n    \"gateway\": \"DEFAULT\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": [
                        {
                            "name": "Create an online payment transaction",
                            "originalRequest": {
                                "method": "POST",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/transaction",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "transaction"
                                    ],
                                    "query": []
                                },
                                "description": "Create a transaction. Idempotency-Key is optional: matching retries return the original successful creation response; different details with the same key return HTTP 409. Requests without the header retain the existing behavior.Authenticate with an authorised client. Sandbox mode comes from the API client configuration; do not send is_sandbox to select it. Amounts are in rand; the minimum transaction amount is R10.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n    \"client_id\": \"{{client_id}}\",\n    \"reference\": \"EXAMPLE-ORDER-112\",\n    \"description\": \"Example order 112\",\n    \"transaction_type\": \"DB\",\n    \"day_of_debit\": 1,\n    \"total\": 123.45,\n    \"gateway\": \"DEFAULT\"\n}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "OK",
                            "code": 200,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"transaction added\",\n    \"success\": true,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"data\": {\n        \"id\": 112,\n        \"identifier\": \"0123456789abcdef0123456789abcdef\",\n        \"owner_id\": 456,\n        \"receiver_name\": \"Example Merchant\",\n        \"pos_session_id\": null,\n        \"collection_state\": null,\n        \"collection_method\": null,\n        \"client_id\": \"EXAMPLE_CLIENT_ID\",\n        \"payer_id\": null,\n        \"reference\": \"EXAMPLE-ORDER-112\",\n        \"description\": \"Example order 112\",\n        \"transaction_type\": \"DB\",\n        \"recurring_term\": null,\n        \"day_of_debit\": 1,\n        \"recur_count\": 1,\n        \"max_recur\": 0,\n        \"recurring_transaction_id\": null,\n        \"billing_street\": null,\n        \"billing_suburb\": null,\n        \"billing_city\": null,\n        \"billing_province\": null,\n        \"billing_country\": \"South Africa\",\n        \"billing_postal_code\": null,\n        \"billing_phone\": null,\n        \"billing_email\": null,\n        \"billing_first_name\": null,\n        \"billing_last_name\": null,\n        \"billing_company\": null,\n        \"gateway\": \"DEFAULT\",\n        \"gateway_checkout_id\": null,\n        \"gateway_transaction_id\": null,\n        \"total\": 123.45,\n        \"consumed\": 0,\n        \"status\": \"OPEN\",\n        \"status_message\": \"\",\n        \"is_sandbox\": 1,\n        \"update_date\": \"2026-10-27 10:00:00\",\n        \"create_date\": \"2026-10-27 10:00:00\",\n        \"cost\": 0,\n        \"billing_country_code\": \"ZA\"\n    }\n}"
                        },
                        {
                            "name": "Create an idempotent online transaction",
                            "originalRequest": {
                                "method": "POST",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    },
                                    {
                                        "key": "Idempotency-Key",
                                        "value": "EXAMPLE-ORDER-112-ATTEMPT-1"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/transaction",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "transaction"
                                    ],
                                    "query": []
                                },
                                "description": "Create a transaction. Idempotency-Key is optional: matching retries return the original successful creation response; different details with the same key return HTTP 409. Requests without the header retain the existing behavior.Authenticate with an authorised client. Sandbox mode comes from the API client configuration; do not send is_sandbox to select it. Amounts are in rand; the minimum transaction amount is R10.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n    \"client_id\": \"{{client_id}}\",\n    \"reference\": \"EXAMPLE-ORDER-112\",\n    \"description\": \"Example order 112\",\n    \"transaction_type\": \"DB\",\n    \"day_of_debit\": 1,\n    \"total\": 123.45,\n    \"gateway\": \"DEFAULT\"\n}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "OK",
                            "code": 200,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                },
                                {
                                    "key": "Idempotency-Replayed",
                                    "value": "false"
                                }
                            ],
                            "body": "{\n    \"message\": \"transaction added\",\n    \"success\": true,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"data\": {\n        \"id\": 112,\n        \"identifier\": \"0123456789abcdef0123456789abcdef\",\n        \"owner_id\": 456,\n        \"receiver_name\": \"Example Merchant\",\n        \"pos_session_id\": null,\n        \"collection_state\": null,\n        \"collection_method\": null,\n        \"client_id\": \"EXAMPLE_CLIENT_ID\",\n        \"payer_id\": null,\n        \"reference\": \"EXAMPLE-ORDER-112\",\n        \"description\": \"Example order 112\",\n        \"transaction_type\": \"DB\",\n        \"recurring_term\": null,\n        \"day_of_debit\": 1,\n        \"recur_count\": 1,\n        \"max_recur\": 0,\n        \"recurring_transaction_id\": null,\n        \"billing_street\": null,\n        \"billing_suburb\": null,\n        \"billing_city\": null,\n        \"billing_province\": null,\n        \"billing_country\": \"South Africa\",\n        \"billing_postal_code\": null,\n        \"billing_phone\": null,\n        \"billing_email\": null,\n        \"billing_first_name\": null,\n        \"billing_last_name\": null,\n        \"billing_company\": null,\n        \"gateway\": \"DEFAULT\",\n        \"gateway_checkout_id\": null,\n        \"gateway_transaction_id\": null,\n        \"total\": 123.45,\n        \"consumed\": 0,\n        \"status\": \"OPEN\",\n        \"status_message\": \"\",\n        \"is_sandbox\": 1,\n        \"update_date\": \"2026-10-27 10:00:00\",\n        \"create_date\": \"2026-10-27 10:00:00\",\n        \"cost\": 0,\n        \"billing_country_code\": \"ZA\"\n    }\n}"
                        },
                        {
                            "name": "Replay an online transaction creation",
                            "originalRequest": {
                                "method": "POST",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    },
                                    {
                                        "key": "Idempotency-Key",
                                        "value": "EXAMPLE-ORDER-112-ATTEMPT-1"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/transaction",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "transaction"
                                    ],
                                    "query": []
                                },
                                "description": "Create a transaction. Idempotency-Key is optional: matching retries return the original successful creation response; different details with the same key return HTTP 409. Requests without the header retain the existing behavior.First create successfully with this persisted key and body. Repeat exactly the same request. The replay is the saved creation response; GET the public identifier to check current payment status.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n    \"client_id\": \"{{client_id}}\",\n    \"reference\": \"EXAMPLE-ORDER-112\",\n    \"description\": \"Example order 112\",\n    \"transaction_type\": \"DB\",\n    \"day_of_debit\": 1,\n    \"total\": 123.45,\n    \"gateway\": \"DEFAULT\"\n}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "OK",
                            "code": 200,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                },
                                {
                                    "key": "Idempotency-Replayed",
                                    "value": "true"
                                }
                            ],
                            "body": "{\n    \"message\": \"transaction added\",\n    \"success\": true,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"data\": {\n        \"id\": 112,\n        \"identifier\": \"0123456789abcdef0123456789abcdef\",\n        \"owner_id\": 456,\n        \"receiver_name\": \"Example Merchant\",\n        \"pos_session_id\": null,\n        \"collection_state\": null,\n        \"collection_method\": null,\n        \"client_id\": \"EXAMPLE_CLIENT_ID\",\n        \"payer_id\": null,\n        \"reference\": \"EXAMPLE-ORDER-112\",\n        \"description\": \"Example order 112\",\n        \"transaction_type\": \"DB\",\n        \"recurring_term\": null,\n        \"day_of_debit\": 1,\n        \"recur_count\": 1,\n        \"max_recur\": 0,\n        \"recurring_transaction_id\": null,\n        \"billing_street\": null,\n        \"billing_suburb\": null,\n        \"billing_city\": null,\n        \"billing_province\": null,\n        \"billing_country\": \"South Africa\",\n        \"billing_postal_code\": null,\n        \"billing_phone\": null,\n        \"billing_email\": null,\n        \"billing_first_name\": null,\n        \"billing_last_name\": null,\n        \"billing_company\": null,\n        \"gateway\": \"DEFAULT\",\n        \"gateway_checkout_id\": null,\n        \"gateway_transaction_id\": null,\n        \"total\": 123.45,\n        \"consumed\": 0,\n        \"status\": \"OPEN\",\n        \"status_message\": \"\",\n        \"is_sandbox\": 1,\n        \"update_date\": \"2026-10-27 10:00:00\",\n        \"create_date\": \"2026-10-27 10:00:00\",\n        \"cost\": 0,\n        \"billing_country_code\": \"ZA\"\n    }\n}"
                        },
                        {
                            "name": "Invalid idempotency key",
                            "originalRequest": {
                                "method": "POST",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    },
                                    {
                                        "key": "Idempotency-Key",
                                        "value": "invalid key with spaces"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/transaction",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "transaction"
                                    ],
                                    "query": []
                                },
                                "description": "Create a transaction. Idempotency-Key is optional: matching retries return the original successful creation response; different details with the same key return HTTP 409. Requests without the header retain the existing behavior.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n    \"client_id\": \"{{client_id}}\",\n    \"transaction_type\": \"DB\",\n    \"day_of_debit\": 1,\n    \"reference\": \"EXAMPLE-ORDER-112\",\n    \"description\": \"Example order 112\",\n    \"total\": 123.45,\n    \"gateway\": \"DEFAULT\"\n}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "Bad Request",
                            "code": 400,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"success\": false,\n    \"access\": true,\n    \"message\": \"Idempotency-Key must be a single value containing 1 to 128 visible ASCII characters without spaces.\",\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"error\": \"invalid_idempotency_key\"\n}"
                        },
                        {
                            "name": "Invalid bearer access token",
                            "originalRequest": {
                                "method": "POST",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    },
                                    {
                                        "key": "Idempotency-Key",
                                        "value": "EXAMPLE-ORDER-112-ATTEMPT-1"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/transaction",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "transaction"
                                    ],
                                    "query": []
                                },
                                "description": "Create a transaction. Idempotency-Key is optional: matching retries return the original successful creation response; different details with the same key return HTTP 409. Requests without the header retain the existing behavior.Use an invalid or revoked bearer access token. Authentication fails before this operation is performed.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n    \"client_id\": \"{{client_id}}\",\n    \"reference\": \"EXAMPLE-ORDER-112\",\n    \"description\": \"Example order 112\",\n    \"transaction_type\": \"DB\",\n    \"day_of_debit\": 1,\n    \"total\": 123.45,\n    \"gateway\": \"DEFAULT\"\n}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "Unauthorized",
                            "code": 401,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"error\": \"access_denied\",\n    \"error_description\": \"The resource owner or authorization server denied the request.\",\n    \"hint\": \"Access token could not be verified\",\n    \"message\": \"The resource owner or authorization server denied the request.\"\n}"
                        },
                        {
                            "name": "Conflicting online transaction retry",
                            "originalRequest": {
                                "method": "POST",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    },
                                    {
                                        "key": "Idempotency-Key",
                                        "value": "EXAMPLE-ORDER-112-ATTEMPT-1"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/transaction",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "transaction"
                                    ],
                                    "query": []
                                },
                                "description": "Create a transaction. Idempotency-Key is optional: matching retries return the original successful creation response; different details with the same key return HTTP 409. Requests without the header retain the existing behavior.After a successful creation at total 123.45, reuse its key with total 150.00. Use a new key only for a genuinely new intended transaction.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n    \"client_id\": \"{{client_id}}\",\n    \"reference\": \"EXAMPLE-ORDER-112\",\n    \"description\": \"Example order 112\",\n    \"transaction_type\": \"DB\",\n    \"day_of_debit\": 1,\n    \"total\": 150,\n    \"gateway\": \"DEFAULT\"\n}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "Conflict",
                            "code": 409,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"This Idempotency-Key has already been used with different transaction details.\",\n    \"success\": false,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"error\": \"idempotency_key_conflict\"\n}"
                        }
                    ]
                },
                {
                    "name": "Get Transaction",
                    "request": {
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "url": {
                            "raw": "{{base_url}}/transaction/{{transaction_id}}",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "transaction",
                                "{{transaction_id}}"
                            ],
                            "query": []
                        },
                        "description": "Load a transaction.Use transaction_id containing the public identifier returned by creation. This response represents the owning client with full read access.\n\n### PHP (cURL)\n```php\n// Replace the {{...}} placeholders with your integration settings.\n// Use transaction_id containing the public identifier returned by creation. This response represents the owning client with full read access.\n$request = curl_init('{{base_url}}/transaction/{{transaction_id}}');\ncurl_setopt_array($request, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_HTTPHEADER => array (\n  0 => 'Authorization: Bearer {{access_token}}',\n),\n]);\n$raw = curl_exec($request);\nif ($raw === false) { throw new RuntimeException(curl_error($request)); }\n$status = curl_getinfo($request, CURLINFO_HTTP_CODE);\n$contentType = curl_getinfo($request, CURLINFO_CONTENT_TYPE) ?: \"\";\ncurl_close($request);\n$result = str_contains($contentType, \"application/json\") ? json_decode($raw, true, 512, JSON_THROW_ON_ERROR) : $raw;\nvar_dump($status, $result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```\n\n### JavaScript (Node.js)\n```javascript\n// Node.js backend example. Replace the {{...}} placeholders.\n// Use transaction_id containing the public identifier returned by creation. This response represents the owning client with full read access.\nconst headers = {\n    \"Authorization\": \"Bearer {{access_token}}\"\n};\nconst response = await fetch(\"{{base_url}}/transaction/{{transaction_id}}\", {\n  method: \"GET\", headers });\nconst contentType = response.headers.get(\"content-type\") || \"\";\nconst result = contentType.includes(\"application/json\") ? await response.json() : await response.text();\nconsole.log(response.status, result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```"
                    },
                    "response": [
                        {
                            "name": "Read an owned transaction",
                            "originalRequest": {
                                "method": "GET",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/transaction/{{transaction_id}}",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "transaction",
                                        "{{transaction_id}}"
                                    ],
                                    "query": []
                                },
                                "description": "Load a transaction.Use transaction_id containing the public identifier returned by creation. This response represents the owning client with full read access."
                            },
                            "status": "OK",
                            "code": 200,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Transaction loaded\",\n    \"success\": true,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"data\": {\n        \"id\": 112,\n        \"identifier\": \"0123456789abcdef0123456789abcdef\",\n        \"owner_id\": 456,\n        \"pos_session_id\": null,\n        \"collection_state\": null,\n        \"collection_method\": null,\n        \"client_id\": \"EXAMPLE_CLIENT_ID\",\n        \"payer_id\": null,\n        \"reference\": \"EXAMPLE-ORDER-112\",\n        \"description\": \"Example order 112\",\n        \"transaction_type\": \"DB\",\n        \"recurring_term\": null,\n        \"day_of_debit\": 1,\n        \"recur_count\": 1,\n        \"max_recur\": 0,\n        \"recurring_transaction_id\": null,\n        \"billing_street\": null,\n        \"billing_suburb\": null,\n        \"billing_city\": null,\n        \"billing_province\": null,\n        \"billing_country\": \"South Africa\",\n        \"billing_postal_code\": null,\n        \"billing_phone\": null,\n        \"billing_email\": null,\n        \"billing_first_name\": null,\n        \"billing_last_name\": null,\n        \"billing_company\": null,\n        \"gateway\": \"DEFAULT\",\n        \"gateway_checkout_id\": null,\n        \"gateway_transaction_id\": null,\n        \"total\": 123.45,\n        \"consumed\": \"N/A\",\n        \"status\": \"OPEN\",\n        \"status_message\": \"\",\n        \"is_sandbox\": 1,\n        \"update_date\": \"2026-10-27 10:00:00\",\n        \"create_date\": \"2026-10-27 10:00:00\",\n        \"cost\": 0,\n        \"billing_country_code\": \"ZA\",\n        \"owner_status\": \"ACTIVE\",\n        \"receiver\": {\n            \"type\": \"profile\",\n            \"name\": \"Example Merchant\"\n        }\n    }\n}"
                        },
                        {
                            "name": "Transaction does not exist",
                            "originalRequest": {
                                "method": "GET",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/transaction/{{transaction_id}}",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "transaction",
                                        "{{transaction_id}}"
                                    ],
                                    "query": []
                                },
                                "description": "Load a transaction.Set transaction_id to a public identifier that does not exist. This handler returns HTTP 404 with success=false."
                            },
                            "status": "Not Found",
                            "code": 404,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"success\": false,\n    \"access\": true,\n    \"message\": \"Transaction not found\",\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"error\": \"not_found\"\n}"
                        },
                        {
                            "name": "Invalid bearer access token",
                            "originalRequest": {
                                "method": "GET",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/transaction/{{transaction_id}}",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "transaction",
                                        "{{transaction_id}}"
                                    ],
                                    "query": []
                                },
                                "description": "Load a transaction.Use an invalid or revoked bearer access token. Authentication fails before this operation is performed."
                            },
                            "status": "Unauthorized",
                            "code": 401,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"error\": \"access_denied\",\n    \"error_description\": \"The resource owner or authorization server denied the request.\",\n    \"hint\": \"Access token could not be verified\",\n    \"message\": \"The resource owner or authorization server denied the request.\"\n}"
                        }
                    ]
                },
                {
                    "name": "Delete Transaction",
                    "request": {
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "url": {
                            "raw": "{{base_url}}/transaction/{{transaction_id}}",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "transaction",
                                "{{transaction_id}}"
                            ],
                            "query": []
                        },
                        "description": "Permanently delete a transaction. Only allowed while it's status is OPEN. You need to be authenticated as a user with the password grant.The caller must own the transaction. Status must be OPEN and no active payment reservation may exist.\n\n### PHP (cURL)\n```php\n// Replace the {{...}} placeholders with your integration settings.\n// The caller must own the transaction. Status must be OPEN and no active payment reservation may exist.\n$request = curl_init('{{base_url}}/transaction/{{transaction_id}}');\ncurl_setopt_array($request, [\n    CURLOPT_CUSTOMREQUEST => 'DELETE',\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_HTTPHEADER => array (\n  0 => 'Authorization: Bearer {{access_token}}',\n),\n]);\n$raw = curl_exec($request);\nif ($raw === false) { throw new RuntimeException(curl_error($request)); }\n$status = curl_getinfo($request, CURLINFO_HTTP_CODE);\n$contentType = curl_getinfo($request, CURLINFO_CONTENT_TYPE) ?: \"\";\ncurl_close($request);\n$result = str_contains($contentType, \"application/json\") ? json_decode($raw, true, 512, JSON_THROW_ON_ERROR) : $raw;\nvar_dump($status, $result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```\n\n### JavaScript (Node.js)\n```javascript\n// Node.js backend example. Replace the {{...}} placeholders.\n// The caller must own the transaction. Status must be OPEN and no active payment reservation may exist.\nconst headers = {\n    \"Authorization\": \"Bearer {{access_token}}\"\n};\nconst response = await fetch(\"{{base_url}}/transaction/{{transaction_id}}\", {\n  method: \"DELETE\", headers });\nconst contentType = response.headers.get(\"content-type\") || \"\";\nconst result = contentType.includes(\"application/json\") ? await response.json() : await response.text();\nconsole.log(response.status, result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```"
                    },
                    "response": [
                        {
                            "name": "Delete an unreserved open transaction",
                            "originalRequest": {
                                "method": "DELETE",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/transaction/{{transaction_id}}",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "transaction",
                                        "{{transaction_id}}"
                                    ],
                                    "query": []
                                },
                                "description": "Permanently delete a transaction. Only allowed while it's status is OPEN. You need to be authenticated as a user with the password grant.The caller must own the transaction. Status must be OPEN and no active payment reservation may exist."
                            },
                            "status": "OK",
                            "code": 200,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Transaction deleted\",\n    \"success\": true,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    }\n}"
                        },
                        {
                            "name": "Invalid bearer access token",
                            "originalRequest": {
                                "method": "DELETE",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/transaction/{{transaction_id}}",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "transaction",
                                        "{{transaction_id}}"
                                    ],
                                    "query": []
                                },
                                "description": "Permanently delete a transaction. Only allowed while it's status is OPEN. You need to be authenticated as a user with the password grant.Use an invalid or revoked bearer access token. Authentication fails before this operation is performed."
                            },
                            "status": "Unauthorized",
                            "code": 401,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"error\": \"access_denied\",\n    \"error_description\": \"The resource owner or authorization server denied the request.\",\n    \"hint\": \"Access token could not be verified\",\n    \"message\": \"The resource owner or authorization server denied the request.\"\n}"
                        },
                        {
                            "name": "Payment reservation prevents deletion",
                            "originalRequest": {
                                "method": "DELETE",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/transaction/{{transaction_id}}",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "transaction",
                                        "{{transaction_id}}"
                                    ],
                                    "query": []
                                },
                                "description": "Permanently delete a transaction. Only allowed while it's status is OPEN. You need to be authenticated as a user with the password grant.A transaction already claimed or reserved for collection cannot be deleted."
                            },
                            "status": "Conflict",
                            "code": 409,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"A transaction with a payment reservation cannot be deleted.\",\n    \"success\": false,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"error\": \"payment_in_progress\"\n}"
                        }
                    ]
                },
                {
                    "name": "Capture Transaction",
                    "request": {
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "url": {
                            "raw": "{{base_url}}/transaction/{{transaction_id}}/capture",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "transaction",
                                "{{transaction_id}}",
                                "capture"
                            ],
                            "query": []
                        },
                        "description": "Capture a Preauthorized transaction.Use a successful PA transaction owned by this user or client. Amount must be within the remaining authorisation and configured minimum.\n\n### PHP (cURL)\n```php\n// Replace the {{...}} placeholders with your integration settings.\n// Use a successful PA transaction owned by this user or client. Amount must be within the remaining authorisation and configured minimum.\n$request = curl_init('{{base_url}}/transaction/{{transaction_id}}/capture');\ncurl_setopt_array($request, [\n    CURLOPT_CUSTOMREQUEST => 'PUT',\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_HTTPHEADER => array (\n  0 => 'Authorization: Bearer {{access_token}}',\n  1 => 'Content-Type: application/json',\n),\n    CURLOPT_POSTFIELDS => json_encode(array (\n  'amount' => 50,\n), JSON_THROW_ON_ERROR),\n]);\n$raw = curl_exec($request);\nif ($raw === false) { throw new RuntimeException(curl_error($request)); }\n$status = curl_getinfo($request, CURLINFO_HTTP_CODE);\n$contentType = curl_getinfo($request, CURLINFO_CONTENT_TYPE) ?: \"\";\ncurl_close($request);\n$result = str_contains($contentType, \"application/json\") ? json_decode($raw, true, 512, JSON_THROW_ON_ERROR) : $raw;\nvar_dump($status, $result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```\n\n### JavaScript (Node.js)\n```javascript\n// Node.js backend example. Replace the {{...}} placeholders.\n// Use a successful PA transaction owned by this user or client. Amount must be within the remaining authorisation and configured minimum.\nconst headers = {\n    \"Content-Type\": \"application/json\",\n    \"Authorization\": \"Bearer {{access_token}}\"\n};\nconst body = JSON.stringify({\n    \"amount\": 50\n});\nconst response = await fetch(\"{{base_url}}/transaction/{{transaction_id}}/capture\", {\n  method: \"PUT\", headers, body });\nconst contentType = response.headers.get(\"content-type\") || \"\";\nconst result = contentType.includes(\"application/json\") ? await response.json() : await response.text();\nconsole.log(response.status, result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"amount\": 50\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": [
                        {
                            "name": "Capture part of a successful preauthorisation",
                            "originalRequest": {
                                "method": "PUT",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/transaction/{{transaction_id}}/capture",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "transaction",
                                        "{{transaction_id}}",
                                        "capture"
                                    ],
                                    "query": []
                                },
                                "description": "Capture a Preauthorized transaction.Use a successful PA transaction owned by this user or client. Amount must be within the remaining authorisation and configured minimum.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n    \"amount\": 50\n}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "OK",
                            "code": 200,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Transaction captured\",\n    \"success\": true,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"data\": {\n        \"amount\": 50,\n        \"status\": \"000.100.110\",\n        \"status_message\": \"Request successfully processed in Sandbox (ProcessPending)\"\n    }\n}"
                        },
                        {
                            "name": "Invalid bearer access token",
                            "originalRequest": {
                                "method": "PUT",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/transaction/{{transaction_id}}/capture",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "transaction",
                                        "{{transaction_id}}",
                                        "capture"
                                    ],
                                    "query": []
                                },
                                "description": "Capture a Preauthorized transaction.Use an invalid or revoked bearer access token. Authentication fails before this operation is performed.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n    \"amount\": 50\n}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "Unauthorized",
                            "code": 401,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"error\": \"access_denied\",\n    \"error_description\": \"The resource owner or authorization server denied the request.\",\n    \"hint\": \"Access token could not be verified\",\n    \"message\": \"The resource owner or authorization server denied the request.\"\n}"
                        },
                        {
                            "name": "Direct debit needs no capture",
                            "originalRequest": {
                                "method": "PUT",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/transaction/{{transaction_id}}/capture",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "transaction",
                                        "{{transaction_id}}",
                                        "capture"
                                    ],
                                    "query": []
                                },
                                "description": "Capture a Preauthorized transaction.Use a DB transaction. Direct debits are already captured automatically.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n    \"amount\": 50\n}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "Conflict",
                            "code": 409,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Direct Debit transactions are automatically captured.\",\n    \"success\": false,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"error\": \"conflict\"\n}"
                        }
                    ]
                },
                {
                    "name": "Reverse Transaction",
                    "request": {
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "url": {
                            "raw": "{{base_url}}/transaction/{{transaction_id}}/reverse",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "transaction",
                                "{{transaction_id}}",
                                "reverse"
                            ],
                            "query": []
                        },
                        "description": "Reverse a Preauthorized transaction.Use an eligible PA transaction and an amount within its unconsumed balance. This endpoint does not refund a direct debit.\n\n### PHP (cURL)\n```php\n// Replace the {{...}} placeholders with your integration settings.\n// Use an eligible PA transaction and an amount within its unconsumed balance. This endpoint does not refund a direct debit.\n$request = curl_init('{{base_url}}/transaction/{{transaction_id}}/reverse');\ncurl_setopt_array($request, [\n    CURLOPT_CUSTOMREQUEST => 'PUT',\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_HTTPHEADER => array (\n  0 => 'Authorization: Bearer {{access_token}}',\n  1 => 'Content-Type: application/json',\n),\n    CURLOPT_POSTFIELDS => json_encode(array (\n  'amount' => 50,\n), JSON_THROW_ON_ERROR),\n]);\n$raw = curl_exec($request);\nif ($raw === false) { throw new RuntimeException(curl_error($request)); }\n$status = curl_getinfo($request, CURLINFO_HTTP_CODE);\n$contentType = curl_getinfo($request, CURLINFO_CONTENT_TYPE) ?: \"\";\ncurl_close($request);\n$result = str_contains($contentType, \"application/json\") ? json_decode($raw, true, 512, JSON_THROW_ON_ERROR) : $raw;\nvar_dump($status, $result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```\n\n### JavaScript (Node.js)\n```javascript\n// Node.js backend example. Replace the {{...}} placeholders.\n// Use an eligible PA transaction and an amount within its unconsumed balance. This endpoint does not refund a direct debit.\nconst headers = {\n    \"Content-Type\": \"application/json\",\n    \"Authorization\": \"Bearer {{access_token}}\"\n};\nconst body = JSON.stringify({\n    \"amount\": 50\n});\nconst response = await fetch(\"{{base_url}}/transaction/{{transaction_id}}/reverse\", {\n  method: \"PUT\", headers, body });\nconst contentType = response.headers.get(\"content-type\") || \"\";\nconst result = contentType.includes(\"application/json\") ? await response.json() : await response.text();\nconsole.log(response.status, result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"amount\": 50\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": [
                        {
                            "name": "Reverse an unused preauthorisation amount",
                            "originalRequest": {
                                "method": "PUT",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/transaction/{{transaction_id}}/reverse",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "transaction",
                                        "{{transaction_id}}",
                                        "reverse"
                                    ],
                                    "query": []
                                },
                                "description": "Reverse a Preauthorized transaction.Use an eligible PA transaction and an amount within its unconsumed balance. This endpoint does not refund a direct debit.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n    \"amount\": 50\n}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "OK",
                            "code": 200,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Transaction reversed\",\n    \"success\": true,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"data\": {\n        \"amount\": 50\n    }\n}"
                        },
                        {
                            "name": "Invalid bearer access token",
                            "originalRequest": {
                                "method": "PUT",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/transaction/{{transaction_id}}/reverse",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "transaction",
                                        "{{transaction_id}}",
                                        "reverse"
                                    ],
                                    "query": []
                                },
                                "description": "Reverse a Preauthorized transaction.Use an invalid or revoked bearer access token. Authentication fails before this operation is performed.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n    \"amount\": 50\n}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "Unauthorized",
                            "code": 401,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"error\": \"access_denied\",\n    \"error_description\": \"The resource owner or authorization server denied the request.\",\n    \"hint\": \"Access token could not be verified\",\n    \"message\": \"The resource owner or authorization server denied the request.\"\n}"
                        },
                        {
                            "name": "Direct debit cannot be reversed here",
                            "originalRequest": {
                                "method": "PUT",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/transaction/{{transaction_id}}/reverse",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "transaction",
                                        "{{transaction_id}}",
                                        "reverse"
                                    ],
                                    "query": []
                                },
                                "description": "Reverse a Preauthorized transaction.Use a DB transaction owned by the authenticated caller.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n    \"amount\": 50\n}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "Conflict",
                            "code": 409,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Cannot reverse a Direct Debit transaction.\",\n    \"success\": false,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"error\": \"conflict\"\n}"
                        }
                    ]
                },
                {
                    "name": "Prepare Transaction",
                    "request": {
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "url": {
                            "raw": "{{base_url}}/transaction/{{transaction_id}}/prepare",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "transaction",
                                "{{transaction_id}}",
                                "prepare"
                            ],
                            "query": []
                        },
                        "description": "Prepare a transaction. Used by the Gateway interface.Use an OPEN transaction with no competing collection. This creates an EFT payment key; it does not confirm payment.\n\n### PHP (cURL)\n```php\n// Replace the {{...}} placeholders with your integration settings.\n// Use an OPEN transaction with no competing collection. This creates an EFT payment key; it does not confirm payment.\n$request = curl_init('{{base_url}}/transaction/{{transaction_id}}/prepare');\ncurl_setopt_array($request, [\n    CURLOPT_CUSTOMREQUEST => 'PUT',\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_HTTPHEADER => array (\n  0 => 'Authorization: Bearer {{access_token}}',\n  1 => 'Content-Type: application/json',\n),\n    CURLOPT_POSTFIELDS => json_encode(array (\n  'gateway' => 'EFTSECURE',\n), JSON_THROW_ON_ERROR),\n]);\n$raw = curl_exec($request);\nif ($raw === false) { throw new RuntimeException(curl_error($request)); }\n$status = curl_getinfo($request, CURLINFO_HTTP_CODE);\n$contentType = curl_getinfo($request, CURLINFO_CONTENT_TYPE) ?: \"\";\ncurl_close($request);\n$result = str_contains($contentType, \"application/json\") ? json_decode($raw, true, 512, JSON_THROW_ON_ERROR) : $raw;\nvar_dump($status, $result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```\n\n### JavaScript (Node.js)\n```javascript\n// Node.js backend example. Replace the {{...}} placeholders.\n// Use an OPEN transaction with no competing collection. This creates an EFT payment key; it does not confirm payment.\nconst headers = {\n    \"Content-Type\": \"application/json\",\n    \"Authorization\": \"Bearer {{access_token}}\"\n};\nconst body = JSON.stringify({\n    \"gateway\": \"EFTSECURE\"\n});\nconst response = await fetch(\"{{base_url}}/transaction/{{transaction_id}}/prepare\", {\n  method: \"PUT\", headers, body });\nconst contentType = response.headers.get(\"content-type\") || \"\";\nconst result = contentType.includes(\"application/json\") ? await response.json() : await response.text();\nconsole.log(response.status, result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"gateway\": \"EFTSECURE\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": [
                        {
                            "name": "Prepare online EFT checkout",
                            "originalRequest": {
                                "method": "PUT",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/transaction/{{transaction_id}}/prepare",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "transaction",
                                        "{{transaction_id}}",
                                        "prepare"
                                    ],
                                    "query": []
                                },
                                "description": "Prepare a transaction. Used by the Gateway interface.Use an OPEN transaction with no competing collection. This creates an EFT payment key; it does not confirm payment.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n    \"gateway\": \"EFTSECURE\"\n}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "OK",
                            "code": 200,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Transaction prepared\",\n    \"success\": true,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"data\": {\n        \"id\": 112,\n        \"identifier\": \"0123456789abcdef0123456789abcdef\",\n        \"owner_id\": 456,\n        \"receiver_name\": \"Example Merchant\",\n        \"pos_session_id\": null,\n        \"collection_state\": null,\n        \"collection_method\": null,\n        \"client_id\": \"EXAMPLE_CLIENT_ID\",\n        \"payer_id\": null,\n        \"reference\": \"EXAMPLE-ORDER-112\",\n        \"description\": \"Example order 112\",\n        \"transaction_type\": \"DB\",\n        \"recurring_term\": null,\n        \"day_of_debit\": 1,\n        \"recur_count\": 1,\n        \"max_recur\": 0,\n        \"recurring_transaction_id\": null,\n        \"billing_street\": null,\n        \"billing_suburb\": null,\n        \"billing_city\": null,\n        \"billing_province\": null,\n        \"billing_country\": \"South Africa\",\n        \"billing_postal_code\": null,\n        \"billing_phone\": null,\n        \"billing_email\": null,\n        \"billing_first_name\": null,\n        \"billing_last_name\": null,\n        \"billing_company\": null,\n        \"gateway\": \"EFTSECURE\",\n        \"gateway_checkout_id\": null,\n        \"gateway_transaction_id\": \"EXAMPLE_EFT_PAYMENT_KEY\",\n        \"total\": 123.45,\n        \"consumed\": 0,\n        \"status\": \"OPEN\",\n        \"status_message\": \"\",\n        \"is_sandbox\": 1,\n        \"update_date\": \"2026-10-27 10:00:00\",\n        \"create_date\": \"2026-10-27 10:00:00\",\n        \"cost\": 0,\n        \"billing_country_code\": \"ZA\",\n        \"owner_status\": \"ACTIVE\",\n        \"callback_uri\": \"https://merchant.example/payment-callback\",\n        \"redirect_uri\": \"https://merchant.example/payment-return\"\n    }\n}"
                        },
                        {
                            "name": "Invalid bearer access token",
                            "originalRequest": {
                                "method": "PUT",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/transaction/{{transaction_id}}/prepare",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "transaction",
                                        "{{transaction_id}}",
                                        "prepare"
                                    ],
                                    "query": []
                                },
                                "description": "Prepare a transaction. Used by the Gateway interface.Use an invalid or revoked bearer access token. Authentication fails before this operation is performed.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n    \"gateway\": \"EFTSECURE\"\n}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "Unauthorized",
                            "code": 401,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"error\": \"access_denied\",\n    \"error_description\": \"The resource owner or authorization server denied the request.\",\n    \"hint\": \"Access token could not be verified\",\n    \"message\": \"The resource owner or authorization server denied the request.\"\n}"
                        },
                        {
                            "name": "Online preparation for a missing transaction",
                            "originalRequest": {
                                "method": "PUT",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/transaction/{{transaction_id}}/prepare",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "transaction",
                                        "{{transaction_id}}",
                                        "prepare"
                                    ],
                                    "query": []
                                },
                                "description": "Prepare a transaction. Used by the Gateway interface.Use a nonexistent public identifier.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n    \"gateway\": \"DEFAULT\"\n}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "Not Found",
                            "code": 404,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Transaction not found.\",\n    \"success\": false,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"error\": \"transaction_not_found\"\n}"
                        },
                        {
                            "name": "Online preparation for a closed transaction",
                            "originalRequest": {
                                "method": "PUT",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/transaction/{{transaction_id}}/prepare",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "transaction",
                                        "{{transaction_id}}",
                                        "prepare"
                                    ],
                                    "query": []
                                },
                                "description": "Prepare a transaction. Used by the Gateway interface.Use a transaction whose status is SUCCESS or another non-OPEN value.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n    \"gateway\": \"DEFAULT\"\n}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "Conflict",
                            "code": 409,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"This transaction is no longer open for payment.\",\n    \"success\": false,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"error\": \"payment_unavailable\"\n}"
                        }
                    ]
                },
                {
                    "name": "Check Transaction",
                    "request": {
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json"
                            }
                        ],
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "url": {
                            "raw": "{{base_url}}/transaction/check",
                            "host": [
                                "{{base_url}}"
                            ],
                            "path": [
                                "transaction",
                                "check"
                            ],
                            "query": []
                        },
                        "description": "Check a transaction. Used by Clients via Server-to-Server calls.Requires a confidential client token and a checkout belonging to that client. The response status, not the browser return alone, determines payment success.\n\n### PHP (cURL)\n```php\n// Replace the {{...}} placeholders with your integration settings.\n// Requires a confidential client token and a checkout belonging to that client. The response status, not the browser return alone, determines payment success.\n$request = curl_init('{{base_url}}/transaction/check');\ncurl_setopt_array($request, [\n    CURLOPT_CUSTOMREQUEST => 'PUT',\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_HTTPHEADER => array (\n  0 => 'Authorization: Bearer {{access_token}}',\n  1 => 'Content-Type: application/json',\n),\n    CURLOPT_POSTFIELDS => json_encode(array (\n  'gateway_checkout_id' => '{{gateway_checkout_id}}',\n), JSON_THROW_ON_ERROR),\n]);\n$raw = curl_exec($request);\nif ($raw === false) { throw new RuntimeException(curl_error($request)); }\n$status = curl_getinfo($request, CURLINFO_HTTP_CODE);\n$contentType = curl_getinfo($request, CURLINFO_CONTENT_TYPE) ?: \"\";\ncurl_close($request);\n$result = str_contains($contentType, \"application/json\") ? json_decode($raw, true, 512, JSON_THROW_ON_ERROR) : $raw;\nvar_dump($status, $result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```\n\n### JavaScript (Node.js)\n```javascript\n// Node.js backend example. Replace the {{...}} placeholders.\n// Requires a confidential client token and a checkout belonging to that client. The response status, not the browser return alone, determines payment success.\nconst headers = {\n    \"Content-Type\": \"application/json\",\n    \"Authorization\": \"Bearer {{access_token}}\"\n};\nconst body = JSON.stringify({\n    \"gateway_checkout_id\": \"{{gateway_checkout_id}}\"\n});\nconst response = await fetch(\"{{base_url}}/transaction/check\", {\n  method: \"PUT\", headers, body });\nconst contentType = response.headers.get(\"content-type\") || \"\";\nconst result = contentType.includes(\"application/json\") ? await response.json() : await response.text();\nconsole.log(response.status, result);\n// Inspect both the HTTP status and success field; some application errors use HTTP 200.\n```",
                        "body": {
                            "mode": "raw",
                            "raw": "{\n    \"gateway_checkout_id\": \"{{gateway_checkout_id}}\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        }
                    },
                    "response": [
                        {
                            "name": "Check online checkout status",
                            "originalRequest": {
                                "method": "PUT",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/transaction/check",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "transaction",
                                        "check"
                                    ],
                                    "query": []
                                },
                                "description": "Check a transaction. Used by Clients via Server-to-Server calls.Requires a confidential client token and a checkout belonging to that client. The response status, not the browser return alone, determines payment success.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n    \"gateway_checkout_id\": \"{{gateway_checkout_id}}\"\n}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "OK",
                            "code": 200,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Transaction has been checked\",\n    \"success\": true,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"data\": {\n        \"id\": 112,\n        \"identifier\": \"0123456789abcdef0123456789abcdef\",\n        \"owner_id\": 456,\n        \"receiver_name\": \"Example Merchant\",\n        \"pos_session_id\": null,\n        \"collection_state\": null,\n        \"collection_method\": null,\n        \"client_id\": \"EXAMPLE_CLIENT_ID\",\n        \"payer_id\": null,\n        \"reference\": \"EXAMPLE-ORDER-112\",\n        \"description\": \"Example order 112\",\n        \"transaction_type\": \"DB\",\n        \"recurring_term\": null,\n        \"day_of_debit\": 1,\n        \"recur_count\": 1,\n        \"max_recur\": 0,\n        \"recurring_transaction_id\": null,\n        \"billing_street\": null,\n        \"billing_suburb\": null,\n        \"billing_city\": null,\n        \"billing_province\": null,\n        \"billing_country\": \"South Africa\",\n        \"billing_postal_code\": null,\n        \"billing_phone\": null,\n        \"billing_email\": null,\n        \"billing_first_name\": null,\n        \"billing_last_name\": null,\n        \"billing_company\": null,\n        \"gateway\": \"DEFAULT\",\n        \"gateway_checkout_id\": \"EXAMPLE_CHECKOUT_ID\",\n        \"gateway_transaction_id\": \"EXAMPLE_GATEWAY_TRANSACTION_ID\",\n        \"total\": 123.45,\n        \"consumed\": 0,\n        \"status\": \"SUCCESS\",\n        \"status_message\": \"Request successfully processed\",\n        \"is_sandbox\": 1,\n        \"update_date\": \"2026-10-27 10:00:00\",\n        \"create_date\": \"2026-10-27 10:00:00\",\n        \"cost\": 0,\n        \"billing_country_code\": \"ZA\",\n        \"callback_uri\": \"https://merchant.example/payment-callback\",\n        \"redirect_uri\": \"https://merchant.example/payment-return\",\n        \"gateway_response\": {\n            \"result\": {\n                \"code\": \"000.000.000\",\n                \"description\": \"Request successfully processed\"\n            },\n            \"id\": \"EXAMPLE_GATEWAY_TRANSACTION_ID\",\n            \"paymentType\": \"DB\",\n            \"amount\": \"123.45\",\n            \"currency\": \"ZAR\"\n        }\n    }\n}"
                        },
                        {
                            "name": "Invalid bearer access token",
                            "originalRequest": {
                                "method": "PUT",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/transaction/check",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "transaction",
                                        "check"
                                    ],
                                    "query": []
                                },
                                "description": "Check a transaction. Used by Clients via Server-to-Server calls.Use an invalid or revoked bearer access token. Authentication fails before this operation is performed.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n    \"gateway_checkout_id\": \"{{gateway_checkout_id}}\"\n}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "Unauthorized",
                            "code": 401,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"error\": \"access_denied\",\n    \"error_description\": \"The resource owner or authorization server denied the request.\",\n    \"hint\": \"Access token could not be verified\",\n    \"message\": \"The resource owner or authorization server denied the request.\"\n}"
                        },
                        {
                            "name": "Unknown checkout identifier",
                            "originalRequest": {
                                "method": "PUT",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application/json"
                                    }
                                ],
                                "auth": {
                                    "type": "bearer",
                                    "bearer": [
                                        {
                                            "key": "token",
                                            "value": "{{access_token}}",
                                            "type": "string"
                                        }
                                    ]
                                },
                                "url": {
                                    "raw": "{{base_url}}/transaction/check",
                                    "host": [
                                        "{{base_url}}"
                                    ],
                                    "path": [
                                        "transaction",
                                        "check"
                                    ],
                                    "query": []
                                },
                                "description": "Check a transaction. Used by Clients via Server-to-Server calls.Use a nonexistent gateway checkout identifier with a confidential client token.",
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\n    \"gateway_checkout_id\": \"{{gateway_checkout_id}}\"\n}",
                                    "options": {
                                        "raw": {
                                            "language": "json"
                                        }
                                    }
                                }
                            },
                            "status": "Not Found",
                            "code": 404,
                            "_postman_previewlanguage": "json",
                            "header": [
                                {
                                    "key": "Content-Type",
                                    "value": "application/json"
                                }
                            ],
                            "body": "{\n    \"message\": \"Invalid transaction ID provided\",\n    \"success\": false,\n    \"access\": true,\n    \"versions\": {\n        \"api_version\": \"3\",\n        \"api_contract_version\": \"3\",\n        \"api_release\": \"example\",\n        \"api_release_short\": \"example\",\n        \"api_release_tag\": \"sandbox\",\n        \"api_release_run_number\": null,\n        \"api_deployed_at\": null,\n        \"version_web\": \"0\",\n        \"version_android\": \"0\",\n        \"version_ios\": \"0\"\n    },\n    \"error\": \"not_found\"\n}"
                        }
                    ]
                }
            ]
        }
    ],
    "variable": [
        {
            "key": "access_token",
            "value": "",
            "type": "string"
        },
        {
            "key": "account_holder_id",
            "value": "",
            "type": "string"
        },
        {
            "key": "bank_account_id",
            "value": "",
            "type": "string"
        },
        {
            "key": "bank_account_number",
            "value": "",
            "type": "string"
        },
        {
            "key": "bank_branch_code",
            "value": "",
            "type": "string"
        },
        {
            "key": "base_url",
            "value": "",
            "type": "string"
        },
        {
            "key": "client_id",
            "value": "",
            "type": "string"
        },
        {
            "key": "client_secret",
            "value": "",
            "type": "string"
        },
        {
            "key": "courier_service",
            "value": "",
            "type": "string"
        },
        {
            "key": "delivery_id",
            "value": "",
            "type": "string"
        },
        {
            "key": "gateway_checkout_id",
            "value": "",
            "type": "string"
        },
        {
            "key": "invalid_password",
            "value": "",
            "type": "string"
        },
        {
            "key": "password",
            "value": "",
            "type": "string"
        },
        {
            "key": "pay_out_id",
            "value": "",
            "type": "string"
        },
        {
            "key": "postal_code",
            "value": "",
            "type": "string"
        },
        {
            "key": "recurring_transaction_id",
            "value": "",
            "type": "string"
        },
        {
            "key": "refresh_token",
            "value": "",
            "type": "string"
        },
        {
            "key": "transaction_id",
            "value": "",
            "type": "string"
        },
        {
            "key": "username",
            "value": "",
            "type": "string"
        }
    ]
}
