Face-to-face Transaction Lifecycle

This page details the lifecycle of face-to-face transactions in terms of their different states and how they transition from one state to the next. The lifecycle is presented as a state machine.

Lifecycle Diagram

Here we present a diagrammatic overview of the face-to-face transaction lifecycle. The colours of the edges indicate the actors that initiate those state transitions.

Face-to-face transaction lifecycle diagram

States

Created

Face-to-face transactions start off in the created state, and will have either a "seller" or a "buyer" user (the user who created the transaction) linked to it. Face-to-face transactions have a "join code" while in this state.

Transitions: A Trustap user other than the creator can join or reject a created transaction using its join code.

The creator of the transaction can cancel a created transaction using its id.

Rejected

A rejected transaction is considered to be completed.

Joined

A joined transaction is one that has both a seller and a buyer user linked to it, and requires payment before moving on to the next state.

Transitions: The buyer can pay a deposit for, or cancel, a joined transaction.

Cancelled

A cancelled transaction is considered to be completed.

Deposit paid

A deposit_paid transaction waits for the seller to accept the buyer's deposit before progressing.

Transitions: The seller can accept a deposit for, or cancel, a deposit_paid transaction.

Cancelled with deposit

A cancelled_with_deposit transaction is one that has been cancelled after its deposit has been paid.

Transitions: The Trustap platform updates the state of a cancelled_with_deposit transaction to deposit_refunded once the deposit has been refunded to the buyer.

Deposit Refunded

A deposit_refunded transaction is considered to be completed.

Deposit Accepted

A deposit_accepted transaction waits for the seller to set the pricing for the transaction before progressing.

Transitions:

  • The seller can skip the remainder step after the deposit is accepted, instead of setting a price for the transaction. If the transaction was created with "skip_remainder": true, then this transition occurs automatically as soon as the deposit is accepted.
  • The seller can set the pricing of the transaction, or cancel, a deposit_accepted transaction.

Priced

A priced transaction is one that has had pricing information set, and requires payment before moving on to the next state.

Transitions: The buyer can pay the remainder of the transaction, or cancel, a joined transaction.

Remainder Paid

A remainder_paid transaction is one that is pending handover confirmation, primarily from the seller. Once the seller has confirmed the handover, the buyer has an opportunity to submit a complaint.

Transitions: The buyer and seller can both confirm the handover of the goods.

Remainder skipped

A remainder_skipped transaction is one that is pending handover confirmation, primarily from the seller. Once the seller has confirmed the handover, the buyer has an opportunity to submit a complaint.

Transitions: The buyer and seller can both confirm the handover of the goods.

Buyer handover confirmed

A buyer_handover_confirmed transaction is one that is still pending the seller handover confirmation.

Transitions:

Seller handover confirmed

A seller_handover_confirmed transaction gives the buyer an opportunity to verify the item they have received. Once the item has been delivered, the Trustap platform begins a "complaints period".

Transitions:

  • The buyer can complain about a delivered transaction before the complaints period ends.
  • If no such complaint occurs before the complaints period ends then the Trustap platform will release the funds for the transaction to the seller and will update the state to funds_released.
  • The buyer can confirm the handover of the goods, if they haven't done so already.

Complained

A complained transaction is registered with Trustap for conflict resolution.

Transitions: After arbitration, Trustap will release the funds to the buyer and/or seller in a certain ratio and will update the state to funds_released.

Funds released

A funds_released transaction is considered to be completed.