eversend/eversend-php-sdk

Eversend SDK for merchants

v1.0.1 2022-11-25 11:49 UTC

This package is auto-updated.

Last update: 2025-06-25 17:10:33 UTC


README

Packagist Version Packagist License Packagist Downloads

PHP SDK for Eversend payments API

Table of Contents

  1. Installation
  2. Initialization
  3. Usage
  4. Contribution Guidelines
  5. License

Installation

composer require eversend/eversend-php-sdk

Usage

use Eversend\Eversend

$eversendClient = new Eversend(
    clientId= 'clientId',
    clientSecret= 'clientSecret',
    version=1
);

You can get your clientId and clientSecret from the settings section in the dashboard

Usage

Wallets

Get all wallets

$wallets = eversendClient.wallets().list();

Get one wallet

$usdWallet = eversendClient.wallets().get(walletId: "USD");

Transactions

Get all transactions

$transactions = eversendClient.transactions().list(page: 1, limit: 10);

If page and limit are not set, the default of 1 and 10 are used respectively.

Get one transaction

$transaction = eversendClient.transactions().get(
    transactionId: "EVS12345678"
);

Exchange

To exchange from one wallet to another, you first have to generate a quotation. This returns a token with a 30s timeout that you can use to make the exchange.

Get exchange quotation

$quotation = eversendClient.exchange().createQuotation(
    from: "USD", to: "UGX", amount: 10.0
);

Exchange currency

$exchange = eversendClient.exchange().createExchange(
    token: "dhhsggajjshhdhdhd",
    transactionRef: "EVS-12345678", // optional field
);

Beneficiaries

Get beneficiaries

$beneficiaries = eversendClient.beneficiaries.list(
    page: 1,
    limit: 10,
);

If page and limit are not set, the default of 1 and 10 are used respectively.

Search beneficiaries

$beneficiaries = eversendClient.beneficiaries().list(
    search: "Okello",
    page: 1,
    limit: 10,
);

Get single beneficiary

$beneficiary = eversendClient.beneficiaries().get(
    beneficiaryId: 100
);

Create a beneficiary

$beneficiary = eversendClient.beneficiaries.create(
    firstName: "John",
    lastName: "Okello",
    country: "UG", // Alpha-2 country code
    phoneNumber: "+256712345678", // Should be in international format
    bankAccountName: "John Okello",
    bankAccountNumber: "12345678",
    bankName: "Stanbic Bank",
    bankCode: 1234 // You can get the bank code from payouts.getDeliveryBanks()
);

Note that all bank fields are optional if bank payments will not be required

Edit a beneficiary

$beneficiary = eversendClient.beneficiaries.update(
    beneficiaryId: 100,
    firstName: "John",
    lastName: "Okello",
    country: "UG", // Alpha-2 country code
    phoneNumber: "+256712345678", // Should be in international format
    bankAccountName: "John Okello",
    bankAccountNumber: "12345678",
    bankName: "Stanbic Bank",
    bankCode: 1234 // You can get the bank code from payouts.getDeliveryBanks()
);

Note that all bank fields are optional if bank payments will not be required

Delete a beneficiary

$beneficiary = eversendClient.beneficiaries.delete(
    beneficiaryId: 100
);

Collections

Get collection fees

$collectionFees = eversendClient.collections().getFees(
    amount: 1000,
    currency: "KES",
    method: "momo"
);

Get collection OTP

Required when initiating mobile money collections

$collectionOTP = eversendClient.collections().getOTP(
    phone: "+256712345678"
);

Initiate Mobile Money collection

eversendClient.collections().initiateMomo(
    phone: "+256712345678",
    amount: 1000,
    country: "UG",
    currency: "UGX",
    pin: 123456, // From phone number passed in Get Collection OTP
    pinId: "dg524fhsgfde", // From Get Collection OTP
    transactionRef: "EVS-12345678", // Optional transaction ref generated by you
    customer: { name: "John Okello" } // Optional customer object with your metadata
);

Payouts

Get payout quotation

$quotation = eversendClient.payouts.getQuotation(
    amount: 100,
    amountType: "SOURCE", // amountType can be SOURCE or DESTINATION
    sourceWallet: "USD",
    destinationCountry: "KE",
    destinationCurrency: "KES"
);

amountType refers to whether you want amount to represent sourceWallet (SOURCE) or destinationCurrency (DESTINATION)

Pay existing beneficiary

$payout = eversendClient.payouts.initiate(
    beneficiaryId: 100,
    quotationToken: "token",
    transactionRef: "EVS-12345678" // Optional transaction ref generated by you
);

Pay new beneficiary

$payout = eversendClient.payouts.initiate({
    firstName: "John",
    lastName: "Okello",
    country: "UG", // Alpha-2 country code
    phoneNumber: "+256712345678", // Should be in international format
    bankAccountName: "John Okello",
    bankAccountNumber: "12345678",
    bankName: "Stanbic Bank",
    bankCode: 1234, // You can get the bank code from payouts.getDeliveryBanks()
    quotationToken: "token",
    transactionRef: "EVS-12345678" // Optional transaction ref generated by you
});

Get delivery countries

$countries = eversendClient.payouts.countries()

Get delivery banks

$banks = eversendClient.payouts.banks(
    country: "UG"
);

Contribution Guidelines

Contributions are welcome and encouraged. Learn more about our contribution guidelines here

License

MIT © Eversend