This API has been deprecated.

Partners and customers using a deprecated API should contact SAP Concur and discuss moving to the latest versions.

Learn more in the API Lifecycle & Deprecation Policy.

Creates or updates one or more attendee records for the specified expense entry. Attendees are additional people that benefitted from this expense.

Attendee External ID Considerations

Attendees can be uniquely identified outside of Concur by their External ID. This value can originate from the attendee system of record, or can be generated by Concur, depending on configuration. In order to manage (add or update) attendees using Concur web services, the attendee must have an External ID value.

Attendees that are shared in Concur (owned by the System) usually have External ID values, which are established when the attendee was added to the system. Developers that work with these attendees should use the required query parameters in the request URI, and should not include the optional AttendeeID query parameter. The External ID value in the request will identify the attendee. These requests must include the SystemOwner element, set to Yes, to indicate that the attendee is part of a shared list.

Attendees that are privately owned or part of shared lists that allow manual addition (not recommended) may not have an External ID, so they cannot initially be uniquely identified by that value. Developers that need to update private attendees (owned by the report owner) or shared attendees that do not have External IDs should use the optional AttendeeID query parameter to identify the attendee. These developers must provide an External ID value, which they can use to identify the attendee in future requests. For private attendees, this request should include the SystemOwner element, set to No, to indicate that the attendees are private. For shared attendees, this request should include the SystemOwner element, set to Yes.

NOTES:

  • Posting expense report information is a multi-stage process. Refer to the Expense Reports v3 documentation for the steps required to post new expense reports and entries.

Supported Content Types

  • application/xml

Post attendees to an expense report entry

Request

Headers

  • RFC 7235 Authorization - Authorization header with OAuth token for valid Concur user. The OAuth Consumer must have one of the following roles to post attendees for expenses in reports that they do not own:
    • Web Services Admin for Professional
    • Can Administer for Standard

Parameters

Parameter Description
reportId Required The unique identifier for the expense report
entryId/Attendees Required The unique identifier for the expense entry and the Attendees keyword
attendeeId The unique identifier for the attendee. Only used in certain situations when updating an existing attendee. If the developer does not know the External ID for the Attendee, they should use this query parameter
  • The reportId value is returned by the Get List of Reports function, and as part of the Report-Details-Url element of the Expense Report Header v1.1 function. The entryId value is returned in the ReportKey element of the Get Report Details function.
  • The attendeeId value is returned in the AttendeeKey element of the Get Report Details function, and as part of the Attendee-Details-Url value returned by this function.
URI Template
https://www.concursolutions.com/api/expense/expensereport/v1.1/report/{reportId}/entry/{entryId}/Attendees
https://www.concursolutions.com/api/expense/expensereport/v1.1/report/{reportId}/entry/{entryId}/Attendees/{attendeeId}

Payload

This request contains an Attendees parent element with an Attendee element for each included attendee. The update action only allows one attendee per request. The Attendee element contains the following child elements:

Element Name Required (must contain value)? Description
AttendeeType Y The attendee type code that Concur uses to identify attendees. 8 alpha characters. Clients can add their own custom attendee type codes. The standard attendee type codes are: BUSGUEST, for business guests and SPOUSE, for the employee’s spouse. Use the Attendee Types v1 function of the Attendee List web service to get the full list of available types. Maximum 8 characters.
Amount N The amount of the expense that is associated with this attendee. If the attendee amounts do not add up to the full expense entry amount, the user will have to correct the entry in the Concur UI before submitting the report.
LastName Y The attendee’s last name. Maximum 132 characters.
FirstName Depends on configuration The attendee’s first name. Maximum 50 characters.
Title Depends on configuration The attendee’s job title. Maximum 32 characters.
ExternalId Y The unique identifier for the attendee, usually provided by the client’s external system of record. Maximum 48 characters.
Company Depends on configuration The attendee’s company name. Maximum 150 characters.
Custom1 through Custom20 Depends on configuration The custom fields on the Expense Attendee form. May be required depending on configuration.
CrnCode Y The 3-letter ISO 4217 currency code for the expense transaction amount. Example: USD. Maximum 3 characters.
SystemOwner N For new attendees: When set to Yes, the attendee owner is set to System. This owner is required for shared attendee lists. When not set to Yes, the attendee owner is set to the report owner.

For existing attendees: Must be set to Yes to update an existing system-owned attendee. The attendee owner for non-system-owned attendees will be set to System. When set to No, the attendee owner is compared to the report owner. If the report owner and attendee owner match, the attendee is updated. If the report owner and attendee owner do not match, the attendee is not updated.
AssociatedAttendeesCount N The number of attendees that are not named but are associated with this attendee. This number is included in the total count of attendees for the expense.
UpdateExisting N Whether the request should update an attendee with a matching External ID. If set to false, the request will NOT update a matching attendee. If not provided, or set to true, the request will update a matching attendee. Format: true/false

Response

Status Codes

See HTTP Status Codes

Payload

This request will return an attendee-batch-result parent element with the following child elements:

Element Name Description
records-succeeded The number of attendee records that were successfully added/updated.
records-failed The number of attendee records that failed.
AttendeeInfoList This parent element contains an AttendeeStatus element for each successful attendee record. The AttendeeStatus element contains the following child elements:
Index The record number of the attendee record.
Status The status of the request.
Attendee-Details-Url The URL to access the details for this attendee.
errors This parent element contains an error element for each failed attendee record. The errors parent element contains one or more error child elements.

Error

Element Name Description
Index The record number of the attendee record.
message The error message.

Examples

Request

POST https://www.concursolutions.com/api/expense/expensereport/v1.1/report/nxxKgLlnROz3zHJBCRksaas23dsfs/entry/n7We3qWw99u1KoWTMaLhSC$pXBYzQ1UDhn/Attendees
Authorization: OAuth {token}
<Attendees xmlns="http://www.concursolutions.com/api/expense/expensereport/2011/03">
  <Attendee>
    <AttendeeType>BUSGUEST</AttendeeType>
    <LastName>Davis</LastName>
    <FirstName>Pat</FirstName>
    <Title>CFO</Title>
    <ExternalId>224234</ExternalId>
    <Company>Len Dev</Company>
    <Custom1>N</Custom1>
    <Custom2>Meeting</Custom2>
    <CrnCode>USD</CrnCode>
  </Attendee>
  <Attendee>
    <AttendeeType>BUSGUEST</AttendeeType>
    <LastName>Fletcher</LastName>
    <FirstName>Erin</FirstName>
    <Title>Accounting Manager</Title>
    <ExternalId>344534</ExternalId>
    <Company>Len Dev</Company>
    <Custom1>N</Custom1>
    <Custom2>Meeting</Custom2>
    <CrnCode>USD</CrnCode>
    <AssociatedAttendeesCount>5</AssociatedAttendeesCount>
  </Attendee>
</Attendees>

Request: Create an Attendee Owned by the System

This allows you to create attendees for Attendee Types that are configured as Shared Lists (centrally managed).

POST https://www.concursolutions.com/api/expense/expensereport/v1.1/report/nxxKgLlnROz3zHJBCRksaas23dsfs/entry/n7We3qWw99u1KoWTMaLhSC$pXBYzQ1UDhn/Attendees
Authorization: OAuth {token}
<Attendees xmlns="http://www.concursolutions.com/api/expense/expensereport/2011/03">
  <Attendee>
    <AttendeeType>BUSGUEST</AttendeeType>
    <LastName>Gato</LastName>
    <FirstName>Bailey</FirstName>
    <Title>Finance Manager</Title>
    <ExternalId>998238</ExternalId>
    <Company>Len Dev</Company>
    <Custom1>N</Custom1>
    <Custom2>Meeting</Custom2>
    <CrnCode>USD</CrnCode>
    <SystemOwner>Yes</SystemOwner>
  </Attendee>
</Attendees>

Response

HTTP/1.1 200 OK
Content-Type: application/xml
<attendee-batch-result xmlns="http://www.concursolutions.com/api/expense/expensereport/2011/03" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
  <records-succeeded>2</records-succeeded>
  <records-failed>0</records-failed>
  <AttendeeInfoList>
    <AttendeeStatus>
      <Index>1</Index>
      <Status>Success</Status>
      <Attendee-Details-Url>https://www.concursolutions.com/api/expense/expensereport/v1.1/report/nxxKgLlnROzjLoLX67fYGzI$pMGj4dZdfU/entry/nE0avYnILMdxd6MTj0$sM6iloOYz0Mzl$pX/Attendees/nFaAj038Hxv6eoOU9SvVwhK0Rj5Kc7Twl</Attendee-Details-Url>
    </AttendeeStatus>
    <AttendeeStatus>
      <Index>2</Index>
      <Status>Success</Status>
      <Attendee-Details-Url>https://www.concursolutions.com/api/expense/expensereport/v1.1/report/nxxKgLlnROzjLoLX67fYGzI$pMGj4dZdfU/entry/nE0avYnILMdxd6MTj0$sM6iloOYz0Mzl$pX/Attendees/nFaAj038Hxv3gxNiO5ei3$peY761ggLnBh</Attendee-Details-Url>
    </AttendeeStatus>
  </AttendeeInfoList>
</attendee-batch-result>

Response: Error present

HTTP/1.1 200 OK
Content-Type: application/xml
<attendee-batch-result xmlns="http://www.concursolutions.com/api/expense/expensereport/2011/03" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
  <records-succeeded>1</records-succeeded>
  <records-failed>1</records-failed>
  <errors>
    <error>
      <Index>1</Index>
      <message>AttendeeType Does not Exist: BUSGUEST1</message>
    </error>
  </errors>
  <AttendeeInfoList>
    <AttendeeStatus>
      <Index>2</Index>
      <Status>Success</Status>
      <Attendee-Details-Url>https://www.concursolutions.com/api/expense/expensereport/v1.1/report/nxxKgLlnROzjLoLX67fYGzI$pMGj4dZdfU/entry/nE0avYnILMdxd6MTj0$sM6iloOYz0Mzl$pX/Attendees/nFaAj038HwYk7lweHaEerudeUKgVs8ATS</Attendee-Details-Url>
    </AttendeeStatus>
  </AttendeeInfoList>
</attendee-batch-result>