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">