Paymill PHPLib

Installs: 65 519

Dependents: 7

Stars: 97

Watchers: 59

Forks: 44

Open Issues: 6


Build StatusLatest Stable VersionTotal Downloads


This wrapper is using the api v2.1 launched in June 2014. If you wish to use the old api v2.0 please use the wrapper in branch v2:

How to test cards and errors

There are different credit card numbers, frontend and backend error codes, which can be used for testing. For more information, please read our testing reference.

How to run unit and integration tests

Just run:

ant test

Getting started with PAYMILL

If you don't already use Composer, then you probably should read the installation guide

Please include this library via Composer in your composer.json and execute composer update to refresh the autoload.php.

  "repositories": [
      "type": "vcs",
      "url": ""
  "require": {
    "paymill/paymill": "dev-master"

If you don't want to use composer, paymill-php library provides its own autoload script. You have to include the autoload script in all files, in which you are going to use the PAYMILL library.

Lets say you have two files, which are going to use the PAYMILL lib. First one is located in the project root, the other one is in the app folder. You have downloaded the PAYMILL library in your project root folder under the name paymill-php.

To load the PAYMILL library from the file, which is located in your project root folder, you need to require PAYMILL's autoload script like this:

require './paymill-php/autoload.php';

To load the PAYMILL library from the file, which is located in the app folder, you need to require PAYMILL's autoload script like this:

require '../paymill-php/autoload.php';
  1. Instantiate the request class with the following parameters: $apiKey: First parameter is always your private API (test) Key
$request = new Paymill\Request($apiKey);
  1. Instantiate the model class with the parameters described in the API-reference:
$payment = new \Paymill\Models\Request\Payment();
  1. Use your desired function:
$response  = $request->create($payment);
$paymentId = $response->getId();

It recommend to wrap it into a "try/catch" to handle exceptions like this:

try {
  $response  = $request->create($payment);
  $paymentId = $response->getId();
} catch(\Paymill\Services\PaymillException $e){
  //Do something with the error informations below

Receiving Response

This section shows diffrent ways how to receive a response. The followings examples show how to get the Id for a transaction.

  1. The default response is one of the response-models.
$response  = $request->create($payment);
  1. getLastResponse() returns the unconverted response from the API.
$response = $request->getLastResponse();
  1. getJSONObject returns the response as stdClass-Object.
$response = $request->getJSONObject();

Using Root certificate

If the error below occurres on your system please follow the steps below to configure curl.

Paymill\Services\PaymillException: SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

Windows / OS X / Linux

  1. Download and save it on your server.
  2. Open php.ini with an editor and add the line curl.cainfo=PathToYourCACertFile
  3. Restart your Webserver

Update Root certificate on Linux(ubuntu)

  1. Run sudo update-ca-certificates
  2. Restart your Webserver


  • bugfix: #92 remove typecheck for http response code


For further information, please refer to our official PHP library reference: