Skip to main content

Save Sales Transaction

The Sales Transaction Save API registers a sales transaction in the system. It captures invoice details, customer information, payment, tax amounts, and itemized sale records.

Endpoint


POST /saveTrnsSalesOsdc


Purpose

This API:

  • Saves a sales transaction with header, receipt, and itemized details
  • Supports tax calculation, discounts, and optional insurance
  • Returns a receipt reference and internal control data upon success

ℹ️ Ensure PIN, branch, and invoice numbers are valid before calling this API.


Request Object: TrnsSalesSaveWrReq

Request Fields (Header)

FieldDescriptionTypeRequiredLengthNotes
trdInvcNoTrader Invoice NumberCHAR✅ Yes50
invcNoInvoice NumberNUMBER✅ Yes38
orgInvcNoOriginal Invoice NumberNUMBER✅ Yes38
custTinCustomer PINCHAR❌ No11Optional
custNmCustomer NameCHAR❌ No60
rcptTyCdReceipt Type CodeCHAR✅ Yes5See Sale Receipt Type
pmtTyCdPayment Type CodeCHAR❌ No5See Payment Method
salesSttsCdInvoice Status CodeCHAR✅ Yes5See Transaction Progress
cfmDtValidated DateCHAR✅ Yes14YYYYMMDDhhmmss
salesDtSale DateCHAR✅ Yes8YYYYMMDD
stockRlsDtStock Released DateCHAR❌ No14YYYYMMDDhhmmss
cnclReqDtCancel Requested DateCHAR❌ No14YYYYMMDDhhmmss
cnclDtCanceled DateCHAR❌ No14YYYYMMDDhhmmss
rfdDtCredit Note DateCHAR❌ No14YYYYMMDDhhmmss
rfdRsnCdCredit Note Reason CodeCHAR❌ No5See Credit Note Reason
totItemCntTotal Item CountNUMBER✅ Yes10
taxblAmtA..taxblAmtETaxable Amounts A–ENUMBER✅ Yes18,2
taxRtA..taxRtETax Rates A–ENUMBER✅ Yes7,2
taxAmtA..taxAmtETax Amounts A–ENUMBER✅ Yes18,2
totTaxblAmtTotal Taxable AmountNUMBER✅ Yes18,2
totTaxAmtTotal Tax AmountNUMBER✅ Yes18,2
totAmtTotal AmountNUMBER✅ Yes18,2
prchrAcptcYnPurchase Accept Y/NCHAR✅ Yes1
remarkOptional remarkCHAR❌ No400
regrIdRegistration IDCHAR✅ Yes20
regrNmRegistration NameCHAR✅ Yes60
modrIdModifier IDCHAR✅ Yes20
modrNmModifier NameCHAR✅ Yes60

Request Fields (Receipt & Items)

Receipt (receipt)

FieldDescriptionTypeRequiredNotes
custTinCustomer PINCHAR❌ No
custMblNoCustomer Mobile NumberCHAR❌ No
rcptPbctDtReceipt Published DateCHAR✅ YesYYYYMMDDhhmmss
trdeNmTrader NameCHAR❌ No
adrsAddressCHAR❌ No
topMsgTop MessageCHAR❌ No
btmMsgBottom MessageCHAR❌ No
prchrAcptcYnPurchase Accept Y/NCHAR✅ Yes1

Item List (itemList)

FieldDescriptionTypeRequiredNotes
itemSeqItem Sequence NumberNUMBER✅ Yes
itemClsCdItem CodeCHAR❌ No
itemCdItem Classification CodeCHAR✅ Yes
itemNmItem NameCHAR✅ Yes
bcdBarcodeCHAR❌ No
pkgUnitCdPackaging Unit CodeCHAR✅ YesSee Packaging Unit
pkgPackage QuantityNUMBER✅ Yes13,2
qtyUnitCdQuantity Unit CodeCHAR✅ YesSee Unit of Quantity
qtyQuantityNUMBER✅ Yes13,2
prcUnit PriceNUMBER✅ Yes18,2
splyAmtSupply AmountNUMBER✅ Yes18,2
dcRtDiscount RateNUMBER✅ Yes5,2
dcAmtDiscount AmountNUMBER✅ Yes18,2
isrccCdInsurance Company CodeCHAR❌ No
isrccNmInsurance Company NameCHAR❌ No
isrcRtInsurance RateNUMBER❌ No3
isrcAmtInsurance AmountNUMBER❌ No18,2
taxTyCdTaxation Type CodeCHAR✅ YesSee TaxType
taxblAmtTaxable AmountNUMBER✅ Yes18,2
totTaxAmtTax AmountNUMBER✅ Yes18,2
totAmtTotal AmountNUMBER✅ Yes18,2

