Skip to main content

Self-billing

Introduction

Számlázz.hu supports self-billing (or self-invoicing) between companies registered in the system. This means that one of the users belonging to the customer can get access to the supplier's company account with accounting privileges.

In case you are looking for the old ZIP-based documentation regarding self-billing (or self-invoicing) in Hungarian, you can find it here. Or read more in Hungarian on this landing page.

info

The monthly fee is independent of the number of suppliers your company invoices on behalf of. This means that you can control the billing of your entire supplier network with the above fixed cost.

Monthly fee: HUF 39 990 + VAT (gross HUF 50 787) payable in arrears.

Other variable costs incurred: in the case of delegated invoicing or self-billing, the costs of both the e-invoice and any Account Agent service used are borne by the delegate. So you can issue an e-invoice as a principal even if the principal's account is on the free (#free) plan.

Before setting this up you have to enter into an agreement with your supplier. You'll both need to sign a self-billing (self-invoicing) agreement. This is outside the scope of Számlázz.hu. For more information, please contact your accountant or lawyer.

There is a connection between the customer's and the supplier's invoicing account. Establishing the relationship between these accounts is very important. The way these accounts are connected depends on whether the supplier is already a member of Számlázz.hu or not.

Creating a supplier's account via Számla Agent

It is possible to create the supplier's account by the customer via Számla Agent. In order to do this, you need to post a specifically crafted API call towards Számla Agent. You need to provide the details of the supplier (<cegMb>)during the call. It is important to provide the valid data - especially the e-mail address, that will be important later.

As a result of this call, a special user account (<usrMb>)will be created besides the supplier’s account, one that will also have access to the supplier’s account. Therefore you need to provide a new username, password and other details for this account.

It is important to note that the supplier's account is NOT ready to issue invoices just as yet. In order to do this, the owner of the account (aka supplier) has to enter and activate the account, and enable the issuing of invoices for the customer.

When an account is created, Számlázz.hu automatically sends a notification email to the owner/CEO of the company at the official email address of the supplier provided in the API call (<cegemail>). This email contains instructions on how to enter and activate the account, and as a result, enable the issuing of invoices for their customer. When this is done, the customer receives an email as well, stating that their account is ready for self-billing (self-invoicing).

In case the customer wants to resend this email to the supplier, the customer needs to login to the freshly created account (<usrMb>) with the user they will use to access the supplier's account in the future. The login attempt will be unsuccessful, since the supplier has not granted access to their account to the customer yet, but this triggers an event which causes the Számlázz.hu system to resend the notification email.

If the account you want to create already exists and can be uniquely identified by our system, a connection request will be sent to the account holder after the API call, and no second account will be created.

Joining the account of an existing supplier as a customer

It is also possible that the supplier already has a Számlázz.hu account, and would like to provide access to its customer for self-billing (self-invoicing). Access can be provided through the control panel:

  1. The customer creates a login ID to access the supplier’s account.
  2. The customer logs in to his/her own account using this user ID (customer's account).
  3. Send a join request to the account of the supplier's account. You can do this by clicking the grey Csatlakozni szeretnék egy céghez button. Don't forget to check the Megbízott számlakibocsátás checkbox before sending the request.

The customer receives an email stating that the join request has been accepted. When sending the request, you need to use the same login name that you will use to issue invoices. If you plan to use Számla Agent instead of issuing invoices manually, you need to create a new user ID before sending the join request more information on this page (in Hungarian). Before accepting the join request, this user ID will be 'detached' from the customer's account - this makes it possible for Számla Agent to work.

Sending a join request to the supplier via Számla Agent

It is now possible to send a join request to a supplier via Számla Agent. There are different scenarios depending on whether the supplier already has an account or not.

If the supplier does not have an account yet, you can create one as described above. If the account you want to create already exists and can be uniquely identified by our system, a connection request will be sent to the account holder after the API call, and no second account will be created.

Basically, this means that sending the same XML to create the supplier's account triggers a join request. The supplier receives an email notification about this, and it can approve the join request on the control panel.

Use of this API interface requires a license. Please contact our support team and request permission to access it.

E-invoicing and pricing

As a customer you will be joining the supplier's account with the same subscription as the supplier. This means that the supplier can stay in the #free subscription if only the supplier issues e-invoices. It is not possible to issue e-invoices in the #free ubscription unless the customer has a paid subscription. In the latter case, the customer can self-bill (self-invoice) from the supplier's account even if the supplier has a #free subscription. Let us consider the following:

  1. The customer has a #profi subscription.
  2. The customer can issue e-invoices in their own account.
  3. The supplier has a #free subscription.
  4. The supplier cannot issue e-invoices in their own account.
  5. The customer can issue e-invoices for self-billing in the supplier's account because of its own #profi subscription.

It is important to note that the customer has to pay for the invoices even though they were issued from the supplier's account. It is also possible for the supplier to subscribe to a paid package and issue e-invoices on its own. E-invoices issued by the supplier (not the customer via the supplier's account) are paid by the supplier as well, these are billed separately from those that were issued by the customer (which the customer has to pay).

