Fix NetSuite France E-Invoicing 10.2 Payment Fetch
Debug NetSuite France E-Invoicing: Fix 10.2 Payment Fetch Issues with Clear Steps.

On this page
When the Electronic Invoicing bundle pulls 10.1 sales invoices into the PPF without issue but silently drops 10.2 payment records, the root cause is almost always a mismatch between the payment status workflow and the bundle's trigger logic. The 10.2 dataset requires a Paid in Full invoice status and a successful payment application before the connector fires, partial payments, unapplied cash, or invoices stuck in Pending Approval will never generate a 10.2 record.
Why 10.1 Works but 10.2 Doesn't
The 10.1 sales record fires on invoice creation or validation. The 10.2 payment record, by contrast, depends on a post-payment event that the bundle monitors via a scheduled script deployment. If that deployment isn't running, or if the payment doesn't meet the bundle's internal criteria, the fetch returns empty.
Three conditions must align:
- Invoice status = Paid in Full (not Partially Paid, not Pending Payment)
- Payment record linked to the invoice via the
applysublist - SuiteApp deployment "France E-Invoicing - Payment Sync" active and scheduled at a frequency that catches your payment volume
Check the deployment first: Customization > Scripting > Script Deployments > France E-Invoicing - Payment Sync. If the status is Not Scheduled or the last run timestamp predates your latest payments, the 10.2 fetch will return nothing.
The bundle ignores payments sitting in Undeposited Funds. Deposit the payment first, then re-run the sync.
Verify the Payment Record Structure
Open a customer payment that should have generated a 10.2 record. Confirm these fields:
| Field | Expected Value |
|---|---|
| Status | Paid in Full (on the related invoice) |
| Payment Method | Not Cash or Check unless your PDP accepts them |
| Deposit | Not Undeposited Funds, must be deposited to a bank account |
| Applied To sublist | At least one line with Apply = true and Amount > 0 |
NetSuite uses internal IDs and field IDs permanently, every record has an internal ID and every field has a field ID, visible in the URL when viewing a record. Custom body fields like custbody_fr_einv_paid follow the custbody_ prefix convention, which helps when tracing payloads in the System Notes subtab.
Manual Re-Trigger for Stuck Records
If the deployment is active but specific payments missed the window, you can force a re-sync without waiting for the next scheduled run.
- Navigate to Customization > Scripting > Scripts > France E-Invoicing - Payment Sync
- Click Deployments > View on the active deployment
- Copy the Internal ID from the URL (e.g.,
deployid=1234) - Run this in the Console (or via a saved Suitelet):
/**
* @NApiVersion 2.1
* @NScriptType Suitelet
*/
define(['N/task', 'N/log'], (task, log) => {
function onRequest(context) {
const deployId = context.request.parameters.deployid;
if (!deployId) {
context.response.write('Missing deployid parameter');
return;
}
const mrTask = task.create({
taskType: task.TaskType.MAP_REDUCE,
scriptId: 'customscript_fr_einv_payment_sync', // verify in your account
deploymentId: deployId,
params: { custscript_force_full_sync: true }
});
const taskId = mrTask.submit();
log.audit('Manual 10.2 sync triggered', { taskId, deployId });
context.response.write(`Sync task submitted: ${taskId}`);
}
return { onRequest };
});Replace customscript_fr_einv_payment_sync with your actual script ID (find it at Customization > Scripting > Scripts > France E-Invoicing - Payment Sync). Deploy this Suitelet once, hit it with ?deployid=YOUR_DEPLOY_ID, and monitor the Map/Reduce Status page for completion.
Common Configuration Gaps
Missing "E-Invoice Paid" Checkbox
The Novutech and Zone bundles both write a custom checkbox E-Invoice Paid (custbody_fr_einv_paid) on the invoice when the 10.2 posts. If this field is missing from the invoice form, the bundle assumes the payment hasn't been reported and may duplicate or skip. Add it via Customization > Forms > Transaction Forms > Invoice > Screen Fields.
PDP Rejection Codes Not Surfacing
When the PPF rejects a 10.2 payload, the error lands in the E-Invoicing Status subtab on the invoice, not on the payment record. Check there for codes like:
1002, Missing mandatory payment date1015, Payment method not allowed for this invoice type2001, Duplicate payment reference
Correct the underlying data (payment date, method, or reference) on the payment record, then re-run the sync.
Multi-Subsidiary Payment Routing
If you operate multiple French subsidiaries, each needs its own PDP Connection record (Setup > Company > E-Invoicing > PDP Connections). A payment on Subsidiary B routed through Subsidiary A's connection will fail validation. Confirm the Subsidiary field on the payment matches the PDP connection used by the sync script.
Test with a Single Clean Payment
Before debugging the whole batch, create a test case:
- New invoice for a French B2B customer, Approve it
- Receive payment via Receive Payment, apply fully, Deposit to a real bank account
- Wait for the next scheduled sync (or trigger manually)
- Open the invoice > E-Invoicing Status subtab, you should see Status: 212 - Invoice Paid and E-Invoice Paid = true
If that works, the issue is data quality on the problematic payments, not the bundle.
When to Engage Your PDP or Partner
If the test payment succeeds but production payments still fail, export the failed payment internal IDs and send them to your PDP (Invopop, Generix, etc.) with the PPF error log. They can confirm whether the UBL 2.1 payload passes their schema validation. Zone & Co and Novutech both offer tiered support for exactly this handoff, your NetSuite partner should have a direct escalation path.
Next step: Audit your last 50 payments for Undeposited Funds status and Partial Apply lines. That's where 90% of 10.2 fetch failures hide. A saved search filtering on custbody_fr_einv_paid = false and payment status = Paid in Full will surface the gaps fast, add it to your close checklist.