JSON Request Example

{
"trdInvcNo": 123,
"invcNo": 1,
"orgInvcNo": 0,
"custTin": "A123456789Z",
"custNm": "Taxpayer1112",
"salesTyCd": "N",
"rcptTyCd": "S",
"pmtTyCd": "01",
"salesSttsCd": "02",
"cfmDt": "20200127210300",
"salesDt": "20200127",
"totItemCnt": 2,
"taxblAmtA": 0,
"taxblAmtB": 10500,
"taxAmtB": 1602,
"totTaxblAmt": 10500,
"totTaxAmt": 1602,
"totAmt": 10500,
"prchrAcptcYn": "N",
"regrId": "Test",
"regrNm": "Test",
"modrId": "Test",
"modrNm": "Test",
"receipt": {
"custTin": "A123456789Z",
"rcptPbctDt": "20201118120300",
"prchrAcptcYn": "N"
},
"itemList": [
{
"itemSeq": 1,
"itemCd": "KE1NTXU0000001",
"itemClsCd": "5059690800",
"itemNm": "test item 1",
"pkgUnitCd": "NT",
"pkg": 2,
"qtyUnitCd": "U",
"qty": 2,
"prc": 3500,
"splyAmt": 7000,
"taxTyCd": "B",
"taxblAmt": 7000,
"taxAmt": 1068,
"totAmt": 7000
}
]
}

Response Object: TrnsSalesSaveWrRes

FieldDescriptionTypeNotes
resultCdResult code (000 = success)CHAR(3)
resultMsgResult messageCHAR
resultDtResponse timestampCHAR(14)YYYYMMDDhhmmss
dataResponse dataObjectSee below

Response Data

FieldDescriptionType
curRcptNoCurrent Receipt NumberNUMBER
totRcptNoTotal Receipt NumberNUMBER
intrlDataInternal DataCHAR
rcptSignReceipt SignatureCHAR
sdcDateTimeControl Unit Date TimeCHAR

JSON Response Example

{
"resultCd": "000",
"resultMsg": "It is succeeded",
"resultDt": "20200226194328",
"data": {
"curRcptNo": "1",
"totRcptNo": "1",
"intrlData": "EAHSAV6ECUUXSY6PCCJYAUP6MI",
"rcptSign": "QUII27MATATSHFRB",
"sdcDateTime": "20210502115145"
}
}

SDK Usage Examples

$requestData = [
'trdInvcNo' => 123,
'invcNo' => 1,
'orgInvcNo' => 0,
'custTin' => 'A123456789Z',
'custNm' => 'Taxpayer1112',
'salesTyCd' => 'N',
'rcptTyCd' => 'S',
'pmtTyCd' => '01',
'salesSttsCd' => '02',
'cfmDt' => '20200127210300',
'salesDt' => '20200127',
'totItemCnt' => 2,
'taxblAmtA' => 0,
'taxblAmtB' => 10500,
'taxAmtB' => 1602,
'totTaxblAmt' => 10500,
'totTaxAmt' => 1602,
'totAmt' => 10500,
'prchrAcptcYn' => 'N',
'regrId' => 'Test',
'regrNm' => 'Test',
'modrId' => 'Test',
'modrNm' => 'Test',
'receipt' => [
'custTin' => 'A123456789Z',
'rcptPbctDt' => '20201118120300',
'prchrAcptcYn' => 'N'
],
'itemList' => [
[
'itemSeq' => 1,
'itemCd' => 'KE1NTXU0000001',
'itemClsCd' => '5059690800',
'itemNm' => 'test item 1',
'pkgUnitCd' => 'NT',
'pkg' => 2,
'qtyUnitCd' => 'U',
'qty' => 2,
'prc' => 3500,
'splyAmt' => 7000,
'taxTyCd' => 'B',
'taxblAmt' => 7000,
'taxAmt' => 1068,
'totAmt' => 7000
]
]
];

$response = $etims->saveSalesTransaction($requestData);

Best Practices

  • Ensure customer PIN, branch, and invoice numbers are valid
  • Validate tax and discount calculations before saving
  • Handle non-000 result codes gracefully
  • Confirm receipt and control unit references are stored for audit

Next Steps