Disconnecting from the customer

The customer can disconnect from the supplier by initiating disconnection from the control panel.

Visibility of invoices

The supplier can see all invoices after logging into its own account (regardless of whether the invoices were issued by itself or by the customer). When the customer logs into the supplier's account, it only sees invoices issued by the customer itself (and not by the supplier). This way the supplier can hide invoices that were issued by the supplier itself and not by the customer.

Hints

Self-billing works like the follows:

Self billing draw

When you establish a connection like this, you need to consider the following:

  1. In order to establish the connection using Számla Agent, you need to create a separate user for each supplier's account.
  2. If the supplier already has an account, then, you simply need to request access for self-billing purposes.
  3. The customer can see users with access to their account (and suppliers who they are connected to for self-billing purposes). To avoid confusion, you should give the suppliers easily recognizable names (e.g. Example Ltd self-billing).
  4. It is also possible for the users connecting to the suppliers' accounts to have the same password. This makes the self-billing process easier.
  5. The user login names for the users connecting to the suppliers' accounts must be different, but these can be of any kind that make them easier to recognise.
  6. Suppliers like to use a separate invoice book for self-billing. You need to discuss this with your supplier. If you create the suppliers' account, you need to define the specific invoice prefix you are planning to use. This prefix should be 5 characters long with a meaningful name which indicates that it belongs to the supplier.

Create asupplier's account

Request

<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
<body>
<form action="https://www.szamlazz.hu/szamla/" method="post" enctype="multipart/form-data">
<input type="file" name="action-agent_ceg_mb"><br><br>
<input type="submit" name="generate" value="Create supplier account">
</form>
</body>

You can also try out the same HTML code here:

XML file

Example XML

In the XML file, the order of the fields is fixed, they cannot be interchanged.

<?xml version="1.0" encoding="UTF-8"?>
<XmlCegMb xmlns="http://www.szamlazz.hu/xmlcegmb" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.szamlazz.hu/xmlcegmb http://www.szamlazz.hu/docs/xsds/agentmb/xmlcegmb.xsd">

<login>
<!-- This is the user created by the supplier. This user can only access 1 company,
otherwise the login attempt will fail because the system won't be able to decide
which company is that the user wants to access.
An unsuccessful login will result in error code 3.
-->
<loginname>user</loginname>
<password>passwd</password>
<szamlaagentkulcs>agentkey</szamlaagentkulcs>
</login>

<cegMb>
<!--
Details of the supplier company
-->

<!-- Name of the supplier company, if it has a short name you should provide that -->
<cegcompanyname>Company name Co.</cegcompanyname>

<!-- Tax number of the supplier company. If there's a company already registered
using the same tax number, and we can clearly identify said company,
we will send a join request to the account owner of saithe said company.
-->
<cegtaxnumber>12345678-1-12</cegtaxnumber>

<!-- Invoice prefix that resembles the supplier's name in some way,
5 characters tops. This will be the prefix on the generated invoices: MBSZ-2019-1
-->
<cegszamlaszamelotag>MBSZ</cegszamlaszamelotag>

<!-- Company address of the supplier -->
<cegirsz>1117</cegirsz>
<cegcity>Budapest</cegcity>
<cegaddr>Budafoki út 17.</cegaddr>

<!-- Post address of the supplier, not required -->
<cegpostirsz>1121</cegpostirsz>
<cegpostcity>Budapest</cegpostcity>
<cegpostaddr>Pf. 17.</cegpostaddr>

<!-- Bank account details of the supplier -->
<cegbank>AXA</cegbank>
<cegbankaccount>12345678-12345678</cegbankaccount>

<!-- E-mail address of the supplier. It's important that this address should
be a working one, as important e-mails will be delivered here.
-->
<cegemail>companyemail@example.org</cegemail>

<!-- E-mail address of the supplier, this will be the replyto address in sent invoices. -->
<cegemailreplyto>companyemail@example.org</cegemailreplyto>

