Skip to main content

Capture order

When order items are ready to be delivered to the end customer they should be captured. Use this endpoint to capture the entire order, part capture individual items, or a specific quantity of items of an order.

Please note

This can only be done on orders with status NotActivated or PartActivated

Full capture​

You can capture the entire order by simply specifying the amount to capture. This only allows for the full amount left on the order to be captured. If you are doing a part capture, you will have to provide items in the request that partial captures can be matched against.

POST /manage/orders/{{orderId}}/capture HTTP/1.1
Host: api.uat.walleydev.com // (Please note! Different hostname in production)
Authorization: Bearer bXlVc2VybmFtZTpmN2E1ODA4MGQzZTk0M2VmNWYyMTZlMDE...

{
"amount": 285.0,
"description": "Capture description",
"actionReference": "test-captureref-123"
}

Part capture​

You can capture part of the order by providing order items, specifying quantity to capture.

Please note

The item object is a best match effort. This means that the more data you provide the probability of finding a unique article will increase. If no unique match can be made an error will be thrown. You are required to provide the unitPrice and quantity property.

POST /manage/orders/{{orderId}}/capture HTTP/1.1
Host: api.uat.walleydev.com // (Please note! Different hostname in production)
Authorization: Bearer bXlVc2VybmFtZTpmN2E1ODA4MGQzZTk0M2VmNWYyMTZlMDE...

{
"amount": 285.0,
"actionReference": "test-captureref-123",
"items": [
{
"id": "10001",
"description": "Shoes",
"unitPrice": 95,
"quantity": 1
},
{
"id": "10002",
"description": "T-Shirt",
"unitPrice": 95,
"quantity": 2
}
]
}

Part capture by amount​

You can also capture part of the order by providing an amount only, omitting the items.

The 'description' field can be used to provide a description. If omitted, left blank or null a default value will be used.

Please note

Capturing by amount will replace any line items previously present on the order.

Not only will the customer experience be slightly worse, but you can no longer capture on the original line items.

POST /manage/orders/{{orderId}}/capture HTTP/1.1
Host: api.uat.walleydev.com // (Please note! Different hostname in production)
Authorization: Bearer bXlVc2VybmFtZTpmN2E1ODA4MGQzZTk0M2VmNWYyMTZlMDE...

{
"amount": 285.0,
"description": "capture description",
"actionReference": "test-captureref-123"
}

Data Model​

Request​

Request headers​
HeaderRequiredExplanation
AuthorizationYesInstructions on how to generate the Bearer token value can be found here
Request body​
PropertyRequiredExplanation
amountYesThe amount to capture. Must match provided total summary of order items being captured.
descriptionNoA description for the capture. This will be visible in the order history and on the invoice.
actionReferenceNoA reference to this specific capture. This will be visible on settlement files for reconciliation.
itemsNoThe article items and quantity to capture.

Response​

The response will be 202 Accepted for a successful capture or part capture.

Please note

Due to the asynchronous nature of an Accepted status answer, it can take a few seconds before the update can be shown in various systems and responses to API requests. You should design your system to accomodate this.

Error codes​

CodeMessage
CAPTURE_ITEMS_AMOUNT_NOT_EQUAL_TO_TOTAL_AMOUNTWhen items are provided, amount must equal to total sum of the items
CAPTURE_DESCRIPTION_TOO_LONGDescription have a max limit of 50 characters
Idempotency

To prevent multiple requests by mistake, the idempotency header can be used to single out requests. The API supports idempotency for safely retrying requests that only should be performed once. This could be useful if responses are not received due to network connectivity problems. For example, if a response for a request to add an invoice is not received, you can retry the request with the same idempotency key again and be guaranteed that no more than one invoice is added.

You will need to generate a guid/uuid v4 and send it in with the header x-idempotency for every unique operation:

X-idempotency: 03304b06-cb33-4f78-bcea-86cb4b202ba0