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:

  1. 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.
  2. provLine Object: This is the extra line of information a provider needs in order to issue the invoice.
  3. 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:

  1. 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"}
  2. getPeppolCPV Method: This method returns all the available Item IDs according to Peppol.
  3. getPeppolItemClass Method: This method returns all the available Item Classifications according to Peppol.
  4. getPeppolMeasurementUnit Method: This method returns all the available Measurement Units according to Peppol.
  5. getPeppolTaxCategory Method: This method returns all the available Tax Categories according to Peppol.
  6. getPeppolVatex Method: This method returns all the available Vat Exemption Reasons according to Peppol.
  7. 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:

ProviderContact 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

ProvIlyda Class

YES

You design and issue each invoice, except for B2G invoices. 
The QR URL is used to display 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 ClassYES

You don't design any kind of invoice. ORIAN will send the final invoice to the counterpart via email. 
If you want to see the final invoice and print it, use the QR URL.  
The provider supports custom design invoices with an additional charge after communication.

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

ProvPrimer Class

YES*

You don't design any kind of invoice. PRIMER will send the final invoice to the counterpart via email. 
If you want to see the final invoice and print it, use the QR URL. 
The provider does not support custom invoice designs.

You must manage the end user's entire provider subscriptions. 
It is your obligation to inform the end user about his subscription details, expiration date, etc. 
To do that, you can use the productActivation Method.

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.

Remarks
 

General rules and guide for sending an invoice using a Provider

  1. Create the invoice as it would be without the provider, and then fill in the provider data (ex ilydaData).
  2. 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:

  1. 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.
  2. When a B2G transaction occurs without a contract in place then extraDetails.contractReference = 0; and extraDetails.projectReference = "3|0";.
  3. 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.

In this article

Definition