Build Mauritanian payments into anything.

One API for every Mauritanian bank app — SDKs for TypeScript, Dart, Flutter and React Native, signed webhooks, and a free sandbox to test it all.

checkout.ts
1import { Moosyl } from "moosyl-sdk";
2
3const moosyl = new Moosyl(process.env.MOOSYL_SECRET_KEY!);
4
5const session = await moosyl.createCheckoutSession({
6 transactionId: "txn_123",
7 amount: 5000,
8 successUrl: "https://example.com/success",
9 cancelUrl: "https://example.com/cancel",
10});

Choose how you integrate.

  • Hosted checkout

    Create a checkout session on your server and redirect customers to a Moosyl payment page.

    Checkout sessions
  • In-app payment views

    Drop MoosylView into your Flutter or React Native app for a native payment screen.

    Flutter SDK
  • Server SDKs and REST API

    Use the TypeScript or Dart SDK, or call the REST API directly.

    API reference

Verify every webhook in a few lines.

Construct typed events from the payload and reject anything that isn’t signed by Moosyl.

Webhooks guide
webhook.ts
1import { Moosyl, WebhookSignatureError } from "moosyl-sdk";
2
3const moosyl = new Moosyl(process.env.MOOSYL_PUBLISHABLE_KEY);
4
5app.post("/webhook", express.raw({ type: "application/json" }), (req, res) => {
6 try {
7 const { event, data } = moosyl.constructWebhookEvent(
8 req.body,
9 req.headers["x-webhook-signature"],
10 process.env.WEBHOOK_SECRET
11 );
12 handleWebhookEvent(event, data);
13 return res.json({ received: true });
14 } catch (error) {
15 if (error instanceof WebhookSignatureError) {
16 return res.status(401).json({ error: "Invalid signature" });
17 }
18 throw error;
19 }
20});

Ready to get started?

Create an account in minutes and test for free in the sandbox — or book a call and we’ll set it up with you.

  • See what you’ll pay

    1% per successful payment. No monthly fees.

    Pricing details
  • Start building

    SDKs, webhooks and guides to go live.

    Read the docs
Developers | Moosyl