API reference
SoftSDC REST API reference for POS developers. Base URL, headers, PIN, invoice, status and environment endpoints, value lists and status codes.
The SoftSDC API lets your POS send receipts for fiscalization and check the system status. It uses REST with JSON over HTTP.
New to the API? Start with the integration guide. To learn what SoftSDC does with each receipt after it signs it, read how it works.
Base URL
http://localhost:8431/api/v3The default port is 8431. You can change it in the app settings.
Headers
Required:
Accept: application/json
Content-Type: application/jsonOptional:
| Header | Purpose |
|---|---|
RequestId | Your ID for tracking the request, up to 32 characters |
Accept-Language | Preferred languages, for example en-US;sr-Cyrl-RS. See supportedLanguages in the status response. |
Authentication
The API uses the smart card PIN. Verify the PIN with POST /api/v3/pin before you send invoices.
Endpoints
| Method | Path | Purpose |
|---|---|---|
POST | /api/v3/pin | Verify the smart card PIN |
POST | /api/v3/invoices | Send a receipt for fiscalization |
GET | /api/v3/status | Get the operational status |
GET | /api/v3/environment-parameters | Get the environment configuration |
GET | /api/v3/attention | Check that the service is running |
Verify PIN
POST /api/v3/pin unlocks the smart card so SoftSDC can sign invoices.
As JSON:
POST /api/v3/pin
Accept: application/json
Content-Type: application/json
{
"pin": "1234"
}Or as plain text:
POST /api/v3/pin
Content-Type: text/plain
1234Create invoice
POST /api/v3/invoices sends a receipt for fiscalization.
POST /api/v3/invoices
{
"dateAndTimeOfIssue": "2024-01-15T10:30:00.000Z",
"cashier": "123456789",
"buyerId": "RS34564565",
"buyerCostCenterId": "567546",
"invoiceType": "Normal",
"transactionType": "Sale",
"payment": [
{
"amount": 68.46,
"paymentType": "Cash"
}
],
"invoiceNumber": "POS2024/001",
"referentDocumentNumber": "",
"options": {
"omitQRCodeGen": "0",
"omitTextualRepresentation": "0"
},
"items": [
{
"name": "Product Name",
"quantity": 2,
"unitPrice": 34.23,
"labels": ["A"],
"totalAmount": 68.46
}
]
}Get status
GET /api/v3/status returns the current state of SoftSDC, including tax rates and status codes.
GET /api/v3/status
Accept: application/jsonGet environment parameters
GET /api/v3/environment-parameters returns the environment configuration.
{
"organizationName": "Tax Authority",
"serverTimeZone": "Europe/Belgrade",
"street": "Main Street 1",
"city": "Belgrade",
"country": "RS",
"endpoints": {
"taxpayerAdminPortal": "https://portal.taxcore.com/",
"taxCoreApi": "https://api.taxcore.com/",
"vsdc": "https://vsdc.taxcore.com/",
"root": "https://verify.taxcore.com/"
},
"environmentName": "PRODUCTION",
"ntpServer": "http://time.nist.gov/",
"supportedLanguages": ["en-US", "sr-Latn-RS"]
}Health check
GET /api/v3/attention returns 200 OK when the service is running.
Test invoice
POST /api/v3/test-invoice creates a test invoice, if this endpoint is enabled.
Value lists
Invoice types
| Value | Meaning |
|---|---|
Normal | Standard fiscal invoice |
Copy | Copy of an existing invoice |
Training | Training mode, not fiscal |
Proforma | Proforma invoice |
Advance | Advance payment invoice |
Transaction types
| Value | Meaning |
|---|---|
Sale | Normal sale |
Refund | Return or refund |
Payment types
| Value | Meaning |
|---|---|
Cash | Cash |
Card | Credit or debit card |
Check | Check |
WireTransfer | Bank transfer |
Voucher | Voucher or coupon |
MobileMoney | Mobile payment |
Other | Other payment methods |
Tax labels
Each item carries one or more tax labels that set its tax category. The valid labels and rates come from currentTaxRates in the status response. Common labels:
| Label | Typical use |
|---|---|
A | Standard VAT rate |
B | Reduced VAT rate |
C | VAT exempt |
D | Special tax category |
E | Service tax |
N | No tax |
Use only labels that match the configured tax rates. Any other label returns error 2310.
Responses and errors
HTTP status codes
| Code | Meaning |
|---|---|
200 OK | Success |
201 Created | Invoice created |
400 Bad Request | Invalid request data |
401 Unauthorized | PIN required |
500 Internal Server Error | Server error |
SoftSDC status codes
Responses also carry 4-digit status codes in gsc (general) and mssc (manufacturer-specific). The glossary explains these and other terms.
{
"gsc": ["2100"],
"mssc": [],
"messages": "PIN verification failed. 3 attempts remaining."
}| Code | Type | Description |
|---|---|---|
0000 | Info | All OK |
0100 | Info | PIN verified |
1300 | Warning | Smart card not present |
1400 | Warning | Audit required |
1500 | Warning | PIN required |
2100 | Error | Incorrect PIN |
2110 | Error | Card locked |
2210 | Error | SE locked |
2310 | Error | Invalid tax labels |
2400 | Error | Not configured |
2800 | Error | Required field missing |
The full list is in error codes. For fixes to common invoice errors, see troubleshooting.
Exiting and uninstalling
Close SoftSDC safely, stop the background service, uninstall on Windows or Android, remove leftover data and reinstall without losing data.
Integration guide
Connect your POS to SoftSDC. Learn the request flow, see client code in JavaScript, Python, C# and Java, and follow best practices for going live.