efrisapi.com

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


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.