Introduction v5.3.1

Powering global payments with secure, enterprise-grade APIs.

This documentation describes the integration procedures and POST protocol usage for e-commerce merchants using the Lipapap Enterprise Payment Platform. Our API implements acquiring payments (purchases) with a robust, secure, and scalable interaction model.

🔐 Security First: To work with the Lipapap API, merchants are required to comply with the Payment Card Industry Data Security Standards (PCI DSS). We enforce strict encryption and signature verification for all requests.

Key Capabilities

  • Global Payments: Support for 20+ currencies and alternative payment methods (APMs).
  • Recurring & Automation: Tokenization, scheduled payments, and Card2Card transfers.
  • Enterprise Security: 3D-Secure, HMAC-SHA256 signatures, and PCI DSS Level 1 compliance.
  • Developer Friendly: Clear request/response models, webhooks, and sandbox testing.

Integration Process

Get started in four simple steps.

1. Merchant Registration

Before accessing the Payment Platform, provide the following data to your account manager:

DataDescription
IP listList of IP addresses from which requests will be sent.
Callback URLURL for receiving processing result notifications. Max 255 characters.
Contact emailEmail of the person monitoring transactions and refunds.

After registration, you will receive your credentials:

CredentialDescription
CLIENT_KEYUnique UUID to identify your account.
SECRET_KEYPrivate key for signature generation. Keep confidential.
PAYMENT_URLEndpoint URL for API requests.

2. Protocol Mapping

Ensure the S2S CARD protocol is mapped in your account. Payments cannot be processed without proper mapping.

3. API Interaction

Send HTTPS POST requests to PAYMENT_URL with the required parameters. All responses are JSON-encoded.

3D-Secure (3DS) Flow

For 3DS-enabled transactions, the API returns a redirect response. You must redirect the cardholder to the provided redirect_url with the redirect_params using the specified redirect_method (POST/GET). After verification, the cardholder returns to your term_url_3ds.

{
    "action": "SALE",
    "client_key": "9e48fe5c-7653-824c-71a3-ad155d18ad27",
    "order_id": "order-12345",
    "order_amount": "99.99",
    "order_currency": "USD",
    "term_url_3ds": "https://your-site.com/3ds-return",
    "hash": "a1b2c3d4..."
}
{
    "action": "SALE",
    "result": "REDIRECT",
    "status": "3DS",
    "trans_id": "txn-67890",
    "redirect_url": "https://acs.bank.com/3ds",
    "redirect_method": "POST",
    "redirect_params": { "PaReq": "...", "MD": "..." }
}

4. Possible Actions

ActionDescription
SALECreates a SALE or AUTH transaction.
CAPTURECaptures a previously authorized transaction.
CREDITVOIDCreates a REFUND or REVERSAL.
RECURRING_SALECreates a SALE using stored cardholder data.
CARD2CARDTransfers funds between two credit cards.
GET_TRANS_STATUSRetrieves the status of a transaction.

Sale / Auth / Capture

Single Message (SMS) and Dual Message (DMS) transactions.

SALE Request

Use auth=Y for AUTH transactions (DMS). For sub-accounts, specify channel_id.

⚠️ Important: In cascading mode, only the final attempt callback is sent unless a redirection is required.

Request Parameters

ParameterDescriptionRequired
actionSALEYes
client_keyYour unique UUIDYes
order_idYour transaction ID (max 255 chars)Yes
order_amountAmount (e.g., 100.99)Yes
order_currency3-letter currency code (e.g., USD)Yes
card_numberCredit card numberYes*
card_exp_monthExpiry month (MM)Yes*
card_exp_yearExpiry year (YYYY)Yes*
card_cvv2CVV/CVC2Yes
payer_emailCustomer emailYes
payer_ipCustomer IP addressYes
term_url_3ds3DS return URLYes
authY for AUTH onlyNo
hashSignature (Formula 1)Yes

* Optional if card_token is provided.

Response (Successful Sale)

{
    "action": "SALE",
    "result": "SUCCESS",
    "status": "SETTLED",
    "order_id": "order-12345",
    "trans_id": "txn-67890",
    "amount": "99.99",
    "currency": "USD",
    "descriptor": "LIPAPAP*Merchant"
}
{
    "action": "SALE",
    "result": "DECLINED",
    "status": "DECLINED",
    "order_id": "order-12345",
    "trans_id": "txn-67890",
    "decline_reason": "Insufficient funds"
}

