# Reference
URL: /docs/a2a/reference

Enums and response model fields for the PlusPay A2A packages.

This page lists the request header, every enum and the fields of each response
model. Enum values are identical across Flutter, Kotlin, Java and React Native.

## Request header

Every request carries a `header` object. The `toRequest` factories fill it in
for you.

| Field              | Type                                      | Description                                                                                                                                                                          |
| ------------------ | ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `transaction_type` | [`PPTransactionType`](#pptransactiontype) | Operation to run (required)                                                                                                                                                          |
| `order_code`       | String?                                   | Required by `POST_PAYMENT_START`, `POST_PAYMENT_CANCEL`, `ORDER_PAYMENT`, `POST_TECHNICAL_CANCEL`, `TRANSACTION_RESULT`, `ORDER_RESULT`                                              |
| `transaction_id`   | String?                                   | Required by `POST_EFTPOS_CANCEL`, `POST_TECHNICAL_CANCEL`, `TRANSACTION_RESULT`                                                                                                      |
| `locale`           | String?                                   | UI language while POS+ handles the request: `tr`, `en`, `ar`, `de`, `fr`, `it`, `es`, `ru`, `zh` (`lang` is accepted as an alias). See [Language](/docs/a2a/initialization#language) |

## Enums

### PPTransactionType

`POST_PAYMENT_START`, `POST_PAYMENT_CANCEL`, `POST_EFTPOS`,
`POST_EFTPOS_CANCEL`, `ORDER_PAYMENT`, `EOD`, `PARAMETERS`,
`ORDER_MULTI_PAYMENT`, `AVAILABLE_PAYMENT_METHODS`, `ORDER_CREATE`,
`POST_TECHNICAL_CANCEL`, `TRANSACTION_RESULT`, `ORDER_RESULT`

### PPPaymentType

`POS`, `PAYCELL`, `HEPSIPAY`, `ISTANBULCARD`, `CASH`, `ONLINE`,
`BANK_TRANSFER`, `GASTROPAY`, `CIO_CARD`, `IWALLET`, `PAYE`, `MULTINET`,
`METROPOL`, `FASTPAY`, `TICKET`, `EDENRED`, `SETCARD`, `SODEXO`, `GETIRPAY`,
`TOKENFLEX`, `YEMEKMATIK`, `ON_CREDIT`, `VIRTUAL_POS`, `CUZDANPLUS`,
`INSTALLMENT`

### PPPaymentMethod

`CC`, `CASH`, `QR`, `QR_R`, `NFC`, `QUICKCODE`, `MOBILE`, `SWIPE`, `NONE`,
`ONLINE`, `TRENDYOL`, `GETIR`, `YEMEKSEPETI`, `MIGROSYEMEK`, `CHIP`, `LINK`,
`NFC_R`, `PAYCELL_LINK`, `PAYCELL_MERCHANT_PAGE`

### PPPartialPaymentType

`AMOUNT`, `PRODUCT`

### PPEodType

`POS`, `CASH`, `BANK_TRANSFER`, `ONLINE`, `OTHER`, `MULTINET`, `SODEXO`,
`SETCARD`, `TICKET`, `METROPOL`, `PAYE`, `TOKENFLEX`, `EDENRED`, `CUZDANPLUS`,
`IWALLET`

### PPParameterTypes

`bank`, `multinet`, `metropol`, `paye`, `iwallet`

### PPOrderStatusEnum

`CANCEL`, `NOT_RESPONSE`, `WAITING`, `SUCCESS`

### PPDeliveryStatusEnum

`WAITING`, `PREPREING`, `READY`, `ONWAY`, `COMPLETE`, `CANCEL`

### PPDeliveryTypeEnum

`CASH_ORDER`, `PACKAGE_ORDER`, `TABLE_ORDER`, `TAKE_AWAY`, `TAKE_CLOSE`

### PPCurrencyType

`TRY`, `USD`, `EUR`, `GBP`

### PPProductTypeEnum

`PHYSICALLY`, `VIRTUAL`, `INFO`, `MD`, `DSN`, `QP`, `KFO`, `COMMISSION`, `HGS`

### PPQtyEnums

`ADET`, `KG`, `GR`, `LT`, `MT`, `KOLI`, `PAKET`, `PORSIYON`

### PPDiscountTypeEnum

`PERCENTAGE`, `FIXED_AMOUNT`

### PPDocumentTypeEnum

`EFATURA`, `EARSIV`, `BILGIFISI`

### PPDocumentStatusEnum

`SUCCESS`, `CANCEL`, `FAIL`, `WAITING`, `NONE`

### PPTransactionStatusEnum

`SUCCESS`, `CANCEL`, `FAIL`, `NONE`, `WAITING`, `NOT_RESPONSE`

### PPTransactionTypeEnum

`START`, `SATIS`, `CANCEL`, `REFUND`, `IADE`

### PPOrderSourceEnum

`POS`, `WEB`, `KIOSK`

## Response models

### PPStartPaymentResponseModel

Returned by `startPayment`, `cancelPayment`, `startEftPayment`,
`cancelEftPayment` and `getTransactionResult`.

| Field           | Type                  | Notes                                                                          |
| --------------- | --------------------- | ------------------------------------------------------------------------------ |
| `paymentType`   | PPPaymentType         | unknown or missing values decode as `PPPaymentType.UNKNOWN` (Flutter 0.8.0+)   |
| `paymentMethod` | PPPaymentMethod       | unknown or missing values decode as `PPPaymentMethod.UNKNOWN` (Flutter 0.8.0+) |
| `isPartial`     | bool                  | default `false`                                                                |
| `partialType`   | PPPartialPaymentType? |                                                                                |
| `id`            | String                | required — POS+ transaction id                                                 |
| `orderCode`     | String                | required                                                                       |
| `totalAmount`   | double                | required                                                                       |
| `totalPaid`     | double?               |                                                                                |
| `amountDue`     | double?               |                                                                                |
| `source`        | String?               |                                                                                |
| `status`        | String?               | transaction status, see [`PPTransactionStatusEnum`](#pptransactionstatusenum)  |
| `actionStatus`  | bool?                 |                                                                                |
| `invoice`       | PPInvoiceModel?       |                                                                                |
| `payment`       | PPPaymentModel?       | `rrn`, `cardNumberMasked`, `slip[]`                                            |
| `delivery`      | PPDeliveryModel?      | `type`, `status`                                                               |

`PPInvoiceModel`: `id` (required), `ettn`, `number`, `type`, `date`, `name`,
`identity`, `taxOffice`, `urn`, `url`.

### PPOrderPaymentResponseModel

Returned by `startOrderPayment` and `getOrderResult`. For `getOrderResult`,
`results` contains every transaction on the order and `completed` is `true`
only for `SUCCESS` transactions.

| Field         | Type                            |
| ------------- | ------------------------------- |
| `grandTotal`  | double                          |
| `status`      | PPOrderStatusEnum               |
| `orderCode`   | String                          |
| `totalAmount` | double                          |
| `totalPaid`   | double                          |
| `amountDue`   | double                          |
| `results`     | List\<PPOrderTransactionResult> |

`PPOrderTransactionResult`: `completed` (bool), `errorMessage` (String?),
`data` (PPStartPaymentResponseModel?).

### PPEodResponseModel

Returned by `triggerEod`. `results`: List\<PPEodResponseItem> where each
item has `eodType` (PPEodType), `success` (bool), `errorMessage` (String?).

### PPParametersResponseModel

Returned by `triggerParameters`. `results`:
List\<PPParameterResultModel> where each item has `completed` (bool),
`type` (PPParameterTypes), `errorMessage` (String?).

### PPAvailablePaymentMethodsResponseModel

Returned by `getAvailablePaymentMethods`. `paymentTypes`:
List\<PPPaymentTypeMethodsModel> where each item has `code`
(PPPaymentType), `methods` (List\<PPPaymentMethod>) and `title` (String?).

### PPTechnicalCancelResponseModel

Returned by `technicalCancel`.

| Field           | Type   | Notes                                           |
| --------------- | ------ | ----------------------------------------------- |
| `orderCode`     | String |                                                 |
| `transactionId` | String |                                                 |
| `status`        | String | always `SUCCESS`; failures are thrown as errors |

### PPMultiPaymentResponseModel

Returned by `startMultiPayment`. `createOrder` returns the same structure as
`PPOrderCreateResponseModel`. Key fields:

| Field                                         | Type                              |
| --------------------------------------------- | --------------------------------- |
| `id` / `orderCode`                            | String                            |
| `products`                                    | List\<PPMultiPaymentProduct>      |
| `transactions`                                | List\<PPMultiPaymentTransaction>  |
| `paymentType` / `paymentMethod`               | PPPaymentType / PPPaymentMethod   |
| `status`                                      | PPOrderStatusEnum                 |
| `totalAmount` / `discountAmount` / `subTotal` | double                            |
| `taxAmount` / `grandTotal`                    | double                            |
| `taxs`                                        | List\<PPMultiPaymentTax>          |
| `totalPaid` / `amountDue`                     | double                            |
| `preTotal`                                    | PPMultiPaymentPreTotal            |
| `orderDate` / `createdAt`                     | String                            |
| `customer`                                    | PPMultiPaymentCustomer?           |
| `currency`                                    | PPCurrencyType?                   |
| `installment`                                 | int?                              |
| `isPartial`                                   | bool?                             |
| `deliveryType`                                | PPDeliveryTypeEnum                |
| `deliveryStatus`                              | PPDeliveryStatusEnum?             |
| `source`                                      | PPOrderSourceEnum (default `POS`) |
| `webhook`                                     | PPMultiPaymentWebhook?            |

`PPMultiPaymentTransaction` includes `id`, `paymentType`, `paymentMethod`,
`totalAmount`, `createdAt`, `status` (PPTransactionStatusEnum), `type`
(PPTransactionTypeEnum), `transactionId`, `rrn`, `cardInfo`
(PPMultiPaymentCardInfo), `document` (PPMultiPaymentDocument), `installment`.

`PPMultiPaymentDocument`: `status` (PPDocumentStatusEnum?), `id`, `type`
(PPDocumentTypeEnum?), `ettn`, `number`, `url`.