Take payment the way Fiji pays. Know you've been paid.

One checkout for your website, your chats, or your stall. M-PAiSA and MyCash today, more to come. Every payment confirmed by the network, not a screenshot.

Email and name only · no card · no documents until you go live

POST /v1/checkout-sessionsPick a stage below · Illustrative

One payment, drawn as three stacked planesThe top plane, Create, holds the Checkout Session cs_3f9c2b1a for FJD 50.00. The middle plane, Pay, holds the two wallets, M-PAiSA and MyCash. The bottom plane, Get paid, holds the signed webhook, your balance and your payout.webhookbalancepayoutGet paidwebhook · payoutM-PAiSAMyCashPayhosted /ccs_3f9c2b1a · FJD 50.00CreatePOST · 201

In plain words

Taking M-PAiSA and MyCash online usually means two separate integrations, with Vodafone and with Digicel. Transxact is one: one checkout page for both wallets, and for each way to pay we add after them.

  1. You ask for a payment

    From your website or app, or with a link you share. You say how much and what it's for.

  2. Your customer pays the way they already do

    With M-PAiSA or MyCash today, confirmed on their own phone and by the network, so there's no screenshot to check. They never need a Transxact account.

  3. The money comes to you

    To your bank, or to your own wallet if you sell on your own, every Monday unless you pick another day. The fee is already taken out. Real payments start once we've checked your ID.

Your developer adds it once. After that, every payment shows up on your dashboard.
Send this to your developer

For developers: the request, field by field

That request returns a hostedUrl: the page your customer pays on. The stage you pick lights its fields; tap, hover or focus a field to trace it on its own.

POST /v1/checkout-sessions

curl https://api.transxact.io/v1/checkout-sessions \  -X POST \  -H "Authorization: Bearer sk_test_..." \  -H "Idempotency-Key: a1b2c3d4-order-9912" \  -H "Content-Type: application/json" \  -d '{ "amount": 5000, "currency": "FJD" }'

POST /v1/checkout-sessions

import { TransxactApiClient } from "@transxact/node";const client = new TransxactApiClient({ token: "sk_test_..." });const session = await client.checkoutSessions.create({  idempotencyKey: "a1b2c3d4-order-9912",  amount: 5000,  currency: "FJD",});

POST /v1/checkout-sessions

<?phpuse Transxact\TransxactClient;use Transxact\CheckoutSessions\Requests\CreateCheckoutSessionRequest;$client = new TransxactClient(token: 'sk_test_...');$session = $client->checkoutSessions->create(    new CreateCheckoutSessionRequest([        'idempotencyKey' => 'a1b2c3d4-order-9912',        'amount' => 5000,        'currency' => 'FJD',    ]),);

201 Created

{  "id": "cs_3f9c2b1a",  "status": "pending",  "mode": "test",  "amount": 5000,  "currency": "FJD",  "hostedUrl": "https://transxact.io/c/cs_3f9c2b1a",  "metadata": {},  "expiresAt": 1717086400000}

Sent to your webhook URL when a payment succeeds, fails or is cancelled.

Transxact-Signature: t=1717000200000,v1=...Content-Type: application/json{  "id": "evt_8c1f4e2a9b7d4c3e5f60718293a4b5c6",  "type": "checkout_session.succeeded",  "data": {    "object": {      "id": "cs_3f9c2b1a",      "status": "succeeded",      "mode": "test",      "amount": 5000,      "currency": "FJD",      "hostedUrl": "https://transxact.io/c/cs_3f9c2b1a",      "metadata": {        "orderId": "9912"      },      "expiresAt": 1717086400000    }  }}

Verify the signature (the Node and PHP SDKs include a helper)

5transxact.io/c/cs_3f9c2b1a

1Test payment · no real money moves

Pay Your shop

3TotalFJD 50.00

Choose your wallet

M-PAiSAVodafone
MyCashDigicel

7Link works until tomorrow, 2:14 pm

The hosted checkout your customer sees, in Test mode

From the quickstart and the API's own examples.

Field functions

PinFieldIn or outLands onDescription
1AuthorizationInTest bandYour secret key. A sk_test_ key makes a Test mode session, and the checkout says so across its top.
2Idempotency-KeyInid, the same on a retryYour own key for this order. Send it again and you get the original session back, not a second charge.
3amountInTotalWhat to charge, in FJD cents. 5000 is FJD 50.00, shown to your customer as the total.
4currencyInTotalAlways FJD in v1.
5hostedUrlOutAddress barThe page your customer pays on. Redirect them to it, or send it as a link.
6statusOutWebhookpending until the wallet answers, then succeeded, failed or cancelled. Each change sends a signed webhook.
7expiresAtOutCheckoutAfter this, no payment can start. 24 hours by default; you can set anywhere from 30 minutes to 24 hours.

Both wallets behind one page

Your server creates a Checkout Session and gets back a hostedUrl. Your customer opens it, picks M-PAiSA or MyCash, and pays.

