Error codes / 676
EFRIS error 676 — the excise rate is per unit, so piece units are mandatory
The excise duty code on this product carries a rate per unit — per litre, per kilogram — rather than a percentage. When that is true, havePieceUnit must be "101" and the piece fields must be populated.
Percentage-rate excise has no such requirement. Only unit-rate excise forces the piece fields, which is why the same product shape works for beer and fails for bottled water.
What it actually means
URA returns: haveExciseTax is '101', excise duty has unit of measurement, 'havePieceUnit' must be '101'! EFRIS needs a countable unit to multiply a per-litre or per-kilogram rate against, and the piece unit is where that quantity is declared.
The fix
Set havePieceUnit to "101", set pieceMeasureUnit to the unit the excise rate is expressed in (for example "102" for litre), and set pieceScaledValue to the scale factor — "1" for a single-unit product. pieceUnitPrice is the unit price divided by that scale.
client.upload_goods([{
"goodsName": "Mineral Water 1L",
"goodsCode": "WATER-1L",
"unitPrice": "2000",
"commodityCategoryId": "50202310",
"measureUnit": "102", # litre
"haveExciseTax": "101",
"exciseDutyCode": "LED...", # a UNIT-rate code
# Required because the rate is per litre, not a percentage:
"havePieceUnit": "101",
"pieceMeasureUnit": "102", # must match the excise unit
"pieceScaledValue": "1",
"pieceUnitPrice": "2000",
}])
Why this happens
Query the excise code first with T125 and look at its rate rule. A percentage rule needs none of the piece fields; a unit rule needs all of them. Deciding from the rule rather than from the product avoids guessing.
Related
- Error 1344 — summary.taxAmount must include excise duty
- Error 1345 — summary.grossAmount must exclude excise duty
- All EFRIS error codes
The EFRIS API Kit handles this case already — it is one of the rejections the library was calibrated against. This page stays free either way.