Skip to main content

Understand and manage transaction imports

In this article, we will cover how to import transaction records into the CRM using the transaction import tool.

M
Written by Michelle Normoyle
Updated over 3 weeks ago

Transaction import is used to load historical or external folio transaction data into the CRM, such as spend details for loyalty earning, transaction records from non-integrated POS systems, correction and adjustment transactions, and legacy revenue activity during implementations or migrations.


Understand transaction imports

Transaction import creates transaction entries in the CRM that can be used for loyalty earning rules, revenue-based segmentation, guest activity reporting, and historical revenue consumption analysis.

When to use transaction import

  • During initial onboarding or migration from a legacy system to load historical transaction data.

  • When you have an unconnected POS system and perform manual imports at regular intervals.

  • To import legacy revenue activity that predates your current POS integration.

  • To load correction or adjustment transactions from external systems.

When not to use transaction import

Do not perform transaction imports if your POS (Point of Sale) is connected to the CRM. If you have an active POS integration with SHR CRM, transaction data flows automatically from your POS. Manual transaction imports while an active POS connection exists can create duplicate records and data inconsistencies.

What transaction import does

  • Creates stand-alone transaction entries that can be used by the CRM for financial and loyalty calculations.

  • Triggers loyalty earning rules based on revenue if configured.

  • Provides revenue data for segmentation and reporting.

  • Maintains historical guest spending records.

What transaction import does not do:

  • Does not modify guest profile demographic information.

  • Does not modify reservation records.

  • Does not directly modify loyalty point balances (points are calculated based on earning rules).

  • Does not modify reward balances.

  • Cannot be undone through bulk import.

  • Does not overwrite existing transactions.

Transaction Import relies heavily on correct merchant code and transaction code mapping. The system creates a new transaction entry per CSV row and assigns it to the guest profile using the provided loyalty member ID or guest email address.

Key characteristics

Outlined below are key characteristics of transaction import.

  • Requires profile identification (Loyalty Member ID or Email).

  • Requires correct merchant codes that match CRM configuration.

  • Requires transaction dates.

  • Supports transaction amounts and multiple revenue categories.

  • Processes transactions row-by-row.

  • Cannot be undone via bulk import.

  • Does not overwrite existing transactions.

  • May trigger loyalty earning rules automatically if configured for revenue-based earning.

Before you start

Outlined below are important factors to know before you can perform a transaction import.

  • Confirm that all merchant codes in your file match CRM hotel configuration.

  • Verify that each row includes the correct identifier (Loyalty Member ID or Email) for the profile receiving the transaction.

  • Remove placeholder or invalid data such as TEST, NULL, or NONE.

  • Confirm all revenue amounts use numeric formatting with no currency symbols or commas.

  • Confirm your CSV contains accurate and complete historical records.

  • Perform a test import with five to ten rows before processing a full file.

  • Verify your date format matches the format you will select during import.

⚠️Important: Incorrect transaction imports may impact loyalty point earning and revenue reporting. These imports cannot be undone through bulk import.


File format requirements (CSV)

Your transaction import CSV file must contain required fields and may include optional fields. The table below lists all available fields.

General CSV rules

  • Save your file in CSV (Comma delimited) format (.csv).

  • Header row required.

  • One transaction per row.

  • No blank rows.

  • Merchant codes must match CRM hotel configuration.

  • Transaction amounts must be numeric only (no currency symbols, commas, or letters).

  • At least one identifier required (Loyalty Member ID or Email).

Required fields

The following fields are mandatory. The import will fail if any required field is blank or left unmapped.

Field

Description

Field Type

Limit / Values

Loyalty Member ID or Email

Guest's loyalty program member ID or email address (at least one required; stored in guest profile)

Alphanumeric

Loyalty Member ID: 32 characters; Email: 128 characters, valid email format

Transaction Date

Date the transaction occurred (stored in transaction record)

Date

Must match selected date format

Merchant Code

Property/hotel code where transaction occurred (stored in transaction record)

Alphanumeric

16 characters, must exist in CRM

Total Charge

Total transaction amount (stored in transaction record)

Numeric

Decimal number, no currency symbols; converted to cents (multiplied by 100)

Currency Code

ISO currency code (stored in transaction record)

Alphanumeric

Must exist in CRM currency list (e.g., USD, EUR, GBP)

Optional fields

The following fields enrich the transaction and guest records but are not required for import. Fields marked as stored in guest profile follow the character limits and validation rules defined in guest bulk import and are only written when creating new profiles.

Field

