Skip to main content

Purchase Order

What is purchase order?

Purchase Order payment method allows placing orders with a Purchase Order Number (optional) with no wallet balance required and users are invoiced for the total price of the basket. The invoice can be paid at a later time and the campaigns are actually sent to the job boards even before the invoice has been paid. Purchase Order requires a wallet to be created as explained in End User Payments and user needs to enter their billing details in the Billing Portal.

How does it compare to Wallet and Direct Charge?

It can be summarized as:

  • Wallet Balance
    • User can add balance in any amount (not less than the campaign total price)
    • User can reuse balance in subsequent campaign orders
    • User can add balance before, during or after campaign checkout
  • Direct Charge
    • User pays for the campaign total price, not less, not more
    • User pays during the campaign checkout
  • Purchase Order
    • User pays after the campaign checkout

As an ATS, how can we start using purchase order?

Purchase Order is not enabled by default for all ATSs. The ATS needs to talk with VONQ Partner Account Manager to get it enabled so their end users can start using it.

info

For an end user to use the purchase order, the user needs to enter their billing information such as name, email, billing address & tax number before being able to order.

note

On our testing environments such as Acceptance and Sandbox, money related transactions such as "topping-up a wallet" are done using test credit card and the invoices are not sent when to the end user.

Caveats to know when using purchase order

Purchase Order requires a wallet to be created as explained in End User Payments and user needs to enter their billing details in the Billing Portal.


When a user orders with purchase order, the wallet's balance is deducted equal to the total of items in the campaign order (the basket). When user pays the invoice later, the wallet's balance is restored to the initial value before the purchase order was made. If the wallet balance is not enough, then the wallet balance will be negative.


You can ask VONQ to set up a maximum purchase order amount per currency for your partner account and when the basket total exceeds this amount, user will not be able to select Purchase Order method in Payment Method step of the order journey.

info

Please note that if you have programmatically set the payment method to be purchase order, if user adds/removes products to/from the basket, and basket total (indicated by totalExceedsMaxPurchaseOrder) exceeds the maxPurchaseOrderAmount, we will do:

  • If you have hidden the payment method step
  • If you have NOT hidden the payment method step
    • We will fall back to null so that the user is enforced to select a different payment method because Purchase Order method will be disabled and user won't be able to select it unless they reduce basket total price

Example case with enough wallet balance:

  • User has 1000$ Wallet Balance that they have had previously topped-up
  • User orders a campaign with 500$ basket total; the balance of 1000$ will get 500$ deducted, thus wallet balance will be 500$
  • User will pay for the invoice, then the wallet balance will be restored to 1000$

Example case with not enough wallet balance:

  • User has 300$ (or zero) Wallet Balance
  • User orders a campaign with 500$ basket total; the balance of 300$ (or zero) will get 500$ deducted, thus the wallet balance will be -200$ (or -500$ when zero)
  • User will pay for the invoice, then the wallet balance will be restored back to 300$ (or zero if it was zero initially)

Ordering with purchase order

Purchasing a campaign with wallet balance requires at least one paid product meaning that the end user needs at least one "product" (not contract) added to their basket to purchase with wallet. If the end user has basket comprised of "only contracts", the basket total will be 0$ thus the backend order endpoint will throw an error saying "at least one paid product is required". To circumvent this, Payment Method step is hidden automatically by HAPI Elements and ATS Managed Payment Method is enforced automatically.

Ordering a campaign with only "contracts" in the basket with wallet

HAPI Elements, when end user has "all contracts" in their basket, will automatically fall back to using "ATS Managed" option and end user will not see the "Payment Method" step of the Order Journey and the ATS developer will not be able to override the paymentMethod parameter of the CampaignCreateForm object.

How can we track purchase orders?

Using window.hapi.campaign.service.orderCampaign.onStart callback, you can check the payload being sent to the backend as such:

window.hapi.campaign.service.orderCampaign.onStart(payload => {
if (payload.paymentMethod === window.hapi.orderJourney.utils.paymentMethodKeys.purchaseOrder) {
// order is made using purchase order
// if user entered a Purchase Order Number, then there is also `poNumber` inside the payload, otherwise null
}
})

How can we programmatically manage payment method for a user

Refer to Payment Methods Configuration for enabling/disabling some payment methods based on your business requirements.


Please refer to Using Purchase Order Payment Method recipe for more information on how to use "purchase order" payment method programmatically.