PHPackages                             vpos/vpos - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Payment Processing](/categories/payments)
4. /
5. vpos/vpos

ActiveLibrary[Payment Processing](/categories/payments)

vpos/vpos
=========

Payments made easy

14522[1 issues](https://github.com/v-pos/vpos-php/issues)PHP

Since Jan 5Pushed 4y ago2 watchersCompare

[ Source](https://github.com/v-pos/vpos-php)[ Packagist](https://packagist.org/packages/vpos/vpos)[ RSS](/packages/vpos-vpos/feed)WikiDiscussions master Synced 1w ago

READMEChangelogDependenciesVersions (18)Used By (0)

vPOS PHP
========

[](#vpos-php)

[![vPOS](https://github.com/v-pos/vpos-php/raw/master/assets/logo.png)](#/)

[![](https://camo.githubusercontent.com/ee8628d6331de3eb9622d9734f244436ca64de799fd01115467d2f157095bbcc/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f76504f532d4f70656e536f757263652d626c75652e737667)](https://www.vpos.ao)

This php library helps you easily interact with the vPOS API, Allowing merchants apps/services to request a payment from a client through his/her mobile phone number.

The service currently works for solutions listed below:

EMIS - GPO (Multicaixa Express)

Want to know more about how we are empowering merchants in Angola? See our [website](https://vpos.ao)

### Features

[](#features)

- Simple interface
- Uniform plain old objects are returned by all official libraries, so you don't have to serialize/deserialize the JSON returned by our API.

### Documentation

[](#documentation)

Does interacting directly with our API service sound better to you? See our documentation on [developer.vpos.ao](https://developer.vpos.ao)

Installation
------------

[](#installation)

```
compose require vpos/vpos
```

### Configuration

[](#configuration)

This php library requires you set up the following environment variables on your machine before interacting with the API using this library:

VariableDescriptionRequired`GPO_POS_ID`The Point of Sale ID provided by EMIStrue`GPO_SUPERVISOR_CARD`The Supervisor card ID provided by EMIStrue`MERCHANT_VPOS_TOKEN`The API token provided by vPOStrue`PAYMENT_CALLBACK_URL`The URL that will handle payment notificationsfalse`REFUND_CALLBACK_URL`The URL that will handle refund notificationsfalseDon't have this information? [Talk to us](suporte@vpos.ao)

Given you have set up all the environment variables above with the correct information, you will now be able to authenticate and communicate effectively with our API using this library.

The next section will show the various payment actions that can be performed by you, the merchant.

### How to instantiate vPOS

[](#how-to-instantiate-vpos)

To create an instance of a vPOS merchant see argument table and a simple example below.

#### Constructor Arguments

[](#constructor-arguments)

ArgumentDescriptionType`token`Token generated at [vPOS](https://merchant.vpos.ao) dashboard`string``pos_id`Merchant POS ID provided by EMIS`string``supervisor_card`Merchant Supervisor Card number provided by EMIS`string``payment_callback_url`Merchant application JSON endpoint to accept the callback payment response`string``refund_callback_url`Merchant application JSON endpoint to accept the callback refund response`string`#### Example

[](#example)

```
$token = "YOUR VPOS TOKEN";
$pos_id = "YOUR GPO POS ID";
$payment_callback_url = "YOUR PAYMENT CALLBACK URL";
$refund_callback_url = "YOUR REFUND CALLBACK URL";
$supervisor_card = "YOUR GPO SUPERVISOR CARD";

$merchant = new Vpos($token, $pos_id, $payment_callback_url, $refund_callback_url, $supervisor_card);
```

### Get a specific Transaction

[](#get-a-specific-transaction)

Retrieves a transaction given a valid transaction ID.

```
use Vpos\Vpos\Vpos;

$merchant = new Vpos($token, $pos_id, $payment_callback_url, $refund_callback_url, $supervisor_card);
$transaction = $merchant->getTransaction("9kOmKYUWxN0Jpe4PBoXzE");
```

ArgumentDescriptionType`id`An existing Transaction ID`string`### New Payment Transaction

[](#new-payment-transaction)

Creates a new payment transaction given a valid mobile number associated with a `MULTICAIXA` account and a valid amount.

```
use Vpos\Vpos\Vpos;

$merchant = new Vpos($token, $pos_id, $payment_callback_url, $refund_callback_url, $supervisor_card);
$payment = $merchant->newPayment(customer: "925889553", amount: "112.58");
```

ArgumentDescriptionType`mobile`The mobile number of the client who will pay`string``amount`The amount the client should pay, eg. "259.99", "259000.00"`string`### Request Refund

[](#request-refund)

Given an existing `parent_transaction_id`, request a refund.

```
use Vpos\Vpos\Vpos;

$merchant = new Vpos($token, $pos_id, $payment_callback_url, $refund_callback_url, $supervisor_card);
refund = $merchant->newRefund(id: "9kOmKYUWxN0Jpe4PBoXzE");
```

ArgumentDescriptionType`id`The ID of transaction you wish to refund`string`### Poll Transaction Status

[](#poll-transaction-status)

Poll the status of a transaction given a valid `request_id`.

Note: The `request_id` or simply `id` in this context is essentially the `transaction_id` of an existing request.

```
use Vpos\Vpos\Vpos;

$merchant = new Vpos($token, $pos_id, $payment_callback_url, $refund_callback_url, $supervisor_card);
$request = $merchant->getRequest(id: "9kOmKYUWxN0Jpe4PBoXzE");
```

ArgumentDescriptionType`request_id`The ID of transaction you wish to poll`string`### Have any doubts?

[](#have-any-doubts)

In case of any doubts, bugs, or the like, please leave an issue. We would love to help.

License
-------

[](#license)

The library is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).

###  Health Score

24

—

LowBetter than 32% of packages

Maintenance19

Infrequent updates — may be unmaintained

Popularity17

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity42

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 85.1% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/5418935?v=4)[Sergio Maziano](/maintainers/smaziano)[@smaziano](https://github.com/smaziano)

---

Top Contributors

[![AlexJuca](https://avatars.githubusercontent.com/u/5229195?v=4)](https://github.com/AlexJuca "AlexJuca (86 commits)")[![smaziano](https://avatars.githubusercontent.com/u/5418935?v=4)](https://github.com/smaziano "smaziano (15 commits)")

---

Tags

expressmulticaixaonlinepaymentvpos

### Embed Badge

![Health badge](/badges/vpos-vpos/health.svg)

```
[![Health](https://phpackages.com/badges/vpos-vpos/health.svg)](https://phpackages.com/packages/vpos-vpos)
```

###  Alternatives

[omnipay/paypal

PayPal gateway for Omnipay payment processing library

3156.8M53](/packages/omnipay-paypal)[eduardokum/laravel-boleto

Biblioteca com boletos para o laravel

626351.9k2](/packages/eduardokum-laravel-boleto)[tbbc/money-bundle

This is a Symfony bundle that integrates moneyphp/money library (Fowler pattern): https://github.com/moneyphp/money.

1961.9M](/packages/tbbc-money-bundle)[2checkout/2checkout-php

2Checkout PHP Library

83740.3k2](/packages/2checkout-2checkout-php)[smhg/sepa-qr-data

Generate QR code data for SEPA payments

61717.2k5](/packages/smhg-sepa-qr-data)[omnipay/dummy

Dummy driver for the Omnipay payment processing library

271.2M33](/packages/omnipay-dummy)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
