Use Case: Charging Products
This section covers the programmatic creation of orders via the API. It demonstrates how to charge products on behalf of customers, and link orders to events.
Overview
Integrators can create product charges programmatically using the same flow available in the Web Admin Dashboard.
This allows you to:
Charge a customer for a product
Create ad-hoc charges (e.g. infractions, penalties)
Associate charges with a specific event
Generate payment links or charge immediately
Two common use cases are supported:
Charge a product directly (Dashboard-style)
Charge a product within an Event context
Authentication & Permissions
Endpoint:
POST /ordersAuthentication:
x-api-key: <your_api_key>Use Case 1 — Charge a Product (Dashboard-Style)
This creates an order on behalf of a customer.
Required Fields
"type": "ORDER"(Use"PREVIEW"to validate without charging.)user.id(the customer being charged)At least one item in
items
Example – Ad-Hoc Infraction Charge at Pod-Level
It now appears in the Admin Dashboard as shown below.

Pay attention to the Location field: Venue 1 – Pod 1. The purchase is registered at the Pod level.
In the following example, the structure is similar, but the Location appears as Venue 1, because the purchase is registered at the area level instead.
Example – Ad-Hoc Infraction Charge at Area-Level
Example – POS/Shop Product

Use Case 2 — Charge Within an Event
To associate the charge with a specific event, include:
This links the order to that event for reporting and operational context.
Example – Infraction Linked to an Event
It now appears in the Admin Dashboard as shown below.