Description

Field Type

Limit / Values

Transaction ID

Unique identifier for the transaction (stored in transaction record)

Alphanumeric

32 characters

Action Code

Transaction action type (stored in transaction record)

Alphanumeric

N=New, M=Modify, C=Cancel

Merchant Name

Property/hotel name (stored in hotel record)

Alphanumeric

255 characters

URL Merchant

Property URL (stored in hotel record)

Alphanumeric

255 characters

Chain Code

Hotel chain identifier (stored in hotel record)

Alphanumeric

255 characters

Food & Beverage

Food and beverage charges (stored in transaction record)

Numeric

Decimal number, no currency symbols; converted to cents (multiplied by 100)

Tax Food & Beverage

Tax on food and beverage (stored in transaction record)

Numeric

Decimal number, no currency symbols; converted to cents (multiplied by 100)

Spa

Spa service charges (stored in transaction record)

Numeric

Decimal number, no currency symbols; converted to cents (multiplied by 100)

Tax Spa

Tax on spa services (stored in transaction record)

Numeric

Decimal number, no currency symbols; converted to cents (multiplied by 100)

Other Revenue

Other revenue charges (stored in transaction record)

Numeric

Decimal number, no currency symbols; converted to cents (multiplied by 100)

Tax Other Revenue

Tax on other revenue (stored in transaction record)

Numeric

Decimal number, no currency symbols; converted to cents (multiplied by 100)

Salutation

Guest salutation/title (stored in guest profile)

Alphanumeric

5 characters (Mr, Mrs, Ms, Dr, etc.); special characters may be removed

First Name

Guest's first name (stored in guest profile)

Alphanumeric

64 characters; accented characters allowed

Last Name

Guest's last name (stored in guest profile)

Alphanumeric

64 characters; accented characters allowed

Middle Name

Guest's middle initial or name (stored in guest profile)

Alphanumeric

1 character; accented characters allowed

Birthday

Guest's date of birth (stored in guest profile)

Date

Must match selected date format

Gender

Guest's gender (stored in guest profile)

Alphanumeric

1 character (M, F)

Address 1

Primary address line (stored in guest profile)

Alphanumeric

