A Node.js client for Szamlazz.hu
npm install szamlazz.js --save
const szamlazz = require('szamlazz.js')
const szamlazzClient = new szamlazz.Client({
user: 'USERNAME',
password: 'PASSWORD',
eInvoice: false, // create e-invoice. optional, default: false
passphrase: '', // passphrase for e-invoice. optional
requestInvoiceDownload: true, // downloads the issued pdf invoice. optional, default: false
downloadedInvoiceCount: 1, // optional, default: 1
responseVersion: 1 // optional, default: 1
})
Or use "Számla Agent" key to authenticate the client
const szamlazzClient = new szamlazz.Client({
authToken: 'SZAMLAAGENTKEY',
eInvoice: false, // create e-invoice. optional, default: false
passphrase: '', // passphrase for e-invoice. optional
requestInvoiceDownload: true, // downloads the issued pdf invoice. optional, default: false
downloadedInvoiceCount: 1, // optional, default: 1
responseVersion: 1 // optional, default: 1
})
You can reuse this client to issue invoices.
let seller = new szamlazz.Seller({ // everyting is optional
bank: {
name: 'Test Bank <name>',
accountNumber: '11111111-11111111-11111111'
},
email: {
replyToAddress: 'test@email.com',
subject: 'Invoice email subject',
message: 'This is an email message'
},
issuerName: ''
})
let buyer = new szamlazz.Buyer({
name: 'Some Buyer Name ' + Math.random(),
country: '',
zip: '1234',
city: 'City',
address: 'Some street address',
taxNumber: '12345678-1-42',
postAddress: {
name: 'Some Buyer Name',
zip: '1234',
city: 'City',
address: 'Some street address'
},
issuerName: '',
identifier: 1,
phone: '',
comment: ''
})
With net unit price:
let soldItem1 = new szamlazz.Item({
label: 'First item',
quantity: 2,
unit: 'qt',
vat: 27, // can be a number or a special string
netUnitPrice: 100.55, // calculates gross and net values from per item net
comment: 'Ez egy árvíztűrő tükörfúrógép'
})
With gross unit price:
let soldItem2 = new szamlazz.Item({
label: 'Second item',
quantity: 5,
unit: 'qt',
vat: 27,
grossUnitPrice: 1270 // calculates net and total values from per item gross
})
You can create an invoice with the instances created above:
let invoice = new szamlazz.Invoice({
paymentMethod: szamlazz.PaymentMethod.BankTransfer, // optional, default: BankTransfer
currency: szamlazz.Currency.Ft, // optional, default: Ft
language: szamlazz.Language.Hungarian, // optional, default: Hungarian
seller: seller, // the seller, required
buyer: buyer, // the buyer, required
items: [ soldItem1, soldItem2 ], // the sold items, required
prepaymentInvoice: false // prepayment/deposit invoice should be issued, optional, default: false
})
To issue the invoice with szamlazz.hu:
szamlazzClient.issueInvoice(invoice, (e, result) =>
{
if (e) {
console.error(e.message, e.code) // handle errors
throw e;
}
if (result.pdf) {
// a Buffer with the pdf data is available if requestInvoiceDownload === true
}
})
You can get the data of a previously issued invoice:
const szamlazzClient = new szamlazz.Client({
user: 'USERNAME',
password: 'PASSWORD'
})
const getInvoiceData = util.promisify(szamlazzClient.getInvoiceData).bind(szamlazzClient)
const invoice = await getInvoiceData({
invoiceId: 'E-RNJLO-2019-1234', // invoice number
orderNumber: '1234', // order number
pdf: false // downloads the pdf invoice. optional, default: false
})
Either the invoice number or the order number must be specified.
You can reverse a previously issued invoice:
const szamlazzClient = new szamlazz.Client({
user: 'USERNAME',
password: 'PASSWORD'
})
const reverseInvoice = util.promisify(szamlazzClient.reverseInvoice).bind(szamlazzClient)
const invoice = await reverseInvoice({
invoiceId: 'E-RNJLO-2019-1234', // invoice number
eInvoice: true, // create e-invoice
requestInvoiceDownload: false, // downloads the issued pdf invoice
})
Response
{
invoiceId: 'WXSKA-2020-00', // The id of the created reverse invoice
netTotal: '1000', // Total value of the reverse invoice excl. VAT
grossTotal: '1270' // Total value of the reverse invoice incl. VAT
pdf: null // the PDF content as string if requestInvoiceDownload was true, otherwise false
}
The following payment methods are supported by szamlazz.hu:
szamlazz.PaymentMethod.Cash
szamlazz.PaymentMethod.BankTransfer
szamlazz.PaymentMethod.CreditCard
szamlazz.PaymentMethod.PayPal
The following currencies are recognized by szamlazz.hu:
szamlazz.Currency.Ft
szamlazz.Currency.HUF
szamlazz.Currency.EUR
szamlazz.Currency.CHF
szamlazz.Currency.USD
szamlazz.Currency.AUD
szamlazz.Currency.AED
szamlazz.Currency.BGN
szamlazz.Currency.CAD
szamlazz.Currency.CNY
szamlazz.Currency.CZK
szamlazz.Currency.DKK
szamlazz.Currency.EEK
szamlazz.Currency.GBP
szamlazz.Currency.HRK
szamlazz.Currency.ISK
szamlazz.Currency.JPY
szamlazz.Currency.LTL
szamlazz.Currency.LVL
szamlazz.Currency.NOK
szamlazz.Currency.NZD
szamlazz.Currency.PLN
szamlazz.Currency.RON
szamlazz.Currency.RUB
szamlazz.Currency.SEK
szamlazz.Currency.SKK
szamlazz.Currency.UAH
The accepted languages are:
szamlazz.Currency.Hungarian
szamlazz.Currency.English
szamlazz.Currency.German
szamlazz.Currency.Italian
szamlazz.Currency.Romanian
szamlazz.Currency.Slovak