Ring a sale
Start the order, place it — the moment a cart becomes a committed sale — take the payment in cash, card or another tender, and hold an order to pick it up later.
Selling · a play in 4 steps.
The steps
- Start the order. — createOrder
- Place it — prices, minimums and reservations run fresh; the cart becomes a sale. — placeOrder
- Take the payment — cash needs an open till; every tender is permanent. — applyTender
- Put an open order on hold without losing it, and resume it when the customer is back. — holdOrder, resumeOrder
The calls
Every operation this use case runs, in the order it first appears, with the request and the response its reference page shows.
createOrder
createOrder — mutation · Create a new customer order at your organization.
Example request
mutation ExampleCreateOrder($input: NewOrderInput!) {
createOrder(input: $input) {
id
sysId
type
caption
status
parentId
rootId
createdAt
updatedAt
revisionNum
revision
organizationId
channel
orderType
validUntil
termEndsAt
convertedOrderId
sourceDocumentId
reorderOfOrderId
logicalFacilityId
currency
exemptionCertificateId
paymentState
fulfillmentState
recognitionState
taxJurisdictionId
subtotalMinor
discountTotalMinor
taxTotalMinor
totalMinor
fulfillmentFeeMinor
fulfillmentFeeTaxMinor
tenderedNetMinor
tipTotalMinor
paymentIds
refundIds
disputeIds
invoiceIds
couponIds
sourcingSagaId
commissionAgentUserIds
affiliateId
}
}
Variables:
{
"input": {
"caption": "Blue jeans",
"organizationId": "01900000-0000-7000-8000-44b781470000",
"channel": "pos",
"orderType": "sale",
"logicalFacilityId": "01900000-0000-7000-8000-8026f71c0000",
"lines": [
{
"variantId": "01900000-0000-7000-8000-8415e73b0000",
"quantity": "2"
}
]
}
}
Send it with the envelope naming the version: "extensions": {"at": {"version": {"name":"genesis","number":0}}}.
Example response
{
"data": {
"createOrder": {
"id": "01900000-0000-7000-8000-37386ae00000",
"sysId": "SO-EXMP-0000-000F",
"type": "Order",
"caption": "Blue jeans",
"status": "open",
"parentId": "01900000-0000-7000-8000-065235280000",
"rootId": "01900000-0000-7000-8000-a093dd800000",
"createdAt": "2027-01-31T00:00:00.000Z",
"updatedAt": "2027-01-31T00:00:00.000Z",
"revisionNum": 1,
"revision": "01900000-0000-7000-8000-b7960e180000",
"organizationId": "01900000-0000-7000-8000-44b781470000",
"channel": "pos",
"orderType": "sale",
"validUntil": "<valid until>",
"termEndsAt": "2027-01-31T00:00:00.000Z",
"convertedOrderId": "01900000-0000-7000-8000-b1563ac60000",
"sourceDocumentId": "01900000-0000-7000-8000-8fd6a7c40000",
"reorderOfOrderId": "01900000-0000-7000-8000-5533d5a60000",
"logicalFacilityId": "01900000-0000-7000-8000-8026f71c0000",
"currency": "USD",
"exemptionCertificateId": "01900000-0000-7000-8000-6c082e160000",
"paymentState": "<payment state>",
"fulfillmentState": "<fulfillment state>",
"recognitionState": "<recognition state>",
"taxJurisdictionId": "01900000-0000-7000-8000-3a64e3820000",
"subtotalMinor": 1,
"discountTotalMinor": 1,
"taxTotalMinor": 1,
"totalMinor": 1,
"fulfillmentFeeMinor": 1,
"fulfillmentFeeTaxMinor": 1,
"tenderedNetMinor": 1,
"tipTotalMinor": 1,
"paymentIds": [
"01900000-0000-7000-8000-f1636a750000"
],
"refundIds": [
"01900000-0000-7000-8000-a5d2e2d30000"
],
"disputeIds": [
"01900000-0000-7000-8000-d72df27f0000"
],
"invoiceIds": [
"01900000-0000-7000-8000-0a4b14ba0000"
],
"couponIds": [
"01900000-0000-7000-8000-6a9b05ef0000"
],
"sourcingSagaId": "01900000-0000-7000-8000-2dfe37aa0000",
"commissionAgentUserIds": [
"01900000-0000-7000-8000-7aaf99300000"
],
"affiliateId": "01900000-0000-7000-8000-ab1bc9b90000"
}
},
"extensions": {
"at": {
"callId": "01EXAMPLE-CALL-ID",
"version": {
"requested": {
"name": "genesis",
"number": 0
},
"serviced": {
"name": "genesis",
"number": 0
}
}
}
}
}
placeOrder
placeOrder — mutation · Place an open order — the moment a cart becomes a committed sale.
Example request
mutation ExamplePlaceOrder($id: ID!, $revision: ID!, $reason: String) {
placeOrder(id: $id, revision: $revision, reason: $reason) {
id
sysId
type
caption
status
parentId
rootId
createdAt
updatedAt
revisionNum
revision
organizationId
channel
orderType
validUntil
termEndsAt
convertedOrderId
sourceDocumentId
reorderOfOrderId
logicalFacilityId
currency
exemptionCertificateId
paymentState
fulfillmentState
recognitionState
taxJurisdictionId
subtotalMinor
discountTotalMinor
taxTotalMinor
totalMinor
fulfillmentFeeMinor
fulfillmentFeeTaxMinor
tenderedNetMinor
tipTotalMinor
paymentIds
refundIds
disputeIds
invoiceIds
couponIds
sourcingSagaId
commissionAgentUserIds
affiliateId
}
}
Variables:
{
"id": "01900000-0000-7000-8000-37386ae00000",
"revision": "01900000-0000-7000-8000-b7960e180000",
"reason": "Correcting a miscount."
}
Send it with the envelope naming the version: "extensions": {"at": {"version": {"name":"genesis","number":0}}}.
Example response
{
"data": {
"placeOrder": {
"id": "01900000-0000-7000-8000-37386ae00000",
"sysId": "SO-EXMP-0000-000F",
"type": "Order",
"caption": "Blue jeans",
"status": "open",
"parentId": "01900000-0000-7000-8000-065235280000",
"rootId": "01900000-0000-7000-8000-a093dd800000",
"createdAt": "2027-01-31T00:00:00.000Z",
"updatedAt": "2027-01-31T00:00:00.000Z",
"revisionNum": 1,
"revision": "01900000-0000-7000-8000-b7960e180000",
"organizationId": "01900000-0000-7000-8000-44b781470000",
"channel": "pos",
"orderType": "sale",
"validUntil": "<valid until>",
"termEndsAt": "2027-01-31T00:00:00.000Z",
"convertedOrderId": "01900000-0000-7000-8000-b1563ac60000",
"sourceDocumentId": "01900000-0000-7000-8000-8fd6a7c40000",
"reorderOfOrderId": "01900000-0000-7000-8000-5533d5a60000",
"logicalFacilityId": "01900000-0000-7000-8000-8026f71c0000",
"currency": "USD",
"exemptionCertificateId": "01900000-0000-7000-8000-6c082e160000",
"paymentState": "<payment state>",
"fulfillmentState": "<fulfillment state>",
"recognitionState": "<recognition state>",
"taxJurisdictionId": "01900000-0000-7000-8000-3a64e3820000",
"subtotalMinor": 1,
"discountTotalMinor": 1,
"taxTotalMinor": 1,
"totalMinor": 1,
"fulfillmentFeeMinor": 1,
"fulfillmentFeeTaxMinor": 1,
"tenderedNetMinor": 1,
"tipTotalMinor": 1,
"paymentIds": [
"01900000-0000-7000-8000-f1636a750000"
],
"refundIds": [
"01900000-0000-7000-8000-a5d2e2d30000"
],
"disputeIds": [
"01900000-0000-7000-8000-d72df27f0000"
],
"invoiceIds": [
"01900000-0000-7000-8000-0a4b14ba0000"
],
"couponIds": [
"01900000-0000-7000-8000-6a9b05ef0000"
],
"sourcingSagaId": "01900000-0000-7000-8000-2dfe37aa0000",
"commissionAgentUserIds": [
"01900000-0000-7000-8000-7aaf99300000"
],
"affiliateId": "01900000-0000-7000-8000-ab1bc9b90000"
}
},
"extensions": {
"at": {
"callId": "01EXAMPLE-CALL-ID",
"version": {
"requested": {
"name": "genesis",
"number": 0
},
"serviced": {
"name": "genesis",
"number": 0
}
}
}
}
}
applyTender
applyTender — mutation · Take payment on a placed order — cash, card, or other tender.
Example request
mutation ExampleApplyTender($input: ApplyTenderInput!) {
applyTender(input: $input) {
id
type
caption
status
parentId
rootId
tenderType
appliedMinor
currency
collectedMinor
changeMinor
tipMinor
roundingDeltaMinor
paymentId
instrumentId
orgCustomerId
returnId
tillSessionId
reason
refs
createdAt
updatedAt
revision
revisionNum
}
}
Variables:
{
"input": {
"orderId": "01900000-0000-7000-8000-f6d8263a0000",
"expectedRevision": "01900000-0000-7000-8000-e02b2e6c0000",
"tenderType": "cash",
"collectedMinor": 1,
"collectedCurrency": "<collected currency>"
}
}
Send it with the envelope naming the version: "extensions": {"at": {"version": {"name":"genesis","number":0}}}.
Example response
{
"data": {
"applyTender": {
"id": "01900000-0000-7000-8000-37386ae00000",
"type": "<type>",
"caption": "Blue jeans",
"status": "<status>",
"parentId": "01900000-0000-7000-8000-065235280000",
"rootId": "01900000-0000-7000-8000-a093dd800000",
"tenderType": "cash",
"appliedMinor": 1,
"currency": "USD",
"collectedMinor": 1,
"changeMinor": 1,
"tipMinor": 1,
"roundingDeltaMinor": 1,
"paymentId": "01900000-0000-7000-8000-a7c488a40000",
"instrumentId": "01900000-0000-7000-8000-736f3dcd0000",
"orgCustomerId": "01900000-0000-7000-8000-ba56ff800000",
"returnId": "01900000-0000-7000-8000-4d4c03d20000",
"tillSessionId": "01900000-0000-7000-8000-83d61fef0000",
"reason": "Correcting a miscount.",
"refs": [
"<refs>"
],
"createdAt": "2027-01-31T00:00:00.000Z",
"updatedAt": "2027-01-31T00:00:00.000Z",
"revision": "01900000-0000-7000-8000-b7960e180000",
"revisionNum": 1
}
},
"extensions": {
"at": {
"callId": "01EXAMPLE-CALL-ID",
"version": {
"requested": {
"name": "genesis",
"number": 0
},
"serviced": {
"name": "genesis",
"number": 0
}
}
}
}
}
holdOrder
holdOrder — mutation · Put an open order on hold — pause it without losing it.
Example request
mutation ExampleHoldOrder($id: ID!, $revision: ID!, $reason: String) {
holdOrder(id: $id, revision: $revision, reason: $reason) {
id
sysId
type
caption
status
parentId
rootId
createdAt
updatedAt
revisionNum
revision
organizationId
channel
orderType
validUntil
termEndsAt
convertedOrderId
sourceDocumentId
reorderOfOrderId
logicalFacilityId
currency
exemptionCertificateId
paymentState
fulfillmentState
recognitionState
taxJurisdictionId
subtotalMinor
discountTotalMinor
taxTotalMinor
totalMinor
fulfillmentFeeMinor
fulfillmentFeeTaxMinor
tenderedNetMinor
tipTotalMinor
paymentIds
refundIds
disputeIds
invoiceIds
couponIds
sourcingSagaId
commissionAgentUserIds
affiliateId
}
}
Variables:
{
"id": "01900000-0000-7000-8000-37386ae00000",
"revision": "01900000-0000-7000-8000-b7960e180000",
"reason": "Correcting a miscount."
}
Send it with the envelope naming the version: "extensions": {"at": {"version": {"name":"genesis","number":0}}}.
Example response
{
"data": {
"holdOrder": {
"id": "01900000-0000-7000-8000-37386ae00000",
"sysId": "SO-EXMP-0000-000F",
"type": "Order",
"caption": "Blue jeans",
"status": "open",
"parentId": "01900000-0000-7000-8000-065235280000",
"rootId": "01900000-0000-7000-8000-a093dd800000",
"createdAt": "2027-01-31T00:00:00.000Z",
"updatedAt": "2027-01-31T00:00:00.000Z",
"revisionNum": 1,
"revision": "01900000-0000-7000-8000-b7960e180000",
"organizationId": "01900000-0000-7000-8000-44b781470000",
"channel": "pos",
"orderType": "sale",
"validUntil": "<valid until>",
"termEndsAt": "2027-01-31T00:00:00.000Z",
"convertedOrderId": "01900000-0000-7000-8000-b1563ac60000",
"sourceDocumentId": "01900000-0000-7000-8000-8fd6a7c40000",
"reorderOfOrderId": "01900000-0000-7000-8000-5533d5a60000",
"logicalFacilityId": "01900000-0000-7000-8000-8026f71c0000",
"currency": "USD",
"exemptionCertificateId": "01900000-0000-7000-8000-6c082e160000",
"paymentState": "<payment state>",
"fulfillmentState": "<fulfillment state>",
"recognitionState": "<recognition state>",
"taxJurisdictionId": "01900000-0000-7000-8000-3a64e3820000",
"subtotalMinor": 1,
"discountTotalMinor": 1,
"taxTotalMinor": 1,
"totalMinor": 1,
"fulfillmentFeeMinor": 1,
"fulfillmentFeeTaxMinor": 1,
"tenderedNetMinor": 1,
"tipTotalMinor": 1,
"paymentIds": [
"01900000-0000-7000-8000-f1636a750000"
],
"refundIds": [
"01900000-0000-7000-8000-a5d2e2d30000"
],
"disputeIds": [
"01900000-0000-7000-8000-d72df27f0000"
],
"invoiceIds": [
"01900000-0000-7000-8000-0a4b14ba0000"
],
"couponIds": [
"01900000-0000-7000-8000-6a9b05ef0000"
],
"sourcingSagaId": "01900000-0000-7000-8000-2dfe37aa0000",
"commissionAgentUserIds": [
"01900000-0000-7000-8000-7aaf99300000"
],
"affiliateId": "01900000-0000-7000-8000-ab1bc9b90000"
}
},
"extensions": {
"at": {
"callId": "01EXAMPLE-CALL-ID",
"version": {
"requested": {
"name": "genesis",
"number": 0
},
"serviced": {
"name": "genesis",
"number": 0
}
}
}
}
}
resumeOrder
resumeOrder — mutation · Resume a held order — it goes back to open and can be worked again.
Example request
mutation ExampleResumeOrder($id: ID!, $revision: ID!, $reason: String) {
resumeOrder(id: $id, revision: $revision, reason: $reason) {
id
sysId
type
caption
status
parentId
rootId
createdAt
updatedAt
revisionNum
revision
organizationId
channel
orderType
validUntil
termEndsAt
convertedOrderId
sourceDocumentId
reorderOfOrderId
logicalFacilityId
currency
exemptionCertificateId
paymentState
fulfillmentState
recognitionState
taxJurisdictionId
subtotalMinor
discountTotalMinor
taxTotalMinor
totalMinor
fulfillmentFeeMinor
fulfillmentFeeTaxMinor
tenderedNetMinor
tipTotalMinor
paymentIds
refundIds
disputeIds
invoiceIds
couponIds
sourcingSagaId
commissionAgentUserIds
affiliateId
}
}
Variables:
{
"id": "01900000-0000-7000-8000-37386ae00000",
"revision": "01900000-0000-7000-8000-b7960e180000",
"reason": "Correcting a miscount."
}
Send it with the envelope naming the version: "extensions": {"at": {"version": {"name":"genesis","number":0}}}.
Example response
{
"data": {
"resumeOrder": {
"id": "01900000-0000-7000-8000-37386ae00000",
"sysId": "SO-EXMP-0000-000F",
"type": "Order",
"caption": "Blue jeans",
"status": "open",
"parentId": "01900000-0000-7000-8000-065235280000",
"rootId": "01900000-0000-7000-8000-a093dd800000",
"createdAt": "2027-01-31T00:00:00.000Z",
"updatedAt": "2027-01-31T00:00:00.000Z",
"revisionNum": 1,
"revision": "01900000-0000-7000-8000-b7960e180000",
"organizationId": "01900000-0000-7000-8000-44b781470000",
"channel": "pos",
"orderType": "sale",
"validUntil": "<valid until>",
"termEndsAt": "2027-01-31T00:00:00.000Z",
"convertedOrderId": "01900000-0000-7000-8000-b1563ac60000",
"sourceDocumentId": "01900000-0000-7000-8000-8fd6a7c40000",
"reorderOfOrderId": "01900000-0000-7000-8000-5533d5a60000",
"logicalFacilityId": "01900000-0000-7000-8000-8026f71c0000",
"currency": "USD",
"exemptionCertificateId": "01900000-0000-7000-8000-6c082e160000",
"paymentState": "<payment state>",
"fulfillmentState": "<fulfillment state>",
"recognitionState": "<recognition state>",
"taxJurisdictionId": "01900000-0000-7000-8000-3a64e3820000",
"subtotalMinor": 1,
"discountTotalMinor": 1,
"taxTotalMinor": 1,
"totalMinor": 1,
"fulfillmentFeeMinor": 1,
"fulfillmentFeeTaxMinor": 1,
"tenderedNetMinor": 1,
"tipTotalMinor": 1,
"paymentIds": [
"01900000-0000-7000-8000-f1636a750000"
],
"refundIds": [
"01900000-0000-7000-8000-a5d2e2d30000"
],
"disputeIds": [
"01900000-0000-7000-8000-d72df27f0000"
],
"invoiceIds": [
"01900000-0000-7000-8000-0a4b14ba0000"
],
"couponIds": [
"01900000-0000-7000-8000-6a9b05ef0000"
],
"sourcingSagaId": "01900000-0000-7000-8000-2dfe37aa0000",
"commissionAgentUserIds": [
"01900000-0000-7000-8000-7aaf99300000"
],
"affiliateId": "01900000-0000-7000-8000-ab1bc9b90000"
}
},
"extensions": {
"at": {
"callId": "01EXAMPLE-CALL-ID",
"version": {
"requested": {
"name": "genesis",
"number": 0
},
"serviced": {
"name": "genesis",
"number": 0
}
}
}
}
}