# Send Digital Receipts

The Get Mini framework allows you to handle receipts in two ways: by providing customer contact details so Get Mini sends the receipt automatically, or by accessing transaction "Literals" to generate your own digital or physical receipt.

## Requirements

Before sending receipts, ensure:

- **Transaction Result**: You must have a `RespuestaTransaccionDTO` returned from the `onPaymentFinished` callback.
- **Permissions**: Ensure your merchant profile allows receipt generation (checked via `PerfilComercioManager`).

## Option 1: Automatic Digital Receipts (Email/SMS)

The easiest way to send receipts is to provide the customer's contact information during the initial payment request. Get Mini will handle the delivery automatically.

### Implementation

When initializing your `PagoDTO`, include the `emailCliente` or `tlfCliente`. If these fields are populated, the Get Mini gateway sends the ticket without further code on your part.

```
let pago = PagoDTO(
    valor: 1500,
    mMoneda: 978,
    nFactura: "INV-101",
    email: "customer@example.com", // Get Mini sends email automatically
    tlfCliente: "600000000",       // Get Mini sends SMS automatically
    datosPropietarios: ""
)
```

## Option 2: Custom Digital Receipts

If you want to display a receipt in your app or use the iOS Share Sheet, you must manually compile the data from the transaction result.

### Step 1: Access Transaction Literals

The `RespuestaTransaccionDTO` contains a `Literales` property (an array of strings) and a `DatosDCC` object. These contain the legal text required for the receipt.

```
func onPaymentFinished(_ result: RespuestaTransaccionDTO!, orError error: Error!) {
    guard let response = result, error == nil else { return }

    // The 'Literales' field aggregates all required receipt text
    if let receiptLines = response.literales as? [String] {
        let fullReceiptText = receiptLines.joined(separator: "\n")
        self.showShareSheet(text: fullReceiptText)
    }
}
```

### Step 2: Handle Signature Requirements

Check the `reciboSoloCliente` property. If it is true, you only need to provide the customer copy (usually because the signature was captured digitally on the device).

```
if response.reciboSoloCliente {
    print("Only customer copy required.")
} else {
    print("Signature or Merchant copy may be required.")
}
```

## Step 3: Access Full Financial Record (Boleta)

If you need to generate a receipt for a past transaction, use the `peticionConsultaBoleta` method to get the full financial data.

```
let consulta = ConsultaBoletaDTO(
    terminal: termTPVPC,
    withIdRTS: originalRTS,
    andUserInfo: userInfo
)

RedsysTransactionManager.peticionConsultaBoleta(consulta) { result, error in
    if let boleta = result {
        // Access fields like boleta.tarjetaClienteRecibo, boleta.importe, etc.
        let receiptBody = """
        Terminal: \(boleta.terminal ?? "")
        Amount: \(boleta.importe ?? "") \(boleta.moneda ?? "")
        Auth: \(boleta.codigoRespuesta ?? "")
        """
        self.printOrShare(receiptBody)
    }
}
```

## Receipt Best Practices

- **DCC Transactions**: For foreign cards, always include the `DatosDCC` (exchange rate, markup, and currency) in the receipt text to comply with regulations.
- **Privacy**: When displaying or sharing receipts, ensure the card number is masked (the SDK provides it as `************1234`).
- **Signature**: If `AutenticadoPorPin` is false, the receipt should include a signature line unless `envioFirmaDigitalizada` was used.

## Troubleshooting

**Receipt Data Missing**
Verify that the Estado is "F". Literals are only generated once the transaction reaches a finalized state on the server.

**Emails Not Received**
Ensure the email field in `PagoDTO` is a valid format. If the field is empty, no automatic receipt is triggered.

## Next Steps

- [Create a Single-Step Payment](/en/get-mini/ios-sdk/guides/single-step-payment-ios) - Standard sale transactions
- [Refund a Payment](/en/get-mini/ios-sdk/guides/refund-payment-ios) - Learn how to return funds
- [Manage Bluetooth Reader](/en/get-mini/ios-sdk/guides/manage-bluetooth-reader) - Connect your hardware