256 characters; some special characters removed (# allowed)

Address 2

Secondary address line (stored in guest profile)

Alphanumeric

256 characters; some special characters removed (# allowed)

City

City name (stored in guest profile)

Alphanumeric

128 characters; some special characters removed

Region/State

State or province (stored in guest profile)

Alphanumeric

128 characters; some special characters removed

Zip

Postal or ZIP code (stored in guest profile)

Alphanumeric

16 characters

Country

Country code or name (stored in guest profile)

Alphanumeric

16 characters

Phone

Primary phone number (stored in guest profile)

Alphanumeric

32 characters, can include country code with + prefix; spaces, parentheses, hyphens, periods automatically removed

Mobile

Mobile phone number (stored in guest profile)

Alphanumeric

32 characters, can include country code with + prefix; spaces, parentheses, hyphens, periods automatically removed

Company

Company name (stored in guest profile)

Alphanumeric

64 characters

Language Code

Language preference (stored in guest profile)

Alphanumeric

Must exist in CRM for example en,es,fr ; system matches by language code or ISO 639 code (2 characters)

Date format behavior

Transaction date and birthday fields are interpreted according to the date format you select during import. For example, 4/3/2027 could mean April 3 or March 4 depending on your selection. Invalid dates will result in row-level failures. Ensure your date format selection matches your CSV data consistently across all rows.


Character encoding and special characters

File encoding

Save CSV files in UTF-8 encoding for best compatibility with international characters.

Accented characters

Name fields (First Name, Last Name, Middle Name) fully support accented characters such as é, ñ, ü, ö, à, and ç. The system does not apply character filtering to name fields—they are only truncated to their maximum length.

Examples of valid names: José García, François Müller, Søren Østergård, Björk Guðmundsdóttir

Special characters in address fields

Address fields (Address 1, Address 2, City, Region/State) may have the following special characters removed during processing:

Characters Removed

@@ (double at sign)

+ (plus sign)

' (single quote/apostrophe)

-- (double hyphen)

% (percent sign)

^ (caret)

& (ampersand)

? (question mark)

( ) (parentheses)

< > (angle brackets)

[ ] (square brackets)

{ } (curly braces)

/ \ (slashes)

; (semicolon)

: (colon)

" (double quote)

📌Note: The # character is allowed in address fields and is not removed.

Phone number formatting

Phone numbers have the following characters automatically removed during processing: spaces, parentheses, hyphens, and periods.

Examples:

  • Input: +1 (212) 555-1234 → Stored as: +12125551234

  • Input: 212.555.1234 → Stored as: 2125551234

Numbers starting with + will have the country code automatically parsed and separated.

Create your CSV file

Follow the steps below to create a properly formatted CSV file for transaction import.

  1. Open Microsoft Excel or Google Sheets.

  2. In row 1, create column headers that match the field names listed in the table above (e.g., Loyalty Member ID, Transaction ID, Transaction Date, Merchant Code, Total Charge, Currency Code).

  3. Starting in row 2, enter one transaction per row.

  4. Verify that required fields (Loyalty Member ID or Email, Transaction Date, Merchant Code, Total Charge, Currency Code) are populated for every row.

  5. Verify that numeric fields contain only numbers and decimal points (no currency symbols, commas, or text).

  6. Verify that date fields follow a consistent format throughout the file.

  7. Go to File, click Save As or File and click Download in Google Sheets.

  8. Select CSV (Comma delimited) (*.csv) as the file type.

  9. Name your file descriptively for example transaction_import_2025-01-28.csv.

  10. Click Save.

Step by step guide to transaction import

Follow the steps below to import transaction records.

  1. From the left navigation menu, click Profile Management.

  2. Click Bulk Import.

  3. Click the tab labeled Transaction Import.

  4. Click the button labeled Transaction Import.

  5. Click Upload File and select your CSV file.

  6. Select a Date Format that matches your CSV's Date format

  7. Map source columns to CRM fields by dragging and dropping:

    • Required fields appear in red until mapped.

    • Auto-matched fields appear in blue.

  8. Verify each mapping is correct.

  9. Click Save and Close to start processing.

A confirmation banner appears if the file is accepted. The system processes the import asynchronously in the background.

View transaction import results

Follow the steps below to view import results.

  1. From the left navigation menu, click Profile Management.

  2. Click Bulk Import.

  3. Locate your transaction import entry in the list.

  4. Review the status:

    • Processing, Completed and Failed.

  5. Click the record to view errors or failed rows if applicable.

  6. To view imported transactions on guest profiles:

    1. Navigate to Profile Management and click Guest.

    2. Search for and open a guest profile that was included in the import.

    3. Click the Transactions tab to view transaction details.

Error file format:

If any rows fail during processing, the system generates an error CSV file with the naming pattern TransactionImportError_{ClientID}_{Timestamp}.csv. The error file contains all original columns plus an Error column describing why each row failed.


Revenue field conversion

All monetary values are converted from decimal to integer storage. For example, 150.00 becomes 15000 (cents). This ensures accurate financial calculations without floating-point errors.

Guest matching and profile creation

The system matches transactions to existing profiles using the following priority:

  • Loyalty Member ID – Provides the most reliable match if the member ID exists in the CRM.

  • Email address – Used as a fallback if no loyalty member ID is provided or if the member ID does not match an existing profile.

If no matching profile is found, the system creates a new guest profile using the demographic information provided in the CSV. Guest profile fields such as salutation, First Name, Last Name, Middle Name, Birthday, Gender, Address 1, Address 2, City, Region/State, Zip, Country, Phone, Mobile, Company, Language Code are only written when creating new profiles. Existing profiles are not updated with this information.

Loyalty earning

If your loyalty program includes revenue-based earning rules, the import may automatically trigger point calculations. Points are added based on the total charge or specific revenue categories such as Food and Beverage, Spa, other revenue depending on your earning rule configuration. The GuestPoint table records all points transactions with ActivityType set to transaction (value 14).

Completion notification

After processing completes, the system sends an email notification to the user who initiated the import with success count, error count, and a link to the error file if applicable.


Tips and best practices

Outlined below are tips and best practices for transaction import.

  • Keep transaction amounts numeric and free of formatting characters such as no $, commas, or currency symbols.

  • Confirm your date format selection matches your CSV data consistently across all rows.

  • Always validate profile identifiers, incorrect or missing identifiers will cause row failures.

  • Perform a test import with five to ten rows before processing large files to verify field mappings and data quality.

  • Review loyalty earning rules before importing large transaction files to understand point calculation impact.

  • Save CSV files in UTF-eight encoding for best compatibility with international characters.


Troubleshooting

Outlined below are common issues and their solutions for Transaction Import.

Merchant Code not found

The merchant code in your CSV does not match any hotel configuration in the CRM. Verify the merchant code exists under CRM Setup and click Hotel Group and correct the values in your CSV.

Row failures due to missing profile match

The Loyalty Member ID or Email may be incorrect, missing, or may not match an existing profile. Verify the identifier exists in CRM or ensure all required demographic fields are provided to create new profiles.

Incorrect amounts displayed

Ensure the Total Charge column and all revenue fields are purely numeric. Remove currency symbols ($, €, £), commas, and any text. Use decimal points only for example 150.00 not $150.00.

Date-related import issues

Your Date Format selection may not match your CSV data. Ensure consistent date formatting across all rows. For example, if you select mm/dd/yyyy format, all dates must follow that pattern. Invalid dates will cause individual row failures.

Currency Code invalid

The Currency Code must exist in the CRM currency list. Common codes include USD, EUR, GBP, CAD, AUD. Verify the currency code is configured under CRM Setup and click System Settings before importing.

Import fails entirely

Common causes include:

  • CSV formatting errors (file not saved as .csv).

  • Missing or malformed header row.

  • Blank rows in the CSV file.

  • Unsupported characters in text fields.

  • Missing required field mappings.

Duplicate transactions

Transaction Import does not check for duplicates. If you import the same file twice, the system creates duplicate transaction records. Always verify import results before re-uploading files.

Language Code not saved

The language code must exist in the system language table. The system first attempts to match by language code, then by ISO 639 code (2-character). Verify language codes in CRM Setup and click System Languages.

Special characters missing from address fields

Certain special characters are automatically removed from address fields during processing. The # character is allowed and preserved. See the Character encoding and special characters section for the full list of removed characters.

Accented characters not displaying correctly

Ensure your CSV file is saved with UTF-eight encoding. Accented characters are fully supported in name fields (First Name, Last Name, Middle Name).


Frequently asked questions

Outlined below are a list of frequently asked questions.

Do transaction imports impact loyalty points?

Yes, if your loyalty program has earning rules configured for revenue-based point calculation. The system automatically triggers earning rules when transactions are imported, and points are awarded based on total charge or specific revenue categories depending on your configuration.

Can transactions be deleted after import?

Not through bulk import. Imported transactions must be removed manually by an administrator with appropriate permissions. Contact SHR support if you need to remove incorrectly imported transactions.

Do transaction imports create new guest profiles?

Yes, if the Loyalty Member ID or Email in your CSV does not match an existing profile, the system creates a new guest profile using the demographic information provided in the CSV. To avoid creating duplicate profiles, ensure identifiers match existing records or use the Guest Bulk Import first to create profiles before importing transactions.

Do transaction imports update existing guest profiles?

No. Guest profile fields such as name, address, phone are only written when creating new profiles. If a matching profile exists, the transaction is assigned to that profile but the profile's demographic information is not updated.

Can negative transactions be imported?

No, the Transaction Import does not support negative transaction amounts. Use the adjustment or correction features in the CRM to handle refunds or reversals.

Where do transactions appear after import?

Imported transactions appear on the guest profile's transactions tab. Navigate to Profile Management and click Guest, search for the guest, and click the Transactions tab to view transaction details.

What is the difference between Transaction Import and Reservation Import?

Transaction Import loads folio transaction data is spend records and is used for loyalty earning based on revenue. Reservation Import loads reservation records including check-in, check-out, room details, and rate information. Use Transaction Import for non-room revenue such as Food and Beverage, spa, retail and Reservation Import for hotel stay data.

Can I import transactions while my POS is connected?

No, do not import transactions if your POS is actively integrated with the CRM. Manual imports while a POS connection exists will create duplicate records and data inconsistencies. Transaction Import is intended for historical data, unconnected POS systems, or during migration periods only.

How long does transaction processing take?

Processing time depends on the number of rows in your CSV file. Small imports under 100 rows typically complete within a few minutes. Larger imports may take 15–30 minutes or longer. You will receive an email notification when processing completes.

Can I modify imported transactions?

No, imported transactions cannot be modified through the bulk import interface. Contact SHR support if you need to correct transaction data after import.

Are accented characters supported in name fields?

Yes. Name fields (First Name, Last Name, Middle Name) fully support accented characters such as é, ñ, ü, ö, à, and ç. Save your CSV file in UTF-8 encoding for best results.

Why are some special characters missing from my imported addresses?

Address fields have certain special characters automatically removed during processing, including apostrophes, ampersands, parentheses, slashes, and colons. The # character is allowed and preserved. See the character encoding and special characters section for details.

Did this answer your question?