{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Collect LRS remittances from India","llmstxt":{"title":"Glomopay developer documentation","description":"Cross-border payments APIs, organised by product. Each product section carries both the explanation of its objects and the job-shaped integration guides that set them up.","details":{"content":"How to use these docs:\n\n- Get started is the front door. It carries a routing table from\n  \"what are you building\" to the page that builds it, plus how to get\n  API keys.\n- The product sections - Payin, Payout, Multi-currency accounts,\n  Verification, Request for Information (RFI) - each hold two kinds of page.\n  Pages titled as a noun (\"Subscriptions\", \"Bank Transfer\") explain what\n  an object is. Pages titled as a job (\"Set up recurring subscriptions\",\n  \"Collect LRS remittances from India\") are complete integration flows\n  and live one level under the object they set up. Match a user's goal\n  against the job-shaped titles first.\n- Reports and Identity and Access Management are the two subjects with no\n  API counterpart. There are no endpoints for reports, users, roles or\n  invites; both pages document the merchant dashboard. A dashboard\n  procedure for something the API also does (a refund, a payout) is NOT\n  here - it stays in the product that owns it.\n- API reference is generated from OpenAPI and carries endpoint detail.\n- The OpenAPI description itself is published as a single self-contained\n  document at /openapi.yaml, and the same document as JSON at\n  /openapi.json. Every $ref is resolved into it, so one fetch is the\n  whole contract: 61 paths, 81 operations, 68 schemas - the same\n  endpoints the API reference pages render. Fetch that instead of\n  reading the 129 pages under /api-reference/.\n- Developer resources covers what every integration touches and no single\n  product owns: auth, errors, pagination, rate limits, webhooks,\n  versioning, supported countries, quotes, and the client SDKs.\n"},"sections":[{"title":"Get started","description":"The front door. The routing table from a merchant's goal to the flow that delivers it, how to obtain API keys, and the platform glossary.","includeFiles":["**/get-started/**"]},{"title":"Payin","description":"Collecting money: customers, orders, checkout, payment links, payment methods (cards, bank transfer, pay via bank), refunds, disputes, purpose codes, fee models, custom fields, subscriptions, and resident India remittance under LRS. Includes the flows that set each up - bank transfers, subscriptions, LRS remittances, and server-to-server card payments.","includeFiles":["**/payin/**"]},{"title":"Payout","description":"Sending money: the payout life cycle, queued payouts, creating and cancelling a payout, rails, beneficiaries, purpose codes, and the action required state.","includeFiles":["**/payout/**"]},{"title":"Multi-currency accounts","description":"Holding money: balances, balance conversion, adding balance, withdrawing balance, and the settlement holiday calendar - the Indian and US bank and FX holidays on which settlement to the merchant's bank account, and money movement generally, is affected.","includeFiles":["**/multi-currency-account/**"]},{"title":"Verification","description":"Proving who someone is and that an account is theirs: KYC, bank account validation, and third-party verification (TPV) with the flow that verifies a payer's bank account.","includeFiles":["**/verification/**"]},{"title":"Request for Information (RFI)","description":"Responding to a compliance request for information, per object - payment link, order, payment, payout - plus compliance reviews and RFIs raised on already-successful payments.","includeFiles":["**/request-for-information/**"]},{"title":"Reports","description":"The downloadable and scheduled reports a merchant pulls from the dashboard for reconciliation, compliance and treasury: payment, subscription, settlement breakup, balance statement and KYC reports, plus scheduling one for recurring email delivery. Dashboard only - there is no reports API.","includeFiles":["**/reports/**"]},{"title":"Identity and Access Management","description":"Administering who can use a merchant account: one set of credentials across multiple MIDs, switching between them without logging out, the Admin / Member / Sales Partner roles and what each may see and do, and inviting a new member. Dashboard only - there is no users, roles or invites API.","includeFiles":["**/access-management/**"]},{"title":"API reference","description":"Endpoint reference generated from the Glomopay OpenAPI description.","includeFiles":["**/api-reference/**"]},{"title":"Developer resources","description":"What every integration touches and no single product owns: auth, errors, pagination, rate limits, webhooks, versioning, API validations, security, supported countries, quotes, and the client SDKs - React Native, Flutter, Android and the Unified Web SDK, with per-version references and changelogs. Reports and Identity and Access Management used to be listed here and are now their own sections.","includeFiles":["**/platform/**"]}]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"collect-lrs-remittances-from-india","__idx":0},"children":["Collect LRS remittances from India"]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This guide uses the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/platform/sdk/unified-sdk"},"children":["GlomoPay Unified SDK"]}]}," — the Order Checkout journey auto-detects the LRS flow. Make sure the order is created as an LRS order: ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["an order lacking a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["checkout_type"]}," defaults to the standard checkout."]}," See the Unified SDK reference for the full set of journeys and options. To open checkout inside a native mobile app, see ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/platform/sdk/web-checkout-in-mobile-app"},"children":["Web Checkout in a Mobile App (WebView)"]}]},". If you integrated earlier with the older ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["lrs-checkout-sdk"]},", it continues to work — switch the import to the Unified SDK when convenient."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The sequence diagram below represents the interactions between the investor, broker, Glomo API and Glomo Web SDK."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"/assets/workflow-for-merchants.45a6071f510c11fc042d916b19829cfed467da8d9b46698824748b87e33af781.ac746e58.png","alt":"Workflow for merchants "},"children":[]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"integration-steps","__idx":1},"children":["Integration steps"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Below are the steps to integrate the Glomo APIs and Web SDK to enable remittance of funds from investors"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"fetch-supported-banks-optional","__idx":2},"children":["Fetch supported banks (optional)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Fetch the list of banks supported on the remittance flow using this API."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"api-endpoint","__idx":3},"children":["API Endpoint"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"curl","header":{"controls":{"copy":{}}},"source":"GET https://api.glomopay.com/api/v1/lrs/banks\n","lang":"curl"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"request","__idx":4},"children":["Request"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"curl","header":{"controls":{"copy":{}}},"source":"curl -i -X GET \\\n  https://api.glomopay.com/api/v1/lrs/banks \\\n  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \\\n  -H 'Content-Type: application/json'\n","lang":"curl"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"response","__idx":5},"children":["Response"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"curl","header":{"controls":{"copy":{}}},"source":"[\n    { bank_name: 'HDFC bank', bank_code: 'hdfc' },\n    { bank_name: 'Axis bank', bank_code: 'axis' },\n    { bank_name: 'ICICI Bank', bank_code: 'icici' }\n]\n","lang":"curl"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"create-a-customer","__idx":6},"children":["Create a customer"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Create a customer entity in Glomo’s system by adding the customer details such as contact details, name and address."]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Note:"]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Call this API when the investor adds funds for the first time. Store the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["customer_id"]}," received in the response and reuse it for the investor’s return journey."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["By default, customer uniqueness is enforced on ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["email"]},". On request, this can instead be enforced on ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["PAN"]}," (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["kyc.pan_number"]},") in place of email, so investors are de-duplicated by PAN even if they use different emails. This is off by default — to enable PAN-based uniqueness for your account, reach out to ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"mailto:support@glomopay.com"},"children":["support@glomopay.com"]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"api-endpoint-1","__idx":7},"children":["API Endpoint"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"curl","header":{"controls":{"copy":{}}},"source":"POST https://api.glomopay.com/api/v1/customer\n","lang":"curl"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"request-1","__idx":8},"children":["Request"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"curl","header":{"controls":{"copy":{}}},"source":"curl -i -X POST \\\n  https://api.glomopay.com/api/v1/customer \\\n  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"name\": \"Prakhar\",\n    \"customer_type\": \"individual\",\n    \"email\": \"customer51@glomopay.com\",\n    \"phone\": \"7047500604\",\n    \"dob\": \"1990-01-01\",\n    \"address\": \"123 Main St\",\n    \"city\": \"Anytown\",\n    \"state\": \"Anystate\",\n    \"country\": \"Ind\",\n    \"pincode\": \"560048\",\n    \"kyc\": {\n        \"pan_number\": \"IXQPK8942E\"\n    }\n  }'\n","lang":"curl"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"response-1","__idx":9},"children":["Response"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"curl","header":{"controls":{"copy":{}}},"source":"{\n    \"id\": \"cust_68468bfcxaGo2\",\n    \"name\": \"Prakhar\",\n    \"customer_type\": \"individual\",\n    \"email\": \"customer51@glomopay.com\",\n    \"phone\": \"7047500604\",\n    \"address\": \"123 Main St\",\n    \"city\": \"Anytown\",\n    \"state\": \"Anystate\",\n    \"country\": \"IND\",\n    \"pincode\": \"560048\",\n    \"status\": \"active\",\n    \"created_at\": \"2025-06-09T07:23:40.598Z\",\n    \"updated_at\": \"2025-06-09T07:23:40.598Z\",\n    \"kyc\": {\n        \"pan_number\": \"IXQPK8942E\"\n    }\n}\n","lang":"curl"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"create-a-bank-account","__idx":10},"children":["Create a bank account"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Create a bank account entity in Glomo’s system by adding the bank account information of the remitter."]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Note:"]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Call this API when the investor adds funds for the first time. Store the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["acclrs_id"]}," received in the response and reuse it for the investor’s return journey."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]}," returned in the API response should be passed as a value of ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["bank_account_id"]}," in the Create an Order API request."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["bank_customer_id"]},": Required only for HDFC. If not provided, the checkout will prompt the customer to enter this value during the payment flow."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"api-endpoint-2","__idx":11},"children":["API Endpoint"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"curl","header":{"controls":{"copy":{}}},"source":"POST https://api.glomopay.com/api/v1/customer/{customer_id}/bank_account\n","lang":"curl"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"request-2","__idx":12},"children":["Request"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"curl","header":{"controls":{"copy":{}}},"source":"curl -i -X POST \\\n  https://api.glomopay.com/api/v1/customer/cust_6a32c060alkNC/bank_account \\\n  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"bank_code\": \"hdfc\",\n    \"account_number\": \"50100114810291\",\n    \"bank_customer_id\": \"901008282\"\n  }'\n","lang":"curl"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"response-2","__idx":13},"children":["Response"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"curl","header":{"controls":{"copy":{}}},"source":"{\n    \"id\": \"acclrs_68468c03g9xt7\",\n    \"bank_code\": \"hdfc\",\n    \"account_number\": \"50100114810291\",\n    \"bank_customer_id\": \"901008282\"\n}\n","lang":"curl"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"update-bank-customer-id","__idx":14},"children":["Update Bank Customer ID"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Use Case:"]}," In case the customer has provided an incorrect Bank Customer ID in the Create a Bank Account API, call this API endpoint to update the Bank Customer ID in Glomo."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"api-endpoint-3","__idx":15},"children":["API Endpoint"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"curl","header":{"controls":{"copy":{}}},"source":"PATCH https://api.glomopay.com/api/v1/customer/{customer_id}/bank_account/{bank_account_id}\n","lang":"curl"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"request-3","__idx":16},"children":["Request"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"curl","header":{"controls":{"copy":{}}},"source":"curl --location --request PATCH 'https://api.glomopay.com/api/v1/customer/cust_6a32c060alkNC/bank_account/acclrs_6a32c072d5DSO' \\\n  --header 'Content-Type: application/json' \\\n  --header 'Authorization: Bearer <YOUR_JWT_HERE>' \\\n  --data '{\n    \"bank_customer_id\": \"900500695\"\n  }'\n","lang":"curl"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"response-3","__idx":17},"children":["Response"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"curl","header":{"controls":{"copy":{}}},"source":"{\n    \"id\": \"acclrs_69f88762wZUNB\",\n    \"bank_code\": \"hdfc\",\n    \"account_number\": \"50100114810292\",\n    \"bank_customer_id\": \"9010082857\"\n}\n","lang":"curl"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"create-a-beneficiary-optional","__idx":18},"children":["Create a Beneficiary (optional)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Create a Beneficiary entity in Glomo by providing the receiver’s bank account details. This entity is required when beneficiaries are dynamic (i.e., a different beneficiary per end-user of the broker/fund, or per transaction) and should be created via API."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If there is one fixed beneficiary shared across all users, you do not need to create a Beneficiary per user in Glomo. In this scenario, the beneficiary can be configured once in the Glomo’s backend system and reused for all transactions."]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Note:"]}," For LRS beneficiaries, the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["intermediate_bank.swift_code"]}," field is ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["required"]},". This is the SWIFT/BIC code of the correspondent/intermediary bank used to route the remittance."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"api-endpoint-4","__idx":19},"children":["API Endpoint"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"curl","header":{"controls":{"copy":{}}},"source":"POST https://api.glomopay.com/api/v2/beneficiaries\n","lang":"curl"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"request-4","__idx":20},"children":["Request"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"curl","header":{"controls":{"copy":{}}},"source":"curl -i -X POST \\\n  https://api.glomopay.com/api/v2/beneficiaries \\\n  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"category\": \"lrs\",\n    \"beneficiary\": {\n      \"name\": \"ACME Corporation\",\n      \"type\": \"business\",\n      \"email\": \"finance@acme.com\",\n      \"phone\": \"+1-555-123-4567\",\n      \"nickname\": \"ACME Primary Account\",\n      \"address\": {\n        \"address_line1\": \"123 Business Park\",\n        \"address_line2\": \"Suite 100\",\n        \"city\": \"New York\",\n        \"state\": \"NY\",\n        \"country_code\": \"USA\",\n        \"postal_code\": \"10001\"\n      }\n    },\n    \"bank_account\": {\n      \"account_number\": \"1234567890\",\n      \"name\": \"Citibank NA\",\n      \"swift_code\": \"CITIUS33\",\n      \"local_routing_number\": \"021000089\",\n      \"currency\": \"USD\",\n      \"address\": {\n        \"address_line1\": \"388 Greenwich Street\",\n        \"city\": \"New York\",\n        \"state\": \"NY\",\n        \"country_code\": \"USA\",\n        \"postal_code\": \"10013\"\n      },\n      \"intermediate_bank\": {\n        \"name\": \"JPMorgan Chase Bank\",\n        \"country\": \"USA\",\n        \"swift_code\": \"CHASUS33\",\n        \"account_number\": \"123456789\"\n      }\n    }\n  }'\n","lang":"curl"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"response-4","__idx":21},"children":["Response"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"curl","header":{"controls":{"copy":{}}},"source":"{\n  \"id\": \"ben_5JU9yv0lGSUP\",\n  \"name\": \"ACME Corporation\",\n  \"type\": \"business\",\n  \"category\": \"lrs\",\n  \"email\": \"finance@acme.com\",\n  \"phone\": \"+1-555-123-4567\",\n  \"nickname\": \"ACME Primary Account\",\n  \"created_at\": \"2025-01-15T10:00:00Z\",\n  \"updated_at\": \"2025-01-15T10:00:00Z\",\n  \"address\": {\n    \"address_line1\": \"123 Business Park\",\n    \"address_line2\": \"Suite 100\",\n    \"city\": \"New York\",\n    \"state\": \"NY\",\n    \"country_code\": \"USA\",\n    \"postal_code\": \"10001\"\n  },\n  \"bank_account\": {\n    \"account_number\": \"1234567890\",\n    \"name\": \"Citibank NA\",\n    \"swift_code\": \"CITIUS33\",\n    \"local_routing_number\": \"021000089\",\n    \"currency\": \"USD\",\n    \"address\": {\n      \"address_line1\": \"388 Greenwich Street\",\n      \"city\": \"New York\",\n      \"state\": \"NY\",\n      \"country_code\": \"USA\",\n      \"postal_code\": \"10013\"\n    },\n    \"intermediate_bank\": {\n      \"name\": \"JPMorgan Chase Bank\",\n      \"country\": \"USA\",\n      \"swift_code\": \"CHASUS33\",\n      \"account_number\": \"123456789\"\n    }\n  }\n}\n","lang":"curl"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"create-a-quote","__idx":22},"children":["Create a quote"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Create a quote from the server by passing the amount to be remitted and the bank of the customer. Using this API you can display FX rate, tax and net USD to your user before proceeding. Please note that all currency fields are represented in minor units (e.g., cents, paisa, or equivalent subunits)."]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Note:"]}," The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["quote_id"]}," generated from this API is valid for 30 minutes from the time of creation. The displayed exchange rate is indicative. Actual exchange rate and final INR debit (incl. GST & TCS) are set by the banking partner."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"api-endpoint-5","__idx":23},"children":["API Endpoint"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"curl","header":{"controls":{"copy":{}}},"source":"POST https://api.glomopay.com/api/v1/lrs/quotes\n","lang":"curl"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"request-5","__idx":24},"children":["Request"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"curl","header":{"controls":{"copy":{}}},"source":"curl -i -X POST \\\n  https://api.glomopay.com/api/v1/lrs/quotes \\\n  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"bank_code\": \"hdfc\",\n    \"source_amount\": 100000,\n    \"source_currency\": \"INR\",\n    \"target_currency\": \"USD\"\n  }'\n","lang":"curl"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"response-5","__idx":25},"children":["Response"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"curl","header":{"controls":{"copy":{}}},"source":"{\n    \"id\": \"quote_7575757\",\n    \"from\": {\n        \"amount\": 100000,\n        \"currency\": \"INR\"\n    },\n    \"to\": {\n        \"amount\": 1028,\n        \"currency\": \"USD\"\n    },\n    \"fx_rate\": \"0.011424\",\n    \"bank_code\": \"hdfc\",\n    \"total_tax\": \"10.0\",\n    \"expires_at\": \"2025-06-10T09:32:04.107Z\",\n    \"created_at\": \"2025-06-09T09:32:04.113Z\"\n}\n","lang":"curl"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"create-an-order-on-the-server","__idx":26},"children":["Create an order on the server"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Initiate the payment process by creating an order from your server using your secret API keys and the previously created quote ID."]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]}," returned in the API response should be passed to the web sdk. This ensures the payment is securely linked to the correct order and prevents tampering."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The Order API accepts amounts in USD, with the value expressed in cents."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["remittance_information"]}," is a reference string that helps identify the purpose of the remittance. It cannot be empty, must contain only alphanumeric characters and hyphens (a–z, A–Z, 0–9, -), with no spaces or special characters, and must not exceed 20 characters in length."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["request_id"]}," is an optional idempotency key. Creating an order with a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["request_id"]}," that was already used returns a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["400"]}," error (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Order already exists for this request_id"]},")."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"api-endpoint-6","__idx":27},"children":["API Endpoint"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"curl","header":{"controls":{"copy":{}}},"source":"POST https://api.glomopay.com/api/v1/orders\n","lang":"curl"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"request-6","__idx":28},"children":["Request"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"curl","header":{"controls":{"copy":{}}},"source":"curl -i -X POST \\\n  https://api.glomopay.com/api/v1/orders \\\n  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"customer_id\": \"cust_68468bfcxaGo2\",\n    \"currency\": \"USD\",\n    \"amount\": 100000,\n    \"invoice_number\": \"RG12FF590\",\n    \"request_id\": \"unique_order_request_id_123\",\n    \"notes\": {\n      \"key1\": \"some note\"\n    },\n    \"lrs\": {\n        \"lrs_quote_id\": \"quote_69e0b88cAXRMu\",\n        \"remittance_information\": \"REF12345\",\n        \"bank_account_id\": \"acclrs_68468c03g9xt7\",\n        \"beneficiary_id\": \"benef_68468c03g9xua\"\n    }\n  }'\n","lang":"curl"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"response-6","__idx":29},"children":["Response"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"curl","header":{"controls":{"copy":{}}},"source":"{\n    \"id\": \"order_68468c15mnYzq\",\n    \"customer_id\": \"cust_68468bfcxaGo2\",\n    \"document_id\": null,\n    \"status\": \"active\",\n    \"currency\": \"USD\",\n    \"amount\": 100000,\n    \"remaining_amount\": 100000,\n    \"already_paid_amount\": 0,\n    \"purpose_code\": null,\n    \"invoice_amount\": null,\n    \"invoice_description\": null,\n    \"invoice_number\": null,\n    \"notes\": {\n        \"key1\": \"some note\"\n    },\n    \"expires_at\": \"2025-09-09T07:24:05.074Z\",\n    \"created_at\": \"2025-06-09T07:24:05Z\",\n    \"updated_at\": \"2025-06-09T07:24:08Z\",\n    \"lrs\": {\n        \"lrs_quote_id\": \"quote_69e0b88cAXRMu\",\n        \"remittance_information\": \"REF12345\",\n        \"bank_account_id\": \"acclrs_68468c03g9xt7\",\n        \"beneficiary_id\": \"benef_68468c03g9xua\"\n    }\n}\n","lang":"curl"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"add-the-payment-button-on-your-website-or-app","__idx":30},"children":["Add the payment button on your website or app"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Integrate an “Add Funds” button into your client-side interface."]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Add the provided code snippet to your website or app to launch Glomo’s sdk."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["When the user clicks the button, the checkout form will open, using the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["order_id"]}," created using above API."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Handle payment initiation success and failure events using the provided handler functions."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["On payment completion, you’ll receive either a payment object (on successful authorisation by the user) or an error object (on failure)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Send this information back to your server for order fulfillment or to trigger a retry if the payment failed."]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"html","header":{"controls":{"copy":{}}},"source":"<!DOCTYPE html>\n<html>\n<head>\n    <title>GlomoPay Checkout Integration</title>\n</head>\n<body>\n    <button id=\"pay-button\">Pay with GlomoPay</button>\n\n    <script type=\"module\">\n        import { GlomoCheckoutApi } from 'https://unified-sdk.glomopay.com/index.js';\n\n        document.getElementById('pay-button').addEventListener('click', async () => {\n            try {\n                // Initialize the checkout\n                const checkout = new GlomoCheckoutApi({\n                    publicKey: 'your-public-key-here',\n                    orderId: 'unique-order-id-123', // an LRS order — the Unified SDK auto-detects the LRS flow\n                });\n\n                // Handle payment success\n                checkout.on('payment.success', (data) => {\n                    console.log('Payment successful:', data);\n                    // Handle successful payment\n                    window.location.href = '/payment-success';\n                });\n\n                // Handle payment failure\n                checkout.on('payment.failure', (data) => {\n                    console.log('Payment failed:', data);\n                    // Handle failed payment\n                    alert('Payment failed. Please try again.');\n                });\n\n                // Handle checkout close\n                checkout.on('checkout.closed', () => {\n                    console.log('Checkout closed by user');\n                    // Handle checkout modal close\n                });\n\n                // Open the checkout modal\n                await checkout.open();\n\n            } catch (error) {\n                console.error('Checkout error:', error);\n                alert('Unable to open checkout. Please try again.');\n            }\n        });\n    </script>\n</body>\n</html>\n","lang":"html"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"verify-the-sdk-response-and-signature-on-the-server","__idx":31},"children":["Verify the SDK response and signature on the server"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The process to verify the signature can be found ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/payin/checkout"},"children":["here"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"verify-payment-status","__idx":32},"children":["Verify payment status"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Payment status can be tracked via the following ways"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Dashboard Monitoring: View real-time updates for all payments in the Glomo merchant dashboard."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Payment API Polling: Programmatically check payment status using Glomo’s Payment APIs."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Webhook Notification: Get instant notifications on payment status changes directly to your server."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"sandbox-payment-status-handling","__idx":33},"children":["Sandbox payment status handling"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If a payment journey has been completed from the checkout, the payment will appear as “In Progress” on the dashboard in the Sandbox environment."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"how-to-mark-a-payment-as-successful-in-sandbox","__idx":34},"children":["How to Mark a Payment as Successful in Sandbox"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To complete the payment journey and mark the payment as ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Success"]},":"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Log in to the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Dashboard"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Open the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Payment Details"]}," page for the relevant payment"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Click on ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Update Status"]}," on the right side of the screen"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Select “",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Success"]},"” and click on ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Confirm"]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This action simulates the final success state of the payment."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"why-this-exists-in-sandbox","__idx":35},"children":["Why This Exists in Sandbox"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["In production, payment success is updated automatically once Glomopay receives confirmation from the bank."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["In the sandbox environment, there is no real bank confirmation."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["To allow merchants to test and mimic the complete payment lifecycle, Glomopay provides a manual status update option."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For answers to common integration questions, see the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/payin/resident-india-remittance-under-lrs/set-up/faq"},"children":["FAQ"]},"."]}]},"headings":[{"value":"Collect LRS remittances from India","id":"collect-lrs-remittances-from-india","depth":1},{"value":"Integration steps","id":"integration-steps","depth":1},{"value":"Fetch supported banks (optional)","id":"fetch-supported-banks-optional","depth":2},{"value":"API Endpoint","id":"api-endpoint","depth":3},{"value":"Request","id":"request","depth":3},{"value":"Response","id":"response","depth":3},{"value":"Create a customer","id":"create-a-customer","depth":2},{"value":"API Endpoint","id":"api-endpoint-1","depth":3},{"value":"Request","id":"request-1","depth":3},{"value":"Response","id":"response-1","depth":3},{"value":"Create a bank account","id":"create-a-bank-account","depth":2},{"value":"API Endpoint","id":"api-endpoint-2","depth":3},{"value":"Request","id":"request-2","depth":3},{"value":"Response","id":"response-2","depth":3},{"value":"Update Bank Customer ID","id":"update-bank-customer-id","depth":2},{"value":"API Endpoint","id":"api-endpoint-3","depth":3},{"value":"Request","id":"request-3","depth":3},{"value":"Response","id":"response-3","depth":3},{"value":"Create a Beneficiary (optional)","id":"create-a-beneficiary-optional","depth":2},{"value":"API Endpoint","id":"api-endpoint-4","depth":3},{"value":"Request","id":"request-4","depth":3},{"value":"Response","id":"response-4","depth":3},{"value":"Create a quote","id":"create-a-quote","depth":2},{"value":"API Endpoint","id":"api-endpoint-5","depth":3},{"value":"Request","id":"request-5","depth":3},{"value":"Response","id":"response-5","depth":3},{"value":"Create an order on the server","id":"create-an-order-on-the-server","depth":2},{"value":"API Endpoint","id":"api-endpoint-6","depth":3},{"value":"Request","id":"request-6","depth":3},{"value":"Response","id":"response-6","depth":3},{"value":"Add the payment button on your website or app","id":"add-the-payment-button-on-your-website-or-app","depth":2},{"value":"Verify the SDK response and signature on the server","id":"verify-the-sdk-response-and-signature-on-the-server","depth":2},{"value":"Verify payment status","id":"verify-payment-status","depth":2},{"value":"Sandbox payment status handling","id":"sandbox-payment-status-handling","depth":2},{"value":"How to Mark a Payment as Successful in Sandbox","id":"how-to-mark-a-payment-as-successful-in-sandbox","depth":3},{"value":"Why This Exists in Sandbox","id":"why-this-exists-in-sandbox","depth":3}],"frontmatter":{"title":"Collect LRS remittances from India","description":"End-to-end flow for remitting funds abroad on behalf of a resident Indian investor under the Liberalised Remittance Scheme, using the Glomopay APIs and the Unified SDK.","seo":{"title":"Collect LRS remittances from India"}},"lastModified":"2026-09-22T05:15:29.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/payin/resident-india-remittance-under-lrs/set-up","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}