Pay2bd APIs Documentation

Quickstart

Get up and running with Pay2Local in under 30 minutes.

Prerequisites

Basic Flow

Install Dependencies

    npm install axios crypto

Environment Setup

Node.js Example

// Environment configuration
const config = {
    apiUrl: 'https://api.pay2local.com/v1',
    merchantId: process.env.PAY2LOCAL_MERCHANT_ID,
    accessKey: process.env.PAY2LOCAL_ACCESS_KEY,
    callbackUrl: 'https://yourdomain.com/api/pay2local/callback'
};

Make Your First API Call

Deposit Request Example

const createDeposit = async (orderData) => {
    const payload = {
        merchant_payment_id: orderData.orderId,
        amount: orderData.amount,
        currency: "BDT",
        service_type: "p2c_api",
        bank_type: "bkash",
        redirect_url: "https://yourdomain.com/payment/return",
    };

    const response = await axios.post(
        `${config.apiUrl}/payment/deposits`,
        payload,
    {
        headers: {
            'Authorization': `Bearer ${config.accessKey}`,
            'Content-Type': 'application/json'
        }
    });

    return response.data;
};

Response Handling

{
    "status": "success",
    "request_id": "P2L_REQ_123456789",
    "redirect_url": "https://pay2local.com/pay/P2L_REQ_123456789",
    "requested_amount": 50,
    "merchant_payment_id": "100058130003",
    "request_type": "Deposit",
    "bank_type": "Bkash",
    "service_type": "p2p_agent",
    "currency": "BDT",
    "message": "Deposit request created"
}

Handle Callbacks

Basic Callback Handler More Details

app.post('/api/pay2local/callback', async (req, res) => {
    try {
        // 1. Verify signature
        const isValid = verifySignature(req.body);
        if (!isValid) return res.status(400).send();

        // 2. Process the callback
        const {merchant_payment_id, request_status} = req.body;

        if (request_status === "Approved") {
        await creditUserAccount(merchant_payment_id);
    }
        res.status(200).json({status: "received"});
    } catch (error) {

        log.error(error);
        res.status(500).send();
    }
});

On this page