Skip to main content

Reauthorize order

Order items that have not yet been captured can be changed with the reauthorize endpoint. Already captured items won't be affected by the reauthorize call.

Raising the amount has extra conditions

Only credit payment methods allow an increase, and only on orders with status NotActivated or PartActivated. Prepaid options do not support raising the amount after the original purchase. See Order lifecycle for what each status allows.

Examples​

Reauthorize order with items​

POST /manage/orders/{{orderId}}/reauthorize HTTP/1.1
Host: api.uat.walleydev.com // Test environment. Production uses a different hostname.
Authorization: Bearer {{accessToken}}
Content-Type: application/json

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

Reauthorize order with amount​

POST /manage/orders/{{orderId}}/reauthorize HTTP/1.1
Host: api.uat.walleydev.com // Test environment. Production uses a different hostname.
Authorization: Bearer {{accessToken}}
Content-Type: application/json

{
"amount": 280.0,
"actionReference": "test-captureref-123"
}

Reauthorize order with increased amount​

Orders in the state NotActivated can be increased using the reauthorize endpoint. When an order is reauthorized with an increased amount, an additional credit check is required.

The endpoint will return a 201 status code with a location header to check the status of the reauthorize call. This process may potentially involve authorization from the customer.

POST /manage/orders/{{orderId}}/reauthorize HTTP/1.1
Host: api.uat.walleydev.com // Test environment. Production uses a different hostname.
Authorization: Bearer {{accessToken}}
Content-Type: application/json

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

These HTTP status codes are valid for the POST reauthorize request.

Http status codeDescription
201Reauthorization started and needs a credit check. Poll the Location header. See Get reauthorized status
202Reauthorization accepted
401Token missing, expired, or invalid
403No permission for this store, or the order has not finished syncing
404Order not found, or the order has not finished syncing
409A request with the same idempotency key is already in progress
422Validation or state error. See error codes

See Errors for what to do about each of these.


Get reauthorized status​

Use this endpoint to poll for the status of a reauthorized call that responded with a 201 status code. Retrieve reauthorizeId from the location header in the 201 response.

GET /manage/orders/{{orderId}}/reauthorize/{{reauthorizeId}} HTTP/1.1
Http status codeDescription
200Reauthorize found
404Order or reauthorize not found

Data Model​

Request​

Request headers​

HeaderRequiredExplanation
AuthorizationYesSee Authentication for how to generate the Bearer token value

Request body​

PropertyRequiredExplanationTypeNotes
amountYesThe new amount to authorize. If you send order items, it must match their total.numberMaximum 2 decimals
descriptionNoA description for the reauthorization. Used as the description when you send no order items.stringVisible on invoices if applicable. Maximum 50 characters
actionReferenceNoA reference to this specific reauthorization.stringThis will appear as a data property on the settlement report. Maximum 255 characters.
itemsNoThe article items and quantity to authorize.arrayReauthorize Item

If you are doing a reauthorize with items, you will have to provide items in the request.


Response​

202 Accepted indicates a successful reauthorization when the amount is the same or lower than the original order.
201 Created indicates that an additional status check is needed when the reauthorization amount is higher than the original order.

The reauthorization is not live yet

202 means Walley accepted the request, not that it has been applied. Reading the order back right away usually returns the old version. See Asynchronous operations for how to read the result and retry safely.

Response body​

PropertyExplanationType
idThe id of the reauthorizationstring
orderIdThe orderId affected by the reauthorizationstring
statusCompleted for a successfully completed reauthorize. Failed for example when a credit check was denied or additional household income data was needed.string
createdAtThe timestamp of the reauthorizationdate

Error codes​

Change order​

CodeMessage
REAUTHORIZE_ORDER_ALREADY_CAPTUREDYou cannot reauthorize an already fully captured order
REAUTHORIZE_MATCHING_ARTICLES_WITH_DIFFERENT_VATRequest inclueds identical articles with mismatched VAT
REAUTHORIZE_ARTICLE_EXISTS_BUT_OTHER_INFORMATIONRequest inclueds identical articles with mismatched unit price
REAUTHORIZE_ORDER_INCREASE_ABOVE_CURRENT_TOTAL_AMOUNT_IS_NOT_ALLOWEDTotal amount must be less than or equal to original amount
REAUTHORIZE_AMOUNT_MUST_BE_GREATER_THAN_ZEROTotal amount must be positive
REAUTHORIZE_AMOUNT_MUST_MATCH_SUM_OF_ARTICLESTotal amount must match article amount
REAUTHORIZE_AMOUNT_HAS_TOO_MANY_DECIMALSTotal amount have too many decimals
REAUTHORIZE_DESCRIPTION_TOO_LONGDescription have a max limit of 50 characters
REAUTHORIZE_ID_TOO_LONGItem Id have a max limit of 50 characters
REAUTHORIZE_UNIT_PRICE_HAS_TOO_MANY_DECIMALSItem Unit Price has too many decimals
REAUTHORIZE_QUANTITY_MUST_BE_GREATER_THAN_ZEROItem Quantity must be greater than zero
REAUTHORIZE_VAT_MUST_BE_GREATER_THAN_ZEROItem Vat must be greater than zero
REAUTHORIZE_INVALID_INVOICE_STATUSYou cannot reauthorize an order in state closed or expired
REAUTHORIZE_INCREASED_AMOUNT_NOT_AVAILABLE_FOR_PREPAID_PAYMENT_METHODIt is not possible to increase order amount on prepaid orders
Retry safely with an idempotency key

A response you never receive, because of a network problem for example, leaves you unsure whether the request went through. Retrying it blind risks doing the same thing twice.

Generate a v4 UUID and send it as the Walley-Idempotency header on every unique operation:

Walley-Idempotency: 03304b06-cb33-4f78-bcea-86cb4b202ba0

Retry with the same key and Walley applies the operation only once.