Fluent Commerce Logo
Docs

Base payment use case

Essential knowledge

Changed on:

17 Apr 2025

Overview

This article covers a few base use-cases representing simple scenarios from a payments perspective that an order can go through. 

Key points

[Warning: empty required content area]
The following base use-case represents the simplest scenario from a payments perspective that an order can go through. 

Pay for an Order with one transaction, one fulfilment, payment 

Out of scope for this use case:

  • No returns
  • No split fulfilments
  • PaymentTransactions don’t fail; request transaction and success
 

In scope:

  • One financial transaction (paid for with a credit card)
  • One item
  • Shipped from one location
  • Payment pending, settled when the items are shipped.
Taking our base, we then introduce additional complexity to our use cases based on certain events that can happen to an order. These usecases introduce one extra element of complexity ontop of the base use case. Later, we’ll combine different 

Pay for one order with a gift card and credit card

As a Customer purchasing an order, I want to pay with a gift card and then the remaining amount on a credit card, so that I can first use up a gift card and then my personal funds to pay for my items as that works best for my personal circumstances

Modify an existing order payment method.

As a retailer who is processing a pending or failed payment, I want to be able to modify an order payment method ( i.e., credit card) in case of a problem with another payment method ( i.e., bank transfer ); it must be reflected in the payment history. Confirm if this is done via OMS today for MW? End to end flow is required hereCustomer Service Agent action required. 

Make new payments for an order

As a Customer Service Agent, I want to be able to add new transactions to an order manually that represent exchanges of money between the customer and my organisation - like a bank transfer or cash on delivery, so that I can have a record of transactions made for an order

Adding extra items to an order

As a Retailer who has added an extra item to an existing customers order, I want to be able to add payment transactions made for that extra item, so that I can ensure it is appropriately managed throughout the payment lifecycleCustomer Service Agent action required. 

Add extra items and set their price

As a Customer Service Agent who is adding an item to an existing order, I want to be able to set the price of the new item to be charged to the customer, so that it is alignment with our businesses expectations

Removing items from an order

Customer Service Agent action requiredAs a Retailer processing a customers order where they have added/removed items, I want to be able to reflect this, i.e., if cash is on delivery, and we need to add/remove an item, then we need to reflect this into payments accordingly to the cash paid by the customer (+/- amount).  

Revise the overall order amount

As a Customer Service Agent, I want to change the overall price of an order, so that I can appease a customer's grievances about issues with their orderIn scope:
  • Lower the price
    • Refund the order entirely
    • Reduce by `x` amount
  • Increase the price
Define what statuses can an order have its price edited at? Is this something that can only happen before it is shipped or after?

Revise an individual line item price

As a Customer Service Agent, I want to reduce the price of an item on an order so that I can appease a customers grievances about an issue related to an item in their order

Remove Shipping Costs from an Order

As a Customer Service Agent, I want to remove the shipping fee from an order,
So that I can appease a customers grievances about issues with their order
As a Customer Service Agent, I want to be able to refund a customer their money for an item ordered when they return it, so that they can be appeased for their grievances with the itemHistorical View of Payment Transactions against an OrderAs a Customer Service Agent viewing a customers order, I want to be able to see what has happened from a payment transaction perspective to the order, so that I can best assist the customer with their query View the status of payments made for an orderAs a Customer Service Agent, I want to be able to view the status of each payment made for an order, so that I can best assist a customer with their query around the status of their payments like why they might be seeing multiple debits from our business for the same order
  • Developers also have this same requirement to extract the status of a payment from GraphQL so that it can be consumed by third party platforms
 

Updating Payment Status based on Payment Transactions

As a OMX Builder, I want to be able to update a `payments` status based on certain `paymentTransaction` events occurring, so that I can ensure a payment is in its overall correct state

Updating Order Status based on Payment Status

CS Agent Perspective

As a customer service agent, I want the status of an order to be reflective of its overall state, so that I can quickly determine where an order is at in its lifecycle

OMX Builder Perspective

As a OMX Builder, I want to be able to update the status of an order based on a `payment` status, so that I can ensure an order is in its correct status based on the events that have occurred to itAs an OMX Builder, I want to be able to create an `invoice` when I ship items for their paid for amounts, so that I can capture an orders revenue
  • Need the ability to update the status for each payment made for an order and the overall payment status on an order

Split Fulfilments
  • An order can split into multiple fulfilments and therefore shipped at different times.
  • This causes one invoice per shipment.
  • We need to cater for the scenario where we have partially settled the order.
 Billing Address Per OrderA single customer can have more than one billing address. They want the ability to capture this at the order level in the billing account.
  • They are using the Payment:BillingAccount entity per order to achieve this
  • Then each order also gets a payment
  • One customer entity references the billing account and payment
 Problem StatementTo get the latest payment status of a given order, they need to filter and sort the payment transactions, then sort them by ref and date. To achieve that, they have added a manual suffix key to the ref of the PaymentTransaction.  Many systems specify this key, like B2B, legacy shops etc. If one of them sends the wrong format of the key, then this will break the order, and they will no longer be able to accurately read the latest payment status of an order because they can no longer filter on the ref correctly.This causes risks to the project that are:
  • Integration implementation complexity; multiple internal 3rd party systems concerned. 
  • Human error
  

Specify that a FT has been precaptured

Given a FinancialTransaction (FT) has occurred to pay for an order
And that FT is pre-captured
When the FT is sent to Fluent
Then I do not want the system to attempt to re-capture these funds again during the fulfilment process
And I want to be able to view whether or not a FT is already captured

Questions

  • Why do they want paymentTransaction to be a mutable entity? FC_EXS: They don't want to have one entry per payment method status; they want to be able to update the status.
  • What does “we have multiple payments per order and and and each payment would differentiate payment from another payment is a payment method.” mean?  FC_EXS: yes, it does.
  • To get to the latest payment status, then get all the payment transactions and sort them, then sort them by ref and date. It can’t be just by date because they have many payment types. FC_EXS: yes, it is exact. 
  • Are you adding items and taking payments to existing orders using Fluent OMS? FC_EXS: yes, but not taking payments; only recording performed payment. 
  • Can you please list the integrations and interface contracts for each of these interacting with the payment data? Apart from the PSP, what other systems interact with this payment information? 
Architecture diagram: DOMS FLUENT  touch points
  • Legacy integration layer
  • e-commerce integration layer
  • refurbished systems
  • Master Data Integration layer
  • Fluent Simulator Open DOMS - HL Architecture v2.0.png
6. Are there any other interface contracts with the UI or other systems that we can see? What does the Fluent OMS Manifest expect?