Option 1 - the ready made product page

No code at all. Link your customer straight to the product page and the platform builds the payment request for you:

Product page link

The page shows the product, lets the customer choose a quantity, and forwards to the payment page with the amount already calculated.

Option 2 - your own page

You already build the payment request yourself and only want to tell us which product is being bought. Add two parameters:

Added to your hosted request
&public_itemId=88&public_quantity=2
    

The amount stays yours - the product is described, never re-priced. Send both parameters together, or the product is not recorded on the transaction.

Where each field appears

Fields marked per language can be filled in once for each language you support. The customer sees the version matching the language of the page, and falls back to your default language when that translation is empty.

Product field Where it is reflected Notes
Name Browser title, product heading, and the "Payment for" line on the payment page Per language
Description Description block under the product name Per language
Receipt text Confirmation and receipt wording Per language. Not shown by every design
Meta title / description / keywords Search engine tags on the product page only Never shown to the customer
Price Unit price. The amount charged is price x quantity Ignored when Dynamic price is switched on
Old price Struck through "was" price beside the current one Not shown by every design
Currency The whole page is priced in it, and it is sent as the transaction currency
Dynamic price Replaces the quantity picker with an open amount box the customer types into The typed amount becomes the transaction amount
Transaction type Whether the payment is a sale or an authorisation only See Auth
Installments Highest value the payments selector offers The selector is hidden when the value is below 2
Quantity from / to / step Minimum, maximum and increment of the quantity picker Physical products only - every other type is fixed at 1 to 10, stepping by 1
Available quantity Caps the quantity the customer can pick, and is enforced again when the payment is taken Leave empty for unlimited. Physical products only
Active Whether the product can be bought at all Switching it off blocks the payment on the Flow design
Product type Decides whether inventory is tracked for this product See the table below
Images 1 to 3 Product images on the product page A smaller thumbnail is generated automatically where one exists
Recurring string Sets up the recurring series for the transaction See Recurring. Not sent by every design
Shop Supplies the banner image, social links and regional settings around the product Set on the shop, not on the product
Brand type Associates the sale with a brand for reporting and affiliate revenue share See Brand/UTM tracking
Tags and categories Grouping and search inside your shop Never shown on the payment page
SKU Your own stock reference Internal only, never shown to the customer

Quantity and stock

The quantity picker and the inventory check are two different things. The picker is what the customer is offered; the inventory check is what actually stops a sale. Both are driven by the fields above.

Behaviour How it works
Highest quantity offered The lower of Available quantity and Quantity to. A product with 3 units left never offers 10, whatever Quantity to says
Increments Counts up from Quantity from in Quantity step units. Set the step to 6 and the customer buys 6, 12, 18
Unlimited stock Leave Available quantity empty. The product is never blocked on inventory and nothing is decremented
When stock is taken Reserved as the payment starts and kept when it is approved. A declined or failed transaction returns the units automatically
Sold out during checkout If the last unit goes while the customer is filling in the form, the payment is declined rather than oversold. On the Flow design the customer is told the item is out of stock
Variants Where a product has stock variants, the variant's own available quantity is used instead of the product's

Product types

The type decides whether the product carries inventory at all. Only Physical products are counted down when they sell - everything else can be sold any number of times, and the quantity fields on those products are ignored in favour of a plain 1 to 10 picker.

Type Inventory tracked Typical use
PhysicalYesGoods you ship and have a finite number of
VirtualNoServices, access, anything you cannot run out of
DownloadNoA file the customer receives after paying
InvoiceNoSettling an invoice you raised
AffiliateNoSales driven through an affiliate link
VoucherNoGift cards and top ups
Pricing planNoA tier the customer subscribes to
RecurringNoA subscription billed on a schedule
UnmanagedNoA product recorded for reporting only

Request parameters

Add these to a hosted page request to tell us which product is being bought. Whichever product you name, the amount you signed is the amount that is charged - the product is described, never re-priced.

Signing them. If you sign the full request - every value in the order it appears in your query string - then both parameters are part of the signature and must appear in the hash in that same position. If you use the short signature (merchant number, amount and currency) or the simplified form, they are not covered by it. Either way the platform checks the product belongs to you before it is shown or charged.

Parameter Name Parameter description Length
public_itemId Numeric id of the product, as shown in your product list. Must be one of your own products 10
public_quantity How many units are being bought. Send it together with public_itemId 10
Item The same product id, used on the ready made product page instead of public_itemId 10

Both values are passed on to processing and stored against the transaction, so the product appears in your reports and in the transaction record.

Checks on the Flow design

The Flow design (ui_version=11) reads the product and puts its name and description in the order summary, in place of the description you would otherwise send. It also refuses to take a payment it cannot honour. Older designs display the product but do not perform these checks.

Situation What the customer sees Can they pay?
The product id does not exist "We could not find the item this payment is for. Please go back to the store and try again." No
The product belongs to a different merchant The same message. One merchant can never sell another merchant's product No
The product is not Active "This item is no longer available for purchase." No
Fewer units available than requested "This item is out of stock and cannot be purchased right now." No
5 units or fewer left "Only 3 left in stock" under the product, as a nudge Yes
The last unit sells while they are on the page The payment is declined and the same out of stock message is shown No

When a payment is blocked the form is put away and the message replaces it, so the customer is never left with a Pay button that can only fail. The order summary stays on screen - knowing which item is unavailable is the point of the message.