An invoice object must be attached to the basic request creating the transaction as described in the section Creating a payment. This object consists of a buyer object and a positions array with the following parameters:

buyer object:

Parameter Type Parameter required Description
invoiceId string YES Invoice number
type string YES It takes the value PERSON individual buyer or COMPANY *company
email string(200) YES E-mail address in the format compliant with RFC 5322 and RFC 6531
fullName string(200) YES Buyer's name/company name,
available characters: A-Za-z0-9#&_-"',.\/ space (0x20) and the UNICODE characters from the range 00C0 - 02C0 (e.g. Polish diacritic characters), 0400 - 04FF (Cyrillic script)
street string(200) YES Street
city string(100) YES City
postalCode string(30) YES Postal code
countryCodeAlpha2 string(2) YES Country code Alpha2
idCountryCodeAlpha2 string(2) NO Alpha2 country code identifier. Required for the VAT_ID value of the idType parameter.
idType string NO Identification number type. Required for the COMPANY value of the type parameter. Takes the value of ID TIN or VAT_ID CRN
idNumber string(30) NO CRN or TIN number. Required for the COMPANY value of the type parameter

positions array:

Parameter Type Parameter required Description
name string YES Product name
code string YES Product code
quantity number YES Quantity. The minimum value is 0
unit string YES Unit
grossAmount integer YES Gross unit value
taxStake string YES Tax rate. Available values: TAX_23, TAX_22, TAX_8, TAX_7, TAX_5, TAX_3, TAX_0, TAX_EXEMPT, TAX_NOT_LIABLE, TAX_REVERSE_CHARGE, TAX_EXCLUDING
taxAmount integer YES Value of tax in pennies
discountAmount integer NO Discount value

Example data structure

$invoiceData = [
    "invoiceId" => "04/12/23",
    "buyer"     => [
        "type"                => "COMPANY",
        "idType"              => "VAT_ID",
        "idNumber"            => "5354235387",
        "email"               => "nazwafirmy@example.com",
        "fullName"            => "Nazwa firmy",
        "street"              => "Ulica",
        "city"                => "Miasto",
        "postalCode"          => "12-345",
        "countryCodeAlpha2"   => "PL",
        "idCountryCodeAlpha2" => "PL"
    ],
    "positions" => [
        [
            "name"        => "Produkt",
            "code"        => "produkt-01",
            "quantity"    => 1,
            "unit"        => "Sztuki",
            "taxStake"    => "TAX_23",
            "grossAmount" => 12300,
            "taxAmount" =>  2300
        ],
    ],
];

The above parameters should be taken into account when calculating the signature in accordance with the section Authorisation

Preparing the invoice object

Using the PHP function

The data collected from the above parameters should be encoded using the function: base64_encode(gzencode(json_encode($invoiceData), 5));

where:

$invoiceData - previously prepared parameters

$invoiceData = [
    "invoiceId" => "04/12/23",
    "buyer"     => [
        "type"                => "COMPANY",
        "idType"              => "VAT_ID",
        "idNumber"            => "5354235387",
        "email"               => "nazwafirmy@example.com",
        "fullName"            => "Nazwa firmy",
        "street"              => "Ulica",
        "city"                => "Miasto",
        "postalCode"          => "12-345",
        "countryCodeAlpha2"   => "PL",
        "idCountryCodeAlpha2" => "PL"
    ],
    "positions" => [
        [
            "name"        => "Produkt",
            "code"        => "produkt-01",
            "quantity"    => 1,
            "unit"        => "Sztuki",
            "taxStake"    => "TAX_23",
            "grossAmount" => 12300,
            "taxAmount" =>  2300
        ],
    ],
];
$invoice = base64_encode(gzencode(json_encode($invoiceData), 5));

$fields = [
    'serviceId' => '63f574ed-d90d-4abe-9cs1-39117584a7b7',
    'merchantId' => '6yt3gjtm9p1odfgx8491',
    'amount' => '12300',
    'currency' => 'PLN',
    'orderId' => 'Split payment',
    'orderDescription' => 'Split payment',
    'customerFirstName' => 'Jan',
    'customerLastName' => 'Kowalski',
    'customerEmail' => 'jan.kowalski@example.com',
    'customerPhone' => '501501501',
    'visibleMethod' => 'wt',
    'urlSuccess' => 'https://domain.com/success',
    'urlFailure' => 'https://domain.com/failure',
    'urlReturn' => 'https://domain.com/return',
    'invoice' => $invoice,
];
$serviceKey = 'eAyhFLuHgwl5hu-32GM8QVlCVMWRU0dGjH1c';
$hashMethod = 'sha256';
$signature= createSignature(
    $fields,
    $serviceKey,
    $hashMethod
) . ';' . $hashMethod;

Example of an encoded invoice object

H4sIAAAAAAAACm2QXU+DMBSG/4rp9eaAQjRcSfBmiUOSodE4s3TQaUM/EE51jPDfPe3inZfneT/6phMR+tuImq8bkpIg3q3CaLeKKFmQgx15T9KJwNhxFPPHTZkVr6iIprqg56zar+89Kaw6ODtJaBJHNKG3N8i5YkIi1Oz8w46iV+MdPzHVSX5dG4WGo5WyYMqVFc5z5U0oDNBzDoifpKgZglrAiOdGsAEM3p0ZgMncNC4bRksaJ85lrIZ+dDiT3SeLUCwf/ML8f2n2VQKE0QNJ3ybc6ueUvWlsC77Tv9FdwDIIkX1ZpsEvChfEauGWbs9gW4EisNMWWOtCVfay97/50ZthyJTbgJmIBoH3/REH5vf5FyK2JcWPAQAA

Example HTML form content

<input type="hidden" value="63f574ed-d90d-4abe-9cs1-39117584a7b7" name="serviceId">
<input type="hidden" value="6yt3gjtm9p1odfgx8491" name="merchantId">
<input type="hidden" value="12300" name="amount">
<input type="hidden" value="PLN" name="currency">
<input type="hidden" value="Split payment" name="orderId">
<input type="hidden" value="Split payment" name="orderDescription">
<input type="hidden" value="Jan" name="customerFirstName">
<input type="hidden" value="Kowalski" name="customerLastName">
<input type="hidden" value="jan.kowalski@example.com" name="customerEmail">
<input type="hidden" value="501501501" name="customerPhone">
<input type="hidden" value="wt" name="visibleMethod">
<input type="hidden" value="https://domain.com/success" name="urlSuccess">
<input type="hidden" value="https://domain.com/failure" name="urlFailure">
<input type="hidden" value="https://domain.com/return" name="urlReturn">
<input type="hidden" value="<?= $invoice ?>" name="invoice">