CAPTURE Request

Captures a previously authorized transaction (auth=Y).

ParameterDescriptionRequired
actionCAPTUREYes
client_keyYour unique UUIDYes
trans_idPlatform transaction ID from the AUTHYes
amountCapture amount (optional, defaults to full amount)No
hashSignature (Formula 2)Yes

Alternative Payments (APM)

Mobile money, e-wallets, and local payment methods.

MOMOAPM Request

Processes payments using mobile money and alternative payment methods. Supports 20+ currencies.

📱 Pay attention: Ensure payer_phone is valid for the selected country and mobile money provider.

Request Parameters

ParameterDescriptionRequired
actionMOMOAPMYes
client_keyYour unique UUIDYes
order_idYour transaction IDYes
order_amountAmount (e.g., 113.00)Yes
order_descriptionTransaction descriptionYes
payer_phoneCustomer phone (e.g., +2547XXXXXXXX)Yes
payer_emailCustomer emailYes
payer_country2-letter country code (e.g., KE)Yes
term_url_3dsReturn URL after paymentYes
timestampUnix timestamp (milliseconds)Yes
hashSignature (Formula 1)Yes

Supported Currencies

CurrencyCodeCountry
Kenyan ShillingKESKenya
Ugandan ShillingUGXUganda
Nigerian NairaNGNNigeria
Philippine PesoPHPPhilippines
Indian RupeeINRIndia
US DollarUSDEcuador
Mexican PesoMXNMexico
Brazilian RealBRLBrazil
Ghanaian CediGHSGhana
Rwandan FrancRWFRwanda

Sample Response

{
    "action": "MOMOAPM",
    "result": "REDIRECT",
    "status": "REDIRECT",
    "order_id": "pay-1643-11001",
    "trans_id": "pay-1643-11001",
    "amount": "113.00",
    "currency": "PHP",
    "txMsg": "Transaction successful",
    "redirect_url": "https://lipapap.net/pgate/refer.php?token=...",
    "redirect_method": "GET"
}

Refund / Reverse

CreditVOID transactions for full or partial refunds.

CREDITVOID Request

Completes a REFUND (full/partial) or REVERSAL transaction.

ParameterDescriptionRequired
actionCREDITVOIDYes
client_keyYour unique UUIDYes
trans_idPlatform transaction ID to refundYes
amountRefund amount (optional, defaults to full)No
hashSignature (Formula 2)Yes

Response

{
    "action": "CREDITVOID",
    "result": "ACCEPTED",
    "order_id": "order-12345",
    "trans_id": "txn-67890"
}
{
    "action": "CREDITVOID",
    "result": "SUCCESS",
    "status": "REFUND",
    "order_id": "order-12345",
    "trans_id": "txn-67890",
    "amount": "99.99",
    "hash": "a1b2c3d4..."
}

Void / Debit / Credit2Card

Cancel, debit, or transfer funds.

VOID Request

Cancels a previously authorized transaction.

ParameterDescriptionRequired
actionVOIDYes
client_keyYour unique UUIDYes
trans_idPlatform transaction ID to voidYes
hashSignature (Formula 2)Yes

DEBIT Request

Transfers funds from a credit card to a merchant's account.

ParameterDescriptionRequired
actionDEBITYes
client_keyYour unique UUIDYes
order_idYour transaction IDYes
order_amountAmount (e.g., 500.00)Yes
card_numberCredit card numberYes
card_exp_monthExpiry monthYes
card_exp_yearExpiry yearYes
payer_ipCustomer IP addressYes
hashSignature (Formula 1)Yes

CREDIT2CARD Request

Transfers funds from a merchant's account to a credit card.

ParameterDescriptionRequired
actionCREDIT2CARDYes
client_keyYour unique UUIDYes
order_idYour transaction IDYes
order_amountAmount (e.g., 250.00)Yes
card_numberReceiver's credit card numberYes
card_exp_monthReceiver's expiry monthYes
card_exp_yearReceiver's expiry yearYes
payer_ipCustomer IP addressYes
hashSignature (Formula 1)Yes

Recurring Sale & Card2Card

Automated payments and card-to-card transfers.

RECURRING_SALE Request

Implements SALE or AUTH transactions using a stored recurring_token from a previous transaction with recurring_init=Y.

