Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.modempay.com/llms.txt

Use this file to discover all available pages before exploring further.

How to use Modem Pay in your Laravel application.

Using the Facade

The easiest way to use Modem Pay:
use ModemPay\Laravel\Facades\ModemPay;

// Create payment
$payment = ModemPay::paymentIntents()->create([
    'amount' => 5000,
    'currency' => 'GMD',
]);

// List payments
$payments = ModemPay::paymentIntents()->list(['limit' => 10]);

// Get payment
$payment = ModemPay::paymentIntents()->retrieve('hash');

Using Dependency Injection

Inject Modem Pay into your controllers:
use ModemPay\ModemPay;

class PaymentController extends Controller
{
    public function __construct(private ModemPay $modemPay) {}

    public function create(Request $request)
    {
        $payment = $this->modemPay->paymentIntents()->create([
            'amount' => $request->amount,
            'currency' => 'GMD',
        ]);

        return redirect($payment->data->payment_link);
    }
}

Payment Intents

Create a Payment

$payment = ModemPay::paymentIntents()->create([
    'amount' => 5000,
    'currency' => 'GMD',
    'title' => 'Order #12345',
    'metadata' => [
        'order_id' => '12345',
        'customer_id' => 'cus_123'
    ]
]);

List Payments

$payments = ModemPay::paymentIntents()->list([
    'limit' => 20,
    'offset' => 0
]);

Get Single Payment

$payment = ModemPay::paymentIntents()->retrieve('hash');

Transfers

Create a Transfer

$transfer = ModemPay::transfers()->initiate([
    'amount' => 1000,
    'account_number' => '7012345',
    'network' => 'wave',
    'currency' => 'GMD',
    'beneficiary_name' => 'John Doe'
], 'idempotency-key');

Get Single Transfer

$transfer = ModemPay::transfers()->retrieve('id');

Error Handling

Always wrap API calls in try-catch:
use ModemPay\Exceptions\ModemPayException;

try {
    $payment = ModemPay::paymentIntents()->create([
        'amount' => 5000,
        'currency' => 'GMD',
    ]);
} catch (ModemPayException $e) {
    return back()->with('error', $e->getMessage());
}

Example: Complete Payment Flow

public function checkout(Request $request)
{
    try {
        // Create payment
        $payment = ModemPay::paymentIntents()->create([
            'amount' => $request->total,
            'currency' => 'GMD',
            'title' => "Order #{$request->order_id}",
            'metadata' => [
                'order_id' => $request->order_id,
                'user_id' => auth()->id(),
            ]
        ]);

        // Redirect to payment page
        return redirect($payment->data->payment_link);

    } catch (ModemPayException $e) {
        return back()->with('error', 'Payment failed: ' . $e->getMessage());
    }
}