Skip to main content

Support Tickets API

The Tickets API allows you to create, track, and manage support tickets directly from your application. Use it to report payment issues, request refunds, ask integration questions, and communicate with the LuxCore support team — all without leaving your platform.

API Key Scopes

Your API key must have the appropriate scopes to access ticket endpoints:
Contact your account manager or request scope changes via the Dashboard to enable ticket scopes on your API key.

Creating a Ticket

Create a new support ticket with POST /tickets.

Request Body

Response

Creating a duplicate ticket for the same payment ID returns an error result with code 409 error. Use a comment on the existing ticket instead.

Listing Tickets

Retrieve a paginated list of your tickets with GET /tickets.

Query Parameters

Response

Getting Ticket Details

Retrieve full details of a specific ticket with GET /tickets/:ticketId.
Returns the same MerchantTicketResponseDto structure as the create endpoint.

Closing a Ticket

Close an open ticket with POST /tickets/:ticketId/close. You can optionally include a closing comment.
Close is allowed from open, in_progress, waiting_customer, on_hold or resolved. Inspect the returned success flag; an invalid transition returns code 409 in the error result.

Reopening a Ticket

Reopen a resolved or closed ticket with POST /tickets/:ticketId/reopen.

Comments

Comments cannot be added to tickets in a final status. An invalid status transition can return code 409 in the error result; check both the HTTP status and body success before retrying.

Adding a Comment

Add a comment to an existing ticket with POST /tickets/:ticketId/comments.

Comment Request Body

Each attachment reference requires:

Listing Comments

Retrieve comments on a ticket with GET /tickets/:ticketId/comments.

Comment Response

The API returns comments published to your ticket.

Attachments

File attachments use a two-step upload flow: first generate a pre-signed upload URL, then upload the file directly to storage.

Supported File Types

Upload Workflow

1

Generate Upload URL

Call POST /tickets/:ticketId/upload-url with the filename, content type, and optionally file size:
Response:
2

Upload the File

Use the pre-signed upload_url to upload the file directly via HTTP PUT:
3

Reference in Comment

Include the attachment_id, key, filename, and content type when adding a comment:
Upload URLs expire after the time indicated in expires_in (in seconds). Generate a new URL if the previous one has expired.

Downloading Attachments

To download an attachment, request a pre-signed download URL: Ticket-level attachment:
Comment attachment:
Response:
thumb_url is available for image attachments only. It is null for PDFs and videos.

Ticket Statuses

Status Lifecycle

A support agent picks up the ticket and begins investigation.
The support team has responded and needs additional information from you. Add a comment to move the ticket forward.
Adding a comment updates the ticket conversation; it does not itself change the ticket status.
The issue requires external investigation (e.g., bank confirmation). The ticket is paused until the external party responds.
The support team has resolved the issue. You can close the ticket or reopen it if the problem persists.
You confirm the resolution by closing the ticket.
You reopen the ticket via POST /tickets/:ticketId/reopen if the issue was not fully resolved.

Merchant-Allowed Transitions

As a merchant, you can perform these status transitions:

Categories

Using the correct category helps the support team route your ticket faster. Set priority to low, medium or high when appropriate; the default is medium.

Webhook Events

When you have webhooks configured, the following ticket events are delivered:
ticket.comment_added notifies you of a comment published to your ticket, including merchant comments. For ticket.comment_added, the comment content is included in data.comment alongside data.ticket.
The webhook payload follows the same envelope structure as payment events, with the full ticket object in the data.ticket field:
To receive ticket events, add them to your webhook subscription. See the Webhooks Guide for setup instructions.

Error Handling

Check both HTTP status and the response body. Request/authentication failures use the standard statusCode, message, error_code format. Ticket business failures can return success: false, error and statusCode even with an HTTP success status; do not treat HTTP 200/201 alone as completion. A ticket business-error result can look like this:
Ticket creation and comment creation return HTTP 201 Created. Other successful operations return HTTP 200 OK. Check the success field and statusCode in the response body for error details.

Best Practices

Link Payments to Tickets

Always include payment_id or transaction_id when creating tickets about payment issues. This helps the support team investigate faster.

Use Correct Categories

Choose an accurate category and set the appropriate priority when creating a ticket.

Add Context in Comments

When replying, include relevant details like timestamps, amounts, and error messages. Attach screenshots when possible.

Monitor via Webhooks

Subscribe to ticket.updated and ticket.comment_added events to get real-time notifications instead of polling the API.