🔄 Important: In cascading mode, only the final attempt callback is sent.
ParameterDescriptionRequired
actionRECURRING_SALEYes
client_keyYour unique UUIDYes
order_idYour transaction IDYes
order_amountAmountYes
recurring_tokenToken from a previous transactionYes
payer_emailCustomer emailYes
payer_ipCustomer IP addressYes
authY for AUTH onlyNo
hashSignature (Formula 1)Yes

CARD2CARD Request

Transfers money between two credit cards.

ParameterDescriptionRequired
actionCARD2CARDYes
client_keyYour unique UUIDYes
order_idYour transaction IDYes
order_amountAmountYes
sender_card_numberSender's card numberYes
sender_card_exp_monthSender's expiry monthYes
sender_card_exp_yearSender's expiry yearYes
sender_card_cvv2Sender's CVVYes
receiver_card_numberReceiver's card numberYes
payer_ipCustomer IP addressYes
term_url_3ds3DS return URLYes
hashSignature (Formula 1)Yes

Recurring Schedules

CREATE, PAUSE, RUN, DELETE, and INFO operations.

CREATE_SCHEDULE Request

Creates a recurring payment schedule.

ParameterDescriptionRequired
actionCREATE_SCHEDULEYes
client_keyYour unique UUIDYes
schedule_idUnique schedule IDYes
recurring_tokenToken from a previous transactionYes
amountAmount per paymentYes
currency3-letter currency codeYes
start_dateSchedule start date (yyyy-MM-dd)Yes
intervalDAILY, WEEKLY, MONTHLY, YEARLYYes
interval_countNumber of intervals between paymentsYes
hashSignature (Formula 1)Yes

Schedule Management

ActionDescriptionRequired Params
PAUSE_SCHEDULESuspends a scheduleschedule_id
RUN_SCHEDULEResumes a paused scheduleschedule_id
DELETE_SCHEDULEDeletes a scheduleschedule_id
SCHEDULE_INFORetrieves schedule detailsschedule_id
DESCHEDULETerminates schedule and removes tokenschedule_id

All management actions require client_key, action, schedule_id, and hash (Formula 2).

Transaction Status

Query transaction and order details.

GET_TRANS_STATUS

Retrieves the status of a specific transaction.

ParameterDescriptionRequired
actionGET_TRANS_STATUSYes
client_keyYour unique UUIDYes
trans_idPlatform transaction IDYes
hashSignature (Formula 2)Yes

GET_TRANS_DETAILS

Retrieves full order details including all associated transactions.

ParameterDescriptionRequired
actionGET_TRANS_DETAILSYes
client_keyYour unique UUIDYes
order_idMerchant transaction IDYes
hashSignature (Formula 2)Yes

Status Codes

StatusDescription
SETTLEDTransaction completed successfully.
PENDINGAwaiting capture (AUTH transaction).
DECLINEDTransaction was declined.
3DSAwaiting 3D-Secure validation.
REFUNDTransaction has been refunded.
REVERSALTransaction has been reversed.
VOIDTransaction has been voided.

Appendix & Error Codes

Signature formulas, error codes, and testing.

Formula 1: Request Signature

Signature = HMAC-SHA256(
    CONCAT(
        client_key,
        order_id,
        order_amount,
        order_currency,
        order_description,
        card_number,
        card_exp_month,
        card_exp_year,
        payer_email,
        payer_phone,
        payer_ip,
        secret_key
    ),
    secret_key
)
                

Non-required parameters not provided should be replaced with an empty string.

Formula 2: Response/Callback Signature

Signature = HMAC-SHA256(
    CONCAT(
        action,
        result,
        status,
        order_id,
        trans_id,
        trans_date,
        amount,
        currency,
        decline_reason,
        secret_key
    ),
    secret_key
)
                

If decline_reason is not present, use an empty string.

Error Codes

CodeDescription
100Invalid client_key
101Invalid signature
102Missing required parameter
200Transaction not found
202Transaction declined by issuer
300Invalid card details
302Insufficient funds
500Token not found
600System error — contact support

Testing

Card NumberExpiryResult
4111 1111 1111 111101/2026Successful SALE → SETTLED
4000 0000 0000 000201/2026Declined → DECLINED
5555 5555 5555 444401/20263DS Required → REDIRECT