POST https://api.legendonlineservices.co.uk/Joining/Members

Used to create a new member / re-new an existing member and if required create an online profile record for the member. Members can change there membership with the same email address, but at the moment only one online profile may be created with that email address (email addresses in online profiles must be unique.

Request Parameters

From Body Type Description
ChannelId Int32 Optional. A channel is used to assign the memberships and agreements that can be sold by third parties. If you have been given a channel number it should be put here
ClientIPAddress String Optional. Address of the end user's device
ContactId Int32 Optional. If this is an existing member then there current contact Id goes here. This can only be use for renewals or upgrading memberships
DoNotCreateOnlineProfile Boolean Optional. If set to TRUE an online profile will not be created for this member (the default value is FALSE - an online profile will be created)
DoNotPayOffDebt Boolean Optional. Default = FALSE - If true the debt will be left on memebr account to pay off at a later date in the club
LocationID Int32 See Facilities This is the Id of the club that this member is joining
MemberNo String Optional. This will be the customers membership number. Can be left blank for the next free number to be assigned, Max 20 characters - Unique
MembershipProcessType This means create or renew membership. - If not provided, will default to 0 (New)
Values
0 - New
1 - Renewal
PAndAEligibilities String Optional. CSV string of any Purchase and Access Eligibilties to be added to the members account
Password String Optional. If a password is provided it will be validated and must meet the following criteria Password must be at least 10 characters long, contain at least one lowercase character (a-z), one uppercase character (A-Z) and at least one digit (0-9) A password creation email will NOT be sent if a password is supplied in the request regardless of the configuration setting.
ProspectId Int32 Optional. If this person is known to the club as a prospective member then then the id goes here. Some details can be read from their prospect record. This can only be used for new members not renewals. There is a seperate section with prospect API calls
SalesPersonId Int32 Optional. See SalesPersonDetails The Id of the person who made this sale. Probably blank for online signups
SignUpLocation String Optional. The location that the user signed up from. Probably blank for online signups - Max 50 characters
TermsAccepted Boolean Optional. Maps to ParQ in MM
[Fee] Optional. Information of the fees charged - Amounts, Payment method, promotional discounts
Name Type Description
Amount Decimal This is the amount the user has to pay for this fee
CardType String Optional. The type of card used for the transaction
MediaTypeId Int32 Optional. How was the fee paid? current options are : 3 - Credit Card, 21 - Voucher
If not provided, default is 3 (Credit Card)
PaymentHandlerId Int32 Optional. Who processed the fee 1 - Commidea, 2 - SPOGO, 3 - WPM, 4 - CardCommerce, 5 - ExternalService, 6 - TDBank, 7 - Moneris, 8 - Pay360, 9 - Paymentus, 10 - GlobalOpenEdge, 11 - CapitaV10, 12 - PaymentExpress, 14 - VerifoneSCA
If not provided, default is 1 (Commidea)
ProcessType Int32 This is the Id of the Membership type that the member is wishing to purchase. There a a couple of API calls within joining that will return the Membership types, the prices and these Ids for the member to select. This will nedd to be repeated for each fee
PromotionCode String Optional. If a discount was given for a promotion then the promotion code can go here - Max 50 characters
PromotionId Int32 Optional. If a discount was given for a promotion then the promotion ID can go here
ServerTransactionID String Optional. The payment transactionId
SourceId Int32 Optional. The GL code source Id
MandateInfo Optional. Information required for the monthly payments Name, account, payment day etc
Name Type Description
AccountName String Optional. The name on the account that will be used to pay for the membership - Max 50 characters
AccountNumber String Optional. The account number (or similar) of the bank account that will be used to pay for the membership - Max 50 characters
BillDay Int32 Optional. Between 0 and 32 - Day of the month - Must be provided for DD Members if Daily Collections are turned ON. 32 uses the last day of the month for making the payments. If 29,30 or 31 are used for a month with less days then the last day of the month is used again.
enumBankAccountTypeId Int32 Optional. The bank account type of the joiner, BACS = 1 (Default), 3 = SEPA, 4 = CPA, 5 = NZ
Sortcode String Optional. The sort code (or similar) of the bank account that will be used to pay for the membership - Max 12 characters
PaymentInfo Optional. Information on the membership payment - Card number, Authorisation codes etc
Name Type Description
AuthorizationCode String Optional. The authorization code that was given for the successful payment of this nmembership
CardNo String Optional. The number of the debit/credit card that was use to make the payment for this membership
DateProcessed DateTime Optional. The date that the payment for this membership payment was processed
TransactionId String Optional. Id of the external transaction that was used to make the payment for this membership
PersonalInfo This section contains the members personal information - Name, address, contact information etc.
Name Type Description
AddressCity String Optional. Address City - Max 50 characters
AddressLine1 String 1st line of address - Max 50 characters
AddressLine2 String Optional. 2nd line of address - Max 50 characters
AddressLine3 String Optional. 3rd line of address - Max 50 characters
AddressRegion String Optional. Address county - Max 50 characters - County
Birthday DateTime Members Date Of Birth
CommunicationPreferenceIds [Int32] Optional. Methods that the member is happy to be contacted by. e.g. Email, Text, Letter See CommunicationPreferences
EmailAddress String Customer email address. Must be unique if creating an Online Profile - Max 128 characters
EmergencyContact String Optional. An emergency contact name - Max 50 characters
EmergencyPhone String Optional. An emergency contact number - Max 15 characters
Employer String Optional. Name of the members employer - Max 50 characters
EthnicOriginId Int32 Optional. See EthnicOrigins, Asian, White, etc
FirstName String Christian Name - Max 128 characters
GenderId Gender. If not provided, will default to 'Unknown'
Values
1 - Male
2 - Female
3 - Corporate
4 - Unknown
InductionOptout Boolean Optional. Member has done an induction before and does not wish to do it again - Default 'False'
MarketingPrefsConfirmed Boolean Optional. Marketing Preferences Confirmed - Default Null
MarketingSourceId Int32 Optional. How the user found out about this gym See MarketingSources
MedicalConditionIds String Optional. Any medical conditions that are relevant to joining Comma Separated numeric values - See MedicalConditions
MobilePhoneNumber String Optional. Members mobile phone number - Max 25 characters
PhoneNumber String Optional. Address Postcode - Max 25 characters
Postcode String Address Region - Max 12 characters
Surname String Last Name - Max 128 characters
Title String Mr, Mrs, Miss... Max 10 characters
WorkPhone String Optional. Members work phone number - Max 15 characters
Purchase Information on the purchase - Location, Membership types and dates
Name Type Description
FirstBillDate DateTime Optional. The date that the members first bill is due. The time portion of this value will be ignored.
LocationId Int32 See Facilities The Id of the location that the user is joining (internal use: Online Database)
MembershipEndDate DateTime The end date of the membership. Must be greater than start date
MembershipStartDate DateTime Start Date of the membership
MembershipTypePriceId Int32 See MembershipTypes Id of the type of membership that the member is purchasing. The are a couple of API calls in the Joining API that give these details for the user to select the required membership
PromotionCode String Optional. If a discount was provided for a promotion this must be specified in PromotionCode or PromotionID
PromotionId Int32 Optional. If a discount was provided for a promotion this must be specified in PromotionCode or PromotionID
TotalFee Decimal Optional. The total amount payable by the member.




{
  "PersonalInfo": {
    "GenderId": 1,
    "Title": "sample string 1",
    "FirstName": "sample string 2",
    "Surname": "sample string 3",
    "AddressLine1": "sample string 4",
    "AddressLine2": "sample string 5",
    "AddressLine3": "sample string 6",
    "AddressCity": "sample string 7",
    "AddressRegion": "sample string 8",
    "Postcode": "sample string 9",
    "PhoneNumber": "sample string 10",
    "EmailAddress": "sample string 11",
    "Birthday": "2025-04-25T14:20:43.2358895+01:00",
    "EthnicOriginId": 1,
    "InductionOptout": true,
    "MobilePhoneNumber": "sample string 12",
    "MedicalConditionIds": "sample string 13",
    "MarketingSourceId": 1,
    "CommunicationPreferenceIds": [
      1,
      2,
      3
    ],
    "Employer": "sample string 14",
    "EmergencyContact": "sample string 15",
    "EmergencyPhone": "sample string 16",
    "WorkPhone": "sample string 17",
    "MarketingPrefsConfirmed": true
  },
  "PurchaseInfo": {
    "LocationId": 1,
    "MembershipTypePriceId": 2,
    "MembershipStartDate": "2025-04-25T14:20:43.2358895+01:00",
    "MembershipEndDate": "2025-04-25T14:20:43.2358895+01:00",
    "FirstBillDate": "2025-04-25T14:20:43.2358895+01:00",
    "TotalFee": 3.0,
    "PromotionCode": "sample string 4",
    "PromotionId": 1
  },
  "Fees": [
    {
      "ProcessType": 1,
      "Amount": 2.0,
      "MediaTypeId": 3,
      "PaymentHandlerId": 4,
      "PromotionId": 5,
      "PromotionCode": "sample string 6",
      "SourceId": 7,
      "ServerTransactionID": "sample string 8",
      "CardType": "sample string 9"
    },
    {
      "ProcessType": 1,
      "Amount": 2.0,
      "MediaTypeId": 3,
      "PaymentHandlerId": 4,
      "PromotionId": 5,
      "PromotionCode": "sample string 6",
      "SourceId": 7,
      "ServerTransactionID": "sample string 8",
      "CardType": "sample string 9"
    },
    {
      "ProcessType": 1,
      "Amount": 2.0,
      "MediaTypeId": 3,
      "PaymentHandlerId": 4,
      "PromotionId": 5,
      "PromotionCode": "sample string 6",
      "SourceId": 7,
      "ServerTransactionID": "sample string 8",
      "CardType": "sample string 9"
    }
  ],
  "PaymentInfo": {
    "TransactionId": "sample string 1",
    "DateProcessed": "2025-04-25T14:20:43.2358895+01:00",
    "CardNo": "sample string 2",
    "AuthorizationCode": "sample string 3"
  },
  "MandateInfo": {
    "enumBankAccountTypeId": 1,
    "AccountName": "sample string 2",
    "AccountNumber": "sample string 3",
    "Sortcode": "sample string 4",
    "BillDay": 5
  },
  "LocationID": 1,
  "SignUpLocation": "sample string 2",
  "SalesPersonId": 1,
  "Password": "sample string 3",
  "TermsAccepted": true,
  "ClientIPAddress": "sample string 5",
  "ProspectId": 1,
  "ContactId": 1,
  "MemberNo": "sample string 6",
  "MembershipProcessType": 0,
  "ChannelId": 1,
  "PAndAEligibilities": "sample string 7",
  "DoNotCreateOnlineProfile": true,
  "DoNotPayOffDebt": true
}

Response - (Status 200 - OK)

No object is returned by this request

Remarks

Return Values

Success - bool - True or False - was the member created correctly

FailureReason - string - If failed, the reason for the failure

MemberNumber - string - The member number of the newly created member

MandateReference - string - the mandate reference of the newly created member

ExternalId - Guid - The external Id that the newly created member which is given to 3rd parties

OnlinePurchaseId - int - The purchase Id

ContactId - int - The contact Id for the newly created member

PasswordUrl - string - The URL to change the newly created members password

Bundle(s)
Joining