Format Profile

Format profiles enable you to configure settings necessary for manual or automatic import of financial institution data. Depending on your format profile type, you can do the following:

You can only associate a format profile with one financial institution record. If you delete a financial institution record, NetSuite deletes the associated format profile as well. You cannot delete a format profile that has associated imports.

For help working with this record in the UI, see Creating Format Profiles for Bank Reconciliation.

The internal ID for this record is formatprofile.

This record is available in NetSuite and NetSuite OneWorld accounts.

The script user must have the Financial Institution Records permission with full permissions. In addition, if configuring a format profile for expense reporting, the script user must have the Expense Reporting feature enabled.

In the UI, you create a format profile record on the Format Profile page, which you get to by going to Setup > Accounting > Financial Institution and clicking Add.

See the SuiteScript Records Browser for all internal IDs associated with this record.

Note:

For information about using the SuiteScript Records Browser, see Working with the SuiteScript Records Browser in the NetSuite Help Center.

For information about scripting with this record in SuiteScript, see the following help topics:

The format profile record has three sublists.

The Account Linking and Code Type Mapping sublists are available in a format profile record with a Bank Reconciliation profile type. The Expense Code Mapping sublist is available in a format profile record with a Corporate Card Expenses profile type.

In the UI, the format profile also contains a Connectivity Configuration and Parser Configuration subtab.

Note:

The availability of the Parser Configuration subtab depends on the parser plug-in implementation. The selected plug-in must be one of the following:

  • An fiparserplugin object that implements the getConfigurationPageUrl method

  • A bankstatementparserplugin object

Additionally, if the format profile has a Corporate Card Expenses profile type, the Import Configuration subtab appears (which replaces the Account Linking subtab).

The Connectivity Configuration, Parser Configuration, and Import Configuration subtabs are not attached to the format profile record and thus cannot be accessed through SuiteScript.

For details about working in the Connectivity Configuration subtab in a Bank Reconciliation format profile, see the following:

For details about working in the Connectivity Configuration subtab in a Corporate Card Expenses format profile, see American Express Integration for Expense Reporting.

For details about working in the Parser Configuration subtab, see Configuring Standard Bank Transaction Parsers.

For details about working in the Import Configuration subtab, see Linking Employee Accounts.

Note:

Although the Import Configuration subtab is a UI-only form, it contains three fields that are attached to the format profile record. The field names and corresponding SuiteScript IDs are:

  • Match Employee By (matchemployeeby)

  • Expense Type (expensetype)

  • Expense Source (expensesourcetype)

Account Linking

The Account Linking sublist enables you to link financial institution accounts to corresponding accounts in NetSuite.

For help working in this sublist in the UI, see Bank Account Linking.

The internal ID for this sublist is accountmapping.

This sublist is available in a format profile with a Bank Reconciliation profile type, in NetSuite and NetSuite OneWorld accounts.

In the UI, you create a new line in the Account Linking sublist on the Format Profile page by clicking Add in the Account Linking subtab.

Transaction Code Mapping

The Code Type Mapping sublist enables you to map custom bank transaction codes to corresponding bank data types in NetSuite.

For help working in this sublist in the UI, see Mapping Custom Bank Codes.

The internal ID for this sublist is trancodemapping.

This sublist is available in a format profile with a Bank Reconciliation profile type, in NetSuite and NetSuite OneWorld accounts.

In the UI, you create a new line in the Code Type Mapping sublist on the Format Profile page by clicking Add in the Code Type Mapping subtab.

Expense Code Mapping

The Expense Code Mapping sublist enables you to map custom expense codes to corresponding user-defined expense categories in NetSuite.

For help working in this sublist in the UI, see Mapping Custom Expense Codes.

The internal ID for this sublist is expensecodemapping.

This sublist is available in a format profile with a Corporate Card Expenses profile type, in NetSuite and NetSuite OneWorld accounts.

In the UI, you create a new line in the Expense Code Mapping sublist on the Format Profile page by clicking Add in the Expense Code Mapping subtab.

Supported Script Types

The format profile record and its sublists are scriptable in both server and client SuiteScript.

Supported Functions

The format profile record and its sublists are partially scriptable — they can be read, created, updated, and deleted. They cannot be copied, transformed, or searched.

Usage Notes

In the UI, the Financial Institution field is autopopulated on the Format Profile page and cannot be changed. In SuiteScript, users can change this field.

Note:

Instead of deploying a script, you can use a SuiteApp to automatically create a financial institution record and associated format profiles. You can use a NetSuite–owned SuiteApp, such as the Bank Feeds SuiteApp and the AMEX Corporate Card Integration SuiteApp. See Bank Feeds SuiteApp and American Express Integration for Expense Reporting.

Alternatively, if these SuiteApps do not meet your needs, you can build and deploy your own SuiteApps. To create SuiteApps from an integrated development environment (IDE) on your local computer, see SuiteCloud Development Framework.

You can also build SuiteApps using SuiteBundler, although this feature is no longer updated with new features. See SuiteBundler Overview.

For details about why to deploy your own script versus use a SuiteApp, see Capabilities of Using a Financial Institution Connectivity Plug-in.

Code Samples

The following sample shows how to create and load a format profile record with a Bank Reconciliation profile type.

          // Create a format profile record
