Read Me First
Using a third-party invoicing provider [provider for short] indicates your
choice or obligation to do so.
Using a provider has several advantages over invoicing, including the
responsibility for correct syntax and sending the invoice to myDATA, which is
exclusively his.
To connect with an invoicing provider through myDATA.DLL, you will need the
following classes, methods, and objects:
- SendInvoice Class: This class is general, regardless of whether or not you use a provider. In any case, you'll need to create an invoice object.
- provLine Object: This is the extra line of information a provider needs in order to issue the invoice.
- extraDetails Object: This object contains invoice headers and extra details every provider needs. Even if some of them may exist in the invoice object, the provider needs them separately.
For B2G Transactions you will also need thr following methods:
- getGovs Method:
This method returns a Dictionary containing all Government Organizations with
their IDs.
Format: {<govID>-<VatNumber>, <Full Name>}
Example: {"1234.5678.9012-123456789", "Gov Organization"} - getPeppolCPV Method: This method returns all the available Item IDs according to Peppol.
- getPeppolItemClass Method: This method returns all the available Item Classifications according to Peppol.
- getPeppolMeasurementUnit Method: This method returns all the available Measurement Units according to Peppol.
- getPeppolTaxCategory Method: This method returns all the available Tax Categories according to Peppol.
- getPeppolVatex Method: This method returns all the available Vat Exemption Reasons according to Peppol.
- isGov Method: This method checks if the provided Greek Vat Number belongs to a Government Organization.
Now it is time to choose your provider. The supported providers are:
Provider | Contact Details | Class to Use | Supports B2G | Invoice Details and Obligations |
---|---|---|---|---|
ILYDA S.A. | Website: https://www.ilyda.com/index.php/en/ Email: info@ilyda.com Phone Number: 0030-210 670 5000 |
YES | You design and issue each invoice, except for B2G
invoices. On any invoice you design, you must display the provider's MARK, UID, HASH, and name. | |
ORIAN S.A. | Website: https://orian.gr/?lang=en Email: support@orian.gr Phone Number: 0030-210 331 6533 | ProvOrian Class | YES | You don't design any kind of invoice. ORIAN will send
the final invoice to the counterpart via email. You must keep the Invoice ID in your database. |
PRIMER | Website: https://primer.gr/ Contact: https://primer.gr/contact/ Phone Number: 0030-210 682 4389 |
YES* |
You don't design any kind of invoice. PRIMER will send the final
invoice to the counterpart via email. You must manage the end user's entire provider subscriptions. | |
More providers are coming soon |
*PRIMER has the necessary certifications from
AADE for B2G support; however, we are awaiting relevant instructions for the
PRIMER's API implementation.
The MYDATA DLL, through the PRIMER provider, currently supports only B2B and B2C
transactions.
Each provider has an additional fee, which is not included in the cost of this
library. To learn about cost and how to try the connection with the selected
provider, contact them.
Disclaimer: Connecting to any of the supported providers generates no
income for us. The choice is absolutely yours, and the agreement on provider
usage is between you and the provider.
General rules and guide for sending an invoice using a Provider
- Create the invoice as it would be without the provider, and then fill in the provider data (ex ilydaData).
- Each invoice
must have the same number of rows as the provLine. Rule:
invoice.lines.Count = <providerData>.invoiceLines.Count;
Example: invoice.lines.Count = ilydaData.invoiceLines.Count;
For B2G transactions using an Invoicing Provider:
- The difference between B2B and B2G transactions are:
a. extraDetails.b2g = true/false;
b. B2G transactions must have the fields extraDetails.contractReference and extraDetails.projectReference filled. - When a B2G transaction occurs without a contract in place then extraDetails.contractReference = 0; and extraDetails.projectReference = "3|0";.
- The Provider can send only income invoice types,
which you can get using myDATATools.getInvoiceTypeProvider.
For any other case, you must use the SendInvoices.SendInvoice method.
Summary
First, implement the ERP code samples. At their core, ERP code samples and
third-party Provider code samples are exactly the same.
After that, just add the provider data (ex. ilydaData) at the end, and use
the necessary class (ex. ProvIlyda) to
send the invoice.