Getting started
SkyPay lets you take eSewa, Khalti, and bank payments through one integration. Here's the short version: grab your API key, send customers to checkout, verify the payment, deliver the order. That's it.
Merchant account
Sign up at app.skypay.dev.
API key
Generated from your dashboard.
A payment provider
eSewa, Khalti, or bank — at least one.
// mobile
Building a Flutter mobile app?
Use the official skypay_sdk package — one integration for eSewa, Khalti, and more on Android & iOS. Provider list loads from your SkyPay account automatically.
skypay_sdk: ^0.0.7 · install guide, example app & full docs on pub.dev
Get your API key
You'll pass this key on every checkout link and verify request.
- 1 Log in to the merchant dashboard at app.skypay.dev
- 2 Open Developers → API Keys (or Profile → API Key)
- 3 Create or rotate a key and copy it once
- 4 Use the key in the Key header for verification; generate checkout links from the dashboard (signed ck token)
Connect providers
Turn on the payment methods your customers actually use.
- 1 Open your Merchant Dashboard
- 2 Go to Providers
- 3 Add and configure eSewa, Khalti, or Other
- 4 Save — you’re ready to accept payments
Integration modes
Pick how you want to accept payments. You can switch anytime from the dashboard.
API Mode
Most popularFully automatic payments. Connect your own eSewa/Khalti merchant credentials.
Best for: Businesses with merchant accounts
Manual Mode
P2P friendlyCustomers pay via QR or bank transfer; you confirm in the dashboard. Fulfill with webhooks — redirects alone are not enough.
Add checkout to your site
Redirect customers to SkyPay with a link or form. On return, verify the payment.
- Your app generates a unique
code(order ID). - Generate a checkout link from the dashboard (includes a signed
cktoken). - SkyPay handles the payment at
app.skypay.dev/checkout. - Customer returns to your success or failure URL.
- Verify server-side, then fulfill the order.
Parameters
| Param | Description |
|---|---|
ck | Signed checkout token from the dashboard (not your raw API key) |
amount | Amount to be paid (in Rupees) |
code | Unique order ID (used for verification) |
success_url | Redirect after successful payment |
failure_url | Redirect after failed payment |
Checkout link
<a href="https://app.skypay.dev/checkout?ck=YOUR_CHECKOUT_TOKEN&amount=100&code=ORDER123&success_url=https://yourapp.com/success&failure_url=https://yourapp.com/failure">
Pay with SkyPay
</a>Great for quick redirects, email/SMS links, or low-code flows.
Verify payments
Always verify after redirect and before fulfillment. A success screen doesn't mean the money landed.
| Element | Value |
|---|---|
| Method | GET |
| Endpoint | https://app.skypay.dev/api/v1/checkout/payments-verify/{code} |
| Header | Key: YOUR_API_KEY |
const res = await fetch(
'https://app.skypay.dev/api/v1/checkout/payments-verify/ORDER123',
{ headers: { Key: 'YOUR_API_KEY' } }
);
const { data } = await res.json();
if (data?.status === 'complete') {
// Fulfill the order
}Status values
| Status | Meaning |
|---|---|
complete | Payment successful — fulfill the order. |
waiting | Manual payment marked paid, awaiting your review. Manual Mode tutorial → |
pending | Session active, user hasn't finished. |
cancelled | User cancelled or the session timed out. |
failed | Provider validation failed. |
Use cases
The same integration fits a lot of business models:
eCommerce & stores
Accept eSewa, Khalti, or bank right at checkout.
Student projects
Learn integration without real merchant accounts (Manual mode).
Freelancers & P2P
Sell via Instagram/TikTok with payment links — no website needed.
SaaS & marketplaces
Let your users plug in their own providers.
Restaurants & POS
QR payments at the table, counter, or kiosk.
ERP & invoicing
Collect money from internal tools, CRMs, and billing software.
Using QR or bank transfer?
Read the Manual Mode tutorial — redirects, webhooks, and how to fulfill safely.
Continue after mark paid → — let customers leave while you verify via webhooks
Ready to go live?
Create your account and grab your API key in minutes.