var newFPRecord = record.create({
    type: record.Type.FORMAT_PROFILE,
    isDynamic: true
});
newFPRecord.setValue({
    fieldId: 'formatprofile',
    value: 'XYZ'
});
newFPRecord.setValue({
    fieldId: 'financialinstitution',
    value: 2
});
newFPRecord.setValue({
    fieldId: 'transactionparser',
    value: 201
});
newFPRecord.setValue({
    fieldId: 'description',
    value: 'Description for XYZ Format Profile'
});
newFPRecord.setValue({
    fieldId: 'profiletype', 
    value: 'bankrec'
});
newFPRecord.setValue({
    fieldId: 'connectivitymethod',
    value: 202 
}); 
newFPRecord.selectNewLine({
    sublistId: 'accountmapping'
});
 
newFPRecord.setCurrentSublistValue({
    sublistId: "accountmapping",
    fieldId: "accountmappingkey",
    value: 123
});
newFPRecord.setCurrentSublistValue({
    sublistId: 'accountmapping',
    fieldId: 'mappednetsuiteaccount',
    value: 1
});
newFPRecord.commitLine({
    sublistId: 'accountmapping'
});
var fpID = newFPRecord.save();
 
// Load a format profile record
var createdFPRecord = record.load({
    type: record.Type.FORMAT_PROFILE,
    id: fpID,
    isDynamic: true
});
 
// Get line value
createdFPRecord.selectLine({
    sublistId: 'accountmapping',
    line: 0
});
console.log(createdFPRecord.getCurrentSublistValue({
    sublistId: 'accountmapping',
    fieldId : 'accountmappingkey'
}));
createdFPRecord.selectNewLine({
    sublistId: 'trancodemapping'
});
 
createdFPRecord.setCurrentSublistValue({
    sublistId: 'trancodemapping',
    fieldId: 'banktransactioncode',
    value: '999'
});
createdFPRecord.setCurrentSublistValue({
    sublistId: 'trancodemapping',
    fieldId: 'creditdebit',
    value: 'CREDIT'
});
createdFPRecord.setCurrentSublistValue({
    sublistId: 'trancodemapping',
    fieldId: 'netsuitetransactiontype',
    value: 'OTHER'
});
createdFPRecord.commitLine({
    sublistId: 'trancodemapping'
});
createdFPRecord.save();
 
var deletedRecord = record.delete({
    type: record.Type.FORMAT_PROFILE,
    id: fpID
}); 

        

The following sample shows how to create and load a format profile record with a Corporate Card Expenses profile type.

          // Create new Format Profile
    const newFPRecord = record.create({     
    type: record.Type.FORMAT_PROFILE,
     isDynamic: true 
});          
    newFPRecord.setValue({
     fieldId: 'formatprofile',
     value: 'My format profile name'
});     
    newFPRecord.setValue({
     fieldId: 'financialinstitution',
      value: 1
});
      newFPRecord.setValue({
     fieldId: 'description',
      value: 'My format profile description' 
});
     newFPRecord.setValue({
     fieldId: 'transactionparser',
     value: 2
}); // example parser plugin ID, replace with real one    

    newFPRecord.setValue({
     fieldId: 'connectivitymethod',
     value: 1 
}); // example connectivity plugin ID, replace with real one 
  
    newFPRecord.setValue({
     fildId: 'profiletype',
      value: 'expense'
}); // accepts values 'bankrec' or 'expense'     

    newFPRecord.setValue({
     fieldId: 'matchemployeeby',
      value: 'cardHolderName'
}); // accepts values 'cardHolderName' or 'employeeId'      

    newFPRecord.setValue({
     fieldId: 'expensetype',
      value: 'corporateCard'
}); // accepts values 'corporateCard' or 'reimbursable'    

    newFPRecord.selectNewLine({
         sublistId:'expensecodemapping'     
});     
    newFPRecord.setCurrentSublistValue({
          sublistId: 'expensecodemapping',
          fieldId: 'expensecode',
          value: '999'
});    
    newFPRecord.setCurrentSublistValue({
          sublistId: 'expensecodemapping',
          fieldId: 'description',
          value: 'Expense'     
});    
    newFPRecord.setCurrentSublistValue({
          sublistId: 'expensecodemapping',
          fieldId: 'expensecategory',
          value: '2'
});    
    newFPRecord.commitLine({
          sublistId: 'expensecodemapping'
});          
    varformatProfileID = newFPRecord.save();

// Load record for editing    
    const createdFPRecord = record.load({
          type: record.Type.FORMAT_PROFILE,
          id: FP_ID,
          isDynamic: true     
});          
    createdFPRecord.selectLine({
          sublistId: 'expensecodemapping',
          line: 0
});          
    const expenseCodeValue = createdFPRecord.setCurrentSublistValue({
          sublistId: 'expensecodemapping',
          fieldId: 'expensecode',
          value: 'Expense edited'
});         
    createdFPRecord.commitLine({
          sublistId: 'expensecodemapping'
});          
    createdFPRecord.save();

// Load record for viewing    

    createdFPRecord = record.load({
          type: record.Type.FORMAT_PROFILE,
          id: FP_ID,
});          
    const expenseCodeValue = createdFPRecord.getSublistValue({
          sublistId: 'expensecodemapping',
          fieldId: 'expensecode',
          line: 0     
});     
    console.log(expenseCodeValue); 

        

Related Topics

General Notices