All rails operational · UPI, IMPS, NEFT, RTGS

Collect in seconds.
Settle in one call.
Money that moves like data.

CashflowTech is a payment gateway built for Indian businesses that need pay-ins and payouts on the same encrypted API. One set of credentials, one envelope format, one webhook shape — from the first UPI collect to the last IMPS disbursement.

0platform uptime, trailing 12 months
0median intent creation
0bank rails on one API
Customer · UPIrahulm@okaxis Customer · UPIpriya@ybl HDFC · IMPS•••• 7891 SBI · NEFT•••• 2210 ICICI · RTGS•••• 0348 AES-256-CBC · SHA-256 checksum · webhook

    Two products. One integration.

    Pay-in and Payout share credentials, encryption, checksum construction and callback shape. Teams that ship one usually ship the other in an afternoon.

    Pay-in

    UPI collect intents that resolve fast

    Create a payment intent with a single POST. Your customer gets a UPI deep link, you get a gateway transaction ID and a status you can poll or subscribe to.

    • Intent creation with your own orderId, up to 25 characters
    • Status enquiry for any order at any time
    • Webhooks with RRN and payer VPA on every change
    • Duplicate, tamper and expiry states surfaced explicitly
    Explore Pay-in
    Payout

    Disbursements to any Indian bank account

    Push funds by IMPS, NEFT or RTGS to vendors, customers, partners and employees. Remitter and beneficiary details travel encrypted, and every transfer carries a purpose code.

    • Fund transfer initiation with remitter and beneficiary blocks
    • Rail selection per request: IMPS, NEFT or RTGS
    • Status enquiry and callbacks with bank RRN
    • Idempotent processing guided by gatewayTxnId
    Explore Payout

    From credentials to first settlement in four steps

    The sequence is identical for both products. The only thing that changes is the endpoint path and the fields inside the encrypted body.

    Receive credentials

    Sales issues a client-id, a secret-key and an encryption key for sandbox, then for production after go-live review.

    Build the envelope

    Serialise your JSON, compute a SHA-256 checksum, encrypt the body with AES-256-CBC, and send both fields.

    Call the endpoint

    POST to /intent or /fund-transfer. Decrypt encryptedResponse to read the gateway transaction ID and status.

    Listen for callbacks

    Register an HTTPS URL. We post encrypted status changes; you acknowledge with accepted: true once stored.

    Run these steps in the sandbox See envelope specification

    Built for teams who reconcile every rupee

    The parts of a gateway that finance and engineering argue about are the parts we designed first.

    Encrypted end to end

    Request bodies, responses and callbacks all use AES-256-CBC with a key derived by SHA-256. Nothing meaningful travels in plain text.

    Integrity on every payload

    A SHA-256 checksum accompanies each encrypted body so your systems can reject anything altered in transit.

    One status vocabulary

    INITIATED, PENDING, SUCCESS, FAILED, REFUNDED and the rest mean the same thing on pay-in and payout, in polling and in webhooks.

    Reconciliation-ready

    Merchant order ID, gateway transaction ID, RRN and metadata on every record. Match bank statements without guesswork.

    Live, observable rails

    Per-rail health, success rates and latency are visible in the merchant dashboard and exposed through status enquiry.

    Humans on call

    Integration engineers assist during build, and a 24×7 operations desk handles settlement questions once you're live.

    Trusted where volume and scrutiny are both high

    Lending, marketplaces, gaming, insurance and logistics platforms run their collections and disbursements through CashflowTech.

    Meet our clients

    Simulate your first pay-in and payout right now — no account needed.

    Open the sandbox

    Products / Pay-in

    Collect payments over UPI with one intent call

    Generate a UPI collect intent for any customer, track it through a single status vocabulary, and receive server-to-server confirmation the moment the bank settles.

    How a pay-in moves

    Three API touchpoints, one order ID that follows the money from your checkout to your ledger.

    1 · Create the intent

    POST the order, amount, customer identity and IP. The decrypted response returns an intentUrl beginning upi://pay and a gatewayTxnId.

    2 · Customer approves

    The intent opens in any UPI app. The customer confirms; the bank network returns an RRN and the payer VPA.

    3 · You get told twice

    A webhook hits your callback URL, and the status enquiry endpoint answers with the same data whenever you ask.

    Every state the money can be in

    Pay-in statuses cover the full life of a UPI collect, including dispute outcomes. Design your ledger around them once and never guess again.

    StatusMeaningTerminal?
    INITIATEDIntent created, awaiting customer actionNo
    PENDING / TRANSACTION IN PROCESSCustomer approved; bank confirmation outstandingNo
    SUCCESSFunds received and creditedYes
    FAILEDBank declined or customer cancelledYes
    EXPIREDIntent not completed within the validity windowYes
    INCOMPLETE / HOLDRequires manual review by operationsNo
    DUPLICATE / TAMPEREDRejected: repeated order ID or checksum mismatchYes
    REFUNDEDAmount returned to the customerYes
    CHARGEDBACK / CB_REFUNDEDDispute raised; dispute settled by refundYes

    What you send, what you get back

    Request fields

    FieldRule
    orderIdUnique merchant reference, ≤ 25 chars
    amountINR, up to two decimals
    currencyAlways INR
    firstName, lastName≤ 20 chars each
    email, phoneValid email; 10-digit phone without +91
    userId, userIpYour customer ID; public IPv4/IPv6
    metadataOptional key–value data for reconciliation

    Decrypted response

    JSON · decrypted response
    {
      "merchantorderId": "ORD2026INV45210",
      "gatewayTxnId": "TXNCF2026081900457",
      "txnAmount": 350.50,
      "intentUrl": "upi://pay?pa=collect@cfpay&pn=CASHFLOW%20TECH%20PRIVATE%20LIMITED&am=350.50&cu=INR&tr=TXNCF2026081900457",
      "txnStatus": "INITIATED"
    }

    Webhook and status enquiry additionally return paymentMethod, updatedAt, rrn and customerVpa.

    See a real encrypted pay-in envelope generated from your own values.

    Open the pay-in simulator

    Products / Payout

    Send money to any bank account in India, on the rail you choose

    One fund-transfer request carries the remitter, the beneficiary, the purpose and the rail. CashflowTech handles bank routing, returns a gateway transaction ID immediately and reports the RRN on completion.

    Pick the rail per transfer

    Set transferMode on each request. Speed, limits and operating hours follow the underlying network.

    IMPS

    Instant, 24×7 including holidays. Ideal for refunds, gig-worker payouts and small vendor settlements.

    NEFT

    Batched settlement in half-hourly cycles around the clock. Cost-effective for scheduled or bulk disbursements.

    RTGS

    Real-time gross settlement for high-value transfers of ₹2 lakh and above, within RBI operating windows.

    Who pays whom, in one object

    Remitter and beneficiary details are structured blocks inside the encrypted body, so compliance and reconciliation get complete records without extra calls.

    JSON · request body before encryption
    {
      "orderId": "PYT2026TRF88431",
      "amount": 5000.00,
      "currency": "INR",
      "transferMode": "IMPS",
      "purpose": "E-COM",
      "remitter": {
        "name": "Priya Sharma",
        "email": "priya.sharma@example.in",
        "phone": "9934216780",
        "ipAddress": "103.68.42.117"
      },
      "beneficiary": {
        "name": "Arjun Verma",
        "accountNumber": "50100234567891",
        "ifsc": "HDFC0001234",
        "bankName": "HDFC BANK",
        "accountType": "SAVINGS",
        "email": "arjun.verma@example.in",
        "phone": "9887012345"
      },
      "metadata": { "invoiceId": "INV-2026-5521" }
    }

    Immediate acknowledgement

    The decrypted response returns gatewayTxnId, the accepted amount and an initial status of INITIATED, PENDING or IN_PROGRESS.

    Completion by callback

    When the bank confirms, we post SUCCESS with the rrn. On failure, message carries the bank's reason.

    Idempotency by design

    Callbacks may be retried. Dedupe on gatewayTxnId or merchantOrderId plus status, and compare updatedAt rather than trusting arrival order.

    Where payouts earn their keep

    Marketplaces

    Split seller settlements daily with per-order metadata for finance to match against invoices.

    Lending

    Disburse approved loans by IMPS within minutes of KYC completion; collect EMIs on the pay-in side.

    Gig & logistics

    Pay riders and drivers at shift end, every day, without a batch file or a bank portal.

    Insurance & refunds

    Return premiums and settle claims to the policyholder's account with a complete audit trail.

    Watch a fund transfer get encrypted, accepted and confirmed — in your browser.

    Open the payout simulator

    Developers / API reference v1.0

    Pay-in & Payout API reference

    Everything on this page mirrors the official CashflowTech integration guides. Both products share authentication, the encrypted envelope, checksum construction and callback semantics.

    Authentication

    Every request is authenticated with two headers issued by CashflowTech. Keep the secret key server-side only; never embed it in mobile or browser code.

    HeaderValue
    client-idYour merchant identifier, e.g. f8cd178a-ecb0-…
    secret-keyYour API secret, e.g. a269dc28-db2e-…
    Content-Typeapplication/json
    Separate encryption keyAlongside the two headers you receive an encryption key. It is never sent on the wire — it is only used locally to derive the AES key described below.

    The encrypted envelope

    You never post business fields directly. You post a two-field wrapper: the SHA-256 checksum of the serialised JSON, and the AES-encrypted JSON itself. Responses and callbacks come back wrapped the same way.

    JSON · request envelope
    {
      "checksum":      "f3a91c0be2d5477a815c6e0d9b23f4a6c8d17e5290bb34cd6f01a8e7d4529c1b",
      "encryptedBody": "Kx92LmT7Qw3vNpB1cYdE8fGhJa5sRzUoW0iVtM6nXqPeC4bDlZ2wHj8kAg7yEmSf…"
    }
    JSON · response envelope
    {
      "responseTimestamp": "2026-08-19T10:12:44.318Z",
      "code": 200,
      "result": "SUCCESS",
      "description": "Transaction Initiated successfully!",
      "encryptedResponse": "Vb84KpXw2mRtYqLu0ZnHs6EjcOgD5aTfM1iNvB7yPzQxWkC3eJdSrhUoA9lG…"
    }

    Decrypt encryptedResponse with the same key to obtain the business payload. The sandbox on this site performs both operations live.

    Request integrity — checksum

    Serialise the request body to a string, hash it with SHA-256 and send the lowercase hex digest. The construction is identical across all CashflowTech APIs.

    import hashlib
    
    def system_checksum(data: str) -> str:
        return hashlib.sha256(data.encode("utf-8")).hexdigest()
    RulesUse UTF-8 and keep key ordering deterministic. Never compute the checksum from a masked, logged or reformatted payload. Reject any response or callback whose checksum fails verification.

    Payload security — encryption

    Payloads use AES-256-CBC. The AES key is the first 32 characters of the SHA-256 hex digest of your encryption key, used as bytes. The IV is the fixed 16-byte string 1234567890123456, padding is PKCS#7, and ciphertext is Base64-encoded.

    import hashlib, base64
    from Crypto.Cipher import AES
    from Crypto.Util.Padding import pad, unpad
    
    IV = b"1234567890123456"
    
    def derive_key(key: str) -> bytes:
        return hashlib.sha256(key.encode()).hexdigest()[:32].encode()
    
    def system_encryption(plain_text: str, key: str) -> str:
        cipher = AES.new(derive_key(key), AES.MODE_CBC, IV)
        encrypted = cipher.encrypt(pad(plain_text.encode("utf-8"), AES.block_size))
        return base64.b64encode(encrypted).decode()
    
    def system_decryption(cipher_text: str, key: str) -> str:
        cipher = AES.new(derive_key(key), AES.MODE_CBC, IV)
        decrypted = unpad(cipher.decrypt(base64.b64decode(cipher_text)), AES.block_size)
        return decrypted.decode("utf-8")

    Pay-in · Create payment intent

    Generates a UPI collect intent for the customer. India-ready JSON for initiating an INR/UPI pay-in.

    POST/cashflow-payin-svc/api/v1/intent

    Request body (before encryption)

    FieldTypeRuleDescription / example
    orderIdstringRequiredUnique merchant order reference, max 25 chars. ORD2026INV45210
    amountnumberRequiredINR, up to two decimals. 350.50
    currencystringRequiredISO 4217. INR
    firstNamestringRequiredMax 20 chars. Rahul
    lastNamestringRequiredMax 20 chars. Mehta
    emailstringRequiredValid email. rahul.mehta@example.in
    phonestringRequired10 digits, no +91. 9812045673
    userIdstringRequiredCustomer ID in your system. USR-88213-45671-XK
    userIpstringRequiredPublic IPv4/IPv6. 49.205.118.72
    metadataobjectOptionalMerchant key–value data for reconciliation. No sensitive card data.

    Decrypted response

    JSON · decrypted
    {
      "timestamp": "2026-08-19T10:12:45.062Z",
      "statusCode": 200, "status": "OK", "success": true,
      "message": "Decrypted Successfully!",
      "data": {
        "merchantorderId": "ORD2026INV45210",
        "gatewayTxnId": "TXNCF2026081900457",
        "txnAmount": 350.50,
        "intentUrl": "upi://pay?pa=collect@cfpay&pn=CASHFLOW%20TECH%20PRIVATE%20LIMITED&am=350.50&cu=INR&tr=TXNCF2026081900457",
        "txnStatus": "INITIATED"
      }
    }
    Envelope fieldTypeDescription
    responseTimestampstringUTC ISO 8601
    codeintegerHTTP-style application code, e.g. 200
    resultstringSUCCESS or FAILURE
    descriptionstringHuman-readable message
    encryptedResponsestringDecrypt per the encryption spec

    Pay-in · Transaction status enquiry

    Returns the current status of a pay-in order.

    POST/cashflow-payin-svc/api/v1/intent/status
    FieldDescriptionExample
    orderIdOrder ID of the transaction (string)ORD2026INV45210

    Decrypted response

    JSON · decrypted
    {
      "merchantOrderId": "ORD2026INV45210",
      "gatewayTxnId": "TXNCF2026081900457",
      "txnAmount": 350.50,
      "currency": "INR",
      "txnStatus": "SUCCESS",
      "paymentMethod": "UPI",
      "updatedAt": "2026-08-19T10:14:03.521Z",
      "rrn": "615508923471",
      "customerVpa": "rahulm@okaxis"
    }

    Pay-in · Status notifications (webhooks)

    Called whenever the bank changes the transaction status. You provide an HTTPS callback URL to CashflowTech during onboarding.

    CALLBACKhttps://your-domain.example/cashflowtech/payin
    FieldTypeDescriptionExample
    merchantOrderIdstringMerchant order referenceORD2026INV45210
    gatewayTxnIdstringGateway transaction identifierTXNCF2026081900457
    txnAmountnumberTransaction amount350.50
    currencystringISO 4217INR
    txnStatusstringCurrent statusSUCCESS / FAILED / PENDING / …
    paymentMethodstringMethod usedUPI
    updatedAtstringUTC ISO 86012026-08-19T10:14:03.521Z
    rrnstringRetrieval reference number from the bank network615508923471
    customerVpastringPayer UPI ID that initiated the paymentrahulm@okaxis

    Acknowledgement you return

    JSON · your HTTP 200 body
    { "accepted": true, "message": "Transaction Decrypted Successfully" }

    Payout · Fund transfer initiation

    Pushes an IMPS, NEFT or RTGS payout to a beneficiary.

    POST/cashflow-payout-svc/api/v1/fund-transfer

    Request fields

    FieldTypeRuleDescription
    orderIdstringRequiredUnique alphanumeric reference; no spaces/special chars; max 25
    amountnumberRequiredINR, two decimals. 5000.00
    currencystringRequiredINR
    transferModestringRequiredIMPS, NEFT or RTGS
    purposestringRequiredConfigured purpose code, e.g. E-COM
    remitter.namestringRequiredFull remitter name
    remitter.emailstringRequiredValid email
    remitter.phonestringRequiredExactly 10 digits, no +91
    remitter.ipAddressstringRequiredPublic IPv4/IPv6
    beneficiary.namestringRequiredAccount-holder name
    beneficiary.accountNumberstringRequiredKeep as a string
    beneficiary.ifscstringRequiredValid 11-character IFSC
    beneficiary.bankNamestringRequiredBank name
    beneficiary.accountTypestringRequiredSAVINGS or CURRENT
    beneficiary.emailstringOptionalValid email
    beneficiary.phonestringRequiredExactly 10 digits, no +91
    metadataobjectOptionalReconciliation data; never credentials

    Decrypted response

    JSON · decrypted
    {
      "merchantOrderId": "PYT2026TRF88431",
      "gatewayTxnId": "TXNCF2026081900982",
      "txnAmount": 5000.00,
      "currency": "INR",
      "txnStatus": "INITIATED",
      "paymentMethod": "IMPS",
      "updatedAt": "2026-08-19T11:02:36.144Z",
      "message": "Request accepted successfully"
    }

    txnStatus starts as INITIATED, PENDING or IN_PROGRESS. On failure, message carries the bank's reason.

    Payout · Transaction status enquiry

    POST/cashflow-payout-svc/api/v1/fund-transfer/status
    FieldDescriptionExample
    orderIdYour payout referencePYT2026TRF88431

    Decrypted response

    JSON · decrypted
    {
      "merchantOrderId": "PYT2026TRF88431",
      "gatewayTxnId": "TXNCF2026081900982",
      "txnAmount": 5000.00,
      "currency": "INR",
      "txnStatus": "SUCCESS",
      "paymentMethod": "IMPS",
      "updatedAt": "2026-08-19T11:04:52.208Z",
      "rrn": "618224905137",
      "message": ""
    }

    Payout · Status notifications (webhooks)

    Posted to your HTTPS callback endpoint whenever the payout status changes, using the same encrypted wrapper and decryption logic.

    CALLBACKhttps://your-domain.example/cashflowtech/payout
    JSON · decrypted callback
    {
      "merchantOrderId": "PYT2026TRF88431",
      "gatewayTxnId": "TXNCF2026081900982",
      "txnAmount": 5000.00,
      "currency": "INR",
      "txnStatus": "SUCCESS",
      "paymentMethod": "IMPS",
      "updatedAt": "2026-08-19T11:04:52.208Z",
      "rrn": "618224905137",
      "message": ""
    }
    Delivery rulesRespond HTTP 200 only after the notification is safely recorded. Callbacks can be retried, so processing must be idempotent on gatewayTxnId or merchantOrderId plus status. Do not treat arrival order as authoritative — compare updatedAt and query the status API when uncertain.

    Status codes

    Pay-in statuses:

    INITIATEDPENDINGTRANSACTION IN PROCESSSUCCESSFAILEDEXPIREDINCOMPLETEHOLDDUPLICATETAMPEREDREFUNDEDCHARGEDBACKCB_REFUNDED

    Payout statuses:

    INITIATEDPENDINGIN_PROGRESSSUCCESSFAILEDREFUNDED

    Best practices

    Never trust a callback aloneVerify the checksum, decrypt, then confirm with the status enquiry before releasing goods or marking a payout complete.
    Make order IDs meaningfulInclude a date or sequence fragment. Reuse triggers a DUPLICATE status on pay-in.
    Store what you receivePersist gatewayTxnId and rrn — they are what bank statements show.
    Rotate keys through salesKey rotation is coordinated to avoid decryption failures on in-flight callbacks.

    Developers / Integration sandbox

    Simulate an integration before you write a line of server code

    Fill in a request, and this page builds the exact envelope your server would send: a real SHA-256 checksum and real AES-256-CBC ciphertext, produced in your browser with the documented scheme. Then it replays the gateway response, the status lifecycle and the webhook.

    Nothing leaves your browser. The gateway response is simulated; use the same code against sandbox credentials from sales to go live.

    Derived AES key = first 32 hex chars of SHA-256(key)

    Payment intent

    1Plain request body

    waiting
    Fill the form and submit to build the body.

    2Envelope — checksum + encryptedBody

    SHA-256 · AES-256-CBC
    
              

    3Gateway response

    simulated

    Decrypted with your key in the browser:

    4Status lifecycle

    5Webhook to your server

    POST callback

    Your server should respond { "accepted": true, "message": "Transaction Decrypted Successfully" } after storing the record.

    Decrypt any CashflowTech payload

    Paste ciphertext from a sandbox response or callback and your encryption key. Useful when debugging a webhook handler.

    output
    Result appears here.

    Clients

    The businesses that move money through CashflowTech

    From two-person startups to platforms processing lakhs of transactions a day. Here is who they are and what changed once they integrated.

    Selected clients

    Names shown with permission. Many enterprise clients prefer not to be listed.

    Industries we serve

    Digital lendingE-commerce marketplacesReal-money gamingInsuranceLogistics & gig platformsEdTechTravel & hospitalityUtilities & billersSaaS subscriptionsWealth & broking

    Measured outcomes

    Kredify · digital lending
    0%

    fewer failed EMI collections after moving UPI collect to CashflowTech intents with webhook-driven retries.

    ShopNagar · marketplace
    0

    from order delivered to seller paid, by switching daily NEFT batches to per-order IMPS payouts.

    RideKart · logistics
    0

    total integration time for both pay-in and payout, using the shared envelope and the sandbox on this site.

    In their words

    "The status vocabulary is the same for collections and disbursements. Our reconciliation job went from 600 lines to 90."

    AN
    Ananya NairHead of Engineering, Kredify

    "We tested the encryption in the browser sandbox on a Friday and were live in production the next Wednesday."

    VS
    Vikram SethiCTO, ShopNagar

    "Riders get paid the minute the shift closes. Support tickets about payments dropped by half in the first month."

    MI
    Meera IyerVP Operations, RideKart

    "Every callback has the RRN. Our finance team stopped asking engineering to look things up."

    RK
    Rohan KulkarniFinance Controller, PolicyPeak

    "When a rail slows down, we see it in the dashboard before customers do. That transparency is rare."

    SD
    Sunita DasProduct Lead, QuizArena

    "Integration engineers answered our questions on the same day, with code, not links to a PDF."

    FA
    Farhan AliBackend Lead, TutorWave

    Join the platforms already settling on CashflowTech.

    Talk to sales

    Company

    We build the plumbing that lets Indian businesses trust digital money

    CashflowTech Private Limited is a payments infrastructure company. We run the pay-in and payout rails, the encryption, the reconciliation and the operations desk so our clients can focus on their product.

    Why we exist

    Most gateways treat collections and disbursements as different products with different teams, formats and failure modes. Finance teams pay for that split every month-end.

    We designed one envelope, one status vocabulary and one callback contract, then built both products on top. The result is an integration you learn once, and a ledger that reconciles itself.

    CashflowTech logo

    What we hold ourselves to

    Encrypted by default

    No plaintext business data on the wire, ever — not in requests, responses or callbacks.

    Explicit over implicit

    Thirteen pay-in statuses exist because money has thirteen states. We do not collapse them to make a dashboard prettier.

    Engineers answer engineers

    Integration support is staffed by people who have written against the API themselves.

    Boring uptime

    Multi-bank redundancy per rail, so a single partner outage becomes a routing change rather than an incident.

    Milestones

    2022

    Company founded; first UPI collect integration goes live with a lending client.

    2023

    Payout product launched on IMPS and NEFT with the shared encrypted envelope.

    2024

    RTGS added; 24×7 operations desk established; multi-bank routing per rail.

    2025

    Merchant dashboard with per-rail health and reconciliation exports.

    2026

    API reference v1.0 published; browser sandbox released for self-serve evaluation.

    Leadership

    AR
    Aditya RaoCo-founder & CEO
    NK
    Nisha KrishnanCo-founder & CTO
    SB
    Sameer BhattHead of Banking Partnerships
    LM
    Lakshmi MenonHead of Risk & Compliance

    Want to build this with us?

    See open roles

    Careers

    Work on money movement that millions of people rely on

    We are a small team with large responsibilities. Every role touches the rails, the code or the clients directly.

    How we work

    Hybrid, Bengaluru-anchored

    Three days together in Koramangala, two wherever you think best. Remote roles noted below.

    Ownership from week one

    Small squads own a rail or a client segment end to end, including on-call and the metrics.

    ESOPs for everyone

    Every full-time hire holds equity, vesting over four years with a one-year cliff.

    Health cover for family

    Medical insurance for you, spouse, children and parents, plus an annual wellness allowance.

    Learning budget

    ₹75,000 a year for courses, conferences and books, no approval chain.

    Leave that is actually taken

    Twenty-four days of paid leave, and leads track that people use it.

    Open roles

    Select a role to read the full description. Apply with a CV or a link to work you are proud of.

    Nothing matching? Write to careers@cashflowtech.in and tell us what you would build.

    Contact

    Get sandbox credentials or talk through your use case

    Tell us about your volumes and rails. An integration engineer and an account manager will respond within one business day.

    Offices

    Registered
    CashflowTech Private Limited
    India
    Sales
    sales@cashflowtech.in
    Integration
    integrations@cashflowtech.in
    Operations desk
    24×7 for live merchants via dashboard

    Before you write

    Have your entity name, GSTIN and the settlement bank account ready — onboarding starts with KYB, and having documents at hand usually saves a week.