Client for the SwissBilling API

1.0.0 2020-03-20 13:46 UTC

This package is auto-updated.

Last update: 2021-11-15 16:56:46 UTC


An API client for SwissBilling written in PHP.

ATTENTION: This repo is still in early development and subject to changes!


composer require terminal42/swissbilling-api



Use the Client object to interact with the API. All API types have DocBlock properties, so a smart IDE (like PhpStorm) will give you autocomplete support on the properties.

use Terminal42\SwissbillingApi\Client;
use Terminal42\SwissbillingApi\Api\ApiFactory;
use Terminal42\SwissbillingApi\Type\Debtor;
use Terminal42\SwissbillingApi\Type\Merchant;
use Terminal42\SwissbillingApi\Type\InvoiceItem;
use Terminal42\SwissbillingApi\Type\Transaction;
use Terminal42\SwissbillingApi\Type\TransactionStatus;

$client = new Client(new ApiFactory());

$merchant = new Merchant('user', 'password', 'success_url', 'cancel_url', 'error_url');

$transaction = new Transaction();
// fill in the required transaction properties
// $transaction->amount = 100;

$debtor = new Debtor();
// fill in the required debtor properties
// $transaction->firstname = 'John';
// $transaction->lastname = 'Doe';

$items = [
    new InvoiceItem(),

/** @var TransactionStatus $status */
$status = $client->request($transaction, $debtor, $items, $merchant);


Multiple calls / Dependency Injection

You can pass the merchant information to the Client instead of passing it on every method call, e.g. if using this in a Symfony bundle with dependency injection.

$merchant = new Merchant('user', 'password', 'success_url', 'cancel_url', 'error_url');
$client = new Client(new ApiFactory(), $merchant);

// No need to pass the merchant anymore
$status = $client->request($transaction, $debtor, $items);

Software Best Practice

This repository is following SemVer. If you rely on a stable API, make sure to install a version tag.


Licensed under the MIT license.