# ING Księgowość This option is available when the ING Księgowość service is **enabled**. An `invoice` object must be attached to the basic request creating the transaction as described in the section [Creating a payment](#topic-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 | |-------------------|-----------------------------------------------|-|-| | `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 | | `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` | | `discountAmount` | integer | `NO` | Discount value | In the case of tax exemption, the relevant data should be provided in the request using the `basisForVatExemption` object with the following parameters: | Parameter | Type | Parameter required | Description | |-----------|--------|--------------------|-------------| | `type` | string | `NO` | **Available values:**
`DENTAL_TECHNICAN_SERVICES`,
`DOCTOR_DENTIST_SERVICES`,
`PHYSIOTHERAPY_SERVICES`,
`NURSING_SERVICES`,
`PSYCHOLOGICAL_SERVICES`,
`MEDICAL_TRANSPORT_SERVICES`,
`CARE_SERVICES`,
`TUTORING`,
`TEACHING_FOREIGN_LANGUAGES`,
`ARTISTS`,
`RENTING_PROPERTY`,
`INSURANCE_SERVICES`,
`CREDITS_AND_LOANS_SERVICES`,
`GUARANTIEES`,
`SPECIAL_CONDITIONS_FOR_EXEMPTION`,
`UE_TRANSACTIONS`,
`SUBJECTIVE_EXEMPTIONS`,
`OTHER`,
`OTHER_OBJECTIVE_EXEMPTIONS` | | `text` | string | `NO` | Description. This parameter is required when the value `OTHER` is specified in the `type` parameter. | Additionally, it is possible to specify whether the invoice should be sent automatically using the parameter: | Parameter | Type | Parameter required | Description | |----------------|---------|--------------------|------------------------------| | `issueInvoice` | boolean | `NO` | Automatic invoice sending | ## Example data structure ```php $invoiceData = [ "buyer" => [ "type" => "PERSON", "email" => "jan.kowalski@example.com", "fullName" => "Jan Kowalski", "street" => "Street", "city" => "City", "postalCode" => "12-345", "countryCodeAlpha2" => "PL", ], "positions" => [ [ "name" => "Produkt", "code" => "produkt-01", "quantity" => 1, "unit" => "Sztuki", "taxStake" => "TAX_23", "grossAmount" => 12300, ], ], ]; ``` The above parameters should be taken into account when calculating the signature in accordance with the section [Authorisation](#topic-authorisation). ## Preparing the invoice object ### Using PHP functions The data collected from the above parameters should be encoded using the following functions: ``` base64_encode(gzencode(json_encode($invoiceData), 5)); ``` where: `$invoiceData` - previously prepared parameters ```php $invoiceData = [ "buyer" => [ "type" => "PERSON", "email" => "jan.kowalski@example.com", "fullName" => "Jan Kowalski", "street" => "Street", "city" => "City", "postalCode" => "12-345", "countryCodeAlpha2" => "PL", ], "positions" => [ [ "name" => "Produkt", "code" => "produkt-01", "quantity" => 1, "unit" => "Sztuki", "taxStake" => "TAX_23", "grossAmount" => 12300, ], ], ]; $invoice = base64_encode(gzencode(json_encode($invoiceData), 5)); $fields = [ 'serviceId' => '63f574ed-d90d-4abe-9cs1-39117584a7b7', 'merchantId' => '6yt3gjtm9p1odfgx8491', 'amount' => '12300', 'currency' => 'PLN', 'orderId' => '123', 'orderDescription' => '#Example transaction', 'customerFirstName' => 'Jan', 'customerLastName' => 'Kowalski', 'customerEmail' => 'jan.kowalski@example.com', 'customerPhone' => '515515515', 'urlSuccess' => 'https://your-shop.com/success', 'urlFailure' => 'https://your-shop.com/failure', 'urlReturn' => 'https://your-shop.com/return', 'invoice' => $invoice, ]; $serviceKey = 'eAyhFLuHgwl5hu-32GM8QVlCVMWRU0dGjH1c'; $hashMethod = 'sha256'; $signature= createSignature( $fields, $serviceKey, $hashMethod ) . ';' . $hashMethod; ``` ## Example of an encoded invoice object ```php H4sIAAAAAAAAA0WOQQvCNAyF/4rkPGWbenAnh3gTFedBEJGqVcu6dq4pOMf+u8MYeAnJl/fy0sDF17KCpAGsSwkJbJe7bLOGAGQhlCaA0uGcy6jUhO9e67UoZL8zcCHssJISfzAiclVY9zNNpXUo9MLe2BjFw/KkyhrrDVY141SXTxHzAytoO71CZY2D5NiA+QfGna07M6P25YXBLikKwBvFL2Qf9LmiJYp3hiJn7T49nENCj8o6lxacS5ZpGLan9gsKdX5sBQEAAA== ``` ## Example HTML form content ```html ```