M-PAiSA confirms on Vodafone's own page, with a PIN and a texted code; MyCash texts a one-time code. Both sit behind this one page, so you build one integration, not two, and get the same signed webhook either way. Each payment method we add joins the same page, behind the same Checkout Session. How each works: M-PAiSA, MyCash.

  • One Checkout Session for both wallets: create it, send your customer to its hostedUrl
  • Hosted checkout: your customer picks M-PAiSA or MyCash and confirms on their own phone
  • Signed webhooks for every outcome, the same shape whichever wallet paid
  • Idempotency keys on every create, so a retry never charges twice
  • Test mode the moment you sign up: your customer goes through a practice version of the wallet's steps, and no real money moves. Live mode opens once your account is verified.
  • Paid out every Monday by bank transfer, with the fee already taken out, or daily, fortnightly, monthly or when you ask
  • A dashboard for every payment: fees and payouts line by line, Checkout Sessions to search and download as CSV, and webhook deliveries you can resend

Interface

PartAddressAuth
APIapi.transxact.io/v1Bearer key
Checkouttransxact.io/c/{id}None
WebhookYour URLTransxact-Signature

Built for

One request out, one webhook back

The wallet step in the middle is the only part that differs, and it happens on your customer's phone, not in your code.

Sequence of one paymentYour server posts a Checkout Session to Transxact and gets a hosted URL. The customer opens it and picks a wallet. The wallet asks for a PIN or one-time code and confirms to Transxact. Transxact sends a signed webhook to your server and returns the customer to your success URL, where your server confirms the session with a GET.Your serverTransxactCustomerWalletPOST /v1/checkout-sessions201 · hostedUrlredirect to hostedUrlpicks M-PAiSA or MyCashpayment requestPIN or one-time codeconfirmedto successUrlGET /v1/checkout-sessions/{id}webhook · signed
One payment, end to end. Confirm with the webhook or a GET, never the redirect alone.

Scroll the figure sideways to see all four lanes

Operating conditions

WhatMinDefaultMaxUnit
Session lifetime0.52424hours
Amount1——FJD cents
Webhook attempts1—7over 24 h
Return URL length——2048chars, https

Webhook events

EventSent when
checkout_session.succeededThe wallet confirmed the payment
checkout_session.failedThe wallet declined it
checkout_session.cancelledYou cancelled it, or it expired unpaid

Undelivered webhooks retry at 15 min, 45 min, 2 h, 3 h, 6 h and 12 h, then stop.

Built on the wallets Fiji already uses

Transxact connects to M-PAiSA and MyCash; your customers keep paying the way they already do.

ParameterM-PAiSAMyCash
NetworkVodafoneDigicel
Customer confirms withA PIN and a texted code, on Vodafone's pageA one-time code by text
Fee per payment4% of the paymentFJD 0.50, any amount
Your integrationThe same Checkout Session and the same webhook

Nothing is charged when a payment fails, or in Test mode. Full pricing

What you get from a payment

M-PAiSA fee
−FJD 2.00
You get
FJD 48.00
MyCash fee
−FJD 0.50
You get
FJD 49.50

One checkout and the same signed webhook, whichever way your customer pays.

Before you start

Do I need a developer?

Not to get paid by link. Selling on your own, you make a payment link or QR code on your dashboard and share it, with no code at all; real payments start once we've checked your ID. To take payments inside your own website or app, a developer adds the checkout once, and every payment after that shows up on your dashboard.

Getting paid without code

Is my customers' money safe?

Your customer pays from their own M-PAiSA or MyCash wallet and confirms on their own phone: for M-PAiSA on Vodafone's own page, for MyCash with a one-time code texted to them. A real payment counts only once the wallet confirms it, never on a screenshot. The money then sits with us until your payout: for now our team sends each payout by hand, and your dashboard shows what you're owed until it's sent. We're new, and we say so: real payments are open to verified accounts only.

What does my customer see?

A Transxact checkout page with your name and the amount. They pick M-PAiSA or MyCash and confirm on their phone, as drawn under 'For developers' above and step by step on the M-PAiSA and MyCash pages.

What your customer sees, step by step

Do my customers need a Transxact account?

No. They pay with the M-PAiSA or MyCash wallet they already have, on the hosted checkout you send them to.

What does Test mode cost?

Nothing. Nothing is charged in Test mode, and nothing is charged when a payment fails.

When can I take real payments?

Once your account is verified. Send us your company registration, the company's TIN and a photo of the TIN letter or card, what the business sells and how customers usually pay, your business address, the company's legal name and registration number and the company's directors and anyone owning 30% or more, with a letter of authority from a director if you're not one. Selling on your own, it's a photo of your ID, your tax number and a photo of the card, what you sell and how people usually pay you and your home address instead. We review them. A business then creates a Live mode key on its dashboard: going live is a key swap, the same Checkout Session, the same webhook.

When do I get paid?

Every Monday by default, by bank transfer to the account you set on your dashboard, with the fee already taken out. You can switch to daily, every other Monday, the 1st of each month, or only when you ask. For now our team sends each transfer, so it shows as pending until it's sent.

Can I refund a payment through Transxact?

Not in v1. Neither wallet offers a refund through its API, so a refund to your customer happens outside Transxact.

We're new, and upfront about it.

Build in Test mode now. Once your account is verified, real payments on both wallets are a key swap away. Early accounts help shape what ships next.

Availability
OptionStatusGet it
Test modeOpen todaySign up
Live modeOpen to verified accountsVerify your account
Payment linksLive once verifiedFor sellers
PricingPublishedSee pricing
Start in Test mode, free