Skip to main content
The LigdiCash PHP SDK installs via Composer and works with any PHP backend. Network calls are synchronous. The SDK uses Guzzle as its HTTP client.

Installation

Requirements: PHP ≥ 7.4. Guzzle is installed automatically as a dependency.

Initialization

PHP
Get your api_key and auth_token from the LigdiCash dashboard by creating an API project.

Hosted payin

The customer is redirected to the payment page hosted by LigdiCash. This is the recommended flow for online stores.
PHP
Never open $paymentUrl in an iframe — LigdiCash blocks it. Redirect in the same tab, a new tab, or a popup.
Always leave customer empty (or absent) in hosted payin. If you pass a number, LigdiCash filters the payment page to show only the operators tied to that number.

Direct payin

The customer pays directly from your interface. You must collect their phone number and, depending on the operator, their OTP code.
PHP
The OTP mode varies by operator. For example, with a USSD operator, the customer generates the OTP on their phone before you submit. For an approval-mode operator (e.g. Moov Africa), send "otp" => "" — the customer approves directly in their app. See the operator page for details.

Payout

Send money to a customer — refund, salary, payout.

To the customer’s LigdiCash wallet

PHP

Directly to mobile money

PHP
"type" => "client" uses POST /pay/v01/withdrawal/create (via the LigdiCash wallet). "type" => "merchant" uses POST /pay/v01/straight/payout (direct mobile money, slower). See Payout — Introduction.

Status verification

Call getTransaction with the token stored at creation (not the callback token, which is different).
PHP
In PHP, the type parameter of getTransaction accepts "payin" or "payout" (not "client_payout" or "merchant_payout" as in the Python and JavaScript SDKs).
Fields available on $transaction:
PropertyTypeDescription
statusstring"completed", "pending", "cancelled"
response_codestring"00" success, "01" failure
amountintTransaction amount
operator_idstringOperator identifier
operator_namestringOperator name
customerstringCustomer phone number
tokenstringTransaction token
custom_dataarrayCustom data sent at creation
wikiarrayLinks to the endpoint’s error codes
Never deliver an order solely based on an incoming callback. Always call getTransaction with the token stored at creation to confirm the status on the LigdiCash server side. See Callback security.

Error handling

PHP
Also check $response->response_code after every call: "00" indicates success, "01" an error. On error, read $response->wiki to get the URL with sub-code details.