Need a hand?

Setting up the panel or the Android app? The merchant guide walks through it.

Merchant Guide

Method Direct Link Last updated: 2026-09-08

Method Direct Link lets a merchant's customer skip the method-select page: instead of choosing a payment method (bKash, Nagad, Rocket …) after opening the payment link, the customer lands directly on the exact method's pay page.

What it does

Normally a payment_url opens the gateway where the customer first picks a method. With Method Direct Link, the merchant adds a method parameter to the create request and the returned payment_url opens that method directly — one step fewer for the customer, faster checkout.

  • Webhook (IPN), api/payment/verify, success/cancel redirects and Telegram notifications all behave exactly as before.
  • The deep link is appended automatically by the gateway (e.g. .../api/execute/XXXXXXXX?method=bkash) — nothing else to configure.

Activation

This is an admin-controlled feature. The platform admin grants or revokes it per merchant account (same pattern as the custom payment domain access). Until it is granted for your account, passing method makes the create request fail with an error instead of being silently ignored: Method Direct Link is not enabled for your account. Contact Admin/Support to enable it.

If you are a merchant and this page applies to you, confirm with support/admin that Method Direct Link is enabled on your account.

Usage

Create a payment with a fixed method

Add a method field to your normal create payment POST:

Live API End Point (For Create Payment URL):

POSThttps://secure-pay.nagorikpay.com/api/payment/create

Field Name Description Required Example Values
method Payment method slug the customer should land on directly (must be enabled for the brand). No bkash, nagad, rocket …
type Account type to pay into. Only honored together with method, and only when that account type is enabled for the method — the customer then skips the account-type chooser too (works even when several account types are active). An invalid / inactive type is silently ignored. No personal, agent, merchant

<?php
$ch = curl_init("https://secure-pay.nagorikpay.com/api/payment/create");
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_HTTPHEADER     => ['Content-Type: application/x-www-form-urlencoded'],
    CURLOPT_POSTFIELDS     => http_build_query([
        'api_key'     => 'YOUR_BRAND_API_KEY',
        'amount'      => 100,
        'cus_name'    => 'Customer Name',
        'cus_email'   => 'customer@gmail.com',
        'success_url' => 'https://yourdomain.com/success.php',
        'cancel_url'  => 'https://yourdomain.com/cancel.php',
        'webhook_url' => 'https://yourdomain.com/webhook.php',
        'method'      => 'bkash',   // fixed method — skips the method-select page
        'type'        => 'agent',   // optional — personal | agent | merchant (skips the account-type chooser)
    ]),
]);
$res = json_decode(curl_exec($ch), true);
// $res['payment_url'] => https://.../api/execute/XXXXXXXX?method=bkash&acc_tp=....
curl_close($ch);
                  

Error responses

When a method or type you pass is not active, the create endpoint refuses with HTTP 400 and returns JSON (status: 0) instead of a payment_url:

Condition Response message
Account has no Method Direct Link access (admin) Method Direct Link is not enabled for your account. Contact Admin/Support to enable it.
Method not enabled on the brand The payment method 'bkash' is not active for this brand.
Method enabled but its direct toggle is off Method Direct Link is turned off for 'bkash' in this brand's payment settings. Enable its toggle first.
Account type not active for the method The account type 'merchant' is not active for 'nagad'. Active type(s): personal, agent.
type passed for a bank/QR method The 'type' parameter does not apply to 'bank' (bank/QR methods have no account type).

Response example:

{"status":0,"message":"The account type 'merchant' is not active for 'nagad'. Active type(s): personal, agent."}

Method slugs

Use the same slug you already use for payment methods. The enabled slugs below come straight from the gateway:

# method value
1 nagorikpay
2 bkash
3 nagad
4 rocket
5 upay
6 cellfin
7 tap
8 easypaisa
9 Ipay
10 binance
11 banglaqr
12 ibl
13 abbank
14 citybank
15 sonali
16 dbbl
17 basic
18 ebl
19 bbrac
20 basia
21 agrani
22 jamuna
23 ific

Behavior & fallback

When the customer is sent straight to the method

  • The account has Method Direct Link enabled (admin-granted).
  • The method is enabled for that brand's payment settings and its direct toggle is on.
  • For mobile / international methods: the method has exactly one active account type (personal or agent). That type is picked automatically.
  • For mobile / international methods: a valid type was sent together with method — the customer is taken straight to that account type's pay page even when several account types are active.
  • Bank transfer and QR methods go straight through — no account type is needed.

Passing a method / type that is not active is not silently ignored — the create request is refused (HTTP 400). See the Error responses table above.

Select page vs. errors

  • No error — normal method-select page: the create request did not include method.
  • No error — method-select page (type chooser): a valid mobile/international method was sent but it has several active account types and no type was sent — the customer picks the account type. Send type to skip it.
  • Error (HTTP 400): the account has no Method Direct Link access, the method is not active, its direct toggle is off, the account type is not active, or type was sent for a bank/QR method — see the Error responses table above.

A create request without method always works exactly like before.