# Overview (/global/en/docs/Terminal/EMVL2/Overview)

**EMV** Provides payment applications with a complete, standardized C-language API for efficiently integrating both contact and contactless EMV payment functions:

- Complete EMV Transaction Flow Support: Encapsulates all EMV transaction steps, from application selection, read application data, offline data authentication, cardholder verification, risk management, and terminal action analysis, to online processing and script execution. Developers can complete complex transactions by sequentially calling high-level APIs;

- Broad L2 Kernel Coverage: Supports both Contact and Contactless L2 kernels, providing comprehensive coverage for major payment schemes, including but not limited to Mastercard, Visa, American Express, Discover/Diners, JCB, Unionpay, Pure, Rupay, Interac, Mir, Multibanco, Cpace, Bancomat, Eftpos;

- Highly Flexible Parameterized Configuration: Offers rich API interfaces and detailed Tag definitions, allowing developers to customize terminal capabilities, AID-specific parameters, and the behavior of each payment scheme to meet the certification requirements of different global markets;

- Cross-Platform & Multi-Environment Adaptability: Provides clear library loading mechanisms, with explicit support for development and deployment across different operating systems like RTOS, Linux, and Android.

## EMV L2 Library User MANUAL

## Preface

### Audience

This is the Library Programmers Manual for NEWLAND EMV L2 Library. This document describes guides user how to develop with the NEWLAND EMV L2 Library. This Document uses NEWLAND NAPI.

This document is intended for application developers who use EMV L2 Library to develop EMV chip-based payment applications.

---

## Reference

## RTOS

Application developers use the function **NDK\_LibLoad** to load the EMV interface. Please refer to the documentation \**Newland EMV L2 Programmer Manual.*\*

```c
static EMVAPI gEMVApi;  
EMVAPI *pEMVApi = &gEMVApi;  
nRet = NDK_LibLoad("EMV", (void **)&pEMVApi); 
```

---

## Linux

Application developers use the function dlopen to load the EMV library.

Application developers do not package the EMV library. The SDK package provides the empty link kernel library (the name is the same as the L2 kernel name) for application developers to link and compile the application (the empty link library is not packaged).

> **INFO**
>
> **Note:** makefile must to link base.so and entrypoint.so.

---

## Android

Application developers use NSDK API.

## Related Documents

[EMVL2 CT Library](doc-id:80b7cf2d)

Programmers manual for the EMV L2 contact library function calls.

[EMVL2 CLSS Library](doc-id:73a7e9d3)

Programmers manual for the EMV CLSS L2 library function calls.

[EMVL2 CERT](doc-id:26c85080)

Kernel support and certification status by terminal model.

[EMVL2 CT FAQ](doc-id:cfa690cb)

Answers to common EMV contact transaction questions.

[EMVL2 CTLSS FAQ](doc-id:38726800)

Answers to common EMV contactless transaction questions.