Answers in Slack (2026-10-08)
| # | Our question | Ferdinand's answer |
|---|---|---|
| 1 | VAT basis: new design (company excl., private incl.) or incl. VAT for everyone? Breakdown for private buyers? | Show line prices including VAT for everyone, business or private, and put the same VAT breakdown at the bottom of the rail for both. |
| 2 | One terms checkbox, or "accept terms" and "confirm restrictions"? | One checkbox is right; the acceptance criteria are outdated and he's updating them. Private buyers also get a separate withdrawal checkbox (required by law). |
| 3 | "Buying as" always from the active workspace? | Yes, the buyer comes from the active workspace, no company/private choice. |
| 4 | In the user test: mobile, invoice details, contact card? | Mobile responsiveness is not necessary, but the contact card and additional details for invoice should be. |
| 5 | Credit line: answer from Elisabeth? | No answer yet; show it as an open question. |
| 6 | Real data on the item cards; direction for terms links and contact card? | Use real data. No direction yet for terms links and the contact card: suggestions welcome. The contact card should tie in with LIP-1432. |
| 7 | New FigJam link for the single purchase flow? | FigJam V1PQF8WkLy2WMXUHhVjTHj ("Order system – scoping"), node 381:7458. |
| 8 | claude.ai or Claude Code? | Claude Code. |
Handover document (2026-10-08)
Sources he lists: decisions log 2026-10-02/05, Make prompt fix-5, LIP-1440 acceptance criteria, his checkout layout research (legal and UX). Jira LIP-1440; Figma wireframes f5hqGpjBqXvfbWnNr4AXXO node 3764:18597; Figma Make sIwoD0foGnRzW9yvgNX1W3 (Checkout-Page-Layouts-A-B), state after fix-5.
The Jira acceptance criteria are behind the design: written 2026-10-01, before the layout decisions of 2026-10-05 (conditional restrictions and instructions, one combined license checkbox, the VAT split, references, validate on click). Where they disagree, this document is the newer intent. [OPEN] = not decided; [ASSUMPTION] = his reading, to be confirmed.
1. Decision log
| ID | Topic | Decision | Why / alternatives considered |
|---|---|---|---|
| D1 | Layout | A: items on the left, act-zone on the right. Layout B is removed. | Checking licences is the main task, and company buyers have almost nothing to type. The closest competitor, Alamy, also puts items on the left. Alternative: summary on the right (Komplett, Getty, Elkjøp, Adobe), but that is convention, not evidence. B also split the act-cards across both columns. |
| D2 | Visual emphasis | Left = read (page background, no cards). Right = act (white cards). Restrictions/instructions are inline alerts. | Principle: a white card means "act here". Alternative: cards everywhere, which flattens the hierarchy. |
| D3 | Order zone | Directly above the button, repeat each item (title · licence · price), the VAT lines, the total, the checkboxes, the hint line and the button. | Angrerettloven §16 + EU guidance 2021/C 525/01 §4.2.1 require key info "in close vicinity" of the button. It also serves as the review required by ehandelsloven §11 / WCAG 3.3.4. Cost: licence and price appear twice (left = detail, right = receipt). |
| D4 | Sticky | Desktop: the whole order zone is sticky, never the button alone, and it is not sticky if it's taller than the viewport. Mobile: a slim "Total · Review order ↓" bar, hidden when the order zone is visible or an input has focus. | Baymard: 23% of sites hide the button. The law requires the button next to the total. NN/g warns against stacked sticky bars, and the mobile keyboard collides with bottom bars. |
| D5 | One page vs steps | One page. | Few fields and no delivery step. A separate review page isn't legally required (ehandelsloven §11). |
| D6 | Button state | Always enabled. Validate on click: inline errors under unticked checkboxes, then focus the first one. | GOV.UK / Adam Silver: disabled buttons don't say what's missing. Getty and Elkjøp both do this badly. Alternative: a disabled button plus a hint (v1–v4). |
| D7 | Payment method | Not chosen in checkout. Card, Vipps and invoice are chosen on the provider page. | The law only requires informing the buyer about payment arrangements (angrerettloven §8(1)g). Depends on LIP-1436. |
| D8 | Button label | "Pay now · {total incl. VAT}", and ours is the binding button. | EU guidance accepts "pay now", and C-249/21 says only the words on the button count. The price in the label follows Elkjøp. Rejected: "Order with obligation to pay" (clunky), "Continue" (not binding). |
| D9 | "Buying as" | Comes from the active workspace, read-only. No company/private toggle and no editable fields. Company → name, org. no., address; personal → name, address. Caption: "Details come from your workspace. Change them in Workspace settings." with a link. Switching workspace in the header updates the whole page. | The buyer is the workspace. Alternatives: an Elkjøp-style toggle at the top, or editable billing. This implies login is required, which affects LIP-1546 (guest purchase). |
| D10 | VAT display | Company: item prices excl. VAT, then Subtotal excl. VAT, VAT (25%), Total incl. VAT. Private: everything incl. VAT, then "Includes VAT (25%)" and Total. The button always shows the amount charged (incl. VAT). | Prisopplysningsforskriften requires incl. VAT for consumers. B2B norm (Elkjøp business) is excl. VAT lines. [OPEN] Superseded by the Slack answer: incl. VAT for everyone. |
| D11 | Terms checkboxes | One licence checkbox whose label depends on the cart. If any item has a restriction or instruction: "I accept the licence agreement and the restrictions and instructions listed for the images." Otherwise: "I accept the licence agreement." Private buyers only: a separate, unticked withdrawal checkbox: "I agree that delivery starts immediately, and I understand that I lose my 14-day right of withdrawal when the download starts." | Angrerettloven §22 n requires a separate express consent for the withdrawal right. Licence + restrictions are combined to cut one checkbox for deadline-driven buyers (Getty shows restrictions only when relevant). Replaces the AC's separate "accept terms" + "confirm restrictions". Alternative: passive terms text, which all five competitors use; needs legal confirmation, so the checkbox stays for now. |
| D12 | Restrictions / instructions | Shown only when the image has them, as an inline Alert inside the item. [ASSUMPTION] Restriction first, then instruction. | Avoids empty boxes and makes the licence label conditional (D11). Changes the AC, which says "always". |
| D13 | Item card fields | Thumbnail, title, image ID, selected licence (the only badge), resolution and 300 dpi print size (only if resolution exists), price with VAT note, credit line [OPEN Q4], restriction/instruction alerts (conditional), Remove. | From the AC plus v1 feedback. No per-item checkbox. Changing the licence in checkout is out of scope. |
| D14 | Remove | A quiet ghost/link button per item (icon + "Remove", muted, underline on hover). | AC requirement. A filled button competed with Pay. |
| D15 | Company references | Company only: a collapsed disclosure "Add references (optional)" in "Buying as" with Your reference ("Shown as «Deres referanse» on the receipt. Often a name or cost centre.") and PO / order number ("Your internal purchase order number, if you use one."). Starts open if a value exists from workspace settings. | EHF invoicing norm, and Getty does the same. Licensee/project fields deferred to the PO. |
| D16 | Mobile order | Items → Buying as → Credit → Order zone, with the review bar (D4). | Follows the task order. The review bar is navigation, not submit. |
2. Make prototype: intended vs incidental
| Element | Status | Notes |
|---|---|---|
| Layout A, read/act emphasis, sticky order zone | Intended | D1–D4 |
| Order zone contents and order | Intended | D3 |
| Workspace switcher driving the page | Intended (behaviour) / incidental (the switcher UI) | A stand-in for the real workspace context. |
| VAT split company/private | Intended, but [OPEN Q1] | D10 |
| Checkbox labels, error copy, validate on click, focus handling | Intended | D6, D11. Copy close to final, not legally reviewed. |
| Button label "Pay now · {total}" | Intended | D8 |
| Conditional alerts and licence label | Intended | D11–D12 |
| References disclosure + helper text | Intended (structure); in the test [OPEN Q3] | D15 |
| Remove + empty state | Intended (Remove). Empty state is a placeholder. | The AC says back to the empty cart. |
| Sample data (Aftenposten AS, Kari Nordmann, prices, "Redaksjonen – 4410") | Incidental | Replace with real MediaObject records. |
| Restriction/instruction texts | Incidental | Replace with real supplier instructions. The API has one free-text field. |
| Exact spacing, sizes, shadows | Incidental | Use DS tokens and components. |
| Number/price formatting | Incidental | Use Intl nb-NO. |
| Contact card / "Contact us" under the button | Incidental / [OPEN Q5] | Not designed; content belongs to LIP-1432. |
| Terms links (licence PDF, privacy, complaints) | Incidental / [OPEN Q5] | Placeholders. |
| NTB seller footer (org. no.) | Incidental | Placeholder org. no. |
| Dark mode toggle, device toggle | Incidental | Prototype tools. |
| Mobile layout | Intended (section order and review bar, D16); visuals incidental | In the test [OPEN Q3]. |
| "Order placed" state after Pay | Incidental | Stands in for the provider page (LIP-1436). |
3. States
| State | What the customer sees | What they can do |
|---|---|---|
| S1 Company workspace | "Buying as" with company name, org. no., address, settings caption and references. Items, order zone with VAT breakdown, one licence checkbox, hint line, "Pay now · {total}". | Review, remove items, add references, open licence terms, tick, pay, back to cart, workspace settings, switch workspace. |
| S2 Personal workspace | "Buying as" with name and address, no references. Licence checkbox and withdrawal checkbox. | As S1, without references, with two required checkboxes. |
| S3 Switch workspace | The whole page updates. [ASSUMPTION] Ticks and errors reset, because consent is given per buyer. | Continue in the new context. |
| S4 Pay with a required box unticked | No submit. An inline error under each unticked box ("Accept the licence agreement to continue." / "Confirm immediate delivery to continue."), destructive border, aria-invalid; focus and scroll to the first. | Tick (clears its error), pay again. |
| S5 All ticked, Pay | Hands over to the provider page. | — |
| S6 Item with restriction and/or instruction | Inline alert(s); the licence label mentions them. | Read, remove the item if it doesn't fit. |
| S7 No restrictions or instructions | No alerts; "I accept the licence agreement." | — |
| S8 No resolution data | Resolution and print size rows hidden. [ASSUMPTION] Hide rather than "Not available". | As normal. |
| S9 Remove an item (not the last) | Item gone; lines, VAT, total, button amount and licence label update. [OPEN] Undo or toast? | Continue. |
| S10 Remove the last item | Back to the cart in its empty state. | Browse. |
| S11 Many items (10+) | The list grows; the order zone lists every item; it stops being sticky when taller than the viewport. [OPEN] Collapse after N items? | Scroll and pay. |
| S12 Long titles | [OPEN] Suggestion: 2 lines then ellipsis in the item list, 1 line in the order zone, full title in a title attribute or tooltip. The image ID always in full. | — |
| S13 Mobile | Items → Buying as → credit → order zone, with the review bar. | The bar scrolls to the order zone; paying only from the order zone. |
| S14 Logged out | Out of scope (LIP-1546). Checkout requires a workspace. | — |
4. Rules as states and events
- R1. In any checkout state, when the page loads, "Buying as" shows the active workspace's details read-only, with a link to Workspace settings.
- R2. In any checkout state, when the customer switches workspace, the buyer card, VAT display, references and withdrawal checkbox update [ASSUMPTION: ticks and errors reset].
- R3. With ≥1 item, each item shows a thumbnail, title, image ID, selected licence and price.
- R4. When an item's HIGHRES_1 asset has a width and height, the item shows the resolution and the print size at 300 dpi; otherwise both rows are hidden.
- R5. When an item has supplier instructions, they're shown as an alert inside that item; otherwise no alert.
- R6. With >1 item, when the customer removes one, it disappears and the order zone, VAT, total, button amount and licence label recalculate.
- R7. With 1 item, when the customer removes it, they're sent to the cart in its empty state.
- R8. In a company workspace, items show prices excl. VAT, and the order zone shows Subtotal excl. VAT, VAT (25%) and Total incl. VAT. [OPEN Q1]
- R9. In a personal workspace, all prices include VAT, and the order zone shows "Includes VAT (25%)" and Total.
- R10. The total is the most prominent price, amounts are NOK formatted with Intl nb-NO, and the button shows the total incl. VAT.
- R11. When the customer opens the licence agreement link, they can read the full terms without leaving checkout [ASSUMPTION: new tab or dialog].
- R12. When ≥1 item has a restriction or instruction, the licence checkbox mentions them; otherwise "I accept the licence agreement."
- R13. In a personal workspace, a separate, unticked withdrawal checkbox is shown; not in a company workspace.
- R14. With a required checkbox unticked, when the customer clicks Pay, nothing is submitted, an error shows under each unticked box, and focus moves to the first.
- R15. In an error state, ticking a checkbox clears its error immediately.
- R16. With all required boxes ticked, Pay continues to payment (LIP-1436 / LIP-1445).
- R17. Back to cart returns to the cart with the items unchanged.
- R18. On mobile, when the order zone isn't visible and no input has focus, the review bar shows; tapping it scrolls to the order zone. It doesn't submit.
- R19. [OPEN Q4] Each item shows the credit line the customer must use when publishing. Editorial vs commercial: pending Elisabeth.
5. Open questions (his list)
- VAT basis. (Answered in Slack: incl. VAT for everyone, same breakdown for both.)
- AC update: replace "accept terms" + "confirm restrictions" with D11. (Answered: yes, he updates the AC.)
- Test scope: mobile, references, contact card. (Answered: no mobile; references and contact card yes.)
- Credit line: pending Elisabeth.
- Terms links and contact card: no direction; proposals welcome (contact card with LIP-1432).
- Instructions vs restrictions: the search API has one free-text
instructionsfield. Proposal: one alert headed "Supplier instructions", no restriction/instruction split. Needs confirming. - Many items and long titles (S11, S12): proposals only.
- Remove feedback: undo or toast? Not designed.
- Legal: English UI for consumers, and checkbox vs passive terms text. Both need legal before launch.
- FigJam link. (Answered: node 381:7458.)
He also notes the Make prototype stores item prices excl. VAT and computes total incl. VAT = subtotal × 1.25.