Determine if instance has Multi-Currency Enabled

Boolean multiCurrencyEnabled = Schema.getGlobalDescribe().containsKey('CurrencyType');

If this check is true, it's safe to use CurrencyIsoCode fields and the CurrencyType object. I'd recommend using a static variable so it can be initialized just once per transaction.


Thanks to sfdcfox for his answer in APEX. I was able to convert this into C# and here's what I got:

var currencyType = sForce.describeGlobal().sobjects.Where(x => x.name == "CurrencyType").FirstOrDefault();

It returs null if the org doesnt have multicurrency enabled and an initialized CurrencyType sObject if the org does.