Document Linking – RFQ → Quote → PO → POC
Important
Read this page before using the individual field tables. Getting the linking fields wrong is the most common reason a Quote does not connect to its RFQ, or a PO appears as a Direct PO with no Quote attached.
Overview
The ForSea platform chains four documents together to form a complete procurement cycle:
| Stage | Document | Sent by |
|---|---|---|
| 1 | RFQ – Request For Quote | Buyer |
| 2 | Quote – Supplier quotation | Supplier |
| 3 | PO – Purchase Order | Buyer |
| 4 | POC – Purchase Order Confirmation | Supplier |
For the platform to recognise these documents as one chain, each document must carry specific reference qualifiers that point back to the previous document.
The linking chain
flowchart LR
A([RFQ]) -->|AGI = RFQ controlReference| B([Quote])
B -->|AAG = Quote number e.g. Quote:XXXXX_XXXX| C([PO])
C -->|ON = PO controlReference| D([POC])
The three linking qualifiers
| Qualifier | Used in | What to set as the value | Common mistake |
|---|---|---|---|
| AGI | Quote | interchange.controlReference from the RFQ you received |
Using the RFQ messageNumber or UC instead of the controlReference |
| AAG | PO | The supplier's quotation number as it appears in the Quote payload — e.g. Quote:26021613490115_8128 |
Leaving AAG empty (the PO is then treated as a Direct PO with no linked Quote) |
| ON | POC only | interchange.controlReference from the PO you received |
Putting ON inside the PO payload — ON is invalid in a PO and will be rejected |
Warning
ON is NOT valid inside a PO. Do not add an ON reference to the PO payload. ON belongs only in POC (Order Confirmation) and Order Response messages.
Tip
AGI uses the raw controlReference string, not the messageNumber.
The controlReference is the long unique string in the interchange envelope
(e.g. 7683432350524220260406125500). The messageNumber is the shorter
human-readable ID (e.g. 060426A00001). They are different fields.
UC – the human-readable number
UC is present in every stage. It carries the human-readable document number for
that stage and is displayed in the ForSea UI. It is NOT the linking key — the
linking is done by AGI / AAG / ON.
| Stage | What UC contains |
|---|---|
| RFQ | Buyer's RFQ number (e.g. 060426A00001) |
| Quote | Supplier's own quote reference (e.g. QN270524-1) |
| PO | Buyer's Purchase Order number (e.g. 190326V00001) |
| POC | Same PO number echoed back from the PO |
One-line rules
- RFQ → Quote: set
AGI=RFQ.interchange.controlReferenceandUC= your own Quote reference - Quote → PO: set
AAG= the supplier's quotation number from the Quote payload (e.g.Quote:XXXXX_XXXX) andUC= Buyer's PO number - PO → POC: set
ON=PO.interchange.controlReferenceandUC= same PO number as in the PO
Party qualifiers per stage
| Qualifier | Role | RFQ | Quote | PO | POC |
|---|---|---|---|---|---|
| BY | Buyer company | ✓ | – | ✓ | ✓ |
| BA | Buyer agent / billing | ✓ | ✓ | – | – |
| VN | Vendor (Supplier) | ✓ | ✓ | ✓ | ✓ |
| CN | Consignee | ✓ | ✓ | ✓ | ✓ |
| IV | Invoice-to party | – | – | ✓ | ✓ |
| UD | Vessel | ✓ | ✓ | ✓ | ✓ |
Note
The Quote does NOT include a BY (Buyer) party. The PO does NOT include a BA (Buyer Agent) party. Sending the wrong party qualifiers for a stage will cause a validation error.
Troubleshooting
Warning
Quote appears as a Direct Quote (not linked to any RFQ)
Check that the Quote reference array contains an AGI entry and that its
referenceNumber matches the RFQ interchange.controlReference exactly —
same casing, full string, no truncation. UC alone does not create the link.
AGI is the hard key.
Warning
PO appears as a Direct PO (not linked to any Quote)
Check that the PO reference array has an AAG entry whose referenceNumber
equals the supplier's quotation number as it appeared in the Quote payload
(e.g. Quote:26021613490115_8128). Also confirm that ON is NOT present in the PO payload.
Warning
POC is not linking back to the PO
Check that the POC reference array contains an ON entry and that its
referenceNumber equals the PO interchange.controlReference exactly.
Do not confuse the PO controlReference with the POC's own controlReference — they are different.
See also: RFQ Field Table · Quote Field Table · PO Field Table · POC Field Table