Overview
Eventscribe Registration offers two APIs. This article covers the XML API. The REST API is covered in the REST API documentation in Swagger.
Before you contract API access for a third-party vendor, read the Eventscribe REST API Overview for client expectations.
To push membership data instead of registration data, use the Eventscribe Registration Member API. It lets third-party systems create or update member records in Eventscribe Registration for membership validation and member pricing.
| Feature | REST API | XML API |
|---|---|---|
| Format | JSON | XML |
| Read registration data | Yes | Yes |
| Write registration data | No | Yes Create registrations and update registrant details, billing contacts, attendance, and workshops. |
| Webhooks | Yes Registration purchased, option purchased, line item cancelled, and event created. | No |
| Credentials | Account token Events are identified by activity ID in the URL. See Swagger for authentication details. | Account token and activity token |
| Documentation | Swagger REST API documentation in Swagger | This article |
Important Notes
Credentials
Every call needs an account token, which is unique to each client. Every call except getMeetingsXML also needs an activity token, which is unique to each event. Use getMeetingsXML to look up the activity token for each of your events.
Requests
- Send parameters as a query string on a GET request, or as form fields on a POST request. Both work for every call, including the calls that write data.
- Parameter names are case-sensitive.
AccountTokenworks;accounttokenreturns an error. - URL-encode every value, including spaces, slashes, colons, and
@. - Flags such as
ShowUDFsmust be1to turn on.
Dates and Times
- All times are U.S. Eastern Time.
- Send
StartTimeandEndTimeasMM/DD/YYYY HH:MM:SSin 24-hour time, URL-encoded (for example,10%2F08%2F2026%2015%3A00%3A00). A date alone covers the whole day. You can send either parameter on its own. - Responses use
M/D/YYYY h:mm AM(for example,10/8/2026 3:52 PM).
Responses
- Responses are XML encoded as UTF-8.
- Empty values come back as empty elements (for example,
<Room></Room>), not missing elements. - An unlimited capacity is returned as
268435455. getRegistrationInformationXML,getPurchasesXML, andgetPaymentsXMLreturn at most about 10,000 records per call. For large events, request smaller time windows.- Calls that write data return
<Success></Success>when they succeed.
Errors
Errors return a single <Error> element with a message. Check every response for an <Error> element rather than relying on the HTTP status code.
<Error>Registrant 1 not found</Error>Common causes are a missing required parameter, an ID that doesn’t belong to the event, or a workshop that doesn’t belong to the session you sent.
IDs Used Across the API
| ID | Identifies | Where to get it |
|---|---|---|
ActivityToken | An event | getMeetingsXML |
RegistrantID | One registrant | getRegistrationInformationXML, searchRegistrationInformationXML, change-tracking calls, submitRegistrationXML |
BillingID | The billing account (billing contact, payments) a registrant belongs to | Any registrant record, or submitRegistrationXML |
FeeItemID | A registration fee or option fee | getFeesXML |
SessionID / WorkshopID | A workshop or general session time slot, and a choice within it | getWorkshopsXML |
UDFID | A custom registration question (user-defined field) | getUDFsXML |
| Choice ID | One answer option on a dropdown or radio-button question | Your event organizer. In the Eventscribe Registration admin, open the event’s Meeting Wizard, go to the custom questions (UDF) page, and select the choice list name; the list shows a Choice ID for each option. Choice IDs aren’t available through the API. On older events, choice lists are shared across all events on the account, so the same choice ID can appear in several events. |
⚠️ Writing Data — Best Practices
- Send every value your event requires. Questions that are required on the registration form aren’t enforced through the API.
- Search before you create.
submitRegistrationXMLcreates a new registrant on every call. UsesearchRegistrationInformationXMLto check for an existing registrant first. - Send choice IDs from the question’s own list. For dropdown and radio-button questions, use only the choice IDs that belong to that question.
- Check registration status before you update. Updates apply to cancelled registrants too.
- Send dates as
MM/DD/YYYY. Date questions store the value exactly as sent. - Re-read after an error. If a write method returns an error, some values in the request may already be saved. Read or search for the registrant before you retry.
Custom question (UDF) value formats
To write a custom question, send a parameter named UDF followed by the UDFID (for example, UDF899841=522587). Values you leave out are unchanged. Values you send empty are cleared. A UDFID that doesn’t belong to the event returns an error.
| Question type | Send | Returned as |
|---|---|---|
| Single-line text, multi-line text | The text. Values longer than the question’s character limit return an error. | The text |
| Number | The number. Only the character limit is checked. | The number as text |
| Dropdown, radio buttons | The choice ID (for example, 522587), not the answer text. | The answer text (for example, Interventional Cardiology) |
| Checkbox | Yes to check it; an empty value to clear it | Yes when checked. When unchecked, No if the registrant used the registration form, or empty if the registrant was created through the API. |
| Multi-select checkboxes | Each option is its own checkbox question with its own UDFID. Send Yes for each option you want selected. | One question per option, each Yes, No, or empty |
| Date | A date as text. MM/DD/YYYY is recommended. The value isn’t validated. | The text exactly as sent |
| File upload | Files can’t be uploaded through the API. Don’t write to these questions. | The stored file name (for example, 715842bc-…-Fellowship-Verification-Letter.pdf), or empty. No download URL is returned. |
Endpoint
https://websvcs.edgereg.net/er/API/EROnline/Add the method name to the endpoint, followed by your parameters:
https://websvcs.edgereg.net/er/API/EROnline/getFeesXML.jsp?AccountToken=YOUR_ACCOUNT_TOKEN&ActivityToken=YOUR_ACTIVITY_TOKENEvent Setup Methods
Use these methods to look up the IDs you’ll need for the registrant and write methods.
getMeetingsXML
Returns the events (meetings) on your account, including each event’s activity token. This is the only call that doesn’t need an activity token.
HTTP Method: GET or POST
| Parameter | Value | Required |
|---|---|---|
AccountToken | Your account token | Yes |
ShowArchives | 1 to include archived events | No |
ShowLastActivity | 1 to add LastActivityDate, the date of the event’s most recent transaction or change | No |
Categories is a comma-separated list of the categories the event belongs to. StartDate and EndDate are empty when the event has no dates set.
Request Example:
https://websvcs.edgereg.net/er/API/EROnline/getMeetingsXML.jsp?AccountToken=YOUR_ACCOUNT_TOKEN&ShowLastActivity=1Response Example:
<?xml version="1.0" encoding="UTF-8" ?>
<Meetings>
<Meeting>
<ActivityID>44451</ActivityID>
<ActivityName>Demo Cardiology Society Annual Scientific Sessions</ActivityName>
<ActivityToken>YOUR_ACTIVITY_TOKEN</ActivityToken>
<StartDate>9/16/2027</StartDate>
<EndDate>9/18/2027</EndDate>
<Categories></Categories>
<LastActivityDate>10/8/2026</LastActivityDate>
</Meeting>
</Meetings>getFeesXML
Returns the event’s fees. Use FeeItemID from a Registration fee with submitRegistrationXML.
HTTP Method: GET or POST
| Parameter | Value | Required |
|---|---|---|
AccountToken | Your account token | Yes |
ActivityToken | The event’s activity token | Yes |
FeeType is Registration for registration fees or Options for add-on items. CapacityLimit is 268435455 when the fee has no limit.
Response Example:
<Fees>
<Fee>
<FeeItemID>731440</FeeItemID>
<FeeName>Annual Scientific Sessions: In-Person and On-Demand Access</FeeName>
<FeeType>Registration</FeeType>
<Price>795.00</Price>
<GoodUntil>9/18/2027</GoodUntil>
<PromotionCode></PromotionCode>
<DisplayOrder>4</DisplayOrder>
<CapacityLimit>268435455</CapacityLimit>
<TotalSold>11</TotalSold>
<Prompt>Annual Scientific Sessions: In-Person and On-Demand Access</Prompt>
<Description></Description>
<AccountCode></AccountCode>
<IsMembershipRate>0</IsMembershipRate>
<RegistrationCategory>Annual Conference: In-Person</RegistrationCategory>
<BadgeDisplay></BadgeDisplay>
</Fee>
<Fee>
<FeeItemID>731442</FeeItemID>
<FeeName>Advanced Cardiac Rhythm Interpretation</FeeName>
<FeeType>Options</FeeType>
<Price>225.00</Price>
<!-- remaining elements match the fee above -->
</Fee>
</Fees>getWorkshopsXML
Returns every workshop and general session in the event. A session is a time slot (SessionID); a workshop is a choice within it (WorkshopID). General sessions are returned the same way as workshops.
HTTP Method: GET or POST
| Parameter | Value | Required |
|---|---|---|
AccountToken | Your account token | Yes |
ActivityToken | The event’s activity token | Yes |
Room and Track are empty when not set. Capacity is 268435455 when there’s no limit. NumSold is the number of registrants currently in the workshop.
Response Example:
<?xml version="1.0" encoding="UTF-8" ?>
<Workshops>
<Workshop>
<SessionName>Session 1: Thursday Morning Workshops</SessionName>
<SessionPrompt>Session 1: Thursday Morning Workshops</SessionPrompt>
<SessionID>102474</SessionID>
<WorkshopItemCode>W101</WorkshopItemCode>
<WorkshopName>Advanced Echocardiography – Strain Imaging in Cardio-Oncology</WorkshopName>
<WorkshopPrompt>Advanced Echocardiography – Strain Imaging in Cardio-Oncology</WorkshopPrompt>
<WorkshopID>274195</WorkshopID>
<StartTime>9/16/2027 8:00 AM</StartTime>
<EndTime>9/16/2027 10:00 AM</EndTime>
<Room>Ballroom C</Room>
<Track>Cardiovascular Imaging</Track>
<Capacity>60</Capacity>
<NumSold>1</NumSold>
<WorkshopDescription>Case-based review of global longitudinal strain…</WorkshopDescription>
</Workshop>
<Workshop>
<SessionName>Session 1: Thursday Morning Workshops</SessionName>
<SessionPrompt>Session 1: Thursday Morning Workshops</SessionPrompt>
<SessionID>102474</SessionID>
<WorkshopItemCode>W102</WorkshopItemCode>
<WorkshopName>Hands-On Point-of-Care Ultrasound for the Cardiology Fellow</WorkshopName>
<WorkshopPrompt>Hands-On Point-of-Care Ultrasound for the Cardiology Fellow</WorkshopPrompt>
<WorkshopID>274196</WorkshopID>
<StartTime>9/16/2027 8:00 AM</StartTime>
<EndTime>9/16/2027 10:00 AM</EndTime>
<Room></Room>
<Track></Track>
<Capacity>268435455</Capacity>
<NumSold>1</NumSold>
<WorkshopDescription>Small-group scanning stations…</WorkshopDescription>
</Workshop>
</Workshops>getUDFsXML
Returns the event’s custom registration questions (user-defined fields, or UDFs). Comments and separators aren’t included. Question types and answer choices aren’t returned; see Writing Data — Best Practices under Important Notes.
HTTP Method: GET or POST
| Parameter | Value | Required |
|---|---|---|
AccountToken | Your account token | Yes |
ActivityToken | The event’s activity token | Yes |
Response Example:
<?xml version="1.0" encoding="UTF-8" ?>
<UDFs>
<UDF>
<UDFID>899841</UDFID>
<UDFName>Primary Specialty</UDFName>
</UDF>
<UDF>
<UDFID>899842</UDFID>
<UDFName>Profession</UDFName>
</UDF>
</UDFs>Registrant Methods
getRegistrationInformationXML
Returns full registrant records: contact information, and optionally custom question answers, workshops, and registration fee.
HTTP Method: GET or POST
| Parameter | Value | Required |
|---|---|---|
AccountToken | Your account token | Yes |
ActivityToken | The event’s activity token | Yes |
RegistrantID | Return one registrant | No |
StartTime | Return registrants who registered at or after this time | No |
EndTime | Return registrants who registered at or before this time | No |
ShowUDFs | 1 to include custom question answers | No |
ShowWorkshops | 1 to include workshops and general sessions | No |
ShowRegFeeInfo | 1 to include the registration fee | No |
- With no
RegistrantIDand no times, the call returns every active registrant in the event, up to about 10,000. Use a time window for large events. - Active means registered, attended, bad check, or bill later. Cancelled, deleted, and waitlisted registrants aren’t included.
- The time filter uses the original registration time. To find registrants who changed after registering, use the change-tracking calls below.
- Cancelled registrants are left out of time-window and all-registrant results, but you can still retrieve one by
RegistrantID. BalanceDueis negative when the registrant owes money and0.00when paid in full.ConsentQuestionsis always included and lists the registrant’s answer to each consent question.- A
RegistrantIDthat doesn’t exist returns<Error>Registrant 1 not found</Error>.
Request Example:
https://websvcs.edgereg.net/er/API/EROnline/getRegistrationInformationXML.jsp?AccountToken=YOUR_ACCOUNT_TOKEN&ActivityToken=YOUR_ACTIVITY_TOKEN&RegistrantID=9509894&ShowUDFs=1&ShowWorkshops=1&ShowRegFeeInfo=1Response Example:
<?xml version="1.0" encoding="UTF-8" ?>
<Registrations>
<Registrant>
<RegistrantID>9509894</RegistrantID>
<BillingID>8027317</BillingID>
<RegistrationTime>10/8/2026 3:52 PM</RegistrationTime>
<MemberID></MemberID>
<externalMemberId></externalMemberId>
<BalanceDue>0.00</BalanceDue>
<ConfirmationCode>XXXXXXXXXXXXXXXXXXXXXXXXXX</ConfirmationCode>
<RegFeeItemInfo>
<FeeName>Annual Scientific Sessions: In-Person and On-Demand Access</FeeName>
<FeePrice>795.00</FeePrice>
<FeeItemCode>Annual Conference: In-Person</FeeItemCode>
<FeeBadgeDisplay></FeeBadgeDisplay>
</RegFeeItemInfo>
<ContactInfo>
<Salutation>Dr.</Salutation>
<FirstName>Marcus</FirstName>
<MiddleName></MiddleName>
<LastName>Delgado-Reyes</LastName>
<Suffix>MD</Suffix>
<Pronouns>he/him/his</Pronouns>
<Credentials></Credentials>
<Company>Lakeshore Heart & Vascular Institute</Company>
<NameOnBadge>Marcus</NameOnBadge>
<Title>Interventional Cardiologist</Title>
<Department></Department>
<PhoneNumber>(312) 555-0147</PhoneNumber>
<Phone>(312) 555-0147</Phone>
<MobilePhoneNumber></MobilePhoneNumber>
<Fax></Fax>
<Email>marcus.delgado.test@example.com</Email>
<Address1>401 N. Michigan Ave.</Address1>
<Address2>Suite 1200</Address2>
<City>Chicago</City>
<State>IL</State>
<ZipCode>60611</ZipCode>
<Country>US</Country>
<CountryFull>United States</CountryFull>
<Photo></Photo>
<FacebookUrl></FacebookUrl>
<LinkedInUrl></LinkedInUrl>
<XUserName></XUserName>
<CCEmail></CCEmail>
<Attended>false</Attended>
<QRCodeToken>XXXXXXXXXXXXXXXXXXXXXXXXXX</QRCodeToken>
</ContactInfo>
<UDFs>
<UDF>
<UDFID>899841</UDFID>
<UDFName>Primary Specialty</UDFName>
<UDFPrompt>Primary Specialty</UDFPrompt>
<UDFValue>Interventional Cardiology</UDFValue>
</UDF>
<UDF>
<UDFID>901930</UDFID>
<UDFName>CME Credit Requested</UDFName>
<UDFPrompt>I would like to claim CME credit for this meeting.</UDFPrompt>
<UDFValue>No</UDFValue>
</UDF>
</UDFs>
<Workshops>
<Workshop>
<SessionName>Session 1: Thursday Morning Workshops</SessionName>
<SessionID>102474</SessionID>
<WorkshopItemCode>W101</WorkshopItemCode>
<WorkshopName>Advanced Echocardiography – Strain Imaging in Cardio-Oncology</WorkshopName>
<WorkshopID>274195</WorkshopID>
<StartTime>9/16/2027 8:00 AM</StartTime>
<EndTime>9/16/2027 10:00 AM</EndTime>
<Room>Ballroom C</Room>
</Workshop>
</Workshops>
<ConsentQuestions>
<ConsentQuestion>
<QuestionText>Share my data with all users of the following software services offered in connection with the Demo Cardiology Society Annual Scientific Sessions: Public Attendee Lists</QuestionText>
<ConsentAccepted>true</ConsentAccepted>
</ConsentQuestion>
</ConsentQuestions>
</Registrant>
</Registrations>searchRegistrationInformationXML
Searches registrants by name. Matching is case-insensitive and matches the start of the name only: LastName=don finds “Donovan”, but LastName=novan doesn’t.
HTTP Method: GET or POST
| Parameter | Value | Required |
|---|---|---|
AccountToken | Your account token | Yes |
ActivityToken | The event’s activity token | Yes |
FirstName | Beginning of the first name | See note |
LastName | Beginning of the last name | See note |
ShowUDFs | 1 to include custom question answers | No |
ShowWorkshops | 1 to include workshops and general sessions | No |
FirstNameandLastNametogether must contain at least two characters. Shorter searches, or searches with no matches, return an empty<Registrations>element rather than an error.- Results also include
BadgeDisplay,IsMember,FullName, andMembershipInfoUpdated. Social media elements areLinkedInProfileUrl,FacebookProfileUrl, andXUsername. - The registration fee isn’t available from search. Use
getRegistrationInformationXMLwith the returnedRegistrantID.
Request Example:
https://websvcs.edgereg.net/er/API/EROnline/searchRegistrationInformationXML.jsp?AccountToken=YOUR_ACCOUNT_TOKEN&ActivityToken=YOUR_ACTIVITY_TOKEN&FirstName=Mar&LastName=DelgResponse Example:
<?xml version="1.0" encoding="UTF-8" ?>
<Registrations>
<Registrant>
<RegistrantID>9509894</RegistrantID>
<BillingID>8027317</BillingID>
<RegistrationTime>10/8/2026 3:52 PM</RegistrationTime>
<BadgeDisplay></BadgeDisplay>
<MemberID></MemberID>
<externalMemberId></externalMemberId>
<IsMember></IsMember>
<BalanceDue>0.00</BalanceDue>
<ConfirmationCode>XXXXXXXXXXXXXXXXXXXXXXXXXX</ConfirmationCode>
<ContactInfo>
<FirstName>Marcus</FirstName>
<LastName>Delgado-Reyes</LastName>
<NameOnBadge>Marcus</NameOnBadge>
<FullName>Marcus Delgado-Reyes</FullName>
<!-- other contact elements match getRegistrationInformationXML -->
<Attended>false</Attended>
<MembershipInfoUpdated>false</MembershipInfoUpdated>
<LinkedInProfileUrl></LinkedInProfileUrl>
<FacebookProfileUrl></FacebookProfileUrl>
<XUsername></XUsername>
<QRCodeToken>XXXXXXXXXXXXXXXXXXXXXXXXXX</QRCodeToken>
</ContactInfo>
<ConsentQuestions>
<!-- same as getRegistrationInformationXML -->
</ConsentQuestions>
</Registrant>
</Registrations>getBillingContactInformationXML
Returns the billing contact for a registrant or billing account. The billing contact is copied from the registrant at registration; after that, the two records are updated separately.
HTTP Method: GET or POST
| Parameter | Value | Required |
|---|---|---|
AccountToken | Your account token | Yes |
ActivityToken | The event’s activity token | Yes |
RegistrantID | A registrant on the billing account | Conditional |
BillingID | The billing account | Conditional |
Send either RegistrantID or BillingID.
Response Example:
<?xml version="1.0" encoding="UTF-8" ?>
<BillingContact>
<BillingID>8027317</BillingID>
<ContactInfo>
<FirstName>Marcus</FirstName>
<LastName>Delgado-Reyes</LastName>
<Company>Lakeshore Heart & Vascular Institute</Company>
<Title>Interventional Cardiologist</Title>
<Department></Department>
<PhoneNumber>(312) 555-0147</PhoneNumber>
<Phone>(312) 555-0147</Phone>
<Fax></Fax>
<Email>marcus.delgado.test@example.com</Email>
<Address1>401 N. Michigan Ave.</Address1>
<Address2>Suite 1200</Address2>
<City>Chicago</City>
<State>IL</State>
<ZipCode>60611</ZipCode>
<Country>US</Country>
<CountryFull>United States</CountryFull>
</ContactInfo>
</BillingContact>Change Tracking Methods
These methods return only RegistrantID values. Use getRegistrationInformationXML, getPurchasesXML, or getPaymentsXML to get the details.
| Method | Returns registrants who… | Time filter |
|---|---|---|
getAllChangedRegistrationsXML | Registered, were updated, or had a purchase or payment in the time window | Yes |
getModifiedRegistrationsXML | Were updated after they registered (contact information, custom questions, attendance, or workshops). New registrations aren’t included. | Yes |
getCancelledRegistrantsXML | Are no longer attending the event | No |
getCancelledRegistrationsXML | Had any registration fee cancelled, including registrants who exchanged one registration fee for another and are still attending | Yes |
getAllChangedRegistrationsXML
Returns registrants who registered, were updated, or had a purchase or payment in the time window. This is the best single call for keeping another system in sync.
HTTP Method: GET or POST
| Parameter | Value | Required |
|---|---|---|
AccountToken | Your account token | Yes |
ActivityToken | The event’s activity token | Yes |
StartTime | Start of the time window | No, but recommended |
EndTime | End of the time window | No |
With no times, the call returns every registrant who has ever changed.
Request Example:
https://websvcs.edgereg.net/er/API/EROnline/getAllChangedRegistrationsXML.jsp?AccountToken=YOUR_ACCOUNT_TOKEN&ActivityToken=YOUR_ACTIVITY_TOKEN&StartTime=10%2F08%2F2026%2015%3A00%3A00&EndTime=10%2F08%2F2026%2023%3A59%3A59Response Example:
<?xml version="1.0" encoding="UTF-8" ?>
<Registrations>
<RegistrantID>9509894</RegistrantID>
<RegistrantID>9509902</RegistrantID>
</Registrations>getModifiedRegistrationsXML
Returns registrants who were updated after they registered. New registrations aren’t included; use getAllChangedRegistrationsXML to catch both.
HTTP Method: GET or POST
| Parameter | Value | Required |
|---|---|---|
AccountToken | Your account token | Yes |
ActivityToken | The event’s activity token | Yes |
StartTime | Start of the time window | No |
EndTime | End of the time window | No |
Response Example:
<?xml version="1.0" encoding="UTF-8" ?>
<Registrations>
<RegistrantID>9509835</RegistrantID>
<RegistrantID>9509836</RegistrantID>
</Registrations>getCancelledRegistrantsXML
Returns registrants who are no longer attending the event. This call has no time filter; it always returns every cancelled registrant who matches the filters.
HTTP Method: GET or POST
| Parameter | Value | Required |
|---|---|---|
AccountToken | Your account token | Yes |
ActivityToken | The event’s activity token | Yes |
FirstName | Beginning of the first name | No |
LastName | Beginning of the last name | No |
Company | Any part of the company name | No |
Phone | Beginning of the phone number, exactly as stored (for example, (312) 555) | No |
“Cancelled” includes registrants who were cancelled or deleted.
Response Example:
<?xml version="1.0" encoding="UTF-8" ?>
<Registrations>
<RegistrantID>9509835</RegistrantID>
</Registrations>getCancelledRegistrationsXML
Returns registrants who had a registration fee cancelled. This doesn’t necessarily mean the registrant is no longer attending. For example, a registrant who exchanges one registration fee for another has a cancellation and a new purchase, and appears here but not in getCancelledRegistrantsXML.
HTTP Method: GET or POST
| Parameter | Value | Required |
|---|---|---|
AccountToken | Your account token | Yes |
ActivityToken | The event’s activity token | Yes |
StartTime | Start of the time window | No |
EndTime | End of the time window | No |
Response Example:
<?xml version="1.0" encoding="UTF-8" ?>
<Registrations>
<RegistrantID>9509835</RegistrantID>
<RegistrantID>9509836</RegistrantID>
</Registrations>Financial Methods
getPurchasesXML
Returns the fees each registrant currently holds, grouped by purchase transaction.
HTTP Method: GET or POST
| Parameter | Value | Required |
|---|---|---|
AccountToken | Your account token | Yes |
ActivityToken | The event’s activity token | Yes |
RegistrantID | One registrant | Conditional |
StartTime | Start of the time window | Conditional |
EndTime | End of the time window | Conditional |
Send at least one of RegistrantID, StartTime, or EndTime.
- This call shows current holdings. Cancelled or exchanged fees disappear from it; use
getCancelledItemsXMLto see them. - Discounts aren’t applied here.
PurchasePriceis the full fee price. Discounts appear ingetPaymentsXML. FeeTypeisRegistrationorOptions.
Request Example:
https://websvcs.edgereg.net/er/API/EROnline/getPurchasesXML.jsp?AccountToken=YOUR_ACCOUNT_TOKEN&ActivityToken=YOUR_ACTIVITY_TOKEN&RegistrantID=9509894Response Example:
<?xml version="1.0" encoding="UTF-8" ?>
<Purchases>
<Purchase>
<RegistrantID>9509894</RegistrantID>
<BillingID>8027317</BillingID>
<TransactionID>26720063</TransactionID>
<PurchaseTime>10/8/2026</PurchaseTime>
<LineItems>
<LineItem>
<LineItemID>10769399</LineItemID>
<FeeItemID>731440</FeeItemID>
<FeeName>Annual Scientific Sessions: In-Person and On-Demand Access</FeeName>
<FeeType>Registration</FeeType>
<Quantity>1</Quantity>
<FeePrice>795.00</FeePrice>
<PurchasePrice>795.00</PurchasePrice>
<AccountCode></AccountCode>
<PromotionCode></PromotionCode>
</LineItem>
<LineItem>
<LineItemID>10769400</LineItemID>
<FeeItemID>731442</FeeItemID>
<FeeName>Advanced Cardiac Rhythm Interpretation</FeeName>
<FeeType>Options</FeeType>
<Quantity>1</Quantity>
<FeePrice>225.00</FeePrice>
<PurchasePrice>225.00</PurchasePrice>
<AccountCode></AccountCode>
<PromotionCode></PromotionCode>
</LineItem>
</LineItems>
<TotalPurchaseAmount>1020.00</TotalPurchaseAmount>
</Purchase>
</Purchases>getPaymentsXML
Returns payments and discounts applied to billing accounts.
HTTP Method: GET or POST
| Parameter | Value | Required |
|---|---|---|
AccountToken | Your account token | Yes |
ActivityToken | The event’s activity token | Yes |
BillingID | One billing account. RegistrantID isn’t accepted here; get the BillingID from the registrant record. | Conditional |
StartTime | Start of the time window | Conditional |
EndTime | End of the time window | Conditional |
Send at least one of BillingID, StartTime, or EndTime.
TXType describes the transaction. Credits (refunds) have positive Amount values, the same as payments; use TXType to tell them apart. This call can return:
| Category | TXType values |
|---|---|
| Payments | E-Commerce Credit Card Payment, Manual Credit Card Payment, Check Payment, Cash Payment, Money Order Payment, E-Check Payment, Wire Transfer Payment |
| Credits (refunds) | E-Commerce Credit Card Credit, Manual Credit Card Credit, Check Credit, Cash Credit, Money Order Credit, Wire Transfer Credit |
| Reversals and fees | Check Returned, E-Check Failure, Refund Processing Fee |
| Discounts | Discount |
Purchases, cancellations, future credits, surcharges, and exchange-rate adjustments aren’t returned. PaymentDetail depends on the type:
- Credit card (payments and credits):
CreditCardType(may be empty),LastFourCreditCard, andOrderNumber - Check:
CheckNumber - Discount:
DiscountCode.Amountis the amount taken off.
Request Example:
https://websvcs.edgereg.net/er/API/EROnline/getPaymentsXML.jsp?AccountToken=YOUR_ACCOUNT_TOKEN&ActivityToken=YOUR_ACTIVITY_TOKEN&BillingID=8027317Response Example:
<?xml version="1.0" encoding="UTF-8" ?>
<Transactions>
<Transaction>
<TransactionID>26720064</TransactionID>
<BillingID>8027317</BillingID>
<TXType>Discount</TXType>
<Description>DISCOUNT $10 off registration fee</Description>
<Amount>10.00</Amount>
<TransactionTime>10/8/2026 3:52 PM</TransactionTime>
<PaymentDetail>
<DiscountCode>10OFF</DiscountCode>
</PaymentDetail>
</Transaction>
<Transaction>
<TransactionID>26720065</TransactionID>
<BillingID>8027317</BillingID>
<TXType>E-Commerce Credit Card Payment</TXType>
<Description>E-Commerce Credit Card Payment</Description>
<Amount>1010.00</Amount>
<TransactionTime>10/8/2026 3:52 PM</TransactionTime>
<PaymentDetail>
<CreditCardType></CreditCardType>
<LastFourCreditCard>1111</LastFourCreditCard>
<OrderNumber>1103776395</OrderNumber>
</PaymentDetail>
</Transaction>
</Transactions>A check payment returns <TXType>Check Payment</TXType>, a description such as Check Payment (CK# 123), and <CheckNumber>123</CheckNumber> in PaymentDetail.
getCancelledItemsXML
Returns cancelled fees, including the old fee when a registrant exchanges one registration fee for another.
HTTP Method: GET or POST
| Parameter | Value | Required |
|---|---|---|
AccountToken | Your account token | Yes |
ActivityToken | The event’s activity token | Yes |
RegistrantID | One registrant | Conditional |
StartTime | Start of the time window | Conditional |
EndTime | End of the time window | Conditional |
Send at least one of RegistrantID, StartTime, or EndTime.
Response Example:
<?xml version="1.0" encoding="UTF-8" ?>
<Cancellations>
<Cancellation>
<RegistrantID>9509836</RegistrantID>
<BillingID>8027256</BillingID>
<TransactionID>26720082</TransactionID>
<CancellationTime>10/8/2026</CancellationTime>
<LineItems>
<LineItem>
<FeeItemID>731440</FeeItemID>
<FeeName>Annual Scientific Sessions: In-Person and On-Demand Access</FeeName>
<FeeType>Registration</FeeType>
<Quantity>1</Quantity>
<FeePrice>795.00</FeePrice>
<PurchasePrice>795.00</PurchasePrice>
<AccountCode></AccountCode>
<PromotionCode></PromotionCode>
</LineItem>
</LineItems>
</Cancellation>
</Cancellations>Write Methods
Before you use these methods, read Writing Data — Best Practices under Important Notes. Test against a sandbox event first.
submitRegistrationXML
Creates a new registrant with one registration fee and returns the new RegistrantID and BillingID. No payment is collected. The registrant is set to pay later, and their balance is the fee price minus any discount. A $0 fee is recorded as complimentary.
⚠️ Sends a confirmation email. If you include Email, Eventscribe Registration sends the event’s registration confirmation email to that address. Leave Email out if your system sends its own confirmation.
HTTP Method: GET or POST
| Parameter | Value | Required |
|---|---|---|
AccountToken | Your account token | Yes |
ActivityToken | The event’s activity token | Yes |
FeeItemID | A fee with FeeType Registration, from getFeesXML. Option fees are rejected. | Yes |
| Contact fields | Contact information. State is a two-letter abbreviation such as IL, and Country is a two-letter code such as US. The billing contact is copied from these values.Salutation, FirstName, MiddleName, LastName, Suffix, Pronouns, NameOnBadge, Company, Title, Department, PhoneNumber, Fax, Email, Address1, Address2, City, State, ZipCode, Country | No |
UDF + UDFID | A custom question answer (for example, UDF899841=522587). See Writing Data — Best Practices under Important Notes. Only questions shown on the registration form are saved, and empty values are skipped. | No |
DiscountCode | A discount code set up for the event. Check BalanceDue on the registrant to confirm the discount was applied. | No |
- Workshops and option fees can’t be added in this call. Use
updateWorkshopXMLto add workshops afterward. Option fees can’t be added through the API.
Request Example:
https://websvcs.edgereg.net/er/API/EROnline/submitRegistrationXML.jsp?AccountToken=YOUR_ACCOUNT_TOKEN&ActivityToken=YOUR_ACTIVITY_TOKEN&FeeItemID=731441&FirstName=Priya&LastName=Natarajan&Email=priya.natarajan.test%40example.com&UDF899841=522599&UDF899842=522580&DiscountCode=10OFFResponse Example:
<?xml version="1.0" encoding="UTF-8" ?>
<Registrant>
<RegistrantID>9509907</RegistrantID>
<BillingID>8027324</BillingID>
</Registrant>updateRegistrantInformationXML
Updates a registrant’s contact information and custom question answers, and records attendance. Send only the fields you want to change.
HTTP Method: GET or POST
| Parameter | Value | Required |
|---|---|---|
AccountToken | Your account token | Yes |
ActivityToken | The event’s activity token | Yes |
RegistrantID | The registrant to update | Yes |
Attended | 1 to mark the registrant as attended. Attendance can’t be removed through the API. | No |
| Contact fields | Contact information. Changes here don’t update the billing contact. See the state and country note below.Salutation, FirstName, MiddleName, LastName, Suffix, Pronouns, NameOnBadge, Company, Title, Department, PhoneNumber, Fax, Email, Address1, Address2, City, State, ZipCode, Country | No |
UDF + UDFID | A custom question answer. See Writing Data — Best Practices under Important Notes. | No |
- Fields you leave out are unchanged. Fields you send with an empty value are cleared.
- State and country: set
Statewhen you create the registrant withsubmitRegistrationXML; changing an existing state isn’t supported through this method. SendCountryin its own request, as a two-letter code (US) or full name (United States). - A
UDFIDthat isn’t in the event returns<Error>UDFID 1 does not belong to provided Activity.</Error>. - A value longer than a question’s character limit returns an error such as
UDFID 901939 has a limit of 3 but the value provided is 5 characters.
Request Example:
https://websvcs.edgereg.net/er/API/EROnline/updateRegistrantInformationXML.jsp?AccountToken=YOUR_ACCOUNT_TOKEN&ActivityToken=YOUR_ACTIVITY_TOKEN&RegistrantID=9509894&Attended=1&Title=Director%20of%20Interventional%20Cardiology&UDF901930=YesResponse Example:
<?xml version="1.0" encoding="UTF-8" ?>
<Success>
</Success>updateWorkshopXML
Sets a registrant’s workshop or general session for one session. If the registrant already has a workshop in that session, it’s replaced.
HTTP Method: GET or POST
| Parameter | Value | Required |
|---|---|---|
AccountToken | Your account token | Yes |
ActivityToken | The event’s activity token | Yes |
RegistrantID | The registrant | Yes |
SessionID | The session, from getWorkshopsXML | Yes |
WorkshopID | A workshop in that session, from getWorkshopsXML | Yes |
- A
WorkshopIDthat isn’t in the session you sent returns<Error>Access denied 3</Error>. - A full workshop returns
<Error>Workshop sold out</Error>. This includes resending the workshop a registrant already holds when that workshop is full. - Workshops can be added or replaced but not removed. There’s no way to clear a registrant’s selection for a session through the API.
- The workshop’s
NumSoldupdates immediately. Workshops don’t create purchases.
Request Example:
https://websvcs.edgereg.net/er/API/EROnline/updateWorkshopXML.jsp?AccountToken=YOUR_ACCOUNT_TOKEN&ActivityToken=YOUR_ACTIVITY_TOKEN&RegistrantID=9509894&SessionID=102474&WorkshopID=274196Response Example:
<?xml version="1.0" encoding="UTF-8" ?>
<Success>
</Success>updateBillingContactInformationXML
Updates a billing contact. Changes here don’t update the registrant’s contact information.
HTTP Method: GET or POST
| Parameter | Value | Required |
|---|---|---|
AccountToken | Your account token | Yes |
ActivityToken | The event’s activity token | Yes |
BillingID | The billing account. RegistrantID isn’t accepted. | Yes |
| Contact fields | Billing contact informationFirstName, LastName, Company, Title, Department, PhoneNumber, Fax, Email, Address1, Address2, City, State, ZipCode, Country | No |
A BillingID that doesn’t exist returns <Error>Access denied 1</Error>.
Request Example:
https://websvcs.edgereg.net/er/API/EROnline/updateBillingContactInformationXML.jsp?AccountToken=YOUR_ACCOUNT_TOKEN&ActivityToken=YOUR_ACTIVITY_TOKEN&BillingID=8027317&Email=accounts.payable.test%40example.comResponse Example:
<?xml version="1.0" encoding="UTF-8" ?>
<Success>
</Success>Was this article helpful?
That’s Great!
Thank you for your feedback
Sorry! We couldn't be helpful
Thank you for your feedback
Feedback sent
We appreciate your effort and will try to fix the article