How payments work
Create a checkout
Your server calls
POST /api/v1/payments/checkouts with pricing, customer details, and redirect URLs. Syncgram returns a checkout_url you redirect your customer to.Customer completes payment
The customer lands on the Syncgram-hosted checkout page, selects a payment method and currency, reviews a quote, and submits payment details. The backend drives the flow — your frontend does nothing at this stage.
Charge is created
When the customer initiates payment, Syncgram creates a charge and routes it through the appropriate payment network. The charge moves through statuses as the payment progresses.
Payment methods
Syncgram Pay supports three categories of payment method:| Method | Description | Example currencies |
|---|---|---|
| Bank transfer | Customer sends a bank transfer to a virtual account number | NGN, GHS, KES |
| Mobile money | Customer pays via a mobile money prompt to their phone | GHS, TZS, UGX |
| Crypto | Customer sends a crypto asset to a wallet address | USDT (TRC-20), USDC |
GET /api/v1/payments/supported-currencies to retrieve the current list of supported currencies, and GET /api/v1/payments/payment-methods for supported payment methods.
Supported currencies
Syncgram Pay supports both fiat and crypto currencies. Fiat currencies include regional currencies such as NGN, GHS, KES, TZS, UGX, and ZAR. Crypto currencies include assets such as USDT_TRC20 and USDC. Your pricing uses a settlement currency — the currency Syncgram credits to your balance. Currently supported settlement currencies are USD and NGN. The customer can pay in any currency you enable; Syncgram handles the conversion.Payment lifecycle
Each charge moves through the following statuses:| Status | Meaning |
|---|---|
PENDING | The charge has been created and is waiting for the customer to send payment. |
PROCESSING | Payment has been received and is being verified or settled by the payment network. |
SUCCEEDED | Payment was confirmed and the full amount was received. The charge is complete. |
ACCEPTED | An underpaid charge was manually accepted. Syncgram settles what was received. |
FAILED | Payment failed or was rejected. No funds were collected. |
UNDERPAID | The customer sent less than the required amount. You can accept or wait for the customer to top up. |
EXPIRED | The checkout or charge expired before payment was completed. |
SUCCEEDED, ACCEPTED, FAILED, and EXPIRED. Once a charge reaches a terminal status it will not change again.
Use webhooks to react to status transitions in real time. Do not poll charge status as your primary mechanism for detecting payment completion.
Test vs live mode
API keys are scoped to either test mode or live mode. Test mode charges never move real money and are isolated from live data. In test mode, use thesimulated_outcome field when creating a checkout to control how the payment resolves:
| Value | Effect |
|---|---|
"success" | Charge moves to SUCCEEDED after a short delay |
"failed" | Charge moves to FAILED after a short delay |
"underpaid" | Charge moves to UNDERPAID after a short delay |
Explore the payments API
Checkouts
Create hosted checkout pages and redirect customers to complete payment.
Charges
Retrieve and list charges, track status history, and handle underpayments.
Refunds
Issue full or partial refunds for completed charges.