Skip to content

Austria Quickstart

This quickstart walks you through the essential steps to sign your first RKSV-compliant receipt with fiskaly SIGN AT.

  • A fiskaly account with an Austrian organization (sign up at HUB)
  • An API Key and Secret generated in the TEST environment
  • FinanzOnline “Cash Register Webservice User” credentials from your taxpayer
  1. Authenticate

    curl -X POST https://rksv.fiskaly.com/api/v1/auth \
      -H "Content-Type: application/json" \
      -d '{
        "api_key": "YOUR_API_KEY",
        "api_secret": "YOUR_API_SECRET"
      }'
  2. Authenticate with FinanzOnline

    Before creating resources, authenticate the taxpayer’s FinanzOnline credentials:

    curl -X POST https://rksv.fiskaly.com/api/v1/fon/auth \
      -H "Authorization: Bearer ${ACCESS_TOKEN}" \
      -H "Content-Type: application/json" \
      -d '{
        "fon_participant_id": "YOUR_FON_PARTICIPANT_ID",
        "fon_user_id": "YOUR_FON_USER_ID",
        "fon_user_pin": "YOUR_FON_USER_PIN"
      }'
  3. Create and initialize an SCU

    SCU_ID=$(uuidgen)
    
    # Create SCU
    curl -X PUT "https://rksv.fiskaly.com/api/v1/signature-creation-unit/${SCU_ID}" \
      -H "Authorization: Bearer ${ACCESS_TOKEN}" \
      -H "Content-Type: application/json" \
      -d '{"legal_entity_id": {"vat_id": "ATU12345678"}}'
    
    # Initialize SCU (registers with FinanzOnline)
    curl -X PATCH "https://rksv.fiskaly.com/api/v1/signature-creation-unit/${SCU_ID}" \
      -H "Authorization: Bearer ${ACCESS_TOKEN}" \
      -H "Content-Type: application/json" \
      -d '{"state": "INITIALIZED"}'

    Initializing the SCU automatically registers it with FinanzOnline.

  4. Create and initialize a Cash Register

    CR_ID=$(uuidgen)
    
    # Create Cash Register
    curl -X PUT "https://rksv.fiskaly.com/api/v1/cash-register/${CR_ID}" \
      -H "Authorization: Bearer ${ACCESS_TOKEN}" \
      -H "Content-Type: application/json" \
      -d '{"description": "POS Terminal 1"}'
    
    # Register with FinanzOnline
    curl -X PATCH "https://rksv.fiskaly.com/api/v1/cash-register/${CR_ID}" \
      -H "Authorization: Bearer ${ACCESS_TOKEN}" \
      -H "Content-Type: application/json" \
      -d '{"state": "REGISTERED"}'
    
    # Initialize (creates and validates the initial receipt)
    curl -X PATCH "https://rksv.fiskaly.com/api/v1/cash-register/${CR_ID}" \
      -H "Authorization: Bearer ${ACCESS_TOKEN}" \
      -H "Content-Type: application/json" \
      -d '{"state": "INITIALIZED"}'
  5. Sign your first receipt

    RECEIPT_ID=$(uuidgen)
    
    curl -X PUT "https://rksv.fiskaly.com/api/v1/cash-register/${CR_ID}/receipt/${RECEIPT_ID}" \
      -H "Authorization: Bearer ${ACCESS_TOKEN}" \
      -H "Content-Type: application/json" \
      -d '{
        "receipt_type": "NORMAL",
        "schema": {
          "standard_v1": {
            "receipt": {
              "amounts_per_vat_rate": [
                {"vat_rate": "STANDARD", "amount": "12.00"}
              ],
              "amounts_per_payment_type": [
                {"payment_type": "CASH", "amount": "12.00"}
              ]
            }
          }
        }
      }'

    The response contains everything needed for an RKSV-compliant receipt: qr_code_data (data for the mandatory RKSV QR code), receipt_number, time_signature, and cash_register_serial_number (required text fields).

Want to run through all the steps automatically? Download and run our quickstart script:

# Download and run
curl -O https://workspace.fiskaly.com/scripts/sign-at-quickstart.sh
export API_KEY="your_api_key"
export API_SECRET="your_api_secret"
export FON_PARTICIPANT_ID="your_fon_participant_id"
export FON_USER_ID="your_fon_user_id"
export FON_USER_PIN="your_fon_user_pin"
export VAT_ID="ATU12345678"
bash sign-at-quickstart.sh

Was this page helpful?