Escrow, Tax & Invoice Flow
Status: draft for product, finance, and legal review.
Last updated: 2026-07-16.
Product Decision
MCV provides marketplace software, wallet escrow tooling, document templates, invoice collection tools, and workflow tracking. MCV does not act as the buyer's payment agent, tax withholding agent, or tax representative for seller income.
Key decisions:
| Topic | Decision |
|---|---|
| Default portal language | Vietnamese for ads.mcv.network |
| Default marketplace currency | VND for new Vietnam-facing accounts and listings |
| Seller listed price | Gross amount before the seller's own taxes |
| Buyer top-up | Deposit into wallet escrow, not a taxable purchase from MCV |
| MCV role | Software platform and escrow workflow operator |
| Seller tax and invoice role | Buyer and seller complete obligations directly using MCV-supported tools |
| MCV revenue | MCV only invoices its own platform/service fee when earned |
:::warning Legal review required This document is a product workflow specification, not legal or tax advice. Finance/legal must validate withholding, e-invoice, personal data, and e-signature rules before production rollout. :::
High-Level Flow
Workflow By Step
1. Seller Compliance Profile
Before publishing payable services, the seller must complete a legal profile.
| Seller type | Required fields |
|---|---|
| Individual | Full name, identity number, tax code if available, address, bank account, payout email, optional signed tax declaration |
| Business | Legal name, tax code, billing address, invoice email, representative, bank account |
The seller type controls the post-acceptance documentation branch.
2. Listing And Pricing
Sellers list services in VND by default. The listed price is the gross amount before the seller's own taxes.
Checkout must show:
| Line item | Owner |
|---|---|
| Seller gross price | Buyer pays seller |
| MCV platform fee, if any | Buyer pays MCV |
| Total wallet reserve | Buyer wallet |
MCV should not display seller tax as an MCV-collected tax unless finance/legal later approves that role.
3. Wallet Top-Up
Buyer top-up creates a deposit into the buyer wallet.
No invoice is issued on top-up because no service has been sold yet. The system generates only:
- top-up receipt,
- bank transfer reference,
- payment provider reference,
- wallet ledger entry,
- reconciliation status.
4. Order Reserve
When the buyer orders a service, MCV reserves the total amount from the buyer wallet.
Recommended ledger entries:
| Ledger type | Direction | Notes |
|---|---|---|
wallet_topup | credit | Deposit confirmed by payment provider |
escrow_reserve | debit/reserve | Buyer funds reserved for order |
platform_fee_reserve | debit/reserve | Optional MCV fee reserve |
The seller is not paid at this stage.
5. Delivery And Buyer Acceptance
The seller submits delivery evidence. The buyer reviews and explicitly accepts the work.
Buyer acceptance means:
- the buyer confirms commercial acceptance,
- the buyer authorizes release of escrow subject to the documentation branch,
- MCV starts the compliance workflow for the seller type.
Compliance Branch
Contract toolkit
MCV generates templates for a collaborator/service contract between buyer and seller, acceptance record, payment receipt, and tax-support documents.
Invoice claim toolkit
MCV creates an invoice request, QR/link for the buyer to claim the invoice from the seller, and an upload/verification flow for e-invoice files.
Individual Seller Branch
MCV should generate software-supported templates, not MCV-issued tax certificates.
Required artifacts:
| Artifact | Issuer/signers | Purpose |
|---|---|---|
| Service/collaborator contract | Buyer and seller | Defines scope, gross fee, delivery, tax responsibility |
| Acceptance record | Buyer and seller | Confirms completed work |
| Payment authorization | Buyer | Authorizes escrow release |
| Payment receipt | Seller confirms receipt | Supports accounting evidence |
| Tax-support worksheet | Generated by MCV software | Helps parties calculate/report obligations |
| Withholding certificate upload, if applicable | Buyer, not MCV | Only if buyer has a legal withholding obligation |
Important rule: MCV must not issue a withholding certificate in MCV's name unless MCV legally becomes the paying/withholding party.
Business Seller Branch
The seller business must issue an invoice to the buyer for the transaction.
MCV supports:
- invoice request generation,
- buyer billing profile capture,
- QR/link for invoice claiming,
- seller invoice upload,
- XML/PDF metadata capture,
- buyer invoice acknowledgement,
- admin exception review.
Recommended invoice gate:
buyer accepted delivery
-> invoice requested
-> seller uploads invoice XML/PDF or invoice lookup link
-> buyer acknowledges invoice
-> payout release is allowed
Swimlane
Order Status Model
| Status | Meaning | Next action |
|---|---|---|
escrow_reserved | Buyer funds are reserved | Seller delivers |
delivered | Seller submitted delivery | Buyer reviews |
buyer_accepted | Buyer accepted delivery | Compliance branch starts |
contract_pending | Individual seller contract is waiting for signature | Buyer/seller sign |
invoice_pending | Business seller invoice is requested | Seller issues invoice |
documents_ready | Required artifacts are available | Payout can be released |
payout_released | Seller payout has been released | Complete order |
completed | Order is closed | None |
disputed | Buyer/seller disagreement | Admin review |
Data Model Proposal
| Object | Purpose |
|---|---|
seller_compliance_profiles | Stores individual/business seller identity and invoice profile |
order_compliance_cases | Tracks compliance branch and required artifacts per order |
e_contracts | Stores contract template version, signer state, and signed PDF |
contract_signatures | Buyer/seller signature events |
tax_support_documents | Generated tax worksheets, receipts, and uploaded buyer-issued certificates |
invoice_claims | Seller business invoice request, claim URL/QR, upload status |
payout_authorizations | Buyer approval and payout release authorization |
platform_fee_invoices | MCV invoice records for MCV's own fee |
Money fields should move toward:
| Field | Recommendation |
|---|---|
amount_minor | Integer amount in the smallest practical currency unit |
currency | VND, USD, etc. |
exchange_rate_snapshot | Stored when conversion is involved |
gross_seller_amount_minor | Listed seller price before seller tax |
platform_fee_amount_minor | MCV fee, invoiced by MCV |
seller_payout_amount_minor | Amount released to seller |
For VND, amount_minor equals the whole VND amount.
Implementation Phases
Phase 1: Defaults And UI
- Set ads portal default locale to Vietnamese.
- Set new Vietnam-facing accounts to VND by default.
- Rename wallet copy from "top-up purchase" to "wallet deposit".
- Update checkout language to show escrow and gross price.
Phase 2: Compliance Profile
- Add seller legal profile.
- Require seller type before publishing paid services.
- Capture buyer invoice profile for business buyers.
Phase 3: Documentation Toolkit
- Generate individual seller contract templates.
- Generate acceptance record and payment receipt templates.
- Add invoice claim link/QR flow for business sellers.
- Allow upload of seller invoice XML/PDF.
Phase 4: Payout Gate
- Release payout only after buyer acceptance plus required artifacts.
- Keep manual admin override with audit reason.
- Generate MCV platform fee invoice separately.
Legal References
The workflow is informed by these Vietnam legal/tax areas:
| Area | Reference | Relevance |
|---|---|---|
| E-invoices and records | Decree 123/2020/ND-CP | Invoice and record framework |
| E-invoice guidance | Circular 78/2021/TT-BTC | E-invoice implementation guidance |
| Individual/business household tax | Circular 40/2021/TT-BTC | Seller tax classification support |
| Personal income withholding, historical/current-review item | Circular 111/2013/TT-BTC | Past PIT withholding framework; validate current applicability |
Review Questions
- Should payout to a business seller be blocked until invoice evidence is uploaded, or only flagged?
- Which e-sign provider should MCV use for buyer-seller contracts?
- Should MCV require seller tax code before listing, or only before payout?
- Should buyer acceptance create an immutable payout authorization PDF?
- Should gross seller price include VAT if seller is a VAT-registered business?
- Which cases require admin compliance review before payout?