> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.runpayments.io/docs/guides/payments/card-present/signatures-and-receipts/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. > Capture cardholder signatures and deliver printed or emailed receipts.