1 ---
2 title: "Automate Field Evaluator Payments with the VCI Bridge"
3 sidebarTitle: "Field Payments"
4 description: "Automatically pay field evaluators in USDC when their offline assessments sync — no manual intervention required for eligible score tiers."
5 ---
6
7 ProcureNet's VCI bridge connects your offline field evaluation queue directly to the USDC payment infrastructure. When a field evaluator completes assessments without connectivity and later comes back online, the bridge intercepts the sync event, calculates the appropriate USDC payout based on the evaluator's average score, creates a payment request, and fires a wallet event your UI can listen to. You handle the UI feedback; ProcureNet handles the on-chain settlement.
8
9 ## How the Payment Flow Works
10
11 <Steps>
12
13 ### Evaluator Completes Assessments Offline
14
15 Field evaluators submit assessments through your app while disconnected. These records are queued locally on the device until connectivity is restored.
16
17 ### Evaluation Queue Syncs on Reconnect
18
19 When the device comes back online, the evaluation queue syncs and fires a `vci-sync-status` browser event. This is the trigger that kicks off the automated payment flow.
20
21 ### VCIProcureNetBridge Calculates the Payout
22
23 The bridge intercepts `vci-sync-status`, reads the evaluator's average score across all synced assessments, and maps that score to a USDC payout tier.
24
25 | Avg Evaluation Score | USDC Payout |
26 |---|---|
27 | ≥ 9.0 | 500 USDC |
28 | ≥ 7.0 | 250 USDC |
29 | ≥ 5.0 | 100 USDC |
30 | < 5.0 | 0 USDC (no payment) |
31
32 ### Payment Request Is Created and Attached
33
34 The bridge calls `POST /mods/procurement_wallet/usdc/request` to create a USDC payment request on the Base network by default. The response includes a `deposit_address` and an optional `qr_code`. Both are attached to the evaluation record for traceability.
35
36 GPS metadata captured by the field device — latitude, longitude, accuracy, and timestamp — is automatically included in the payment request metadata, creating a location-stamped audit record.
37
38 ### `vci-wallet-sync` Event Fires
39
40 Once the payment request is created, the bridge dispatches a `vci-wallet-sync` browser event containing the payment details. Your UI can listen for this event to show confirmation feedback to the evaluator.
41
42 ### ProcureNet Watches for On-Chain Confirmation
43
44 If you instantiate the bridge with `autoWatch: true`, ProcureNet polls `GET /mods/procurement_wallet/usdc/watch/{paymentId}` automatically and resolves the payment once the transaction is confirmed on-chain. If `autoWatch` is false, you trigger confirmation manually.
45
46 </Steps>
47
48 ## Setting Up the Bridge
49
50 Instantiate `ProcureNetWalletClient` with your API key and bridge configuration, then pass it to `VCIProcureNetBridge` along with your evaluation queue and a tenant resolver function.
51
52 ```typescript
53 import { VCIProcureNetBridge, ProcureNetWalletClient } from './integrations/VCIProcureNetBridge';
54
55 const wallet = new ProcureNetWalletClient(
56 'https://api.procurenet.io',
57 process.env.PROCURENET_API_KEY!,
58 { autoWatch: true }
59 );
60
61 const bridge = new VCIProcureNetBridge(queue, wallet, () => 'tenant_abc');
62 ```
63
64 <Note>
65 The `x-perplexity-mod-key` header is set automatically from the API key you pass to `ProcureNetWalletClient`. You do not need to attach it manually to wallet endpoint calls.
66 </Note>
67
68 ## Supported Networks
69
70 ProcureNet's USDC bridge supports the following networks. Payments default to **Base** unless you configure an alternative network:
71
72 <CardGroup cols={2}>
73 <Card title="Base" icon="circle-b">
74 Low-fee L2 — the default network. Recommended for high-volume field payment operations.
75 </Card>
76 <Card title="Arbitrum" icon="circle-a">
77 High-throughput L2 with strong DeFi ecosystem support.
78 </Card>
79 <Card title="Polygon" icon="hexagon">
80 Fast finality and broad wallet compatibility for field devices.
81 </Card>
82 <Card title="Ethereum" icon="ethereum">
83 Mainnet settlement for maximum finality guarantees on high-value payments.
84 </Card>
85 </CardGroup>
86
87 ## Listening for Payment Events
88
89 Register a `vci-wallet-sync` listener in your frontend to surface payment confirmation details to the evaluator as soon as the payment request is created.
90
91 ```typescript
92 window.addEventListener('vci-wallet-sync', (event) => {
93 const { paymentId, amount, qrCode, expiresAt } = (event as CustomEvent).detail;
94 console.log(`Payment ${paymentId} created for ${amount} USDC`);
95 // Render qrCode and expiresAt in your UI for the evaluator to track
96 });
97 ```
98
99 ## Manual Confirmation
100
101 If you instantiate the bridge with `autoWatch: false`, you are responsible for triggering on-chain confirmation. Call `bridge.manualConfirmPayment` with the local evaluation record ID and your admin key.
102
103 ```typescript
104 const result = await bridge.manualConfirmPayment(localId, adminKey);
105
106 if (result.confirmed) {
107 console.log('Transaction hash:', result.transaction_hash);
108 }
109 ```
110
111 <Tip>
112 Use `autoWatch: true` for production deployments unless you have a specific reason to gate confirmation — it eliminates the need for a manual confirmation step and reduces payment latency.
113 </Tip>
114
115 ## GPS Metadata Attachment
116
117 <Info>
118 Location metadata is attached automatically. If the field device has GPS enabled, the bridge reads `lat`, `lng`, `accuracy`, and `timestamp` from the device context and includes them in the payment request metadata sent to ProcureNet. No additional configuration is required.
119 </Info>
120
121 <Warning>
122 Evaluations with an average score below 5.0 receive no USDC payment. Verify your scoring rubrics and calibration against this threshold before deploying the bridge to production — evaluators below the floor will not receive a payout regardless of submission volume.
123 </Warning>