<!-- The next 4 fields are very important. Depending on whether you are a KATA
private entrepeneur or a regular company, your invoices will be valid only if
Számlázz.hu displays the necessary texts as "Kisadózó." and/or "Pénzforgalmi elszámolás.".
In case the registered company doesn't belong to any of these groups, filling out
these fields are not mandatory.
-->
<cegpenzforgdattol>2014-01-01</cegpenzforgdattol>
<cegpenzforgdatig>2014-12-31</cegpenzforgdatig>
<cegkatadattol>2014-01-01</cegkatadattol>
<cegkatadatig>2014-12-31</cegkatadatig>

</cegMb>

<usrMb>
<!-- You also have to provide a username to be used for the supplier's company.
This is the user that you will use to issue invoices for self-billing.

The supplier won't use this user, but they'll see it in their account.

-->
<usremail>agentuser@example.org</usremail>
<usrpassword>As6dezh7*K#</usrpassword>
<usrvezeteknev>John</usrvezeteknev>
<usrkeresztnev>Doe</usrkeresztnev>
</usrMb>

</XmlCegMb>

XSD scheme compliance

warning

The fields where you see minOccurs=”1” are mandatory.

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.szamlazz.hu/xmlcegmb" xmlns:tns="http://www.szamlazz.hu/xmlcegmb" elementFormDefault="qualified">

<!-- Existing user's details, or details of the user to be created -->
<complexType name="usrMbTipus">
<sequence>
<element name="usremail" type="string" maxOccurs="1" minOccurs="1"></element>
<element name="usrpassword" type="string" maxOccurs="1" minOccurs="1"></element>
<element name="usrvezeteknev" type="string" maxOccurs="1" minOccurs="0"></element>
<element name="usrkeresztnev" type="string" maxOccurs="1" minOccurs="1"></element>
</sequence>
</complexType>

<!-- login details -->
<complexType name="loginMbTipus">
<sequence>
<element name="loginname" type="string" maxOccurs="1" minOccurs="1"></element>
<element name="password" type="string" maxOccurs="1" minOccurs="1"></element>
<element name="szamlaagentkulcs" type="string" maxOccurs="1" minOccurs="0"></element>
</sequence>
</complexType>

<!-- company details -->
<complexType name="cegMbTipus">
<sequence>
<element name="cegcompanyname" type="string" maxOccurs="1" minOccurs="1"></element>
<element name="cegtaxnumber" type="string" maxOccurs="1" minOccurs="1"></element>
<element name="cegszamlaszamelotag" maxOccurs="1" minOccurs="1">
<simpleType>
<restriction base="string"><maxLength value = "5"/></restriction>
</simpleType>
</element>
<element name="cegirsz" type="string" maxOccurs="1" minOccurs="1"></element>
<element name="cegcity" type="string" maxOccurs="1" minOccurs="1"></element>
<element name="cegaddr" type="string" maxOccurs="1" minOccurs="1"></element>
<element name="cegpostirsz" type="string" maxOccurs="1" minOccurs="0"></element>
<element name="cegpostcity" type="string" maxOccurs="1" minOccurs="0"></element>
<element name="cegpostaddr" type="string" maxOccurs="1" minOccurs="0"></element>
<element name="cegbank" type="string" maxOccurs="1" minOccurs="1"></element>
<element name="cegbankaccount" type="string" maxOccurs="1" minOccurs="1"></element>
<element name="cegemail" type="string" maxOccurs="1" minOccurs="1"></element>
<element name="cegemailreplyto" type="string" maxOccurs="1" minOccurs="1"></element>
<element name="cegpenzforgdattol" type="date" maxOccurs="1" minOccurs="0"></element>
<element name="cegpenzforgdatig" type="date" maxOccurs="1" minOccurs="0"></element>
<element name="cegkatadattol" type="date" maxOccurs="1" minOccurs="0"></element>
<element name="cegkatadatig" type="date" maxOccurs="1" minOccurs="0"></element>
</sequence>
</complexType>
<element name="XmlCegMb">
<complexType>
<sequence>
<element name="login" type="tns:loginMbTipus" maxOccurs="1" minOccurs="1"></element>
<element name="cegMb" type="tns:cegMbTipus" maxOccurs="1" minOccurs="1"></element>
<element name="usrMb" type="tns:usrMbTipus" maxOccurs="1" minOccurs="1"></element>
</sequence>
</complexType>
</element>