# Reprint (/global/en/docs/Terminal/SystemServices/Reprint)

## Reprint

The reprint interface is used to print the receipt of a specific transaction again after it has been completed. It’s typically used when the original receipt is lost, printing fails, or a duplicate copy is needed.

The caller can initiate a reprint request using the original transaction's **orgTransactionReference**. Once the request is received, the payment terminal will regenerate and print the receipt.

#### Reprint Request

**ReprintParam**

**orgTransactionReference** *string* — Required

Global reference of the original sale transaction for the sale system.

**documentQualifier** *enum*

Destination of the message.

**Possible enum values**

- `JNRL` — "When the POI or the Sale System wants to store a message on the journal printer or electronic journal of the Sale Terminal (it is sometimes a Sale Logging/Journal Printer)."
- `CRCP` — "When the Sale System requires the POI system to print the Customer receipt."
- `HRCP` — "When the Sale system prints the Cashier copy of the Payment receipt."
- `SRCP` — "When the Sale System requires the POI system to print the Sale receipt."
- `RPIN` — "Document is a linked payment instruction to which the current payment instruction is related, for example, in a cover scenario."
- `VCHR` — "Document is an electronic payment document."

#### Reprint Response

**ReprintResult**

**recipientPartyIdentification** *string* — Required

Unique identification of the partner that is the recipient of the message exchange.\
For example, the POS SN

**response** *enum* — Required

Result of the requested transaction.

**Possible enum values**

- `SUCC` — "Success.\nProcessing OK. Information related to the result of the processing is contained in other parts of the response message."
- `FAIL` — "Failure.\nProcessing of the request fails for various reasons."
- `PART` — "Partial Approved.\nThe service was partially completed. Use the Message Status service to query the final transaction status."

**responseReason** *string*

Detail of the response.

**Possible enum values**

- `ABRT` — "Aborted.\nThe initiator of the request has sent an abort message request, which was accepted and processed."
- `BUSY` — "Busy.\nThe system is busy, try later."
- `CANC` — "Cancel.\nThe user has aborted the transaction on the PED keyboard, for instance during PIN entering."
- `DEVO` — "DeviceOut.\nDevice out of order."
- `WPIN` — "WrongPIN.\nThe user has entered the PIN on the PED keyboard and the verification fails."
- `NHOS` — "UnreachableHost.\nAcquirer or any host is unreachable or has not answered to an online request, so is considered as temporary unavailable.\nDepending on the Sale context, the request could be repeated(to be compared with \\"Refusal\\")"
- `UNVS` — "UnavailableService.\nThe service is not available (not implemented, not configured, protocol version too old…)."
- `UNVD` — "UnavailableDevice.\nThe hardware is not available (absent, not configured…)"
- `REFU` — "Refusal.\nThe transaction is refused by the host or by the local rules associated to the card or the POI."
- `TNFD` — "NotFound.\nThe transaction is not found (e.g. for a reversal or a repeat)."
- `WIPG` — "InProgress.\nThe transaction is still in progress and then the command cannot be processed."

**additionalResponseInformation** *string*

Additional information to be logged for further examination.

**Receipt Content**

When you receive the terminal result through the SDK callback interface and **ReprintResult.response = SUCC**, you can obtain the printed receipt content.

**paymentReceipts** *array of dictionaries*

Customer or Merchant payment receipt.

**PaymentReceipt** *dictionary*

Detailed amounts associated with the total amount of transaction.

**Child attributes** of `PaymentReceipt`

**documentQualifier** *enum*

Destination of the message.

**Possible enum values**

- `JNRL` — "When the POI or the Sale System wants to store a message on the journal printer or electronic journal of the Sale Terminal (it is sometimes a Sale Logging/Journal Printer)."
- `CRCP` — "When the Sale System requires the POI system to print the Customer receipt."
- `HRCP` — "When the Sale system prints the Cashier copy of the Payment receipt."
- `SRCP` — "When the Sale System requires the POI system to print the Sale receipt."
- `RPIN` — "Document is a linked payment instruction to which the current payment instruction is related, for example, in a cover scenario."
- `VCHR` — "Document is an electronic payment document."

**messageContent** *string*

Content or reference of the message.\
Maximum number of characters allowed is 20000.

```java
List<DocumentType7Code> documentType7CodeList = new ArrayList<>(Arrays.asList(DocumentType7Code.JNRL, DocumentType7Code.CRCP,DocumentType7Code.HRCP));
ReprintParam reprintParam = ReprintParam.newBuilder()
        .orgTransactionReference(lastPaymentResult.getTransactionReference())
        .documentQualifier(documentType7CodeList)
        .build();
RetailerManager.getInstance().provideSystemService().newReprintStatusExchange(reprintParam)
        .startAsyncExchange(new Exchange.RetailerSDKCallback<ReprintResult>() {
            @Override
            public void onResult(ReprintResult result) {
                showRecieveMsg("Reprint Result:" + GsonUtils.toJson(result));
            }
            @Override
            public void onError(int errCode, String errMsg) {
                showRecieveMsg("Reprint error,errCode:" + errCode + ",errMsg:" + errMsg);
            }
        });
```