Update order line¶
PATCH
https://api.mollie.com/v2/orders/*orderId*/lines/*orderLineId*
This endpoint can be used to update an order line. Only the lines that belong to an order with status created
,
pending
or authorized
can be updated.
Use cases for this endpoint could be updating the name
, productUrl
, imageUrl
, and metadata
for a
certain order line because your customer wants to swap the item for a different variant, for example exchanging
a blue skirt for the same skirt in red.
Or update the quantity
, unitPrice
, discountAmount
, totalAmount
, vatAmount
and vatRate
if you
want to substitute a product for an entirely different one.
Alternatively, you can also (partially) cancel order lines instead of updating the quantity.
When updating an order line for an order that uses a Klarna payment method, Klarna may decline the requested changes, resulting in an error response from the Mollie API. The order remains intact, though the requested changes are not persisted.
Parameters¶
Replace orderId
in the endpoint URL by the order’s ID, for example ord_pbjz8x
. And replace the
orderLineId
in the URL by the order line ID, for example odl_dgtxyl
Even though all parameters are optional, at least one of them needs to be provided in the request.
name
stringoptionalimageUrl
stringoptionalproductUrl
stringoptionalsku
stringoptionalmetadata
mixedoptionalquantity
intconditionalThe number of items in the order line.
This field is required when unitPrice
, discountAmount
, totalAmount
, vatAmount
or vatRate
is also
provided in the request.
unitPrice
amount objectconditionalThe price of a single item including VAT in the order line.
For example: {"currency":"EUR", "value":"89.00"}
if the box of LEGO costs €89.00 each.
Can be negative in case of discounts, or zero in case of a free item.
This field is required when quantity
, discountAmount
, totalAmount
, vatAmount
or vatRate
is also
provided in the request.
discountAmount
amount objectoptionalAny discounts applied to the order line. For example, if you have a two-for-one sale, you should pass the amount discounted as a positive amount.
For example: {"currency":"EUR", "value":"10.00"}
if you want to give a €10.00 discount on this order line.
totalAmount
amount objectconditionalThe total amount of the line, including VAT and discounts. Adding all totalAmount
values together should
result in the same amount as the amount
top level property.
For example: {"currency":"EUR", "value":"168.00"}
if the total amount of this order line is €168.00.
The total amount should match the following formula: (unitPrice × quantity) - discountAmount
This field is required when quantity
, unitPrice
, discountAmount
, vatAmount
or vatRate
is also
provided in the request.
vatAmount
amount objectconditionalThe amount of value-added tax on the line. The totalAmount
field includes VAT, so the vatAmount
can be
calculated with the formula totalAmount × (vatRate / (100 + vatRate))
.
Any deviations from this will result in an error.
For example, for a totalAmount
of SEK100.00 with a 25.00% VAT rate you would get a VAT amount of
100.00 × (25 / 125)
= SEK20.00. The amount should be passed as an amount object, so:
{"currency":"SEK", "value":"20.00"}
.
This field is required when quantity
, unitPrice
, discountAmount
, totalAmount
or vatRate
is also
provided in the request.
vatRate
stringconditionalThe VAT rate applied to the order line, for example "21.00"
for 21%. The vatRate
should be passed as a string
and not as a float to ensure the correct number of decimals are passed.
This field is required when quantity
, unitPrice
, discountAmount
, totalAmount
or vatAmount
is also
provided in the request.
Access token parameters¶
If you are using organization access tokens or are creating an
OAuth app, you can enable test mode through the testmode
parameter.
true
to update a test mode order line.Example¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | curl -X PATCH https://api.mollie.com/v2/orders/ord_pbjz8x/lines/odl_dgtxyl \ -H "Content-Type: application/json" \ -H "Authorization: Bearer test_dHar4XY7LxsDOtmnkVtjNVWXLSlXsM" \ -d '{ "name": "LEGO 71043 Hogwarts™ Castle", "productUrl": "https://shop.lego.com/en-GB/product/Hogwarts-Castle-71043", "imageUrl": "https://sh-s7-live-s.legocdn.com/is/image//LEGO/71043_alt1?$main$", "quantity": 2, "vatRate": "21.00", "unitPrice": { "currency": "EUR", "value": "349.00" }, "totalAmount": { "currency": "EUR", "value": "598.00" }, "discountAmount": { "currency": "EUR", "value": "100.00" }, "vatAmount": { "currency": "EUR", "value": "103.79" } }' |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | <?php $mollie = new \Mollie\Api\MollieApiClient(); $mollie->setApiKey("test_dHar4XY7LxsDOtmnkVtjNVWXLSlXsM"); $orderId = "ord_pbjz8x"; $orderLineId = "odl_dgtxyl"; $mollie->orderLines->update($orderId, $orderLineId, [ "name" => "LEGO 71043 Hogwarts™ Castle", "productUrl" => "https://shop.lego.com/en-GB/product/Hogwarts-Castle-71043", "imageUrl" => "https://sh-s7-live-s.legocdn.com/is/image//LEGO/71043_alt1?$main$", "quantity" => 2, "vatRate" => "21.00", "unitPrice" => [ "currency" => "EUR", "value" => "349.00" ], "totalAmount" => [ "currency" => "EUR", "value" => "598.00" ], "discountAmount" => [ "currency" => "EUR", "value" => "100.00" ], "vatAmount" => [ "currency" => "EUR", "value" => "103.79" ] ]); |
1 2 3 4 5 6 7 8 9 10 11 | from mollie.api.client import Client mollie_client = Client() mollie_client.set_api_key("test_dHar4XY7LxsDOtmnkVtjNVWXLSlXsM") order = mollie_client.orders.get('ord_pbjz8x') order = order.lines.update("odl_dgtxyl", { "name": "LEGO 71043 Hogwarts™ Castle", "productUrl": "https://shop.lego.com/en-GB/product/Hogwarts-Castle-71043", "imageUrl": "https://sh-s7-live-s.legocdn.com/is/image//LEGO/71043_alt1?$main$", }) |
1 2 3 4 5 6 7 8 9 | const { createMollieClient } = require('@mollie/api-client'); const mollieClient = createMollieClient({ apiKey: 'test_dHar4XY7LxsDOtmnkVtjNVWXLSlXsM' }); const order = await mollieClient.orderLines.update('odl_dgtxyl', { orderId: 'ord_pbjz8x', name: 'LEGO 71043 Hogwarts™ Castle', productUrl: 'https://shop.lego.com/en-GB/product/Hogwarts-Castle-71043', imageUrl: 'https://sh-s7-live-s.legocdn.com/is/image//LEGO/71043_alt1?$main$' }); |
1 2 3 4 | We don't have a Ruby code example for this API call yet. If you have some time to spare, feel free to share suggestions on our Discord: https://discord.gg/VaTVkXB4aQ |
Response¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 | HTTP/1.1 200 OK Content-Type: application/hal+json { "resource":"order", "id":"ord_pbjz8x", "profileId":"pfl_URR55HPMGx", "method":"ideal", "amount":{ "value":"927.99", "currency":"EUR" }, "status":"created", "isCancelable":true, "metadata":null, "createdAt":"2018-08-02T09:29:56+00:00", "expiresAt":"2018-08-30T09:29:56+00:00", "mode":"live", "locale":"nl_NL", "billingAddress":{ "organizationName":"Mollie B.V.", "streetAndNumber":"Keizersgracht 126", "city":"Amsterdam", "region":"Noord-Holland", "postalCode":"1234AB", "country":"NL", "title":"Dhr", "givenName":"Piet", "familyName":"Mondriaan", "email":"piet@mondriaan.com", "phone":"+31208202070" }, "orderNumber":"18475", "shippingAddress":{ "organizationName":"Mollie B.V.", "streetAndNumber":"Keizersgracht 126", "postalCode":"1015 CW", "city":"Amsterdam", "country":"nl", "givenName":"Luke", "familyName":"Skywalker", "email":"luke@skywalker.com" }, "redirectUrl":"https://example.org/redirect", "lines":[ { "resource":"orderline", "id":"odl_dgtxyl", "orderId":"ord_pbjz8x", "name":"LEGO 71043 Hogwarts™ Castle", "sku":"5702016116977", "type":"physical", "status":"created", "metadata":null, "isCancelable":false, "quantity":2, "quantityShipped":0, "amountShipped":{ "value":"0.00", "currency":"EUR" }, "quantityRefunded":0, "amountRefunded":{ "value":"0.00", "currency":"EUR" }, "quantityCanceled":0, "amountCanceled":{ "value":"0.00", "currency":"EUR" }, "shippableQuantity":0, "refundableQuantity":0, "cancelableQuantity":0, "unitPrice":{ "currency":"EUR", "value":"349.00" }, "totalAmount":{ "currency":"EUR", "value":"598.00" }, "discountAmount":{ "currency":"EUR", "value":"100.00" }, "vatAmount":{ "currency":"EUR", "value":"103.79" }, "createdAt":"2018-08-02T09:29:56+00:00", "_links":{ "productUrl":{ "href":"https://shop.lego.com/en-GB/product/Hogwarts-Castle-71043", "type":"text/html" }, "imageUrl":{ "href":"https://sh-s7-live-s.legocdn.com/is/image//LEGO/71043_alt1?$main$", "type":"text/html" } } }, { "resource":"orderline", "id":"odl_jp31jz", "orderId":"ord_pbjz8x", "name":"LEGO 42056 Porsche 911 GT3 RS", "sku":"5702015594028", "type":"physical", "status":"created", "metadata":null, "isCancelable":false, "quantity":1, "quantityShipped":0, "amountShipped":{ "value":"0.00", "currency":"EUR" }, "quantityRefunded":0, "amountRefunded":{ "value":"0.00", "currency":"EUR" }, "quantityCanceled":0, "amountCanceled":{ "value":"0.00", "currency":"EUR" }, "shippableQuantity":0, "refundableQuantity":0, "cancelableQuantity":0, "unitPrice":{ "value":"329.99", "currency":"EUR" }, "vatRate":"21.00", "vatAmount":{ "value":"57.27", "currency":"EUR" }, "totalAmount":{ "value":"329.99", "currency":"EUR" }, "createdAt":"2018-08-02T09:29:56+00:00", "_links":{ "productUrl":{ "href":"https://shop.lego.com/nl-NL/Porsche-911-GT3-RS-42056", "type":"text/html" }, "imageUrl":{ "href":"https://sh-s7-live-s.legocdn.com/is/image/LEGO/42056?$PDPDefault$", "type":"text/html" } } } ], "_links":{ "self":{ "href":"https://api.mollie.com/v2/orders/ord_pbjz8x", "type":"application/hal+json" }, "checkout":{ "href":"https://www.mollie.com/payscreen/order/checkout/pbjz8x", "type":"text/html" }, "dashboard": { "href": "https://www.mollie.com/dashboard/org_123456789/orders/ord_pbjz8x", "type": "text/html" }, "documentation":{ "href":"https://docs.mollie.com/reference/v2/orders-api/get-order", "type":"text/html" } } } |