{
  "item": [
    {
      "id": "9f62b1c5-7884-4c07-a7d0-6781b67e3dec",
      "name": "Transactions",
      "description": {
        "content": "",
        "type": "text/plain"
      },
      "item": [
        {
          "id": "f7963507-46e2-4b97-8f55-618dbd3db1a5",
          "name": "Initiate Transaction",
          "request": {
            "name": "Initiate Transaction",
            "description": {
              "content": "Initiate a new transaction (sale or auth).\n\nMerchant API keys can call this endpoint for their own account.\nPartner API keys can also call this endpoint, but they must include `merchant_id`\nfor a merchant linked to that partner.\nPartner API keys can also capture, refund and void transactions for linked merchants under the same `merchant_id` rules.\n\nDuplicate requests reusing an active `reference` are rejected with HTTP 409. See the [duplicate protection guide](/guides/duplicate-protection).",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "v1",
                "transactions"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "auth": null,
            "body": {
              "mode": "raw",
              "raw": "{\n  \"amount\": 12.5,\n  \"currency\": \"EUR\",\n  \"transaction_type\": \"sale\",\n  \"wallet\": {\n    \"type\": \"apple_pay\",\n    \"token\": \"{\\\"version\\\":\\\"EC_v1\\\",\\\"data\\\":\\\"...\\\"}\"\n  },\n  \"vault_token\": \"vtok_a1b2c3d4e5f6\",\n  \"card\": {\n    \"number\": \"4111111111111111\",\n    \"exp_month\": \"12\",\n    \"exp_year\": \"2030\",\n    \"cvv\": \"123\",\n    \"name\": \"John Doe\"\n  },\n  \"reference\": \"order-10001\",\n  \"merchant_id\": 123,\n  \"success_url\": \"https://yoursite.com/checkout/success\",\n  \"error_url\": \"https://yoursite.com/checkout/error\",\n  \"customer\": {\n    \"merchant_customer_id\": \"cust-001\",\n    \"first_name\": \"John\",\n    \"last_name\": \"Doe\",\n    \"email\": \"john.doe@example.com\",\n    \"phone\": \"+441234567890\",\n    \"address\": \"1 High Street\",\n    \"city\": \"London\",\n    \"postal_code\": \"SW1A 1AA\",\n    \"country_code\": \"GB\",\n    \"ip_address\": \"198.51.100.5\"\n  },\n  \"card_verification_data\": {\n    \"id\": 43,\n    \"status\": \"full_auth\",\n    \"cavv\": \"architecto\",\n    \"xid\": \"architecto\",\n    \"ds_trans_id\": \"architecto\",\n    \"three_ds_version\": \"architecto\",\n    \"eci\": \"architecto\"\n  },\n  \"browser_data\": {\n    \"accept_header\": \"text/html\",\n    \"color_depth\": 24,\n    \"java_enabled\": false,\n    \"java_script_enabled\": true,\n    \"language\": \"en-US\",\n    \"screen_height\": 1080,\n    \"screen_width\": 1920,\n    \"time_zone_offset_in_minutes\": -60,\n    \"user_agent\": \"Mozilla/5.0\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "id": "1c0fccfe-04c4-4994-84b8-9d6f88011041",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "transactions"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"amount\": 12.5,\n  \"currency\": \"EUR\",\n  \"transaction_type\": \"sale\",\n  \"wallet\": {\n    \"type\": \"apple_pay\",\n    \"token\": \"{\\\"version\\\":\\\"EC_v1\\\",\\\"data\\\":\\\"...\\\"}\"\n  },\n  \"vault_token\": \"vtok_a1b2c3d4e5f6\",\n  \"card\": {\n    \"number\": \"4111111111111111\",\n    \"exp_month\": \"12\",\n    \"exp_year\": \"2030\",\n    \"cvv\": \"123\",\n    \"name\": \"John Doe\"\n  },\n  \"reference\": \"order-10001\",\n  \"merchant_id\": 123,\n  \"success_url\": \"https://yoursite.com/checkout/success\",\n  \"error_url\": \"https://yoursite.com/checkout/error\",\n  \"customer\": {\n    \"merchant_customer_id\": \"cust-001\",\n    \"first_name\": \"John\",\n    \"last_name\": \"Doe\",\n    \"email\": \"john.doe@example.com\",\n    \"phone\": \"+441234567890\",\n    \"address\": \"1 High Street\",\n    \"city\": \"London\",\n    \"postal_code\": \"SW1A 1AA\",\n    \"country_code\": \"GB\",\n    \"ip_address\": \"198.51.100.5\"\n  },\n  \"card_verification_data\": {\n    \"id\": 43,\n    \"status\": \"full_auth\",\n    \"cavv\": \"architecto\",\n    \"xid\": \"architecto\",\n    \"ds_trans_id\": \"architecto\",\n    \"three_ds_version\": \"architecto\",\n    \"eci\": \"architecto\"\n  },\n  \"browser_data\": {\n    \"accept_header\": \"text/html\",\n    \"color_depth\": 24,\n    \"java_enabled\": false,\n    \"java_script_enabled\": true,\n    \"language\": \"en-US\",\n    \"screen_height\": 1080,\n    \"screen_width\": 1920,\n    \"time_zone_offset_in_minutes\": -60,\n    \"user_agent\": \"Mozilla/5.0\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": true,\n  \"message\": \"Transaction initiated\",\n  \"code\": \"\",\n  \"data\": {\n    \"transaction\": {\n      \"id\": 2,\n      \"merchant_id\": 1,\n      \"merchant_trans_id\": \"ORDER-912346\",\n      \"amount\": 1250,\n      \"amount_formatted\": \"12.5 EUR\",\n      \"currency\": \"EUR\",\n      \"status\": \"auth\",\n      \"transaction_type\": \"auth\",\n      \"description\": \"string\",\n      \"acquirer_provider\": \"string\",\n      \"acquirer_trans_id\": \"514009741995\",\n      \"acquirer_auth_code\": \"400066\",\n      \"related_trans_id\": \"string\",\n      \"captured_amount\": 0,\n      \"customer\": \"string\",\n      \"cardholder\": {\n        \"card_last_four\": \"1111\",\n        \"card_brand\": \"visa\",\n        \"card_expiry_month\": 12,\n        \"card_expiry_year\": 2030,\n        \"created_at\": \"2025-05-20T09:18:47.000000Z\",\n        \"updated_at\": \"2025-05-20T09:18:47.000000Z\"\n      },\n      \"payment_instrument\": {\n        \"payment_instrument_id\": \"pi_01k24d5re8xh1v0c9jc0m8w3ns\",\n        \"vault_token\": \"8ac7a4a29852f6f101985300a1b41c2f\",\n        \"type\": \"card\",\n        \"status\": \"active\",\n        \"card_brand\": \"visa\",\n        \"card_last_four\": \"1111\",\n        \"card_expiry_month\": 12,\n        \"card_expiry_year\": 2030,\n        \"created_at\": \"2025-05-20T09:18:48.000000Z\",\n        \"updated_at\": \"2025-05-20T09:18:48.000000Z\"\n      },\n      \"ip_address\": \"203.0.113.10\",\n      \"created_at\": \"2025-05-20T09:18:47.000000Z\",\n      \"updated_at\": \"2025-05-20T09:18:48.000000Z\"\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "b0453386-288f-4a5f-a09e-8a9ee527078e",
              "name": "Transaction rejected. The `code` field identifies the reason. See the [error catalogue](/api-basics/errors).",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "transactions"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"amount\": 12.5,\n  \"currency\": \"EUR\",\n  \"transaction_type\": \"sale\",\n  \"wallet\": {\n    \"type\": \"apple_pay\",\n    \"token\": \"{\\\"version\\\":\\\"EC_v1\\\",\\\"data\\\":\\\"...\\\"}\"\n  },\n  \"vault_token\": \"vtok_a1b2c3d4e5f6\",\n  \"card\": {\n    \"number\": \"4111111111111111\",\n    \"exp_month\": \"12\",\n    \"exp_year\": \"2030\",\n    \"cvv\": \"123\",\n    \"name\": \"John Doe\"\n  },\n  \"reference\": \"order-10001\",\n  \"merchant_id\": 123,\n  \"success_url\": \"https://yoursite.com/checkout/success\",\n  \"error_url\": \"https://yoursite.com/checkout/error\",\n  \"customer\": {\n    \"merchant_customer_id\": \"cust-001\",\n    \"first_name\": \"John\",\n    \"last_name\": \"Doe\",\n    \"email\": \"john.doe@example.com\",\n    \"phone\": \"+441234567890\",\n    \"address\": \"1 High Street\",\n    \"city\": \"London\",\n    \"postal_code\": \"SW1A 1AA\",\n    \"country_code\": \"GB\",\n    \"ip_address\": \"198.51.100.5\"\n  },\n  \"card_verification_data\": {\n    \"id\": 43,\n    \"status\": \"full_auth\",\n    \"cavv\": \"architecto\",\n    \"xid\": \"architecto\",\n    \"ds_trans_id\": \"architecto\",\n    \"three_ds_version\": \"architecto\",\n    \"eci\": \"architecto\"\n  },\n  \"browser_data\": {\n    \"accept_header\": \"text/html\",\n    \"color_depth\": 24,\n    \"java_enabled\": false,\n    \"java_script_enabled\": true,\n    \"language\": \"en-US\",\n    \"screen_height\": 1080,\n    \"screen_width\": 1920,\n    \"time_zone_offset_in_minutes\": -60,\n    \"user_agent\": \"Mozilla/5.0\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"Rejected because transaction is marked for no retries\",\n  \"code\": \"ERR_DO_NOT_RETRY\",\n  \"data\": \"string\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "91a3fab2-cf3b-49da-a1d6-c0388a58ba8d",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "transactions"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"amount\": 12.5,\n  \"currency\": \"EUR\",\n  \"transaction_type\": \"sale\",\n  \"wallet\": {\n    \"type\": \"apple_pay\",\n    \"token\": \"{\\\"version\\\":\\\"EC_v1\\\",\\\"data\\\":\\\"...\\\"}\"\n  },\n  \"vault_token\": \"vtok_a1b2c3d4e5f6\",\n  \"card\": {\n    \"number\": \"4111111111111111\",\n    \"exp_month\": \"12\",\n    \"exp_year\": \"2030\",\n    \"cvv\": \"123\",\n    \"name\": \"John Doe\"\n  },\n  \"reference\": \"order-10001\",\n  \"merchant_id\": 123,\n  \"success_url\": \"https://yoursite.com/checkout/success\",\n  \"error_url\": \"https://yoursite.com/checkout/error\",\n  \"customer\": {\n    \"merchant_customer_id\": \"cust-001\",\n    \"first_name\": \"John\",\n    \"last_name\": \"Doe\",\n    \"email\": \"john.doe@example.com\",\n    \"phone\": \"+441234567890\",\n    \"address\": \"1 High Street\",\n    \"city\": \"London\",\n    \"postal_code\": \"SW1A 1AA\",\n    \"country_code\": \"GB\",\n    \"ip_address\": \"198.51.100.5\"\n  },\n  \"card_verification_data\": {\n    \"id\": 43,\n    \"status\": \"full_auth\",\n    \"cavv\": \"architecto\",\n    \"xid\": \"architecto\",\n    \"ds_trans_id\": \"architecto\",\n    \"three_ds_version\": \"architecto\",\n    \"eci\": \"architecto\"\n  },\n  \"browser_data\": {\n    \"accept_header\": \"text/html\",\n    \"color_depth\": 24,\n    \"java_enabled\": false,\n    \"java_script_enabled\": true,\n    \"language\": \"en-US\",\n    \"screen_height\": 1080,\n    \"screen_width\": 1920,\n    \"time_zone_offset_in_minutes\": -60,\n    \"user_agent\": \"Mozilla/5.0\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"Authentication failed\",\n  \"code\": \"ERR_AUTH_FAILED\",\n  \"data\": \"string\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "80c2cf88-285c-4528-9f32-799a634e47a5",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "transactions"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"amount\": 12.5,\n  \"currency\": \"EUR\",\n  \"transaction_type\": \"sale\",\n  \"wallet\": {\n    \"type\": \"apple_pay\",\n    \"token\": \"{\\\"version\\\":\\\"EC_v1\\\",\\\"data\\\":\\\"...\\\"}\"\n  },\n  \"vault_token\": \"vtok_a1b2c3d4e5f6\",\n  \"card\": {\n    \"number\": \"4111111111111111\",\n    \"exp_month\": \"12\",\n    \"exp_year\": \"2030\",\n    \"cvv\": \"123\",\n    \"name\": \"John Doe\"\n  },\n  \"reference\": \"order-10001\",\n  \"merchant_id\": 123,\n  \"success_url\": \"https://yoursite.com/checkout/success\",\n  \"error_url\": \"https://yoursite.com/checkout/error\",\n  \"customer\": {\n    \"merchant_customer_id\": \"cust-001\",\n    \"first_name\": \"John\",\n    \"last_name\": \"Doe\",\n    \"email\": \"john.doe@example.com\",\n    \"phone\": \"+441234567890\",\n    \"address\": \"1 High Street\",\n    \"city\": \"London\",\n    \"postal_code\": \"SW1A 1AA\",\n    \"country_code\": \"GB\",\n    \"ip_address\": \"198.51.100.5\"\n  },\n  \"card_verification_data\": {\n    \"id\": 43,\n    \"status\": \"full_auth\",\n    \"cavv\": \"architecto\",\n    \"xid\": \"architecto\",\n    \"ds_trans_id\": \"architecto\",\n    \"three_ds_version\": \"architecto\",\n    \"eci\": \"architecto\"\n  },\n  \"browser_data\": {\n    \"accept_header\": \"text/html\",\n    \"color_depth\": 24,\n    \"java_enabled\": false,\n    \"java_script_enabled\": true,\n    \"language\": \"en-US\",\n    \"screen_height\": 1080,\n    \"screen_width\": 1920,\n    \"time_zone_offset_in_minutes\": -60,\n    \"user_agent\": \"Mozilla/5.0\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Conflict",
              "code": 409,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"A transaction with this reference already exists\",\n  \"code\": \"ERR_DUPLICATE\",\n  \"data\": {\n    \"transaction_id\": 123\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "7c7c14e7-c369-42a5-aa60-5f154494e715",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "transactions"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"amount\": 12.5,\n  \"currency\": \"EUR\",\n  \"transaction_type\": \"sale\",\n  \"wallet\": {\n    \"type\": \"apple_pay\",\n    \"token\": \"{\\\"version\\\":\\\"EC_v1\\\",\\\"data\\\":\\\"...\\\"}\"\n  },\n  \"vault_token\": \"vtok_a1b2c3d4e5f6\",\n  \"card\": {\n    \"number\": \"4111111111111111\",\n    \"exp_month\": \"12\",\n    \"exp_year\": \"2030\",\n    \"cvv\": \"123\",\n    \"name\": \"John Doe\"\n  },\n  \"reference\": \"order-10001\",\n  \"merchant_id\": 123,\n  \"success_url\": \"https://yoursite.com/checkout/success\",\n  \"error_url\": \"https://yoursite.com/checkout/error\",\n  \"customer\": {\n    \"merchant_customer_id\": \"cust-001\",\n    \"first_name\": \"John\",\n    \"last_name\": \"Doe\",\n    \"email\": \"john.doe@example.com\",\n    \"phone\": \"+441234567890\",\n    \"address\": \"1 High Street\",\n    \"city\": \"London\",\n    \"postal_code\": \"SW1A 1AA\",\n    \"country_code\": \"GB\",\n    \"ip_address\": \"198.51.100.5\"\n  },\n  \"card_verification_data\": {\n    \"id\": 43,\n    \"status\": \"full_auth\",\n    \"cavv\": \"architecto\",\n    \"xid\": \"architecto\",\n    \"ds_trans_id\": \"architecto\",\n    \"three_ds_version\": \"architecto\",\n    \"eci\": \"architecto\"\n  },\n  \"browser_data\": {\n    \"accept_header\": \"text/html\",\n    \"color_depth\": 24,\n    \"java_enabled\": false,\n    \"java_script_enabled\": true,\n    \"language\": \"en-US\",\n    \"screen_height\": 1080,\n    \"screen_width\": 1920,\n    \"time_zone_offset_in_minutes\": -60,\n    \"user_agent\": \"Mozilla/5.0\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Unprocessable Entity (WebDAV) (RFC 4918)",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"Validation errors\",\n  \"code\": \"ERR_VALIDATION_FAILED\",\n  \"data\": \"string\",\n  \"errors\": {\n    \"amount\": [\n      \"The transaction amount must be a number.\"\n    ]\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "a7b8e0a3-eb4f-4796-aaac-003605b19550",
              "name": "Rate limit exceeded. See [rate limits](/api-basics/rate-limits).",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "transactions"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"amount\": 12.5,\n  \"currency\": \"EUR\",\n  \"transaction_type\": \"sale\",\n  \"wallet\": {\n    \"type\": \"apple_pay\",\n    \"token\": \"{\\\"version\\\":\\\"EC_v1\\\",\\\"data\\\":\\\"...\\\"}\"\n  },\n  \"vault_token\": \"vtok_a1b2c3d4e5f6\",\n  \"card\": {\n    \"number\": \"4111111111111111\",\n    \"exp_month\": \"12\",\n    \"exp_year\": \"2030\",\n    \"cvv\": \"123\",\n    \"name\": \"John Doe\"\n  },\n  \"reference\": \"order-10001\",\n  \"merchant_id\": 123,\n  \"success_url\": \"https://yoursite.com/checkout/success\",\n  \"error_url\": \"https://yoursite.com/checkout/error\",\n  \"customer\": {\n    \"merchant_customer_id\": \"cust-001\",\n    \"first_name\": \"John\",\n    \"last_name\": \"Doe\",\n    \"email\": \"john.doe@example.com\",\n    \"phone\": \"+441234567890\",\n    \"address\": \"1 High Street\",\n    \"city\": \"London\",\n    \"postal_code\": \"SW1A 1AA\",\n    \"country_code\": \"GB\",\n    \"ip_address\": \"198.51.100.5\"\n  },\n  \"card_verification_data\": {\n    \"id\": 43,\n    \"status\": \"full_auth\",\n    \"cavv\": \"architecto\",\n    \"xid\": \"architecto\",\n    \"ds_trans_id\": \"architecto\",\n    \"three_ds_version\": \"architecto\",\n    \"eci\": \"architecto\"\n  },\n  \"browser_data\": {\n    \"accept_header\": \"text/html\",\n    \"color_depth\": 24,\n    \"java_enabled\": false,\n    \"java_script_enabled\": true,\n    \"language\": \"en-US\",\n    \"screen_height\": 1080,\n    \"screen_width\": 1920,\n    \"time_zone_offset_in_minutes\": -60,\n    \"user_agent\": \"Mozilla/5.0\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "disabled": false,
                  "description": "Seconds until the current rate limit window frees up.",
                  "key": "Retry-After",
                  "value": "9703"
                },
                {
                  "disabled": false,
                  "description": "Requests left in the current 60 second window. Sent on every response and 0 here.",
                  "key": "X-RateLimit-Remaining",
                  "value": "9703"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"Too many requests\",\n  \"code\": \"ERR_RATE_LIMITED\",\n  \"data\": \"string\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "9e5d0314-99e2-4726-bae2-1d040a233350",
          "name": "Capture Transaction",
          "request": {
            "name": "Capture Transaction",
            "description": {
              "content": "Capture a previously authorized transaction.\n\nSend an `Idempotency-Key` header to retry safely. A repeat with the same\nkey returns the original response without capturing again. The\n[API conventions](/api-basics/conventions) page has the full contract.\n\nThis endpoint is intended for merchant API keys managing their own transactions.\nDo not expose this as a partner-facing operation in external integrations.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "v1",
                "transactions",
                ":transaction_id",
                "capture"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": [
                {
                  "disabled": false,
                  "type": "any",
                  "value": "21",
                  "key": "transaction_id",
                  "description": "(Required) The ID of the transaction."
                }
              ]
            },
            "header": [
              {
                "disabled": false,
                "description": "Optional key that makes retrying this request safe. A repeat with the same key within 24 hours replays the original response instead of executing again. See [API conventions](/api-basics/conventions).",
                "key": "Idempotency-Key",
                "value": "9f2c7d3e-1a5b-4c8d-9e6f-2b7a8c1d4e5f"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "auth": null,
            "body": {
              "mode": "raw",
              "raw": "{\n  \"amount\": 12.5\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "id": "c708e72b-a326-4d4b-a611-b26ecd45a464",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "transactions",
                    ":transaction_id",
                    "capture"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "type": "any",
                      "value": "21",
                      "key": "transaction_id",
                      "description": "(Required) The ID of the transaction."
                    }
                  ]
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "disabled": false,
                    "description": "Optional key that makes retrying this request safe. A repeat with the same key within 24 hours replays the original response instead of executing again. See [API conventions](/api-basics/conventions).",
                    "key": "Idempotency-Key",
                    "value": "9f2c7d3e-1a5b-4c8d-9e6f-2b7a8c1d4e5f"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"amount\": 12.5\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": true,\n  \"message\": \"Transaction captured\",\n  \"code\": \"\",\n  \"data\": {\n    \"id\": 3,\n    \"merchant_id\": 1,\n    \"merchant_trans_id\": \"ORDER-912346\",\n    \"amount\": 1250,\n    \"amount_formatted\": \"12.5 EUR\",\n    \"currency\": \"EUR\",\n    \"status\": \"captured\",\n    \"transaction_type\": \"capture\",\n    \"description\": \"string\",\n    \"acquirer_provider\": \"string\",\n    \"acquirer_trans_id\": \"995140741995\",\n    \"acquirer_auth_code\": \"400066\",\n    \"related_trans_id\": 2,\n    \"refunded_amount\": 0,\n    \"cardholder\": {\n      \"card_last_four\": \"1111\",\n      \"card_brand\": \"visa\",\n      \"card_expiry_month\": 12,\n      \"card_expiry_year\": 2030,\n      \"created_at\": \"2025-05-20T09:18:47.000000Z\",\n      \"updated_at\": \"2025-05-20T09:18:47.000000Z\"\n    },\n    \"ip_address\": \"203.0.113.10\",\n    \"created_at\": \"2025-05-20T10:04:12.000000Z\",\n    \"updated_at\": \"2025-05-20T10:04:13.000000Z\"\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "403d49aa-71ef-4682-918b-e6992b66a006",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "transactions",
                    ":transaction_id",
                    "capture"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "type": "any",
                      "value": "21",
                      "key": "transaction_id",
                      "description": "(Required) The ID of the transaction."
                    }
                  ]
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "disabled": false,
                    "description": "Optional key that makes retrying this request safe. A repeat with the same key within 24 hours replays the original response instead of executing again. See [API conventions](/api-basics/conventions).",
                    "key": "Idempotency-Key",
                    "value": "9f2c7d3e-1a5b-4c8d-9e6f-2b7a8c1d4e5f"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"amount\": 12.5\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"Authentication failed\",\n  \"code\": \"ERR_AUTH_FAILED\",\n  \"data\": \"string\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "be34dbde-4e05-4818-8110-bd9821065bcb",
              "name": "No transaction with this id is visible to your API key. See the [error catalogue](/api-basics/errors).",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "transactions",
                    ":transaction_id",
                    "capture"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "type": "any",
                      "value": "21",
                      "key": "transaction_id",
                      "description": "(Required) The ID of the transaction."
                    }
                  ]
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "disabled": false,
                    "description": "Optional key that makes retrying this request safe. A repeat with the same key within 24 hours replays the original response instead of executing again. See [API conventions](/api-basics/conventions).",
                    "key": "Idempotency-Key",
                    "value": "9f2c7d3e-1a5b-4c8d-9e6f-2b7a8c1d4e5f"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"amount\": 12.5\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Not Found",
              "code": 404,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"Transaction not found\",\n  \"code\": \"ERR_NOT_FOUND\",\n  \"data\": \"string\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "e43aac15-8e91-4fd2-9e20-395344abb577",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "transactions",
                    ":transaction_id",
                    "capture"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "type": "any",
                      "value": "21",
                      "key": "transaction_id",
                      "description": "(Required) The ID of the transaction."
                    }
                  ]
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "disabled": false,
                    "description": "Optional key that makes retrying this request safe. A repeat with the same key within 24 hours replays the original response instead of executing again. See [API conventions](/api-basics/conventions).",
                    "key": "Idempotency-Key",
                    "value": "9f2c7d3e-1a5b-4c8d-9e6f-2b7a8c1d4e5f"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"amount\": 12.5\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Conflict",
              "code": 409,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"This Idempotency-Key was already used with a different request\",\n  \"code\": \"ERR_IDEMPOTENCY_CONFLICT\",\n  \"data\": \"string\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "ba2a4383-f519-47a6-adb8-d0acdc7fa832",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "transactions",
                    ":transaction_id",
                    "capture"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "type": "any",
                      "value": "21",
                      "key": "transaction_id",
                      "description": "(Required) The ID of the transaction."
                    }
                  ]
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "disabled": false,
                    "description": "Optional key that makes retrying this request safe. A repeat with the same key within 24 hours replays the original response instead of executing again. See [API conventions](/api-basics/conventions).",
                    "key": "Idempotency-Key",
                    "value": "9f2c7d3e-1a5b-4c8d-9e6f-2b7a8c1d4e5f"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"amount\": 12.5\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Unprocessable Entity (WebDAV) (RFC 4918)",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"Validation errors\",\n  \"code\": \"ERR_VALIDATION_FAILED\",\n  \"data\": \"string\",\n  \"errors\": {\n    \"amount\": [\n      \"The capture amount must be a number.\"\n    ]\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "f9c6bd82-a997-4cc3-9b7d-cd32a26bc52e",
              "name": "Rate limit exceeded. See [rate limits](/api-basics/rate-limits).",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "transactions",
                    ":transaction_id",
                    "capture"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "type": "any",
                      "value": "21",
                      "key": "transaction_id",
                      "description": "(Required) The ID of the transaction."
                    }
                  ]
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "disabled": false,
                    "description": "Optional key that makes retrying this request safe. A repeat with the same key within 24 hours replays the original response instead of executing again. See [API conventions](/api-basics/conventions).",
                    "key": "Idempotency-Key",
                    "value": "9f2c7d3e-1a5b-4c8d-9e6f-2b7a8c1d4e5f"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"amount\": 12.5\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "disabled": false,
                  "description": "Seconds until the current rate limit window frees up.",
                  "key": "Retry-After",
                  "value": "9703"
                },
                {
                  "disabled": false,
                  "description": "Requests left in the current 60 second window. Sent on every response and 0 here.",
                  "key": "X-RateLimit-Remaining",
                  "value": "9703"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"Too many requests\",\n  \"code\": \"ERR_RATE_LIMITED\",\n  \"data\": \"string\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "626c94a9-493d-4ffa-983d-77a348be3e02",
          "name": "Refund Transaction",
          "request": {
            "name": "Refund Transaction",
            "description": {
              "content": "Refund a previously captured transaction.\n\nSend an `Idempotency-Key` header to retry safely. A repeat with the same\nkey returns the original response without refunding again. The\n[API conventions](/api-basics/conventions) page has the full contract.\n\nThis endpoint is intended for merchant API keys managing their own transactions.\nDo not expose this as a partner-facing operation in external integrations.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "v1",
                "transactions",
                ":transaction_id",
                "refund"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": [
                {
                  "disabled": false,
                  "type": "any",
                  "value": "21",
                  "key": "transaction_id",
                  "description": "(Required) The ID of the transaction."
                }
              ]
            },
            "header": [
              {
                "disabled": false,
                "description": "Optional key that makes retrying this request safe. A repeat with the same key within 24 hours replays the original response instead of executing again. See [API conventions](/api-basics/conventions).",
                "key": "Idempotency-Key",
                "value": "4c9d2e8f-6b1a-4f3c-8d7e-5a2b9c6d1e4f"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "auth": null,
            "body": {
              "mode": "raw",
              "raw": "{\n  \"amount\": 12.5,\n  \"reason\": \"architecto\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "id": "5efa87b8-844f-4389-bf85-ecab8d7a4e73",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "transactions",
                    ":transaction_id",
                    "refund"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "type": "any",
                      "value": "21",
                      "key": "transaction_id",
                      "description": "(Required) The ID of the transaction."
                    }
                  ]
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "disabled": false,
                    "description": "Optional key that makes retrying this request safe. A repeat with the same key within 24 hours replays the original response instead of executing again. See [API conventions](/api-basics/conventions).",
                    "key": "Idempotency-Key",
                    "value": "4c9d2e8f-6b1a-4f3c-8d7e-5a2b9c6d1e4f"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"amount\": 12.5,\n  \"reason\": \"architecto\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": true,\n  \"message\": \"Transaction refunded\",\n  \"code\": \"\",\n  \"data\": {\n    \"id\": 4,\n    \"merchant_id\": 1,\n    \"merchant_trans_id\": \"ORDER-912346\",\n    \"amount\": 1250,\n    \"amount_formatted\": \"12.5 EUR\",\n    \"currency\": \"EUR\",\n    \"status\": \"refunded\",\n    \"transaction_type\": \"refund\",\n    \"description\": \"string\",\n    \"acquirer_provider\": \"string\",\n    \"acquirer_trans_id\": \"514009741995\",\n    \"acquirer_auth_code\": \"400066\",\n    \"related_trans_id\": 3,\n    \"cardholder\": {\n      \"card_last_four\": \"1111\",\n      \"card_brand\": \"visa\",\n      \"card_expiry_month\": 12,\n      \"card_expiry_year\": 2030,\n      \"created_at\": \"2025-05-20T09:18:47.000000Z\",\n      \"updated_at\": \"2025-05-20T09:18:47.000000Z\"\n    },\n    \"ip_address\": \"203.0.113.10\",\n    \"created_at\": \"2025-05-21T14:30:02.000000Z\",\n    \"updated_at\": \"2025-05-21T14:30:03.000000Z\"\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "6167dc0d-6f5a-4ead-8966-5656a518b280",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "transactions",
                    ":transaction_id",
                    "refund"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "type": "any",
                      "value": "21",
                      "key": "transaction_id",
                      "description": "(Required) The ID of the transaction."
                    }
                  ]
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "disabled": false,
                    "description": "Optional key that makes retrying this request safe. A repeat with the same key within 24 hours replays the original response instead of executing again. See [API conventions](/api-basics/conventions).",
                    "key": "Idempotency-Key",
                    "value": "4c9d2e8f-6b1a-4f3c-8d7e-5a2b9c6d1e4f"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"amount\": 12.5,\n  \"reason\": \"architecto\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"Authentication failed\",\n  \"code\": \"ERR_AUTH_FAILED\",\n  \"data\": \"string\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "d720c673-c917-464e-86f4-3cc3d63d835d",
              "name": "No transaction with this id is visible to your API key. See the [error catalogue](/api-basics/errors).",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "transactions",
                    ":transaction_id",
                    "refund"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "type": "any",
                      "value": "21",
                      "key": "transaction_id",
                      "description": "(Required) The ID of the transaction."
                    }
                  ]
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "disabled": false,
                    "description": "Optional key that makes retrying this request safe. A repeat with the same key within 24 hours replays the original response instead of executing again. See [API conventions](/api-basics/conventions).",
                    "key": "Idempotency-Key",
                    "value": "4c9d2e8f-6b1a-4f3c-8d7e-5a2b9c6d1e4f"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"amount\": 12.5,\n  \"reason\": \"architecto\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Not Found",
              "code": 404,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"Transaction not found\",\n  \"code\": \"ERR_NOT_FOUND\",\n  \"data\": \"string\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "75b73ccf-a9ca-43eb-8002-92c2094be124",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "transactions",
                    ":transaction_id",
                    "refund"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "type": "any",
                      "value": "21",
                      "key": "transaction_id",
                      "description": "(Required) The ID of the transaction."
                    }
                  ]
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "disabled": false,
                    "description": "Optional key that makes retrying this request safe. A repeat with the same key within 24 hours replays the original response instead of executing again. See [API conventions](/api-basics/conventions).",
                    "key": "Idempotency-Key",
                    "value": "4c9d2e8f-6b1a-4f3c-8d7e-5a2b9c6d1e4f"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"amount\": 12.5,\n  \"reason\": \"architecto\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Conflict",
              "code": 409,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"This Idempotency-Key was already used with a different request\",\n  \"code\": \"ERR_IDEMPOTENCY_CONFLICT\",\n  \"data\": \"string\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "04e18f61-6980-451d-a101-03d833cb42df",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "transactions",
                    ":transaction_id",
                    "refund"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "type": "any",
                      "value": "21",
                      "key": "transaction_id",
                      "description": "(Required) The ID of the transaction."
                    }
                  ]
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "disabled": false,
                    "description": "Optional key that makes retrying this request safe. A repeat with the same key within 24 hours replays the original response instead of executing again. See [API conventions](/api-basics/conventions).",
                    "key": "Idempotency-Key",
                    "value": "4c9d2e8f-6b1a-4f3c-8d7e-5a2b9c6d1e4f"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"amount\": 12.5,\n  \"reason\": \"architecto\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Unprocessable Entity (WebDAV) (RFC 4918)",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"Validation errors\",\n  \"code\": \"ERR_VALIDATION_FAILED\",\n  \"data\": \"string\",\n  \"errors\": {\n    \"amount\": [\n      \"The refund amount must be a number.\"\n    ]\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "77569652-abc9-4b7f-9197-56a8c3049248",
              "name": "Rate limit exceeded. See [rate limits](/api-basics/rate-limits).",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "transactions",
                    ":transaction_id",
                    "refund"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "type": "any",
                      "value": "21",
                      "key": "transaction_id",
                      "description": "(Required) The ID of the transaction."
                    }
                  ]
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "disabled": false,
                    "description": "Optional key that makes retrying this request safe. A repeat with the same key within 24 hours replays the original response instead of executing again. See [API conventions](/api-basics/conventions).",
                    "key": "Idempotency-Key",
                    "value": "4c9d2e8f-6b1a-4f3c-8d7e-5a2b9c6d1e4f"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"amount\": 12.5,\n  \"reason\": \"architecto\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "disabled": false,
                  "description": "Seconds until the current rate limit window frees up.",
                  "key": "Retry-After",
                  "value": "9703"
                },
                {
                  "disabled": false,
                  "description": "Requests left in the current 60 second window. Sent on every response and 0 here.",
                  "key": "X-RateLimit-Remaining",
                  "value": "9703"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"Too many requests\",\n  \"code\": \"ERR_RATE_LIMITED\",\n  \"data\": \"string\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "1e5d6ea4-3a5b-4e85-b892-a6e04eb617ea",
          "name": "Transaction Status",
          "request": {
            "name": "Transaction Status",
            "description": {
              "content": "Get the status of a transaction.\n\nMerchant API keys can check their own transactions. Partner API keys can\ncheck, capture, refund and void transactions belonging to linked merchants\nthey are allowed to access. Ownership is enforced by the request layer.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "v1",
                "transactions",
                ":transaction_id",
                "status"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": [
                {
                  "disabled": false,
                  "type": "any",
                  "value": "21",
                  "key": "transaction_id",
                  "description": "(Required) The ID of the transaction."
                }
              ]
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET",
            "auth": null
          },
          "response": [
            {
              "id": "94978729-81f2-4ad9-964f-934832f31361",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "transactions",
                    ":transaction_id",
                    "status"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "type": "any",
                      "value": "21",
                      "key": "transaction_id",
                      "description": "(Required) The ID of the transaction."
                    }
                  ]
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": true,\n  \"message\": \"Transaction status\",\n  \"code\": \"\",\n  \"data\": {\n    \"id\": 2,\n    \"merchant_id\": 1,\n    \"merchant_trans_id\": \"ORDER-912346\",\n    \"amount\": 1250,\n    \"amount_formatted\": \"12.5 EUR\",\n    \"currency\": \"EUR\",\n    \"status\": \"auth\",\n    \"transaction_type\": \"auth\",\n    \"description\": \"string\",\n    \"acquirer_provider\": \"string\",\n    \"acquirer_trans_id\": \"514009741995\",\n    \"acquirer_auth_code\": \"400066\",\n    \"related_trans_id\": \"string\",\n    \"captured_amount\": 0,\n    \"cardholder\": {\n      \"card_last_four\": \"1111\",\n      \"card_brand\": \"visa\",\n      \"card_expiry_month\": 12,\n      \"card_expiry_year\": 2030,\n      \"created_at\": \"2025-05-20T09:18:47.000000Z\",\n      \"updated_at\": \"2025-05-20T09:18:47.000000Z\"\n    },\n    \"ip_address\": \"203.0.113.10\",\n    \"created_at\": \"2025-05-20T09:18:47.000000Z\",\n    \"updated_at\": \"2025-05-20T09:18:48.000000Z\"\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "1c3db10c-7118-4511-9956-41f8d1274f68",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "transactions",
                    ":transaction_id",
                    "status"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "type": "any",
                      "value": "21",
                      "key": "transaction_id",
                      "description": "(Required) The ID of the transaction."
                    }
                  ]
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"Authentication failed\",\n  \"code\": \"ERR_AUTH_FAILED\",\n  \"data\": \"string\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "98070e29-5232-4e53-9a53-3e0ea5384be5",
              "name": "No transaction with this id is visible to your API key. See the [error catalogue](/api-basics/errors).",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "transactions",
                    ":transaction_id",
                    "status"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "type": "any",
                      "value": "21",
                      "key": "transaction_id",
                      "description": "(Required) The ID of the transaction."
                    }
                  ]
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Not Found",
              "code": 404,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"Transaction not found\",\n  \"code\": \"ERR_NOT_FOUND\",\n  \"data\": \"string\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "20ac5c99-c831-4681-849e-df793949ba7b",
              "name": "Rate limit exceeded. See [rate limits](/api-basics/rate-limits).",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "transactions",
                    ":transaction_id",
                    "status"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "type": "any",
                      "value": "21",
                      "key": "transaction_id",
                      "description": "(Required) The ID of the transaction."
                    }
                  ]
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "disabled": false,
                  "description": "Seconds until the current rate limit window frees up.",
                  "key": "Retry-After",
                  "value": "9703"
                },
                {
                  "disabled": false,
                  "description": "Requests left in the current 60 second window. Sent on every response and 0 here.",
                  "key": "X-RateLimit-Remaining",
                  "value": "9703"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"Too many requests\",\n  \"code\": \"ERR_RATE_LIMITED\",\n  \"data\": \"string\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "c6526653-85ea-4f93-9235-edaa493cd4e6",
          "name": "Void Transaction",
          "request": {
            "name": "Void Transaction",
            "description": {
              "content": "Void a previously initiated auth transaction.\n\nSend an `Idempotency-Key` header to retry safely. A repeat with the same\nkey returns the original response without voiding again. The\n[API conventions](/api-basics/conventions) page has the full contract.\n\nThis endpoint is intended for merchant API keys managing their own transactions.\nDo not expose this as a partner-facing operation in external integrations.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "v1",
                "transactions",
                ":transaction_id",
                "void"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": [
                {
                  "disabled": false,
                  "type": "any",
                  "value": "21",
                  "key": "transaction_id",
                  "description": "(Required) The ID of the transaction."
                }
              ]
            },
            "header": [
              {
                "disabled": false,
                "description": "Optional key that makes retrying this request safe. A repeat with the same key within 24 hours replays the original response instead of executing again. See [API conventions](/api-basics/conventions).",
                "key": "Idempotency-Key",
                "value": "7e1f4a9c-3d6b-4e2f-a8c5-9b4d7e2f6a1c"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "auth": null,
            "body": {
              "mode": "raw",
              "raw": "{\n  \"amount\": 12.5,\n  \"reason\": \"architecto\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "id": "b51ef868-0804-4570-9aba-a8c7137c1b76",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "transactions",
                    ":transaction_id",
                    "void"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "type": "any",
                      "value": "21",
                      "key": "transaction_id",
                      "description": "(Required) The ID of the transaction."
                    }
                  ]
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "disabled": false,
                    "description": "Optional key that makes retrying this request safe. A repeat with the same key within 24 hours replays the original response instead of executing again. See [API conventions](/api-basics/conventions).",
                    "key": "Idempotency-Key",
                    "value": "7e1f4a9c-3d6b-4e2f-a8c5-9b4d7e2f6a1c"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"amount\": 12.5,\n  \"reason\": \"architecto\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": true,\n  \"message\": \"Transaction voided\",\n  \"code\": \"\",\n  \"data\": {\n    \"id\": 3,\n    \"merchant_id\": 1,\n    \"merchant_trans_id\": \"ORDER-912346\",\n    \"amount\": 1250,\n    \"amount_formatted\": \"12.5 EUR\",\n    \"currency\": \"EUR\",\n    \"status\": \"voided\",\n    \"transaction_type\": \"void\",\n    \"description\": \"string\",\n    \"acquirer_provider\": \"string\",\n    \"acquirer_trans_id\": \"514009741995\",\n    \"acquirer_auth_code\": \"400066\",\n    \"related_trans_id\": 2,\n    \"cardholder\": {\n      \"card_last_four\": \"1111\",\n      \"card_brand\": \"visa\",\n      \"card_expiry_month\": 12,\n      \"card_expiry_year\": 2030,\n      \"created_at\": \"2025-05-20T09:18:47.000000Z\",\n      \"updated_at\": \"2025-05-20T09:18:47.000000Z\"\n    },\n    \"ip_address\": \"203.0.113.10\",\n    \"created_at\": \"2025-05-20T11:15:40.000000Z\",\n    \"updated_at\": \"2025-05-20T11:15:41.000000Z\"\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "aec2760c-1633-469f-8b7c-a996f1a1cead",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "transactions",
                    ":transaction_id",
                    "void"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "type": "any",
                      "value": "21",
                      "key": "transaction_id",
                      "description": "(Required) The ID of the transaction."
                    }
                  ]
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "disabled": false,
                    "description": "Optional key that makes retrying this request safe. A repeat with the same key within 24 hours replays the original response instead of executing again. See [API conventions](/api-basics/conventions).",
                    "key": "Idempotency-Key",
                    "value": "7e1f4a9c-3d6b-4e2f-a8c5-9b4d7e2f6a1c"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"amount\": 12.5,\n  \"reason\": \"architecto\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"Authentication failed\",\n  \"code\": \"ERR_AUTH_FAILED\",\n  \"data\": \"string\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "90b463d6-77fb-4595-bfbe-dc005fcba8f2",
              "name": "No transaction with this id is visible to your API key. See the [error catalogue](/api-basics/errors).",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "transactions",
                    ":transaction_id",
                    "void"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "type": "any",
                      "value": "21",
                      "key": "transaction_id",
                      "description": "(Required) The ID of the transaction."
                    }
                  ]
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "disabled": false,
                    "description": "Optional key that makes retrying this request safe. A repeat with the same key within 24 hours replays the original response instead of executing again. See [API conventions](/api-basics/conventions).",
                    "key": "Idempotency-Key",
                    "value": "7e1f4a9c-3d6b-4e2f-a8c5-9b4d7e2f6a1c"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"amount\": 12.5,\n  \"reason\": \"architecto\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Not Found",
              "code": 404,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"Transaction not found\",\n  \"code\": \"ERR_NOT_FOUND\",\n  \"data\": \"string\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "b4fd8068-54aa-4e17-b7d7-8b7dd7b7e720",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "transactions",
                    ":transaction_id",
                    "void"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "type": "any",
                      "value": "21",
                      "key": "transaction_id",
                      "description": "(Required) The ID of the transaction."
                    }
                  ]
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "disabled": false,
                    "description": "Optional key that makes retrying this request safe. A repeat with the same key within 24 hours replays the original response instead of executing again. See [API conventions](/api-basics/conventions).",
                    "key": "Idempotency-Key",
                    "value": "7e1f4a9c-3d6b-4e2f-a8c5-9b4d7e2f6a1c"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"amount\": 12.5,\n  \"reason\": \"architecto\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Conflict",
              "code": 409,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"This Idempotency-Key was already used with a different request\",\n  \"code\": \"ERR_IDEMPOTENCY_CONFLICT\",\n  \"data\": \"string\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "f428b7c2-8746-4cb6-b724-db303a200f5e",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "transactions",
                    ":transaction_id",
                    "void"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "type": "any",
                      "value": "21",
                      "key": "transaction_id",
                      "description": "(Required) The ID of the transaction."
                    }
                  ]
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "disabled": false,
                    "description": "Optional key that makes retrying this request safe. A repeat with the same key within 24 hours replays the original response instead of executing again. See [API conventions](/api-basics/conventions).",
                    "key": "Idempotency-Key",
                    "value": "7e1f4a9c-3d6b-4e2f-a8c5-9b4d7e2f6a1c"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"amount\": 12.5,\n  \"reason\": \"architecto\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Unprocessable Entity (WebDAV) (RFC 4918)",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"Validation errors\",\n  \"code\": \"ERR_VALIDATION_FAILED\",\n  \"data\": \"string\",\n  \"errors\": {\n    \"amount\": [\n      \"The void amount must be a number.\"\n    ]\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "6f6c96de-0ff1-47d1-80ac-c3f1b4265a62",
              "name": "Rate limit exceeded. See [rate limits](/api-basics/rate-limits).",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "transactions",
                    ":transaction_id",
                    "void"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "type": "any",
                      "value": "21",
                      "key": "transaction_id",
                      "description": "(Required) The ID of the transaction."
                    }
                  ]
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "disabled": false,
                    "description": "Optional key that makes retrying this request safe. A repeat with the same key within 24 hours replays the original response instead of executing again. See [API conventions](/api-basics/conventions).",
                    "key": "Idempotency-Key",
                    "value": "7e1f4a9c-3d6b-4e2f-a8c5-9b4d7e2f6a1c"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"amount\": 12.5,\n  \"reason\": \"architecto\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "disabled": false,
                  "description": "Seconds until the current rate limit window frees up.",
                  "key": "Retry-After",
                  "value": "9703"
                },
                {
                  "disabled": false,
                  "description": "Requests left in the current 60 second window. Sent on every response and 0 here.",
                  "key": "X-RateLimit-Remaining",
                  "value": "9703"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"Too many requests\",\n  \"code\": \"ERR_RATE_LIMITED\",\n  \"data\": \"string\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ],
      "event": []
    },
    {
      "id": "ef2f7d96-293e-4f0b-92e3-5cc21908fd86",
      "name": "Payment Instruments",
      "description": {
        "content": "",
        "type": "text/plain"
      },
      "item": [
        {
          "id": "477a7e3f-1462-4f7f-9347-f44c1af6f9d4",
          "name": "List payment instruments",
          "request": {
            "name": "List payment instruments",
            "description": {
              "content": "List the cards stored in the vault for a merchant. An instrument is\ncreated automatically when a card transaction succeeds and the acquirer\nreturns a vault token. Use the `vault_token` value to charge the stored\ncard again, as described in the [returning customers guide](/guides/returning-customers).\n\nMerchant API keys list their own instruments. Partner API keys must\ninclude `merchant_id` for a linked merchant.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "v1",
                "payment-instruments"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [
                {
                  "disabled": false,
                  "key": "status",
                  "value": "active",
                  "description": "Filter by status."
                },
                {
                  "disabled": false,
                  "key": "merchant_id",
                  "value": "123",
                  "description": "Required for partner API keys. Must be a merchant linked to the authenticated partner."
                },
                {
                  "disabled": false,
                  "key": "per_page",
                  "value": "25",
                  "description": "Number of instruments per page (1-100, default 25)."
                },
                {
                  "disabled": false,
                  "key": "page",
                  "value": "1",
                  "description": "Page number (1+)."
                }
              ],
              "variable": []
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET",
            "auth": null
          },
          "response": [
            {
              "id": "7badddbc-412a-42ca-b332-87089fad277c",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "payment-instruments"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "key": "status",
                      "value": "active"
                    },
                    {
                      "key": "merchant_id",
                      "value": "123"
                    },
                    {
                      "key": "per_page",
                      "value": "25"
                    },
                    {
                      "key": "page",
                      "value": "1"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": true,\n  \"message\": \"Payment instruments retrieved\",\n  \"code\": \"\",\n  \"data\": {\n    \"payment_instruments\": [\n      {\n        \"payment_instrument_id\": \"pi_01k24d5re8xh1v0c9jc0m8w3ns\",\n        \"vault_token\": \"8ac7a4a29852f6f101985300a1b41c2f\",\n        \"type\": \"card\",\n        \"status\": \"active\",\n        \"card_brand\": \"visa\",\n        \"card_last_four\": \"1111\",\n        \"card_expiry_month\": 12,\n        \"card_expiry_year\": 2030,\n        \"created_at\": \"2026-08-01T09:18:47.000000Z\",\n        \"updated_at\": \"2026-08-01T09:18:47.000000Z\"\n      },\n      {\n        \"payment_instrument_id\": \"pi_01k1zx9v2m5re8ah3t6wd0q7bc\",\n        \"vault_token\": \"5fb2c8d10474e2a90198a3f2b17d33aa\",\n        \"type\": \"card\",\n        \"status\": \"revoked\",\n        \"card_brand\": \"mastercard\",\n        \"card_last_four\": \"4444\",\n        \"card_expiry_month\": 6,\n        \"card_expiry_year\": 2028,\n        \"created_at\": \"2026-07-14T15:02:10.000000Z\",\n        \"updated_at\": \"2026-07-30T11:41:05.000000Z\"\n      }\n    ],\n    \"pagination\": {\n      \"current_page\": 1,\n      \"last_page\": 1,\n      \"per_page\": 25,\n      \"total\": 2\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "4870903c-1dd6-4c20-b169-eac79eced33b",
              "name": "A partner API key omitted `merchant_id` or referenced a merchant that is not linked to it.",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "payment-instruments"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "key": "status",
                      "value": "active"
                    },
                    {
                      "key": "merchant_id",
                      "value": "123"
                    },
                    {
                      "key": "per_page",
                      "value": "25"
                    },
                    {
                      "key": "page",
                      "value": "1"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"merchant_id is required for partner transactions. Please specify which merchant account to use.\",\n  \"code\": \"ERR_AUTH_FAILED\",\n  \"data\": \"string\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "1044c026-c06e-409f-909d-0038cf8a9af4",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "payment-instruments"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "key": "status",
                      "value": "active"
                    },
                    {
                      "key": "merchant_id",
                      "value": "123"
                    },
                    {
                      "key": "per_page",
                      "value": "25"
                    },
                    {
                      "key": "page",
                      "value": "1"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"Authentication failed\",\n  \"code\": \"ERR_AUTH_FAILED\",\n  \"data\": \"string\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "fa23ff5e-1368-4da6-8ee9-b7bd0f954ce6",
              "name": "Rate limit exceeded. See [rate limits](/api-basics/rate-limits).",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "payment-instruments"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [
                    {
                      "key": "status",
                      "value": "active"
                    },
                    {
                      "key": "merchant_id",
                      "value": "123"
                    },
                    {
                      "key": "per_page",
                      "value": "25"
                    },
                    {
                      "key": "page",
                      "value": "1"
                    }
                  ],
                  "variable": []
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "disabled": false,
                  "description": "Seconds until the current rate limit window frees up.",
                  "key": "Retry-After",
                  "value": "9703"
                },
                {
                  "disabled": false,
                  "description": "Requests left in the current 60 second window. Sent on every response and 0 here.",
                  "key": "X-RateLimit-Remaining",
                  "value": "9703"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"Too many requests\",\n  \"code\": \"ERR_RATE_LIMITED\",\n  \"data\": \"string\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "4237dd2a-54ae-435e-bfd4-1a2300616848",
          "name": "Revoke a payment instrument",
          "request": {
            "name": "Revoke a payment instrument",
            "description": {
              "content": "Revoke a stored card so its vault token can no longer initiate\ntransactions. Revocation is idempotent: revoking an already revoked\ninstrument succeeds without changing anything. If the same card is\nstored again later, the instrument reactivates with the same token.\n\nMerchant API keys revoke their own instruments. Partner API keys can\nrevoke instruments of linked merchants.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "v1",
                "payment-instruments",
                ":paymentInstrument_public_id"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": [
                {
                  "disabled": false,
                  "type": "any",
                  "value": "pi_01k24d5re8xh1v0c9jc0m8w3ns",
                  "key": "paymentInstrument_public_id",
                  "description": "(Required) The payment instrument id."
                }
              ]
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "DELETE",
            "auth": null
          },
          "response": [
            {
              "id": "dadf9174-df6d-46b0-825d-927704f5eb07",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "payment-instruments",
                    ":paymentInstrument_public_id"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "type": "any",
                      "value": "pi_01k24d5re8xh1v0c9jc0m8w3ns",
                      "key": "paymentInstrument_public_id",
                      "description": "(Required) The payment instrument id."
                    }
                  ]
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "DELETE",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": true,\n  \"message\": \"Payment instrument revoked\",\n  \"code\": \"\",\n  \"data\": {\n    \"payment_instrument\": {\n      \"payment_instrument_id\": \"pi_01k24d5re8xh1v0c9jc0m8w3ns\",\n      \"vault_token\": \"8ac7a4a29852f6f101985300a1b41c2f\",\n      \"type\": \"card\",\n      \"status\": \"revoked\",\n      \"card_brand\": \"visa\",\n      \"card_last_four\": \"1111\",\n      \"card_expiry_month\": 12,\n      \"card_expiry_year\": 2030,\n      \"created_at\": \"2026-08-01T09:18:47.000000Z\",\n      \"updated_at\": \"2026-08-08T10:22:31.000000Z\"\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "705dbf91-a7d7-4948-a15d-5ab53edefd6c",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "payment-instruments",
                    ":paymentInstrument_public_id"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "type": "any",
                      "value": "pi_01k24d5re8xh1v0c9jc0m8w3ns",
                      "key": "paymentInstrument_public_id",
                      "description": "(Required) The payment instrument id."
                    }
                  ]
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "DELETE",
                "body": {}
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"Authentication failed\",\n  \"code\": \"ERR_AUTH_FAILED\",\n  \"data\": \"string\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "8f81a30d-bab0-4dad-b59b-2e791daa3eac",
              "name": "The instrument belongs to a merchant this API key cannot access.",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "payment-instruments",
                    ":paymentInstrument_public_id"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "type": "any",
                      "value": "pi_01k24d5re8xh1v0c9jc0m8w3ns",
                      "key": "paymentInstrument_public_id",
                      "description": "(Required) The payment instrument id."
                    }
                  ]
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "DELETE",
                "body": {}
              },
              "status": "Forbidden",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"Access denied: Resource not accessible\",\n  \"code\": \"ERR_AUTH_FAILED\",\n  \"data\": \"string\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "f8002798-5ad2-42aa-bf22-d52ceb09fe69",
              "name": "No payment instrument with this id exists. See the [error catalogue](/api-basics/errors).",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "payment-instruments",
                    ":paymentInstrument_public_id"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "type": "any",
                      "value": "pi_01k24d5re8xh1v0c9jc0m8w3ns",
                      "key": "paymentInstrument_public_id",
                      "description": "(Required) The payment instrument id."
                    }
                  ]
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "DELETE",
                "body": {}
              },
              "status": "Not Found",
              "code": 404,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"PaymentInstrument not found\",\n  \"code\": \"ERR_NOT_FOUND\",\n  \"data\": \"string\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "bf3d6878-dff0-4dc5-8bb0-ef8ce3d4c68e",
              "name": "Rate limit exceeded. See [rate limits](/api-basics/rate-limits).",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "payment-instruments",
                    ":paymentInstrument_public_id"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "type": "any",
                      "value": "pi_01k24d5re8xh1v0c9jc0m8w3ns",
                      "key": "paymentInstrument_public_id",
                      "description": "(Required) The payment instrument id."
                    }
                  ]
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "DELETE",
                "body": {}
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "disabled": false,
                  "description": "Seconds until the current rate limit window frees up.",
                  "key": "Retry-After",
                  "value": "9703"
                },
                {
                  "disabled": false,
                  "description": "Requests left in the current 60 second window. Sent on every response and 0 here.",
                  "key": "X-RateLimit-Remaining",
                  "value": "9703"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"Too many requests\",\n  \"code\": \"ERR_RATE_LIMITED\",\n  \"data\": \"string\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ],
      "event": []
    },
    {
      "id": "9f888873-993f-4f23-8875-10ad0fd4d6bc",
      "name": "Payment Sessions",
      "description": {
        "content": "",
        "type": "text/plain"
      },
      "item": [
        {
          "id": "88dde0ec-17a8-4fd7-8e40-ad969ac48635",
          "name": "Create a payment session",
          "request": {
            "name": "Create a payment session",
            "description": {
              "content": "Create a redirect payment session and return the provider `checkout_url` to send\nthe customer to. The session expires 15 minutes after creation if the customer\ndoes not complete the hosted payment page.\n\nMerchant API keys act on their own account. Partner API keys must include\n`merchant_id` for a linked merchant.\n\nSessions never accept card data. Requests carrying card, token, CVV or voucher\nfields are rejected with HTTP 422. Duplicate requests reusing an active\n`reference` are rejected with HTTP 409. See the [duplicate protection guide](/guides/duplicate-protection).\n\nFollow the [alternative payment guide](/guides/accept-an-alternative-payment) for the full flow.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "v1",
                "payment-sessions"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "auth": null,
            "body": {
              "mode": "raw",
              "raw": "{\n  \"amount\": 25,\n  \"currency\": \"EUR\",\n  \"reference\": \"DEP-2048\",\n  \"payment_method\": \"psc\",\n  \"customer\": {\n    \"first_name\": \"Jane\",\n    \"last_name\": \"Doe\",\n    \"country_code\": \"GB\",\n    \"merchant_customer_id\": \"player-981\"\n  },\n  \"success_url\": \"https://merchant.example.com/deposit/complete\",\n  \"cancel_url\": \"https://merchant.example.com/deposit/cancelled\",\n  \"customer_reference\": \"player-981\",\n  \"metadata\": {\n    \"campaign\": \"welcome\"\n  },\n  \"merchant_id\": 123\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "id": "211d724f-996f-413a-946a-c560a27349a1",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "payment-sessions"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"amount\": 25,\n  \"currency\": \"EUR\",\n  \"reference\": \"DEP-2048\",\n  \"payment_method\": \"psc\",\n  \"customer\": {\n    \"first_name\": \"Jane\",\n    \"last_name\": \"Doe\",\n    \"country_code\": \"GB\",\n    \"merchant_customer_id\": \"player-981\"\n  },\n  \"success_url\": \"https://merchant.example.com/deposit/complete\",\n  \"cancel_url\": \"https://merchant.example.com/deposit/cancelled\",\n  \"customer_reference\": \"player-981\",\n  \"metadata\": {\n    \"campaign\": \"welcome\"\n  },\n  \"merchant_id\": 123\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": true,\n  \"message\": \"Payment session created\",\n  \"code\": \"\",\n  \"data\": {\n    \"payment_session\": {\n      \"payment_session_id\": \"ps_01J8FYK3ZQ4T9RB2M6XD5A7CWE\",\n      \"transaction_id\": 4512,\n      \"merchant_id\": 123,\n      \"merchant_reference\": \"DEP-2048\",\n      \"provider\": \"skrill\",\n      \"payment_method\": \"psc\",\n      \"status\": \"pending_redirect\",\n      \"amount\": 2500,\n      \"amount_formatted\": \"25.00\",\n      \"currency\": \"EUR\",\n      \"checkout_url\": \"https://pay.skrill.com/app/?sid=a1b2c3d4e5\",\n      \"return_url\": \"https://merchant.example.com/deposit/complete\",\n      \"cancel_url\": \"https://merchant.example.com/deposit/cancelled\",\n      \"provider_session_id\": \"a1b2c3d4e5\",\n      \"provider_transaction_id\": \"string\",\n      \"customer_reference\": \"player-981\",\n      \"expires_at\": \"2026-08-08T10:30:00.000000Z\",\n      \"finalised_at\": \"string\",\n      \"created_at\": \"2026-08-08T10:15:00.000000Z\",\n      \"updated_at\": \"2026-08-08T10:15:00.000000Z\"\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "0292d94f-676b-4989-a109-bd7b0b5e3f87",
              "name": "Session rejected. The `code` field identifies the reason, for example ERR_PAYMENT_METHOD_NOT_ENABLED when the method, currency or country is not enabled for the merchant. See the [error catalogue](/api-basics/errors).",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "payment-sessions"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"amount\": 25,\n  \"currency\": \"EUR\",\n  \"reference\": \"DEP-2048\",\n  \"payment_method\": \"psc\",\n  \"customer\": {\n    \"first_name\": \"Jane\",\n    \"last_name\": \"Doe\",\n    \"country_code\": \"GB\",\n    \"merchant_customer_id\": \"player-981\"\n  },\n  \"success_url\": \"https://merchant.example.com/deposit/complete\",\n  \"cancel_url\": \"https://merchant.example.com/deposit/cancelled\",\n  \"customer_reference\": \"player-981\",\n  \"metadata\": {\n    \"campaign\": \"welcome\"\n  },\n  \"merchant_id\": 123\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Bad Request",
              "code": 400,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"This payment method is not enabled for the merchant.\",\n  \"code\": \"ERR_PAYMENT_METHOD_NOT_ENABLED\",\n  \"data\": \"string\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "6421b251-91eb-413a-a8c0-506c0ebb3236",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "payment-sessions"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"amount\": 25,\n  \"currency\": \"EUR\",\n  \"reference\": \"DEP-2048\",\n  \"payment_method\": \"psc\",\n  \"customer\": {\n    \"first_name\": \"Jane\",\n    \"last_name\": \"Doe\",\n    \"country_code\": \"GB\",\n    \"merchant_customer_id\": \"player-981\"\n  },\n  \"success_url\": \"https://merchant.example.com/deposit/complete\",\n  \"cancel_url\": \"https://merchant.example.com/deposit/cancelled\",\n  \"customer_reference\": \"player-981\",\n  \"metadata\": {\n    \"campaign\": \"welcome\"\n  },\n  \"merchant_id\": 123\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"Authentication failed\",\n  \"code\": \"ERR_AUTH_FAILED\",\n  \"data\": \"string\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "311e2784-cb2c-4849-bb71-6de46646f0d6",
              "name": "A session or transaction with this `reference` already exists. See the [duplicate protection guide](/guides/duplicate-protection).",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "payment-sessions"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"amount\": 25,\n  \"currency\": \"EUR\",\n  \"reference\": \"DEP-2048\",\n  \"payment_method\": \"psc\",\n  \"customer\": {\n    \"first_name\": \"Jane\",\n    \"last_name\": \"Doe\",\n    \"country_code\": \"GB\",\n    \"merchant_customer_id\": \"player-981\"\n  },\n  \"success_url\": \"https://merchant.example.com/deposit/complete\",\n  \"cancel_url\": \"https://merchant.example.com/deposit/cancelled\",\n  \"customer_reference\": \"player-981\",\n  \"metadata\": {\n    \"campaign\": \"welcome\"\n  },\n  \"merchant_id\": 123\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Conflict",
              "code": 409,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"A payment session with this reference already exists.\",\n  \"code\": \"ERR_DUPLICATE\",\n  \"data\": \"string\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "58187aea-5a4b-4109-84e3-317b90e5b873",
              "name": "Validation failed. This includes any request carrying card, token, CVV or voucher data.",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "payment-sessions"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"amount\": 25,\n  \"currency\": \"EUR\",\n  \"reference\": \"DEP-2048\",\n  \"payment_method\": \"psc\",\n  \"customer\": {\n    \"first_name\": \"Jane\",\n    \"last_name\": \"Doe\",\n    \"country_code\": \"GB\",\n    \"merchant_customer_id\": \"player-981\"\n  },\n  \"success_url\": \"https://merchant.example.com/deposit/complete\",\n  \"cancel_url\": \"https://merchant.example.com/deposit/cancelled\",\n  \"customer_reference\": \"player-981\",\n  \"metadata\": {\n    \"campaign\": \"welcome\"\n  },\n  \"merchant_id\": 123\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Unprocessable Entity (WebDAV) (RFC 4918)",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"Validation errors\",\n  \"code\": \"ERR_VALIDATION_FAILED\",\n  \"data\": \"string\",\n  \"errors\": {\n    \"card\": [\n      \"Card, token, CVV and voucher data are not accepted on redirect payment sessions.\"\n    ]\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "a1272787-7bea-4805-9c99-29afe32c1752",
              "name": "Rate limit exceeded. See [rate limits](/api-basics/rate-limits).",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "payment-sessions"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"amount\": 25,\n  \"currency\": \"EUR\",\n  \"reference\": \"DEP-2048\",\n  \"payment_method\": \"psc\",\n  \"customer\": {\n    \"first_name\": \"Jane\",\n    \"last_name\": \"Doe\",\n    \"country_code\": \"GB\",\n    \"merchant_customer_id\": \"player-981\"\n  },\n  \"success_url\": \"https://merchant.example.com/deposit/complete\",\n  \"cancel_url\": \"https://merchant.example.com/deposit/cancelled\",\n  \"customer_reference\": \"player-981\",\n  \"metadata\": {\n    \"campaign\": \"welcome\"\n  },\n  \"merchant_id\": 123\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "disabled": false,
                  "description": "Seconds until the current rate limit window frees up.",
                  "key": "Retry-After",
                  "value": "9703"
                },
                {
                  "disabled": false,
                  "description": "Requests left in the current 60 second window. Sent on every response and 0 here.",
                  "key": "X-RateLimit-Remaining",
                  "value": "9703"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"Too many requests\",\n  \"code\": \"ERR_RATE_LIMITED\",\n  \"data\": \"string\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "8eebf441-f4b1-4d1e-b826-20933ef00911",
              "name": "The provider could not prepare the hosted session. The session and its transaction are marked failed. Create a new session to retry.",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "payment-sessions"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"amount\": 25,\n  \"currency\": \"EUR\",\n  \"reference\": \"DEP-2048\",\n  \"payment_method\": \"psc\",\n  \"customer\": {\n    \"first_name\": \"Jane\",\n    \"last_name\": \"Doe\",\n    \"country_code\": \"GB\",\n    \"merchant_customer_id\": \"player-981\"\n  },\n  \"success_url\": \"https://merchant.example.com/deposit/complete\",\n  \"cancel_url\": \"https://merchant.example.com/deposit/cancelled\",\n  \"customer_reference\": \"player-981\",\n  \"metadata\": {\n    \"campaign\": \"welcome\"\n  },\n  \"merchant_id\": 123\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Bad Gateway",
              "code": 502,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"Failed to create the payment session with the provider.\",\n  \"code\": \"ERR_GATEWAY_ERROR\",\n  \"data\": \"string\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        },
        {
          "id": "74551619-a94b-4385-b791-3694bd6f2d0a",
          "name": "Get a payment session",
          "request": {
            "name": "Get a payment session",
            "description": {
              "content": "Retrieve the current state of a payment session. Poll this endpoint after the\ncustomer returns to your success URL or rely on [webhooks](/guides/webhooks)\nfor the final outcome. A session is only complete when its status is `paid`.\n\nMerchant API keys can read their own sessions. Partner API keys can read\nsessions belonging to linked merchants.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "v1",
                "payment-sessions",
                ":paymentSession_public_id"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": [
                {
                  "disabled": false,
                  "type": "any",
                  "value": "ps_01J8FYK3ZQ4T9RB2M6XD5A7CWE",
                  "key": "paymentSession_public_id",
                  "description": "(Required) The payment session id."
                }
              ]
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET",
            "auth": null
          },
          "response": [
            {
              "id": "1bffa36f-adc7-424a-a416-2cf80d66e2d7",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "payment-sessions",
                    ":paymentSession_public_id"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "type": "any",
                      "value": "ps_01J8FYK3ZQ4T9RB2M6XD5A7CWE",
                      "key": "paymentSession_public_id",
                      "description": "(Required) The payment session id."
                    }
                  ]
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": true,\n  \"message\": \"Payment session retrieved\",\n  \"code\": \"\",\n  \"data\": {\n    \"payment_session\": {\n      \"payment_session_id\": \"ps_01J8FYK3ZQ4T9RB2M6XD5A7CWE\",\n      \"transaction_id\": 4512,\n      \"merchant_id\": 123,\n      \"merchant_reference\": \"DEP-2048\",\n      \"provider\": \"skrill\",\n      \"payment_method\": \"psc\",\n      \"status\": \"paid\",\n      \"amount\": 2500,\n      \"amount_formatted\": \"25.00\",\n      \"currency\": \"EUR\",\n      \"checkout_url\": \"https://pay.skrill.com/app/?sid=a1b2c3d4e5\",\n      \"return_url\": \"https://merchant.example.com/deposit/complete\",\n      \"cancel_url\": \"https://merchant.example.com/deposit/cancelled\",\n      \"provider_session_id\": \"a1b2c3d4e5\",\n      \"provider_transaction_id\": \"2649912345\",\n      \"customer_reference\": \"player-981\",\n      \"expires_at\": \"2026-08-08T10:30:00.000000Z\",\n      \"finalised_at\": \"2026-08-08T10:18:42.000000Z\",\n      \"created_at\": \"2026-08-08T10:15:00.000000Z\",\n      \"updated_at\": \"2026-08-08T10:18:42.000000Z\"\n    }\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "05290b89-71d1-43c1-9c5b-9fb224546ade",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "payment-sessions",
                    ":paymentSession_public_id"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "type": "any",
                      "value": "ps_01J8FYK3ZQ4T9RB2M6XD5A7CWE",
                      "key": "paymentSession_public_id",
                      "description": "(Required) The payment session id."
                    }
                  ]
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"Authentication failed\",\n  \"code\": \"ERR_AUTH_FAILED\",\n  \"data\": \"string\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "678fd35a-e75e-451c-991f-891ce779b8ad",
              "name": "The session belongs to a merchant this API key cannot access.",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "payment-sessions",
                    ":paymentSession_public_id"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "type": "any",
                      "value": "ps_01J8FYK3ZQ4T9RB2M6XD5A7CWE",
                      "key": "paymentSession_public_id",
                      "description": "(Required) The payment session id."
                    }
                  ]
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Forbidden",
              "code": 403,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"Access denied: Resource not accessible\",\n  \"code\": \"ERR_AUTH_FAILED\",\n  \"data\": \"string\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "0510d98f-34df-4395-a967-008f1e014598",
              "name": "No payment session with this id exists. See the [error catalogue](/api-basics/errors).",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "payment-sessions",
                    ":paymentSession_public_id"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "type": "any",
                      "value": "ps_01J8FYK3ZQ4T9RB2M6XD5A7CWE",
                      "key": "paymentSession_public_id",
                      "description": "(Required) The payment session id."
                    }
                  ]
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Not Found",
              "code": 404,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"PaymentSession not found\",\n  \"code\": \"ERR_NOT_FOUND\",\n  \"data\": \"string\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "8d1c0752-9b73-4f39-a9b7-60961abe699c",
              "name": "Rate limit exceeded. See [rate limits](/api-basics/rate-limits).",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "payment-sessions",
                    ":paymentSession_public_id"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": [
                    {
                      "disabled": false,
                      "type": "any",
                      "value": "ps_01J8FYK3ZQ4T9RB2M6XD5A7CWE",
                      "key": "paymentSession_public_id",
                      "description": "(Required) The payment session id."
                    }
                  ]
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "disabled": false,
                  "description": "Seconds until the current rate limit window frees up.",
                  "key": "Retry-After",
                  "value": "9703"
                },
                {
                  "disabled": false,
                  "description": "Requests left in the current 60 second window. Sent on every response and 0 here.",
                  "key": "X-RateLimit-Remaining",
                  "value": "9703"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"Too many requests\",\n  \"code\": \"ERR_RATE_LIMITED\",\n  \"data\": \"string\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ],
      "event": []
    },
    {
      "id": "b6855c91-6f12-4fc2-8009-d7bb8ec03104",
      "name": "Card Verification",
      "description": {
        "content": "",
        "type": "text/plain"
      },
      "item": [
        {
          "id": "66490df4-bb79-4ecc-9cfe-88ea74baf5b0",
          "name": "Initiate Card Verification",
          "request": {
            "name": "Initiate Card Verification",
            "description": {
              "content": "Initiate a 3D Secure card verification process before a payment request.\n\n**Frictionless flow:** If the issuer does not require a challenge, the response returns immediately\nwith `status: full_auth`. Use the returned `id` in `card_verification_data.id` when initiating the transaction.\n\n**Challenge flow:** The response includes a `challenge_url`. Redirect the cardholder there. After they\ncomplete the bank challenge, they are redirected to your `auth_url` with\n`?card_verification_id={id}&status={full_auth|failed}` query parameters. Use the `card_verification_id`\nvalue in `card_verification_data.id` when initiating the transaction.\n\nAuthenticate with a merchant API key or a partner API key plus `merchant_id`\nfor the merchant being acted on behalf of (same rules as the transaction endpoint).",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "v1",
                "3ds",
                "verify"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "POST",
            "auth": null,
            "body": {
              "mode": "raw",
              "raw": "{\n  \"amount\": 12.5,\n  \"currency\": \"EUR\",\n  \"card\": {\n    \"number\": \"4200000000000091\",\n    \"exp_month\": 12,\n    \"exp_year\": 2030,\n    \"name\": \"John Doe\",\n    \"cvv\": \"123\"\n  },\n  \"auth_url\": \"https://yoursite.com/checkout/3ds-complete\",\n  \"merchant_id\": 123,\n  \"browser_data\": {\n    \"accept_header\": \"text/html,application/xhtml+xml\",\n    \"color_depth\": 24,\n    \"java_enabled\": false,\n    \"java_script_enabled\": true,\n    \"language\": \"en-US\",\n    \"screen_height\": 1080,\n    \"screen_width\": 1920,\n    \"time_zone_offset_in_minutes\": -60,\n    \"user_agent\": \"Mozilla/5.0...\",\n    \"ip_address\": \"203.0.113.1\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "id": "8ef10475-7bbe-4a4c-9ee9-2e1281132033",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "3ds",
                    "verify"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"amount\": 12.5,\n  \"currency\": \"EUR\",\n  \"card\": {\n    \"number\": \"4200000000000091\",\n    \"exp_month\": 12,\n    \"exp_year\": 2030,\n    \"name\": \"John Doe\",\n    \"cvv\": \"123\"\n  },\n  \"auth_url\": \"https://yoursite.com/checkout/3ds-complete\",\n  \"merchant_id\": 123,\n  \"browser_data\": {\n    \"accept_header\": \"text/html,application/xhtml+xml\",\n    \"color_depth\": 24,\n    \"java_enabled\": false,\n    \"java_script_enabled\": true,\n    \"language\": \"en-US\",\n    \"screen_height\": 1080,\n    \"screen_width\": 1920,\n    \"time_zone_offset_in_minutes\": -60,\n    \"user_agent\": \"Mozilla/5.0...\",\n    \"ip_address\": \"203.0.113.1\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": true,\n  \"message\": \"3DS authentication completed (frictionless)\",\n  \"code\": \"\",\n  \"data\": {\n    \"id\": 166,\n    \"amount\": 1250,\n    \"currency\": \"EUR\",\n    \"version\": \"2.2.0\",\n    \"eci\": \"05\",\n    \"cavv\": \"AAABA0UREQAAAAAAAAAAAAAAAAA=\",\n    \"xid\": \"string\",\n    \"ds_trans_id\": \"6b66be83-f692-405c-9079-92f7182af5e5\",\n    \"status\": \"full_auth\",\n    \"auth_type\": \"frictionless\",\n    \"challenge_url\": \"string\",\n    \"post_url\": \"string\",\n    \"html\": \"string\",\n    \"created_at\": \"2025-06-12 09:47:15\",\n    \"updated_at\": \"2025-06-12 09:47:15\"\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "62b98ffa-3063-4ec7-a12c-9464a4f8de55",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "3ds",
                    "verify"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"amount\": 12.5,\n  \"currency\": \"EUR\",\n  \"card\": {\n    \"number\": \"4200000000000091\",\n    \"exp_month\": 12,\n    \"exp_year\": 2030,\n    \"name\": \"John Doe\",\n    \"cvv\": \"123\"\n  },\n  \"auth_url\": \"https://yoursite.com/checkout/3ds-complete\",\n  \"merchant_id\": 123,\n  \"browser_data\": {\n    \"accept_header\": \"text/html,application/xhtml+xml\",\n    \"color_depth\": 24,\n    \"java_enabled\": false,\n    \"java_script_enabled\": true,\n    \"language\": \"en-US\",\n    \"screen_height\": 1080,\n    \"screen_width\": 1920,\n    \"time_zone_offset_in_minutes\": -60,\n    \"user_agent\": \"Mozilla/5.0...\",\n    \"ip_address\": \"203.0.113.1\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"Authentication failed\",\n  \"code\": \"ERR_AUTH_FAILED\",\n  \"data\": \"string\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "9eae7e38-a2a7-419b-9c71-b634d981262a",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "3ds",
                    "verify"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"amount\": 12.5,\n  \"currency\": \"EUR\",\n  \"card\": {\n    \"number\": \"4200000000000091\",\n    \"exp_month\": 12,\n    \"exp_year\": 2030,\n    \"name\": \"John Doe\",\n    \"cvv\": \"123\"\n  },\n  \"auth_url\": \"https://yoursite.com/checkout/3ds-complete\",\n  \"merchant_id\": 123,\n  \"browser_data\": {\n    \"accept_header\": \"text/html,application/xhtml+xml\",\n    \"color_depth\": 24,\n    \"java_enabled\": false,\n    \"java_script_enabled\": true,\n    \"language\": \"en-US\",\n    \"screen_height\": 1080,\n    \"screen_width\": 1920,\n    \"time_zone_offset_in_minutes\": -60,\n    \"user_agent\": \"Mozilla/5.0...\",\n    \"ip_address\": \"203.0.113.1\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Unprocessable Entity (WebDAV) (RFC 4918)",
              "code": 422,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"Validation errors\",\n  \"code\": \"ERR_VALIDATION_FAILED\",\n  \"data\": \"string\",\n  \"errors\": {\n    \"amount\": [\n      \"The amount is required.\"\n    ]\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "56c02f38-5c80-40f7-b364-8682e7e7140f",
              "name": "Rate limit exceeded. See [rate limits](/api-basics/rate-limits).",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "3ds",
                    "verify"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "POST",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"amount\": 12.5,\n  \"currency\": \"EUR\",\n  \"card\": {\n    \"number\": \"4200000000000091\",\n    \"exp_month\": 12,\n    \"exp_year\": 2030,\n    \"name\": \"John Doe\",\n    \"cvv\": \"123\"\n  },\n  \"auth_url\": \"https://yoursite.com/checkout/3ds-complete\",\n  \"merchant_id\": 123,\n  \"browser_data\": {\n    \"accept_header\": \"text/html,application/xhtml+xml\",\n    \"color_depth\": 24,\n    \"java_enabled\": false,\n    \"java_script_enabled\": true,\n    \"language\": \"en-US\",\n    \"screen_height\": 1080,\n    \"screen_width\": 1920,\n    \"time_zone_offset_in_minutes\": -60,\n    \"user_agent\": \"Mozilla/5.0...\",\n    \"ip_address\": \"203.0.113.1\"\n  }\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "disabled": false,
                  "description": "Seconds until the current rate limit window frees up.",
                  "key": "Retry-After",
                  "value": "9703"
                },
                {
                  "disabled": false,
                  "description": "Requests left in the current 60 second window. Sent on every response and 0 here.",
                  "key": "X-RateLimit-Remaining",
                  "value": "9703"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"Too many requests\",\n  \"code\": \"ERR_RATE_LIMITED\",\n  \"data\": \"string\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ],
      "event": []
    },
    {
      "id": "e9e6f127-4435-462e-8616-99c6748d2f43",
      "name": "API Operations",
      "description": {
        "content": "",
        "type": "text/plain"
      },
      "item": [
        {
          "id": "717a1eeb-e19e-4daa-be2f-4ffb81d5b1f9",
          "name": "Get API Key Information",
          "request": {
            "name": "Get API Key Information",
            "description": {
              "content": "Returns information about the API key being used to authenticate the request.\nAPI keys are provisioned by SoftLemon admins for merchants and partners.\nSelf-service onboarding and API key generation are not currently available.",
              "type": "text/plain"
            },
            "url": {
              "path": [
                "api",
                "v1",
                "key-info"
              ],
              "host": [
                "{{baseUrl}}"
              ],
              "query": [],
              "variable": []
            },
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "method": "GET",
            "auth": null
          },
          "response": [
            {
              "id": "11eb6bdd-7707-487e-b58b-046f6a331e42",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "key-info"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "OK",
              "code": 200,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": true,\n  \"message\": \"API key information retrieved successfully\",\n  \"code\": \"\",\n  \"data\": {\n    \"key_identifier\": \"sl_20250411105714_TTwbAVtw\",\n    \"name\": \"Production key\",\n    \"status\": \"active\",\n    \"entity_type\": \"merchant\",\n    \"entity_id\": 1,\n    \"entity_name\": \"Demo Store Ltd\",\n    \"created_at\": \"2025-04-11T10:57:14.000000Z\",\n    \"last_used_at\": \"2025-05-20T09:18:47.000000Z\",\n    \"expires_at\": \"string\"\n  }\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "cb09fa6b-3c90-4fe8-a2fa-f6737f4d06b8",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "key-info"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Unauthorized",
              "code": 401,
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"Authentication failed\",\n  \"code\": \"ERR_AUTH_FAILED\",\n  \"data\": \"string\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            },
            {
              "id": "b7718c5e-bbe6-43de-a36e-87809f20d15e",
              "name": "Rate limit exceeded. See [rate limits](/api-basics/rate-limits).",
              "originalRequest": {
                "url": {
                  "path": [
                    "api",
                    "v1",
                    "key-info"
                  ],
                  "host": [
                    "{{baseUrl}}"
                  ],
                  "query": [],
                  "variable": []
                },
                "header": [
                  {
                    "description": {
                      "content": "Added as a part of security scheme: bearer",
                      "type": "text/plain"
                    },
                    "key": "Authorization",
                    "value": "Bearer <token>"
                  },
                  {
                    "key": "Accept",
                    "value": "application/json"
                  }
                ],
                "method": "GET",
                "body": {}
              },
              "status": "Too Many Requests",
              "code": 429,
              "header": [
                {
                  "disabled": false,
                  "description": "Seconds until the current rate limit window frees up.",
                  "key": "Retry-After",
                  "value": "9703"
                },
                {
                  "disabled": false,
                  "description": "Requests left in the current 60 second window. Sent on every response and 0 here.",
                  "key": "X-RateLimit-Remaining",
                  "value": "9703"
                },
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"success\": false,\n  \"message\": \"Too many requests\",\n  \"code\": \"ERR_RATE_LIMITED\",\n  \"data\": \"string\"\n}",
              "cookie": [],
              "_postman_previewlanguage": "json"
            }
          ],
          "event": [],
          "protocolProfileBehavior": {
            "disableBodyPruning": true
          }
        }
      ],
      "event": []
    }
  ],
  "event": [],
  "variable": [
    {
      "type": "string",
      "value": "https://api.sandbox.softlemons.com",
      "key": "baseUrl"
    }
  ],
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{bearerToken}}"
      }
    ]
  },
  "info": {
    "_postman_id": "c5357742-de77-4f42-bde0-18cef5bac336",
    "name": "Softlemon Merchant API",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
    "description": {
      "content": "Production-ready merchant integration endpoints for admin-provisioned API keys.\n\n**Base URL:** `https://api.sandbox.softlemons.com/`\n\nThis documentation covers the merchant integration surface for admin-provisioned API keys.\n\nUse these endpoints when a merchant is processing payments for its own account.\n\nAPI keys are created by your SoftLemon admin team and delivered securely. Self-service onboarding and API key generation are not currently available.\n\nThe gateway also sends signed outbound webhooks on transaction state changes. See the Webhooks section below and the [webhook integration guide](/guides/webhooks) for signature verification examples and retry semantics.\n\n## Authenticating requests\n\nTo authenticate requests, include an **`Authorization`** header with the value **`Bearer {YOUR_API_KEY}`**. Use the API key provisioned by your SoftLemon admin team.\n\n## Idempotent retries\n\nNetwork failures can leave you unsure whether a capture, refund or void went through. Send an `Idempotency-Key` header (any unique string up to 255 characters, a UUID works well) on `POST /api/v1/transactions/{id}/capture`, `/refund` or `/void` to make retrying safe.\n\n- Repeating the request with the same key and body within 24 hours returns the stored original response with an `Idempotency-Replayed: true` header. The money moves once.\n- Reusing a key with a different body returns HTTP 409 with code `ERR_IDEMPOTENCY_CONFLICT`. Use a fresh key for each new request.\n- While the original request is still processing, a retry returns HTTP 409 with code `ERR_IDEMPOTENT_REQUEST_IN_PROGRESS`. Wait a moment and send it again with the same key.\n\nA stored decline replays as well, so attempting a declined capture or refund again needs a new key. On `POST /api/v1/transactions` use the `reference` field instead. The [duplicate protection guide](/guides/duplicate-protection) explains how the two mechanisms differ.\n\n## 3D Secure Integration Flow\n\nSoftLemon uses a server-managed 3DS flow. You do **not** need to handle CAVV, ECI or DS Transaction IDs yourself.\n\n### Step 1: Initiate 3DS Verification\n\n`POST /api/v1/3ds/verify` with card details, amount, currency and `auth_url` (your frontend return URL).\n\n### Step 2: Handle the response\n\n- **Frictionless:** The response returns immediately with `status: full_auth`. Use the returned `id` in Step 4.\n- **Challenge:** The response includes a `challenge_url`. Redirect the cardholder to this URL to complete the bank challenge.\n\n### Step 3: Cardholder completes challenge (if applicable)\n\nAfter the cardholder completes the challenge, they are redirected to your `auth_url` with query parameters:\n\n`?card_verification_id={id}&status=full_auth` (or `status=failed`)\n\n### Step 4: Initiate the transaction\n\n`POST /api/v1/transactions` with `card_verification_data.id` set to the verification ID from Step 1 or the redirect.\n\n```json\n\"card_verification_data\": { \"id\": 43 }\n```\n\nThe API automatically retrieves the stored 3DS authentication data (including CAVV and ECI) and passes it to the payment gateway.\n\n## Integration guides\n\nStep-by-step walkthroughs for the most common flows, each with full requests and responses:\n\n- [Accept a card payment](/guides/accept-a-payment): 3D Secure verification, the sale and confirmation. Start here.\n- [Authorize now, capture later](/guides/authorize-and-capture): holds, full and partial captures and voids.\n- [Refund a payment](/guides/refunds): full and partial refunds and the events they emit.\n- [Charge a returning customer](/guides/returning-customers): repeat payments with a vault token.\n- [Accept an alternative payment](/guides/accept-an-alternative-payment): hosted redirect payments such as Paysafecard through payment sessions.\n- [Webhook integration](/guides/webhooks): signatures, retries, replays and keeping your system in sync.\n\nPrefer exploring in Postman? Download the [Merchant API Postman collection](/collections/softlemon-merchant-api.postman_collection.json) and set your API key as the Bearer token on the collection.\n\n## 3D Secure test cards\n\nUse these sandbox cards when testing `POST /api/v1/3ds/verify`.\n\n| Scheme | Flow | Returns method data | Card number | Expected result |\n|---|---|---|---|---|\n| Visa | Frictionless | Y | `4200000000000091` | Successful frictionless authentication. |\n| Visa | Frictionless | Y | `4200000000000109` | Attempted authentication. |\n| Visa | Frictionless | N | `4200000000000026` | Successful frictionless authentication. |\n| Visa | Frictionless | N | `4200000000000059` | Attempted authentication. |\n| Visa | Error | N | `4012001037461114` | Technical error. |\n| Visa | Error | N | `4012001037141112` | User not enrolled. |\n| Visa | Not Applicable | N/A | `4532497088771651` | Card not participating. |\n| Visa | Challenge | Y | `4200000000000042` | Challenge flow. |\n| Visa | Challenge | Y | `4200000000000067` | Challenge flow. |\n| Visa | Challenge | N | `4200000000000018` | Challenge flow. |\n| Visa | Challenge | N | `4200000000000075` | Challenge flow. |\n| Mastercard | Frictionless | Y | `5200000000000007` | Successful frictionless authentication. |\n| Mastercard | Frictionless | Y | `5200000000000023` | Attempted authentication. |\n| Mastercard | Frictionless | N | `5200000000000056` | Successful frictionless authentication. |\n| Mastercard | Frictionless | N | `5200000000000006` | Attempted authentication. |\n| Mastercard | Error | N | `5434580000000006` | Technical error. |\n| Mastercard | Error | N | `5457350076543210` | User not enrolled. |\n| Mastercard | Not Applicable | N/A | `5497260847316287` | Card not participating. |\n| Mastercard | Challenge | Y | `5200000000000015` | Challenge flow. |\n| Mastercard | Challenge | Y | `5200000000000049` | Challenge flow. |\n| Mastercard | Challenge | N | `5200000000000064` | Challenge flow. |\n| Mastercard | Challenge | N | `5200000000000072` | Challenge flow. |",
      "type": "text/plain"
    }
  }
}