Orders API — Technical Specification
For the complete programmatic definition of the POST /orders endpoint (order creation), including request structure and response schema, refer to the API specification below.
truefalseReturns an Order
A three letter code in upper case as described in https://www.iso.org/iso-4217-currency-codes.html
falseReturns an error
Returns an ErrorDto in case of validation errors or failures.
Possible error codes are:EO000: This action requires a logged in user.EO042: Order amount exceeds role limit.EO001: Items quantity must be greater than 0.EO002: Invalid item ids provided.EO003: No items provided.EO004: Quantity must be a round number.EO005: Charge amount must be greater than 0.EO010: There's no payment method set up.EO011: The payment method configured is not active. Please, add a new one.EO012: The amount of virtual credits exceeds the account balance.EO020: Could not process vending machine order.EO030: Unable to find the event.EO040: Unable to authorize the payment method. Please try using a different one.EO041: Prepaid cards are not accepted, please use a credit or debit card.EO043: Could not process the payment in the terminal.EO044: Could not update virtual credits for user.RA001: Could not confirm the payment. Please try again.EO050: Cannot create an order without a location.EO051: Membership subscription payment link is no longer valid.EO052: No active membership subscription found for user.
POST /apis/v2/orders HTTP/1.1
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 1021
{
"type": "PREVIEW",
"status": "DRAFT",
"paymentMethod": "CASH",
"virtualCredits": 1,
"taxExempt": false,
"vendingMachineOrderId": "text",
"user": {
"id": "text"
},
"areas": {
"items": [
"text"
],
"_total": 1,
"_links": {
"self": {
"href": "text"
}
}
},
"pod": {
"id": "text"
},
"event": {
"id": "text"
},
"items": [
{
"type": "BOOKING",
"name": "text",
"description": "text",
"quantity": 1,
"price": 1,
"productOffering": {
"id": "text"
},
"posProductOffering": {
"id": "text"
},
"event": {
"id": "text"
},
"replay": {
"id": "text"
},
"sku": "text",
"appliesTo": {
"items": [
{
"firstName": "text",
"lastName": "text",
"description": "text",
"roles": [
"ADMIN"
],
"rolesAreas": {
"items": [
"text"
],
"_total": 1,
"_links": {
"self": {
"href": "text"
}
}
},
"flags": [
"NEW"
],
"freeQuickReplays": 1,
"picture": {
"id": "text"
},
"gender": "text",
"birthday": "2026-01-01T00:00:00.000Z",
"coachProfile": {
"id": "text"
},
"membershipEnrollment": {
"id": "text"
},
"securityPicture": {
"id": "text"
},
"_links": {}
}
],
"_pagination": {
"page": 1,
"ipp": 1,
"count": 1,
"total": 1
},
"_links": {
"self": {
"href": "text"
}
}
}
}
],
"terminal": {
"id": "text"
},
"paymentMethodSettings": "STORE"
}{
"id": "text",
"code": "text",
"createdDate": "2026-01-01T00:00:00.000Z",
"settlingDate": "2026-01-01T00:00:00.000Z",
"type": "PREVIEW",
"status": "DRAFT",
"source": "BOOKING",
"paymentMethod": "CASH",
"currency": "text",
"subtotal": 1,
"tax": 1,
"taxes": {
"name": "text",
"amount": 1,
"percentage": 1
},
"fee": 1,
"fees": 1,
"discount": 1,
"virtualCredits": 1,
"taxExempt": false,
"total": 1,
"capturedTotal": 1,
"vendingMachineOrderId": "text",
"items": [
{
"id": "text",
"type": "BOOKING",
"name": "text",
"description": "text",
"quantity": 1,
"price": 1,
"subtotal": 1,
"tax": 1,
"fee": 1,
"discount": 1,
"virtualCredits": 1,
"total": 1,
"productOffering": {
"id": "text"
},
"posProductOffering": {
"id": "text"
},
"product": {
"id": "text"
},
"event": {
"id": "text"
},
"replay": {
"id": "text"
}
}
],
"creator": {
"id": "text"
},
"user": {
"id": "text"
},
"areas": {
"items": [
"text"
],
"_total": 1,
"_links": {
"self": {
"href": "text"
}
}
},
"pod": {
"id": "text"
},
"event": {
"id": "text"
},
"payments": {},
"transfers": {
"items": [
{
"id": "text",
"amount": 1,
"reversedAmount": 1,
"reversedDate": "2026-01-01T00:00:00.000Z",
"currency": "text",
"status": "PENDING",
"transferDate": "2026-01-01T00:00:00.000Z",
"stripe": {
"id": "text"
},
"payment": {
"id": "text"
},
"user": {
"id": "text"
},
"reversedByUser": {
"id": "text"
},
"_links": {}
}
],
"_total": 1,
"_links": {
"self": {
"href": "text"
}
}
},
"cancellations": {
"items": [
{
"id": "text",
"event": {
"id": "text"
},
"summary": {
"policy": "FREE_OF_CHARGE",
"policySubtype": {},
"policyDescription": {},
"extensionId": {},
"cancellingUser": {
"id": "text",
"user": {
"id": "text"
},
"type": "REGULAR",
"firstName": "text",
"lastName": "text",
"gender": "text",
"birthday": "2026-01-01T00:00:00.000Z",
"initials": "text",
"description": "text",
"picture": {},
"usattRating": 1,
"duprProfileUrl": "text",
"memberSince": "2026-01-01T00:00:00.000Z",
"membershipEnrollment": {},
"kids": {},
"_links": {}
},
"cancellationTime": "2026-01-01T00:00:00.000Z",
"validUntilTime": "2026-01-01T00:00:00.000Z",
"cancellationFee": 1,
"refund": {
"reimbursement": 1,
"virtualCredits": 1,
"passes": {
"items": [
{
"id": {},
"available": 1,
"quantity": 1,
"displayName": "text",
"displayNamePlural": "text",
"rate": 1
}
],
"_total": 1,
"_links": {}
}
},
"errors": [
{
"code": "text",
"message": "text",
"details": {}
}
]
},
"_links": {
"self": {
"href": "text"
}
}
}
],
"_total": 1,
"_links": {
"self": {
"href": "text"
}
}
},
"products": {
"items": [
{
"id": "text",
"sku": "text",
"name": "text",
"description": "text",
"type": "LIFESTYLE",
"picture": {
"small": {
"href": "text"
},
"medium": {
"href": "text"
},
"large": {
"href": "text"
}
},
"price": 1,
"areas": {
"items": [
"text"
],
"_total": 1,
"_links": {
"self": {
"href": "text"
}
}
},
"_links": {}
}
],
"_total": 1,
"_links": {
"self": {
"href": "text"
}
}
},
"events": {
"items": [
{
"id": "text",
"type": "REGULAR",
"subtype": "OPERATIONS",
"customType": "text",
"name": "text",
"description": "text",
"startTime": "2026-01-01T00:00:00.000Z",
"endTime": "2026-01-01T00:00:00.000Z",
"pods": {
"items": [
{
"id": "text",
"slug": "text",
"displayName": "text",
"displayNameShort": "text",
"description": "text",
"address": {
"street": "text",
"floor": "text",
"city": "text",
"zip": "text",
"displayName": "text"
},
"timezone": "text",
"type": "PRIVATE",
"status": "NOT_AVAILABLE",
"sport": "PICKLEBALL",
"area": {},
"tables": {
"items": [
{
"id": "text",
"slug": "text",
"displayName": "text",
"displayNameShort": "text",
"description": "text",
"type": "STANDARD",
"status": "AVAILABLE",
"features": [
"REPLAYS"
],
"pod": {},
"settings": {
"items": [
{
"id": "text",
"value": {}
}
],
"_total": 1,
"_links": {
"self": {
"href": "text"
}
}
},
"errors": [
{
"code": "text",
"message": "text",
"details": {}
}
],
"_links": {}
}
],
"_total": 1,
"_links": {
"self": {
"href": "text"
}
}
},
"openTime": {
"hours": 1,
"minutes": 1
},
"closeTime": {
"hours": 1,
"minutes": 1
},
"closedTimeOverrides": {
"items": [
{
"id": "text",
"days": [
1
],
"from": {
"hours": 1,
"minutes": 1
},
"to": {
"hours": 1,
"minutes": 1
}
}
],
"_total": 1,
"_links": {
"self": {
"href": "text"
}
}
},
"guests": {
"private": {
"min": "text",
"max": "text"
}
},
"rates": {},
"settings": {
"items": [
{
"id": "text",
"value": {}
}
],
"_total": 1,
"_links": {
"self": {
"href": "text"
}
}
},
"errors": [
{
"code": "text",
"message": "text",
"details": {}
}
],
"_links": {}
}
],
"_total": 1,
"_links": {
"self": {
"href": "text"
}
}
},
"tables": {
"items": [
{
"id": "text",
"type": "FIXED_TABLE",
"table": {
"id": "text"
},
"startTime": "2026-01-01T00:00:00.000Z",
"endTime": "2026-01-01T00:00:00.000Z",
"features": [
"REPLAYS"
],
"status": "INVALID",
"errors": [
{
"code": "text",
"message": "text",
"details": {}
}
],
"_links": {
"self": {
"href": "text"
}
}
}
],
"_total": 1,
"_links": {
"self": {
"href": "text"
}
}
},
"access": {
"id": "text",
"type": "OPEN",
"startTime": "2026-01-01T00:00:00.000Z",
"endTime": "2026-01-01T00:00:00.000Z"
},
"guests": {
"displayName": "text",
"displayNameShort": "text",
"max": 1
},
"reservations": {
"items": [
{
"id": "text",
"startTime": "2026-01-01T00:00:00.000Z",
"endTime": "2026-01-01T00:00:00.000Z",
"tableAssignment": "PENDING",
"sessions": {
"items": [
{
"id": "text",
"session": {
"id": "text"
},
"coupon": {
"id": "text"
},
"charge": {
"id": "text"
},
"_links": {}
}
],
"_total": 1,
"_links": {
"self": {
"href": "text"
}
}
},
"pod": {
"id": "text"
},
"table": {
"id": "text"
},
"coach": {
"id": "text"
},
"guests": 1,
"charges": {
"_total": 1
},
"quickReplays": {
"_total": 1
},
"customReplays": {
"_total": 1
},
"_links": {}
}
],
"_total": 1,
"_links": {
"self": {
"href": "text"
}
}
},
"bookingMode": "USER_BOOKED",
"paymentMethod": "CASH",
"bookedBy": {
"id": "text"
},
"totalTeams": 1,
"teamSize": 1,
"admission": "OPEN",
"admissionRating": {
"minRating": 1,
"maxRating": 1,
"type": "SINGLES"
},
"admissionRate": {
"regular": 1,
"member": 1,
"membersDefault": 1,
"dayPass": {
"id": "text",
"displayName": "text",
"rate": 1
},
"memberships": {
"items": [
{
"membership": {
"id": "text"
},
"rate": 1
}
],
"_total": 1,
"_links": {
"self": {
"href": "text"
}
}
},
"chargingStrategy": "spot+",
"_links": {}
},
"admissionDate": {
"regular": "2026-01-01T00:00:00.000Z",
"member": "2026-01-01T00:00:00.000Z",
"membersDefault": "2026-01-01T00:00:00.000Z",
"memberships": {
"items": [
{
"membership": {
"id": "text"
},
"date": "2026-01-01T00:00:00.000Z"
}
],
"_total": 1,
"_links": {
"self": {
"href": "text"
}
}
},
"_links": {}
},
"admissionKids": "OPEN",
"allowedMemberships": {},
"coachRate": 1,
"freeSignupCancellationHorizonHours": 1,
"tags": [
"text"
],
"picture": {
"id": "text"
},
"visibility": "LISTED",
"invitations": {},
"payments": {},
"replays": {},
"cancellation": {},
"notes": {},
"openInvitations": {},
"signups": {},
"waitlist": {},
"features": [
"WAITLIST"
],
"stats": {},
"series": {
"id": "text"
},
"suspension": {
"id": "text"
},
"status": "INVALID",
"errors": [
{
"code": "text",
"message": "text",
"details": {}
}
],
"tournamentDivision": {
"id": "7229d7d5-5581-4d86-975f-5b7efc9b00e9",
"tournament": "7229d7d5-5581-4d86-975f-5b7efc9b00e9",
"provider": "SWISH",
"swish": {
"eventFormat": "rotating_partners_round_robin",
"gameId": "game123",
"editPlayersPath": "rotating-partners-round-robin"
},
"podplay": {
"eventFormat": "round_robin",
"gameId": "game123",
"url": "https://tournaments.podplay.app/admin/tournaments/game123"
},
"status": "DRAFT",
"createdAt": "2025-07-09T17:32:26.800Z",
"event": "7229d7d5-5581-4d86-975f-5b7efc9b00e9",
"lastSyncedAt": "2025-07-09T17:32:26.800Z",
"visibility": "VISIBLE",
"_links": {}
},
"visibilitySchedules": {
"items": [
{
"id": "text",
"event": {
"id": "text"
},
"listDaysBefore": 1,
"membersOnly": true,
"executed": true,
"status": "INVALID",
"errors": [
{
"code": "text",
"message": "text",
"details": {}
}
],
"_links": {}
}
],
"_total": 1,
"_links": {
"self": {
"href": "text"
}
}
},
"recurrence": {
"id": "text"
},
"teams": {
"items": [
{
"id": "text",
"_links": {
"self": {
"href": "text"
}
},
"teamLeader": {
"id": "text",
"user": {
"id": "text"
},
"type": "REGULAR",
"firstName": "text",
"lastName": "text",
"gender": "text",
"birthday": "2026-01-01T00:00:00.000Z",
"initials": "text",
"description": "text",
"picture": {},
"usattRating": 1,
"duprProfileUrl": "text",
"memberSince": "2026-01-01T00:00:00.000Z",
"membershipEnrollment": {},
"kids": {},
"_links": {}
},
"teamMembers": {
"items": [
{
"id": "text",
"user": {
"id": "text"
},
"type": "REGULAR",
"firstName": "text",
"lastName": "text",
"gender": "text",
"birthday": "2026-01-01T00:00:00.000Z",
"initials": "text",
"description": "text",
"picture": {},
"usattRating": 1,
"duprProfileUrl": "text",
"memberSince": "2026-01-01T00:00:00.000Z",
"membershipEnrollment": {},
"kids": {},
"_links": {}
}
],
"_total": 1,
"_links": {
"self": {
"href": "text"
}
}
},
"teamMemberCount": 1
}
],
"_total": 1,
"_links": {
"self": {
"href": "text"
}
}
},
"_links": {}
}
],
"_links": {
"self": {
"href": "text"
}
}
},
"replays": {
"items": [
{
"id": "text",
"type": "REGULAR",
"subtype": "OPERATIONS",
"customType": "text",
"name": "text",
"description": "text",
"startTime": "2026-01-01T00:00:00.000Z",
"endTime": "2026-01-01T00:00:00.000Z",
"pods": {
"items": [
{
"id": "text",
"slug": "text",
"displayName": "text",
"displayNameShort": "text",
"description": "text",
"address": {
"street": "text",
"floor": "text",
"city": "text",
"zip": "text",
"displayName": "text"
},
"timezone": "text",
"type": "PRIVATE",
"status": "NOT_AVAILABLE",
"sport": "PICKLEBALL",
"area": {},
"tables": {
"items": [
{
"id": "text",
"slug": "text",
"displayName": "text",
"displayNameShort": "text",
"description": "text",
"type": "STANDARD",
"status": "AVAILABLE",
"features": [
"REPLAYS"
],
"pod": {},
"settings": {
"items": [
{
"id": "text",
"value": {}
}
],
"_total": 1,
"_links": {
"self": {
"href": "text"
}
}
},
"errors": [
{
"code": "text",
"message": "text",
"details": {}
}
],
"_links": {}
}
],
"_total": 1,
"_links": {
"self": {
"href": "text"
}
}
},
"openTime": {
"hours": 1,
"minutes": 1
},
"closeTime": {
"hours": 1,
"minutes": 1
},
"closedTimeOverrides": {
"items": [
{
"id": "text",
"days": [
1
],
"from": {
"hours": 1,
"minutes": 1
},
"to": {
"hours": 1,
"minutes": 1
}
}
],
"_total": 1,
"_links": {
"self": {
"href": "text"
}
}
},
"guests": {
"private": {
"min": "text",
"max": "text"
}
},
"rates": {},
"settings": {
"items": [
{
"id": "text",
"value": {}
}
],
"_total": 1,
"_links": {
"self": {
"href": "text"
}
}
},
"errors": [
{
"code": "text",
"message": "text",
"details": {}
}
],
"_links": {}
}
],
"_total": 1,
"_links": {
"self": {
"href": "text"
}
}
},
"tables": {
"items": [
{
"id": "text",
"type": "FIXED_TABLE",
"table": {
"id": "text"
},
"startTime": "2026-01-01T00:00:00.000Z",
"endTime": "2026-01-01T00:00:00.000Z",
"features": [
"REPLAYS"
],
"status": "INVALID",
"errors": [
{
"code": "text",
"message": "text",
"details": {}
}
],
"_links": {
"self": {
"href": "text"
}
}
}
],
"_total": 1,
"_links": {
"self": {
"href": "text"
}
}
},
"access": {
"id": "text",
"type": "OPEN",
"startTime": "2026-01-01T00:00:00.000Z",
"endTime": "2026-01-01T00:00:00.000Z"
},
"guests": {
"displayName": "text",
"displayNameShort": "text",
"max": 1
},
"reservations": {
"items": [
{
"id": "text",
"startTime": "2026-01-01T00:00:00.000Z",
"endTime": "2026-01-01T00:00:00.000Z",
"tableAssignment": "PENDING",
"sessions": {
"items": [
{
"id": "text",
"session": {
"id": "text"
},
"coupon": {
"id": "text"
},
"charge": {
"id": "text"
},
"_links": {}
}
],
"_total": 1,
"_links": {
"self": {
"href": "text"
}
}
},
"pod": {
"id": "text"
},
"table": {
"id": "text"
},
"coach": {
"id": "text"
},
"guests": 1,
"charges": {
"_total": 1
},
"quickReplays": {
"_total": 1
},
"customReplays": {
"_total": 1
},
"_links": {}
}
],
"_total": 1,
"_links": {
"self": {
"href": "text"
}
}
},
"bookingMode": "USER_BOOKED",
"paymentMethod": "CASH",
"bookedBy": {
"id": "text"
},
"totalTeams": 1,
"teamSize": 1,
"admission": "OPEN",
"admissionRating": {
"minRating": 1,
"maxRating": 1,
"type": "SINGLES"
},
"admissionRate": {
"regular": 1,
"member": 1,
"membersDefault": 1,
"dayPass": {
"id": "text",
"displayName": "text",
"rate": 1
},
"memberships": {
"items": [
{
"membership": {
"id": "text"
},
"rate": 1
}
],
"_total": 1,
"_links": {
"self": {
"href": "text"
}
}
},
"chargingStrategy": "spot+",
"_links": {}
},
"admissionDate": {
"regular": "2026-01-01T00:00:00.000Z",
"member": "2026-01-01T00:00:00.000Z",
"membersDefault": "2026-01-01T00:00:00.000Z",
"memberships": {
"items": [
{
"membership": {
"id": "text"
},
"date": "2026-01-01T00:00:00.000Z"
}
],
"_total": 1,
"_links": {
"self": {
"href": "text"
}
}
},
"_links": {}
},
"admissionKids": "OPEN",
"allowedMemberships": {},
"coachRate": 1,
"freeSignupCancellationHorizonHours": 1,
"tags": [
"text"
],
"picture": {
"id": "text"
},
"visibility": "LISTED",
"invitations": {},
"payments": {},
"replays": {},
"cancellation": {},
"notes": {},
"openInvitations": {},
"signups": {},
"waitlist": {},
"features": [
"WAITLIST"
],
"stats": {},
"series": {
"id": "text"
},
"suspension": {
"id": "text"
},
"status": "INVALID",
"errors": [
{
"code": "text",
"message": "text",
"details": {}
}
],
"tournamentDivision": {
"id": "7229d7d5-5581-4d86-975f-5b7efc9b00e9",
"tournament": "7229d7d5-5581-4d86-975f-5b7efc9b00e9",
"provider": "SWISH",
"swish": {
"eventFormat": "rotating_partners_round_robin",
"gameId": "game123",
"editPlayersPath": "rotating-partners-round-robin"
},
"podplay": {
"eventFormat": "round_robin",
"gameId": "game123",
"url": "https://tournaments.podplay.app/admin/tournaments/game123"
},
"status": "DRAFT",
"createdAt": "2025-07-09T17:32:26.800Z",
"event": "7229d7d5-5581-4d86-975f-5b7efc9b00e9",
"lastSyncedAt": "2025-07-09T17:32:26.800Z",
"visibility": "VISIBLE",
"_links": {}
},
"visibilitySchedules": {
"items": [
{
"id": "text",
"event": {
"id": "text"
},
"listDaysBefore": 1,
"membersOnly": true,
"executed": true,
"status": "INVALID",
"errors": [
{
"code": "text",
"message": "text",
"details": {}
}
],
"_links": {}
}
],
"_total": 1,
"_links": {
"self": {
"href": "text"
}
}
},
"recurrence": {
"id": "text"
},
"teams": {
"items": [
{
"id": "text",
"_links": {
"self": {
"href": "text"
}
},
"teamLeader": {
"id": "text",
"user": {
"id": "text"
},
"type": "REGULAR",
"firstName": "text",
"lastName": "text",
"gender": "text",
"birthday": "2026-01-01T00:00:00.000Z",
"initials": "text",
"description": "text",
"picture": {},
"usattRating": 1,
"duprProfileUrl": "text",
"memberSince": "2026-01-01T00:00:00.000Z",
"membershipEnrollment": {},
"kids": {},
"_links": {}
},
"teamMembers": {
"items": [
{
"id": "text",
"user": {
"id": "text"
},
"type": "REGULAR",
"firstName": "text",
"lastName": "text",
"gender": "text",
"birthday": "2026-01-01T00:00:00.000Z",
"initials": "text",
"description": "text",
"picture": {},
"usattRating": 1,
"duprProfileUrl": "text",
"memberSince": "2026-01-01T00:00:00.000Z",
"membershipEnrollment": {},
"kids": {},
"_links": {}
}
],
"_total": 1,
"_links": {
"self": {
"href": "text"
}
}
},
"teamMemberCount": 1
}
],
"_total": 1,
"_links": {
"self": {
"href": "text"
}
}
},
"_links": {}
}
],
"_links": {
"self": {
"href": "text"
}
}
},
"coupon": {
"id": "text"
},
"passes": {
"_total": 1
},
"virtualCreditsTransactions": {
"items": [
{
"id": "text",
"order": {
"id": "text"
},
"user": {
"id": "text"
},
"createdAt": "2026-01-01T00:00:00.000Z",
"amountType": "INCOME",
"amount": 1,
"balance": 1,
"source": "BOOKING",
"reason": "text",
"updatedBy": {
"id": "text"
},
"_links": {}
}
],
"_pagination": {
"page": 1,
"ipp": 1,
"count": 1,
"total": 1
},
"_links": {
"self": {
"href": "text"
}
}
},
"errors": [
{
"code": "text",
"message": "text",
"details": {}
}
],
"_links": {}
}Last updated
Was this helpful?

