I can create a person account using the REST API, but I can't seem to find any documentation on how to create a business account. I imaging that the post items you send need to include something extra that identifies this new account as a business account, but WHAT is it?

I am using PHP cURL to accomplish this.

    $content = json_encode( array(
        "LASTNAME"                  => $dealer->last_name,
        "FIRSTNAME"                 => $dealer->first_name,
        "PERSONMAILINGSTREET"       => $dealer->address . ' ' . $dealer->address2,
        "PERSONMAILINGCITY"         => $dealer->city,
        "PERSONMAILINGSTATE"        => $dealer->state,
        "PERSONMAILINGPOSTALCODE"   => $dealer->zip,
        "PERSONMAILINGCOUNTRY"      => 'US',
        "PERSONEMAIL"               => $dealer->email,
        "SPEQ_Dealer__c"            => 'Yes',
    ) );

    $curl = curl_init( $url );
    curl_setopt( $curl, CURLOPT_HEADER, false );
    curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true );
    curl_setopt( $curl, CURLOPT_HTTPHEADER,
            array("Authorization: OAuth $access_token",
                "Content-type: application/json" ) );
    curl_setopt( $curl, CURLOPT_POST, true );
    curl_setopt( $curl, CURLOPT_POSTFIELDS, $content );

This code works, but what am I missing? I can't find a list of database table fields to work with either, so any help on that front would be great too!


You're going to use the same endpoint. PersonAccounts are a weird Mashup of an entry in the Account table and an Entry in the Contact table. Linked by a foreign key Account.ContactId

That said you'll not want to send First/Last Name or PersonAddress, etc

Use: Name, and then ShippingStreet (etc), and/or BillingStreet (etc)

You will likely have to specify a value for RecordTypeId as well. You can find this under the setup menu>accounts>recordtypes (in the URL)

Here are your fields:

  • Thank you for the fields. I have been searching for a while. I will give this a shot and let you know! Aug 9 '17 at 18:49
  • failed with status 400, response [{"message":"Unable to create/update fields: Name. Please check the security settings of this field and verify that it is read/write for your profile or permission set.","errorCode":"INVALID_FIELD_FOR_INSERT_UPDATE","fields":["Name"]}], curl_error , curl_errno 0 Aug 9 '17 at 18:55
  • No go on that "Name" I guess I need more permissions for this to work properly? Aug 9 '17 at 18:56
  • Possible under Setup>manage users>profiles you should find the user you're using and check the field level security of the name field. Another possibility is that you're still trying to create a PersonAccount and you can't write to the Name (must use first/last) are you sending a recordtypeid? that is what controls business vs person
    – wellmstein
    Aug 9 '17 at 19:08
  • yes I am sending the RecordTypeId and it is in line with all the other business accounts. I will double check to see if there is a permissions issue in the dashboard for my user. Aug 9 '17 at 19:10

Ok so this is what ended up being the issue:

1. I wasn't using the correct RecordTypeId.

2. I needed to create a Contact that could reference the Business Account we had created.

3. After creating the Customer Account, I had to create AccountContactRole information linking the two together.

4. Once that connection was made I could update the Business Account and post the customer's ContactId field into their custom configuered field Point of Contact.

I dont think this is normal, but what @wellmstein said worked perfectly. Thanks for the help.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.