> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.runpayments.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.runpayments.io/_mcp/server.

# Signatures & Receipts

## Signature capture

Set `include_signature: true` on `read-card` or `charge-card` to capture the cardholder's signature during the same customer interaction as the card read — no separate call. Optional formatting fields:

| Field                  | Values                                                                                        |
| ---------------------- | --------------------------------------------------------------------------------------------- |
| `signature_format`     | `BMP`, `JPEG`, or `PNG`                                                                       |
| `signature_image_type` | `binary` or `rgb`                                                                             |
| `signature_dimensions` | Two numbers, each up to 3 digits (max `999`), formatted as `"width,height"` (e.g. `"100,50"`) |
| `signature_gzip`       | `true` or `false`                                                                             |

When supported, the image is returned as `result.signature`. When the device doesn't support signatures, the interaction still succeeds and tokenization is unaffected, but the signal differs by endpoint:

| Endpoint      | Unsupported-signature signal                                                  |
| ------------- | ----------------------------------------------------------------------------- |
| `read-card`   | `result.error: "signature not supported"`                                     |
| `charge-card` | `result.signature: null` and `result.stage_errors.signature: "not supported"` |

## Receipts

|                             | Print — [`POST /api/terminal/{device_id}/print-receipt`](/reference/terminal-api/receipt/print-receipt) | Email — [`POST /api/v1/send_receipt`](/reference/terminal-api/receipt/send-receipt) |
| --------------------------- | ------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
| **Inline with charge**      | `print_receipt: true`                                                                                   | `send_receipt: true` and `email`                                                    |
| **Needs the device online** | Yes (auto-connects a session)                                                                           | No — generated from stored transaction data                                         |
| **Required fields**         | `trans_id`                                                                                              | `email`, `mid`, `trans_id`                                                          |
| **Optional fields**         | `delay`, `extra_receipt`                                                                                | `custom_message`                                                                    |
| **Device support**          | Only where `capabilities.printer` is `true`                                                             | All                                                                                 |
| **Response**                | `200`                                                                                                   | `200` `{ "success": true, "message": "Receipt sent successfully" }`                 |

* **Reprints are limited to the latest transaction in an order.** `print-receipt` looks up the transaction by your merchant + `trans_id`; it must be the most recent transaction within its order.
* **Only Clover Flex and Clover Mini can print.** All other devices, including every Ingenico model, return `400 Not supported` on `print-receipt`. Hide reprint options when `capabilities.printer` is `false`.
* **`send_receipt` has no fallback email** — `email` is always required. Emailed receipts are identical whether sent at charge time or afterward.

See [Print receipt error messages](/docs/guides/payments/card-present/endpoints-and-errors#print-receipt-error-messages) for the errors you can match on.