{
  "info": {
    "_postman_id": "b860df8f-cbbb-4f79-96fb-5400b9b8ea4f",
    "name": "LuxPay Wallet API",
    "description": "Generated from the canonical OpenAPI contract.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "variable": [
    {
      "key": "luxpay_base_url",
      "value": "https://sandbox-api.luxpay.example/api/v1/luxpay"
    },
    {
      "key": "luxpay_token",
      "value": ""
    }
  ],
  "item": [
    {
      "name": "Health",
      "item": [
        {
          "name": "API health",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": "{{luxpay_base_url}}/health",
            "description": "Returns service availability, version and timestamp.\nAccess: public\nRate: public\nIdempotency: none"
          }
        }
      ]
    },
    {
      "name": "Authentication",
      "item": [
        {
          "name": "Register wallet customer",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{luxpay_base_url}}/auth/customer/register",
            "description": "Creates a customer, provisions the initial YER primary wallet and returns a bearer token.\nAccess: public\nRate: pay_api\nIdempotency: none",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"full_name\": \"أحمد محمد\",\n  \"phone\": \"+9677XXXXXXX\",\n  \"email\": \"string\",\n  \"password\": \"string\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Customer login",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{luxpay_base_url}}/auth/customer/login",
            "description": "Authenticates a wallet customer by phone and password and returns a bearer token.\nAccess: public\nRate: pay_api\nIdempotency: none",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"phone\": \"+9677XXXXXXX\",\n  \"password\": \"string\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Business employee login",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{luxpay_base_url}}/auth/employee/login",
            "description": "Authenticates a business employee using business scope plus email/phone and password.\nAccess: public\nRate: pay_api\nIdempotency: none",
            "body": {
              "mode": "raw",
              "raw": "\"string\"",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        }
      ]
    },
    {
      "name": "Wallets",
      "item": [
        {
          "name": "List accessible wallets",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              }
            ],
            "url": "{{luxpay_base_url}}/wallets",
            "description": "Lists wallets for the authenticated owner context.\nAccess: customer_or_business\nRate: 60/min\nIdempotency: none"
          }
        },
        {
          "name": "Create wallet",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{luxpay_base_url}}/wallets",
            "description": "Creates a wallet for an allowed owner and currency. Owner scope is verified by the backend.\nAccess: business_operator\nRate: 20/min\nIdempotency: none",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"owner_type\": \"customer\",\n  \"owner_id\": 2201,\n  \"currency_code\": \"YER\",\n  \"wallet_type\": \"primary\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Create customer wallet",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{luxpay_base_url}}/wallets/users",
            "description": "Creates a primary wallet for an existing customer.\nAccess: business_operator\nRate: 20/min\nIdempotency: none",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"owner_id\": 2201,\n  \"currency_code\": \"YER\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Get wallet",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              }
            ],
            "url": "{{luxpay_base_url}}/wallets/{{walletId}}",
            "description": "Returns one wallet after business-scope authorization.\nAccess: customer_or_business\nRate: 60/min\nIdempotency: none"
          }
        },
        {
          "name": "Get wallet balance",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              }
            ],
            "url": "{{luxpay_base_url}}/wallets/{{walletId}}/balance",
            "description": "Returns cached, held, pending and available balances with verification time.\nAccess: customer_or_business\nRate: 60/min\nIdempotency: none"
          }
        },
        {
          "name": "Freeze wallet",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{luxpay_base_url}}/wallets/{{walletId}}/freeze",
            "description": "Freezes a wallet and records the actor context and optional reason.\nAccess: restricted_operator\nRate: 20/min\nIdempotency: none",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"reason\": \"string\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Unfreeze wallet",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              }
            ],
            "url": "{{luxpay_base_url}}/wallets/{{walletId}}/unfreeze",
            "description": "Restores a frozen wallet according to authorization controls.\nAccess: restricted_operator\nRate: 20/min\nIdempotency: none"
          }
        }
      ]
    },
    {
      "name": "Transactions",
      "item": [
        {
          "name": "List wallet transactions",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              }
            ],
            "url": "{{luxpay_base_url}}/wallets/{{walletId}}/transactions",
            "description": "Returns paginated transaction history for the wallet.\nAccess: customer_or_business\nRate: 60/min\nIdempotency: none"
          }
        },
        {
          "name": "Deposit funds",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{luxpay_base_url}}/wallets/{{walletId}}/deposit",
            "description": "Posts a deposit using an idempotency key carried in the request body.\nAccess: business_operator\nRate: 20/min\nIdempotency: body:idempotency_key",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"amount\": 5000,\n  \"currency_code\": \"YER\",\n  \"idempotency_key\": \"wallet_move_01JABC...\",\n  \"payment_method\": \"cash\",\n  \"description\": \"Cash desk deposit\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Withdraw funds",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{luxpay_base_url}}/wallets/{{walletId}}/withdraw",
            "description": "Posts a withdrawal. Approval policy can apply according to transaction controls.\nAccess: business_operator\nRate: 20/min\nIdempotency: body:idempotency_key",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"amount\": 5000,\n  \"currency_code\": \"YER\",\n  \"idempotency_key\": \"wallet_move_01JABC...\",\n  \"payment_method\": \"cash\",\n  \"description\": \"Cash desk deposit\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Refund wallet transaction",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{luxpay_base_url}}/wallets/refund",
            "description": "Creates a refund against an original wallet transaction UUID.\nAccess: business_operator\nRate: 20/min\nIdempotency: none",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"original_transaction_uuid\": \"00000000-0000-4000-8000-000000000001\",\n  \"amount\": 0.000001,\n  \"reason\": \"string\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        }
      ]
    },
    {
      "name": "Ledger",
      "item": [
        {
          "name": "List ledger entries",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              }
            ],
            "url": "{{luxpay_base_url}}/wallets/{{walletId}}/ledger",
            "description": "Returns immutable ledger entries for the wallet. Corrections are represented by reversal entries.\nAccess: business_finance\nRate: 60/min\nIdempotency: none"
          }
        },
        {
          "name": "Get wallet statement",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              }
            ],
            "url": "{{luxpay_base_url}}/wallets/{{walletId}}/statement",
            "description": "Returns a paginated statement sourced from immutable ledger entries.\nAccess: customer_or_business\nRate: 60/min\nIdempotency: none"
          }
        },
        {
          "name": "Reverse ledger posting",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{luxpay_base_url}}/wallets/reverse",
            "description": "Creates reversal entries for an original debit/credit ledger pair. Original entries remain immutable.\nAccess: restricted_finance\nRate: 20/min\nIdempotency: none",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"debit_ledger_entry_id\": 1,\n  \"credit_ledger_entry_id\": 1,\n  \"reason\": \"string\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Verify ledger integrity",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              }
            ],
            "url": "{{luxpay_base_url}}/wallets/{{walletId}}/verify-integrity",
            "description": "Verifies the wallet ledger integrity chain. This operation is restricted and potentially expensive.\nAccess: restricted_auditor\nRate: 20/min\nIdempotency: none"
          }
        }
      ]
    },
    {
      "name": "Audit",
      "item": [
        {
          "name": "List wallet audit records",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              }
            ],
            "url": "{{luxpay_base_url}}/wallets/{{walletId}}/audit",
            "description": "Returns audit records associated with the wallet.\nAccess: business_auditor\nRate: 60/min\nIdempotency: none"
          }
        }
      ]
    },
    {
      "name": "Transfers",
      "item": [
        {
          "name": "Transfer between wallets",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{luxpay_base_url}}/transfers",
            "description": "Moves funds between source and destination wallets with optional fee.\nAccess: customer_or_business\nRate: 20/min\nIdempotency: body:idempotency_key",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"source_wallet_id\": 42,\n  \"destination_wallet_id\": 87,\n  \"amount\": 1250.5,\n  \"currency_code\": \"YER\",\n  \"idempotency_key\": \"transfer_01JABC...\",\n  \"transfer_type\": \"wallet_to_wallet\",\n  \"fee_amount\": 0,\n  \"description\": \"string\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Pay merchant wallet",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{luxpay_base_url}}/wallets/pay-merchant",
            "description": "Executes a user-to-merchant wallet transfer.\nAccess: customer\nRate: 20/min\nIdempotency: body:idempotency_key",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"source_wallet_id\": 1,\n  \"destination_wallet_id\": 1,\n  \"amount\": 0.000001,\n  \"currency_code\": \"string\",\n  \"idempotency_key\": \"string\",\n  \"description\": \"string\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        }
      ]
    },
    {
      "name": "Holds",
      "item": [
        {
          "name": "Hold wallet funds",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{luxpay_base_url}}/wallets/hold",
            "description": "Creates a temporary hold against wallet funds.\nAccess: business_operator\nRate: 20/min\nIdempotency: none",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"wallet_id\": 1,\n  \"amount\": 0.000001,\n  \"currency_code\": \"string\",\n  \"reason\": \"string\",\n  \"expiry_minutes\": 1\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Release held funds",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{luxpay_base_url}}/wallets/release",
            "description": "Releases an existing hold by its UUID.\nAccess: business_operator\nRate: 20/min\nIdempotency: none",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"hold_uuid\": \"00000000-0000-4000-8000-000000000001\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        }
      ]
    },
    {
      "name": "Merchant wallets",
      "item": [
        {
          "name": "Create merchant wallet",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{luxpay_base_url}}/merchant-wallets",
            "description": "Creates a primary wallet for a merchant/business.\nAccess: business_operator\nRate: 60/min\nIdempotency: none",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"merchant_id\": 1,\n  \"currency_code\": \"string\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Merchant wallet overview",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              }
            ],
            "url": "{{luxpay_base_url}}/merchant-wallets/{{merchantId}}/overview",
            "description": "Returns merchant wallets and aggregated branch balances.\nAccess: merchant\nRate: 60/min\nIdempotency: none"
          }
        },
        {
          "name": "List merchant transactions",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              }
            ],
            "url": "{{luxpay_base_url}}/merchant-wallets/{{merchantId}}/transactions",
            "description": "Returns merchant transactions with compact pagination metadata.\nAccess: merchant\nRate: 60/min\nIdempotency: none"
          }
        },
        {
          "name": "Request merchant settlement",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{luxpay_base_url}}/merchant-wallets/{{merchantId}}/settlement-request",
            "description": "Creates a manual settlement request for a merchant wallet period.\nAccess: merchant_finance\nRate: 60/min\nIdempotency: body:idempotency_key",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"wallet_id\": 1,\n  \"period_start\": \"2026-07-16\",\n  \"period_end\": \"2026-07-16\",\n  \"idempotency_key\": \"string\",\n  \"notes\": \"string\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Create payment link",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{luxpay_base_url}}/merchant-wallets/{{merchantId}}/payment-link",
            "description": "Creates a payment-link payload for the merchant and amount.\nAccess: merchant\nRate: 60/min\nIdempotency: none",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"amount\": 0.01,\n  \"currency_code\": \"string\",\n  \"description\": \"string\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Create QR payment payload",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{luxpay_base_url}}/merchant-wallets/{{merchantId}}/qr-payment",
            "description": "Returns a serialized LuxPay QR payload for the selected merchant wallet.\nAccess: merchant\nRate: 60/min\nIdempotency: none",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"wallet_id\": 1\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        }
      ]
    },
    {
      "name": "Payment services",
      "item": [
        {
          "name": "List payment services",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              }
            ],
            "url": "{{luxpay_base_url}}/payment-services",
            "description": "Lists enabled payment services, optionally filtered by currency and method.\nAccess: authenticated\nRate: pay_api\nIdempotency: none"
          }
        },
        {
          "name": "Get payment service",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              }
            ],
            "url": "{{luxpay_base_url}}/payment-services/{{provider}}",
            "description": "Returns one registered payment service, including exposure and selection capability.\nAccess: authenticated\nRate: pay_api\nIdempotency: none"
          }
        },
        {
          "name": "Select payment service",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{luxpay_base_url}}/payment-services/{{provider}}/select",
            "description": "Evaluates provider selection and returns the next action for the client.\nAccess: authenticated\nRate: pay_api\nIdempotency: none",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"amount\": 0.01,\n  \"currency\": \"string\",\n  \"payment_method\": \"string\",\n  \"payment_channel\": \"string\",\n  \"customer\": {},\n  \"metadata\": {}\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        }
      ]
    },
    {
      "name": "Payments",
      "item": [
        {
          "name": "Initiate payment",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              },
              {
                "key": "Idempotency-Key",
                "value": "pay_01JABC..."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{luxpay_base_url}}/payments/initiate",
            "description": "Creates a payment through the payment orchestrator. business_id is derived from authentication context and must not be sent.\nAccess: authenticated\nRate: pay_api\nIdempotency: header:Idempotency-Key",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"amount\": 1250.5,\n  \"currency\": \"YER\",\n  \"payment_method\": \"wallet\",\n  \"payment_channel\": \"pos\",\n  \"provider\": \"string\",\n  \"metadata\": {}\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Confirm payment",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              },
              {
                "key": "Idempotency-Key",
                "value": "pay_01JABC..."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{luxpay_base_url}}/payments/{{paymentUuid}}/confirm",
            "description": "Confirms an initiated payment and accepts optional confirmation metadata.\nAccess: authenticated\nRate: pay_api\nIdempotency: header:Idempotency-Key",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"metadata\": {}\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Cancel payment",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              },
              {
                "key": "Idempotency-Key",
                "value": "pay_01JABC..."
              }
            ],
            "url": "{{luxpay_base_url}}/payments/{{paymentUuid}}/cancel",
            "description": "Cancels a payment when its current state permits cancellation.\nAccess: authenticated\nRate: pay_api\nIdempotency: header:Idempotency-Key"
          }
        },
        {
          "name": "Refund payment",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              },
              {
                "key": "Idempotency-Key",
                "value": "pay_01JABC..."
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{luxpay_base_url}}/payments/{{paymentUuid}}/refund",
            "description": "Refunds all or part of a payment. Amount is optional for a full refund.\nAccess: merchant_finance\nRate: pay_api\nIdempotency: header:Idempotency-Key",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"amount\": 0.01,\n  \"reason\": \"string\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Get payment status",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              }
            ],
            "url": "{{luxpay_base_url}}/payments/{{paymentUuid}}/status",
            "description": "Returns the latest orchestrated payment state.\nAccess: authenticated\nRate: pay_api\nIdempotency: none"
          }
        }
      ]
    },
    {
      "name": "Payouts",
      "item": [
        {
          "name": "List payouts",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              }
            ],
            "url": "{{luxpay_base_url}}/payouts",
            "description": "Lists payouts with wallet, status and business filters.\nAccess: business_finance\nRate: 60/min\nIdempotency: none"
          }
        },
        {
          "name": "Create payout request",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{luxpay_base_url}}/payouts",
            "description": "Creates an idempotent payout request from a wallet.\nAccess: business_finance\nRate: 20/min\nIdempotency: body:idempotency_key",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"wallet_id\": 1,\n  \"amount\": 0.000001,\n  \"currency_code\": \"string\",\n  \"idempotency_key\": \"string\",\n  \"payout_method\": \"string\",\n  \"payout_destination\": {},\n  \"description\": \"string\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Get payout",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              }
            ],
            "url": "{{luxpay_base_url}}/payouts/{{payoutId}}",
            "description": "Returns a payout and its attempts.\nAccess: business_finance\nRate: 60/min\nIdempotency: none"
          }
        },
        {
          "name": "Approve payout",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{luxpay_base_url}}/payouts/{{payoutId}}/approve",
            "description": "Approves a payout under authorization and state-transition controls.\nAccess: restricted_approver\nRate: 20/min\nIdempotency: none",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"notes\": \"string\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Reject payout",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{luxpay_base_url}}/payouts/{{payoutId}}/reject",
            "description": "Rejects a payout with a required reason.\nAccess: restricted_approver\nRate: 20/min\nIdempotency: none",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"reason\": \"string\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Execute payout",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              }
            ],
            "url": "{{luxpay_base_url}}/payouts/{{payoutId}}/execute",
            "description": "Executes an approved payout.\nAccess: restricted_operator\nRate: 20/min\nIdempotency: none"
          }
        },
        {
          "name": "Cancel payout",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{luxpay_base_url}}/payouts/{{payoutId}}/cancel",
            "description": "Cancels a payout with a required reason when the transition is allowed.\nAccess: business_finance\nRate: 20/min\nIdempotency: none",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"reason\": \"string\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        }
      ]
    },
    {
      "name": "Settlements",
      "item": [
        {
          "name": "List settlements",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              }
            ],
            "url": "{{luxpay_base_url}}/wallet-settlements",
            "description": "Lists settlements with wallet, status and business filters.\nAccess: business_finance\nRate: 60/min\nIdempotency: none"
          }
        },
        {
          "name": "Create settlement",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{luxpay_base_url}}/wallet-settlements",
            "description": "Creates a settlement for a defined period and wallet.\nAccess: business_finance\nRate: 20/min\nIdempotency: body:idempotency_key",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"wallet_id\": 1,\n  \"period_type\": \"daily\",\n  \"period_start\": \"2026-07-16\",\n  \"period_end\": \"2026-07-16\",\n  \"idempotency_key\": \"string\",\n  \"notes\": \"string\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Get settlement",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              }
            ],
            "url": "{{luxpay_base_url}}/wallet-settlements/{{settlementId}}",
            "description": "Returns a settlement with its items.\nAccess: business_finance\nRate: 60/min\nIdempotency: none"
          }
        },
        {
          "name": "Approve settlement",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{luxpay_base_url}}/wallet-settlements/{{settlementId}}/approve",
            "description": "Approves a pending settlement.\nAccess: restricted_approver\nRate: 20/min\nIdempotency: none",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"notes\": \"string\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Reject settlement",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{luxpay_base_url}}/wallet-settlements/{{settlementId}}/reject",
            "description": "Rejects a settlement with a reason.\nAccess: restricted_approver\nRate: 20/min\nIdempotency: none",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"reason\": \"string\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Execute settlement",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              }
            ],
            "url": "{{luxpay_base_url}}/wallet-settlements/{{settlementId}}/execute",
            "description": "Executes an approved settlement.\nAccess: restricted_operator\nRate: 20/min\nIdempotency: none"
          }
        },
        {
          "name": "Cancel settlement",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{luxpay_base_url}}/wallet-settlements/{{settlementId}}/cancel",
            "description": "Cancels a settlement with a reason when allowed.\nAccess: business_finance\nRate: 20/min\nIdempotency: none",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"reason\": \"string\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        }
      ]
    },
    {
      "name": "Reports",
      "item": [
        {
          "name": "Balance summary",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              }
            ],
            "url": "{{luxpay_base_url}}/reports/summary",
            "description": "Returns balance summary, optionally scoped by business.\nAccess: business_finance\nRate: 60/min\nIdempotency: none"
          }
        },
        {
          "name": "Transaction report",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              }
            ],
            "url": "{{luxpay_base_url}}/reports/transactions",
            "description": "Returns transaction summary for a date range.\nAccess: business_finance\nRate: 60/min\nIdempotency: none"
          }
        },
        {
          "name": "Fee report",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              }
            ],
            "url": "{{luxpay_base_url}}/reports/fees",
            "description": "Returns fee summary for a date range.\nAccess: business_finance\nRate: 60/min\nIdempotency: none"
          }
        },
        {
          "name": "Payout report",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              }
            ],
            "url": "{{luxpay_base_url}}/reports/payouts",
            "description": "Returns payout summary for a date range.\nAccess: business_finance\nRate: 60/min\nIdempotency: none"
          }
        },
        {
          "name": "Settlement report",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{luxpay_token}}"
              }
            ],
            "url": "{{luxpay_base_url}}/reports/settlements",
            "description": "Returns settlement summary for a date range.\nAccess: business_finance\nRate: 60/min\nIdempotency: none"
          }
        }
      ]
    },
    {
      "name": "Provider webhooks",
      "item": [
        {
          "name": "Receive provider webhook",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "X-Signature",
                "value": "{{x_signature}}"
              },
              {
                "key": "X-Timestamp",
                "value": "{{x_timestamp}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": "{{luxpay_base_url}}/webhooks/{{provider}}",
            "description": "Provider-facing inbound webhook. Sign the exact payload with the provisioned provider secret and send timestamp plus stable event identifier.\nAccess: provider_only\nRate: pay_api\nIdempotency: provider event id",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"event_id\": \"evt_01JABC\",\n  \"type\": \"payment.completed\",\n  \"data\": {\n    \"id\": \"provider_tx_123\",\n    \"status\": \"completed\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        }
      ]
    }
  ]
}
