{
  "info": {
    "name": "RushPay Core API v2 - Developer Journey",
    "description": "Sandbox keys start with rp_test_. POST /merchant/payments/create with a sandbox key returns a TEST reference, status pending, and sandbox true. It does not create a live payment, move the ledger, or send a webhook. Widget session, payouts, refunds, and gift-card merchant calls are refused. Start by creating a RushPay account, creating an API application, and waiting for approval. Live keys are backend-only and must be approved before use. Folders are organized by integration journey: checkout, recurring gift-card subscriptions, QR payment requests, invoices/splits, gift cards, payouts, marketplaces, and reference. Embedded checkout widgets must be initialized with apiBase: \"https://core.rushpay.cash\" in RushPayV2.init; embedded gift-card subscription approval must use RushPayV2.initSubscriptionApproval with apiBase and a subscription widget_session_token. RushPay sends signed payment.processing, payment.completed, payment.failed, payment.cancelled, and payment.expired webhooks. Verify X-RushPay-Signature over the exact raw body, then confirm status server-side. Poll only as a fallback while status=pending.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://core.rushpay.cash",
      "type": "string"
    },
    {
      "key": "apiKey",
      "value": "YOUR_APPROVED_API_KEY",
      "type": "string"
    },
    {
      "key": "sandboxKey",
      "value": "rp_test_YOUR_SANDBOX_KEY",
      "type": "string"
    },
    {
      "key": "sandboxPaymentReference",
      "value": "TEST000000000000",
      "type": "string"
    },
    {
      "key": "accessToken",
      "value": "YOUR_DASHBOARD_ACCESS_TOKEN",
      "type": "string"
    },
    {
      "key": "widgetSession",
      "value": "YOUR_WIDGET_SESSION_TOKEN",
      "type": "string"
    },
    {
      "key": "paymentReference",
      "value": "API1710000000000000123456",
      "type": "string"
    },
    {
      "key": "giftcardSubscriptionToken",
      "value": "gcsub_xxxxx",
      "type": "string"
    },
    {
      "key": "qrAccount",
      "value": "1000123456",
      "type": "string"
    },
    {
      "key": "invoicePublicId",
      "value": "inv_xxxxx",
      "type": "string"
    }
  ],
  "item": [
    {
      "name": "0. Sandbox",
      "description": "Sandbox keys start with rp_test_ and are active immediately. Create payment returns a TEST reference and sandbox true. Status stays unpaid. Balance is 0.00 GHS. Transactions are empty. No live payment, ledger movement, or webhook is created. Widget session, payouts, refunds, and gift-card merchant calls return HTTP 400.",
      "item": [
        {
          "name": "Create sandbox key",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Authorization", "value": "Bearer {{accessToken}}" },
              { "key": "Content-Type", "value": "application/json" }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/merchant/applications/sandbox",
              "host": ["{{baseUrl}}"],
              "path": ["api", "v1", "merchant", "applications", "sandbox"]
            },
            "description": "Dashboard Bearer token. Response data.api_key starts with rp_test_. api_secret and webhook_secret are not returned. Save the key as {{sandboxKey}}.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Sandbox test\",\n  \"description\": \"Simulated checkout\",\n  \"webhook_url\": \"https://store.example/webhooks/rushpay\"\n}",
              "options": { "raw": { "language": "json" } }
            }
          }
        },
        {
          "name": "Simulate a payment",
          "request": {
            "method": "POST",
            "header": [
              { "key": "X-API-Key", "value": "{{sandboxKey}}" },
              { "key": "Content-Type", "value": "application/json" }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/merchant/payments/create",
              "host": ["{{baseUrl}}"],
              "path": ["api", "v1", "merchant", "payments", "create"]
            },
            "description": "HTTP 201. payment_reference starts with TEST, status pending, paid false, sandbox true. Message: Sandbox payment simulated. No live payment was created. Minimum amount is 1.00 GHS.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"amount\": \"1.00\",\n  \"description\": \"Sandbox order\"\n}",
              "options": { "raw": { "language": "json" } }
            }
          }
        },
        {
          "name": "Read simulated payment status",
          "request": {
            "method": "GET",
            "header": [
              { "key": "X-API-Key", "value": "{{sandboxKey}}" }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/merchant/payments/status?payment_reference={{sandboxPaymentReference}}",
              "host": ["{{baseUrl}}"],
              "path": ["api", "v1", "merchant", "payments", "status"],
              "query": [
                { "key": "payment_reference", "value": "{{sandboxPaymentReference}}" }
              ]
            },
            "description": "Stays pending, paid false, and sandbox true. A reference that does not start with TEST is not found."
          }
        },
        {
          "name": "Sandbox balance",
          "request": {
            "method": "GET",
            "header": [
              { "key": "X-API-Key", "value": "{{sandboxKey}}" }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/merchant/balance",
              "host": ["{{baseUrl}}"],
              "path": ["api", "v1", "merchant", "balance"]
            },
            "description": "Returns balance 0.00, currency GHS, and sandbox true. This is not the live wallet."
          }
        },
        {
          "name": "Sandbox transactions",
          "request": {
            "method": "GET",
            "header": [
              { "key": "X-API-Key", "value": "{{sandboxKey}}" }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/merchant/transactions",
              "host": ["{{baseUrl}}"],
              "path": ["api", "v1", "merchant", "transactions"]
            },
            "description": "Returns items as an empty list, total 0, and sandbox true."
          }
        }
      ]
    },
    {
      "name": "1. Start here - account and API approval",
      "description": "Create a RushPay account, create an API application, then wait for approval before using live keys.",
      "item": [
        {
          "name": "Create API application for approval",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/merchant/applications",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "merchant",
                "applications"
              ]
            },
            "description": "Requires logged-in RushPay dashboard Bearer token. Keys must be approved before live use.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"My Store\",\n  \"description\": \"Production ecommerce checkout for example.com\",\n  \"webhook_url\": \"https://store.example/webhooks/rushpay\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "List my API applications",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/merchant/applications",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "merchant",
                "applications"
              ]
            },
            "description": ""
          }
        },
        {
          "name": "Revoke API application",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/merchant/applications/revoke",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "merchant",
                "applications",
                "revoke"
              ]
            },
            "description": "",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"public_id\": \"app_xxxxxxxx\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        }
      ]
    },
    {
      "name": "2. Checkout integration - website and ecommerce",
      "item": [
        {
          "name": "Create checkout payment",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "X-API-Key",
                "value": "{{apiKey}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/merchant/payments/create",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "merchant",
                "payments",
                "create"
              ]
            },
            "description": "Create this on your backend and store payment_reference on your order.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"amount\": \"149.99\",\n  \"description\": \"Order #1042\",\n  \"callback_url\": \"https://store.example/order/complete\",\n  \"metadata\": {\n    \"order_id\": \"1042\",\n    \"customer_email\": \"ama@example.com\"\n  }\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Create widget session",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "X-API-Key",
                "value": "{{apiKey}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/merchant/payments/widget-session",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "merchant",
                "payments",
                "widget-session"
              ]
            },
            "description": "Return only widget_session_token to the browser.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"payment_reference\": \"{{paymentReference}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Get widget context",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-RushPay-Widget-Session",
                "value": "{{widgetSession}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/merchant/payments/widget-context",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "merchant",
                "payments",
                "widget-context"
              ]
            },
            "description": ""
          }
        },
        {
          "name": "Initiate mobile money funding",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "X-RushPay-Widget-Session",
                "value": "{{widgetSession}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/merchant/payments/initiate-mobile-money",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "merchant",
                "payments",
                "initiate-mobile-money"
              ]
            },
            "description": "",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"payment_reference\": \"{{paymentReference}}\",\n  \"phone\": \"0540000000\",\n  \"provider\": \"mtn\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Submit mobile money OTP",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "X-RushPay-Widget-Session",
                "value": "{{widgetSession}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/merchant/payments/submit-momo-otp",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "merchant",
                "payments",
                "submit-momo-otp"
              ]
            },
            "description": "",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"reference\": \"DEP_xxxxx\",\n  \"otp\": \"123456\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Poll charge status",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-RushPay-Widget-Session",
                "value": "{{widgetSession}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/merchant/payments/charge-status?reference=DEP_xxxxx",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "merchant",
                "payments",
                "charge-status"
              ],
              "query": [
                {
                  "key": "reference",
                  "value": "DEP_xxxxx"
                }
              ]
            },
            "description": ""
          }
        },
        {
          "name": "Get payment status",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-API-Key",
                "value": "{{apiKey}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/merchant/payments/status?payment_reference={{paymentReference}}",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "merchant",
                "payments",
                "status"
              ],
              "query": [
                {
                  "key": "payment_reference",
                  "value": "{{paymentReference}}"
                }
              ]
            },
            "description": "Payment lifecycle: status=pending is non-terminal. Use display_status=awaiting_payment when no funding attempt has started and display_status=processing while provider confirmation is pending. completed is terminal success; fulfil only when status=completed and paid=true. failed, cancelled, and expired are terminal—stop polling and create a new checkout if the customer should retry.",
            "body": {
              "mode": "raw",
              "raw": "\"Always confirm status server-side before fulfilling an order.\"",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Merchant transaction history",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-API-Key",
                "value": "{{apiKey}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/merchant/transactions",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "merchant",
                "transactions"
              ]
            },
            "description": ""
          }
        },
        {
          "name": "Merchant balance",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-API-Key",
                "value": "{{apiKey}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/merchant/balance",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "merchant",
                "balance"
              ]
            },
            "description": ""
          }
        }
      ]
    },
    {
      "name": "3. Recurring subscriptions - gift-card auto debit",
      "item": [
        {
          "name": "Create subscription approval request",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "X-API-Key",
                "value": "{{apiKey}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/merchant/giftcards/subscriptions/create",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "merchant",
                "giftcards",
                "subscriptions",
                "create"
              ]
            },
            "description": "Merchant backend creates the approval request. Then call the widget-session endpoint and render RushPayV2.initSubscriptionApproval for same-site approval, or send approval_url as a hosted fallback. Include callback_url to receive giftcard_subscription.approved with authorization_token.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"subscription_name\": \"Monthly SaaS plan\",\n  \"amount\": \"19.99\",\n  \"max_amount\": \"25.00\",\n  \"billing_cycle\": \"monthly\",\n  \"customer_reference\": \"cus_1001\",\n  \"callback_url\": \"https://store.example/webhooks/rushpay-subscriptions\",\n  \"return_url\": \"https://store.example/account/billing?sub=cus_1001\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Create subscription widget session",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "X-API-Key",
                "value": "{{apiKey}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/merchant/giftcards/subscriptions/widget-session",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "merchant",
                "giftcards",
                "subscriptions",
                "widget-session"
              ]
            },
            "description": "Merchant backend exchanges a pending request_id for a short-lived browser widget session. Return only widget_session_token to frontend code; keep X-API-Key and the future authorization_token server-side.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"request_id\": \"gcsr_xxxxx\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Inspect subscription approval request",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/giftcards/subscriptions/request?request=gcsr_xxxxx",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "giftcards",
                "subscriptions",
                "request"
              ],
              "query": [
                {
                  "key": "request",
                  "value": "gcsr_xxxxx"
                }
              ]
            },
            "description": "Public request lookup used by the RushPay approval page."
          }
        },
        {
          "name": "Widget context - subscription approval",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "X-RushPay-Widget-Session",
                "value": "{{subscriptionWidgetSessionToken}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/giftcards/subscriptions/widget-context",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "giftcards",
                "subscriptions",
                "widget-context"
              ]
            },
            "description": "Browser widget reads the pending subscription details using X-RushPay-Widget-Session. Use this token with RushPayV2.initSubscriptionApproval({ apiBase: \"https://core.rushpay.cash\", widgetSessionToken })."
          }
        },
        {
          "name": "Widget approve subscription mandate",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "X-RushPay-Widget-Session",
                "value": "{{subscriptionWidgetSessionToken}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/giftcards/subscriptions/widget-approve",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "giftcards",
                "subscriptions",
                "widget-approve"
              ]
            },
            "description": "Card holder approves inside the embedded widget with the gift card RRC only. Browser response excludes authorization_token; RushPay sends giftcard_subscription.approved with authorization_token once to callback_url/app webhook.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"giftcard_code\": \"RRC-XXXX-XXXX-XXXX\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Customer approves subscription mandate",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/giftcards/subscriptions/approve",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "giftcards",
                "subscriptions",
                "approve"
              ]
            },
            "description": "Card holder approves with the gift card RRC only. RushPay sends giftcard_subscription.approved to callback_url/app webhook with authorization_token shown once. Browser return_url contains safe status fields only.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"request_id\": \"gcsr_xxxxx\",\n  \"giftcard_code\": \"RRC-XXXX-XXXX-XXXX\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Debit approved subscription token",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "X-API-Key",
                "value": "{{apiKey}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/merchant/giftcards/subscriptions/debit",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "merchant",
                "giftcards",
                "subscriptions",
                "debit"
              ]
            },
            "description": "Merchant backend debits a stored mandate token. Reuse the same external_reference on retries to prevent double debit.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"authorization_token\": \"gcsub_xxxxx\",\n  \"amount\": \"19.99\",\n  \"external_reference\": \"invoice_1001_2026_07\",\n  \"description\": \"July subscription\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Legacy direct authorization (deprecated)",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/giftcards/subscriptions/authorize",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "giftcards",
                "subscriptions",
                "authorize"
              ]
            },
            "description": "Deprecated. Prefer the create approval request flow so the merchant never handles the customer RRC.",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"giftcard_code\": \"RRC-XXXX-XXXX-XXXX\",\n  \"application_public_id\": \"app_xxxxx\",\n  \"max_amount\": \"25.00\",\n  \"label\": \"Monthly SaaS plan\",\n  \"pin\": \"1234\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        }
      ],
      "description": "SaaS recurring auto-debit uses gift-card mandates. Merchant creates an approval request, customer approves on RushPay, merchant stores only the returned authorization token, and future debits are idempotent by external_reference."
    },
    {
      "name": "4. QR payment requests - request money",
      "item": [
        {
          "name": "Get my QR profile",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/qr-pay/me",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "qr-pay",
                "me"
              ]
            },
            "description": ""
          }
        },
        {
          "name": "Resolve QR recipient",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/qr-pay/resolve?account={{qrAccount}}",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "qr-pay",
                "resolve"
              ],
              "query": [
                {
                  "key": "account",
                  "value": "{{qrAccount}}"
                }
              ]
            },
            "description": ""
          }
        },
        {
          "name": "Quote QR request",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/v1/qr-pay/quote?account={{qrAccount}}&amount=25.00",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "qr-pay",
                "quote"
              ],
              "query": [
                {
                  "key": "account",
                  "value": "{{qrAccount}}"
                },
                {
                  "key": "amount",
                  "value": "25.00"
                }
              ]
            },
            "description": ""
          }
        },
        {
          "name": "Pay QR request from wallet",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/qr-pay/pay",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "qr-pay",
                "pay"
              ]
            },
            "description": "",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"account\": \"{{qrAccount}}\",\n  \"amount\": \"25.00\",\n  \"pin\": \"1234\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Start QR mobile money payment",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/qr-pay/initiate-mobile-money",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "qr-pay",
                "initiate-mobile-money"
              ]
            },
            "description": "",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"account\": \"{{qrAccount}}\",\n  \"amount\": \"25.00\",\n  \"phone\": \"0540000000\",\n  \"provider\": \"mtn\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        }
      ]
    },
    {
      "name": "5. Invoices and split payments",
      "item": [
        {
          "name": "Create invoice group",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/invoice-groups",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "invoice-groups"
              ]
            },
            "description": "",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"July dues\",\n  \"description\": \"Shared group invoice\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Add invoice group member",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/invoice-groups/igr_xxxxx/members",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "invoice-groups",
                "igr_xxxxx",
                "members"
              ]
            },
            "description": "",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"Ama Mensah\",\n  \"email\": \"ama@example.com\",\n  \"amount\": \"50.00\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Create invoice with split rules",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/invoices",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "invoices"
              ]
            },
            "description": "",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"customer_email\": \"buyer@example.com\",\n  \"amount\": \"300.00\",\n  \"description\": \"Shared project invoice\",\n  \"group_public_id\": \"igr_xxxxx\",\n  \"split_rules\": [\n    {\n      \"recipient_account\": \"1000123456\",\n      \"split_type\": \"percent\",\n      \"percent\": \"25\"\n    },\n    {\n      \"recipient_account\": \"1000999999\",\n      \"split_type\": \"fixed\",\n      \"amount\": \"30.00\"\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Send invoice link",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/invoices/{{invoicePublicId}}/send",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "invoices",
                "{{invoicePublicId}}",
                "send"
              ]
            },
            "description": "",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"message\": \"Please pay your invoice\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Pay public invoice link",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/public/invoices/pay",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "public",
                "invoices",
                "pay"
              ]
            },
            "description": "",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"token\": \"invoice_token\",\n  \"amount\": \"50.00\",\n  \"payment_method\": \"wallet\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        }
      ]
    },
    {
      "name": "6. Gift cards",
      "item": [
        {
          "name": "List gift cards",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/giftcards",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "giftcards"
              ]
            },
            "description": ""
          }
        },
        {
          "name": "Create gift card",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/giftcards/create",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "giftcards",
                "create"
              ]
            },
            "description": "",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"amount\": \"50.00\",\n  \"pin\": \"1234\",\n  \"nonce\": \"nonce_value\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Verify gift card",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/giftcards/verify",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "giftcards",
                "verify"
              ]
            },
            "description": "",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"code\": \"RRC-XXXX-XXXX-XXXX\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Redeem gift card to wallet",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/giftcards/redeem/session",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "giftcards",
                "redeem",
                "session"
              ]
            },
            "description": "",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"code\": \"RRC-XXXX-XXXX-XXXX\",\n  \"amount\": \"25.00\",\n  \"nonce\": \"nonce_value\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        }
      ]
    },
    {
      "name": "7. Payouts and withdrawals",
      "item": [
        {
          "name": "List payout accounts",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/payout-accounts",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "payout-accounts"
              ]
            },
            "description": ""
          }
        },
        {
          "name": "Verify bank account",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/withdrawals/verify-account",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "withdrawals",
                "verify-account"
              ]
            },
            "description": "",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"account_number\": \"0123456789\",\n  \"bank_code\": \"058\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Verify mobile money account",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/withdrawals/verify-mobile",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "withdrawals",
                "verify-mobile"
              ]
            },
            "description": "",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"phone\": \"0244123456\",\n  \"provider\": \"mtn\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Quote withdrawal fee",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/withdrawals/quote?channel=mobile_money&amount=100.00",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "withdrawals",
                "quote"
              ],
              "query": [
                {
                  "key": "channel",
                  "value": "mobile_money"
                },
                {
                  "key": "amount",
                  "value": "100.00"
                }
              ]
            },
            "description": ""
          }
        },
        {
          "name": "Initiate withdrawal",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Authorization",
                "value": "Bearer {{accessToken}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/withdrawals/initiate",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "withdrawals",
                "initiate"
              ]
            },
            "description": "",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"amount\": \"100.00\",\n  \"channel\": \"mobile_money\",\n  \"phone\": \"0244123456\",\n  \"provider\": \"mtn\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        }
      ]
    },
    {
      "name": "8. Marketplace flows",
      "item": [
        {
          "name": "Validate gift card for marketplace listing",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "X-API-Key",
                "value": "{{apiKey}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/giftcards/validate-for-listing",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "giftcards",
                "validate-for-listing"
              ]
            },
            "description": "",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"code\": \"RRC-XXXX-XXXX-XXXX\",\n  \"min_balance_ghs\": 12.5\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Confirm external gift-card sale",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "X-API-Key",
                "value": "{{apiKey}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/giftcards/confirm-external-sale",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "giftcards",
                "confirm-external-sale"
              ]
            },
            "description": "",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"code\": \"RRC-XXXX-XXXX-XXXX\",\n  \"marketplace_order_ref\": \"GM-ORDER-1042\",\n  \"marketplace\": \"partner_marketplace\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Check RushPay recipient",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "X-API-Key",
                "value": "{{apiKey}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/payments/check-recipient",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "payments",
                "check-recipient"
              ]
            },
            "description": "",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"email\": \"seller@example.com\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        },
        {
          "name": "Send merchant wallet payout",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "X-API-Key",
                "value": "{{apiKey}}"
              },
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/v1/payments/send",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "v1",
                "payments",
                "send"
              ]
            },
            "description": "",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"amount\": 50.0,\n  \"description\": \"Marketplace seller payout\",\n  \"recipient_account\": \"1000123456\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        }
      ]
    }
  ]
}
